網頁內容載入中,請稍候...
當我看到這個Shell Script的時候,我在想 YouTube 的下載方式又多了一種
而寫這一個 Shell Script 的作者對 Script 及 YouTube 也很熟悉

我看了他的 Shell Script 原碼後,是利用 Linux 的 wget 下載 YouTube 的影片

其原始 Shell Script  碼如下:

#!/bin/sh
# $Id: youtube.sh 496 2006-06-05 23:37:35Z berto $

if [ "$#" != "1" ]; then
  echo "YouTube Video Downloader"
  echo "Written by Alberto Garcia <agarcia-at-igalia-com>"
  echo "Homepage: http://people.igalia.com/berto/"
  echo
  echo "Usage:"
  echo "   youtube.sh http://www.youtube.com/watch?v=<video_ID>"
  echo " or"
  echo "   youtube.sh <video_ID>"
  echo
  exit 64
fi

VID=$(echo "$1"|sed "s/.*v=\([^&]*\).*/\1/")
URL1="http://www.youtube.com/watch?v=$VID"
echo -n "Getting $URL1 ..."
PARAM="$(wget -q -O - "$URL1"|grep watch_fullscreen|cut -d '&' -f 3)"
echo " done."
URL2="http://www.youtube.com/get_video?video_id=$VID&$PARAM"
echo -n "Getting $URL2 ..."
URL3="$(wget -S "$URL2" 2>&1|sed -n /Location:/s/.*http:/http:/p)"
echo " done."

echo "Video address is $URL3"
exec wget -O "$VID.flv" "$URL3"


將上面的原始碼複製然後儲存為 youtube.sh
或由此下載
上傳到 Linux 系統上,並將檔案屬性改成 755

chmod 755 youtube.sh


用法也相當的簡單有下面三種方式

  $ youtube.sh "http://www.youtube.com/watch?v=LVFQI35EpSE&search=inhuman"
  $ youtube.sh http://www.youtube.com/watch?v=LVFQI35EpSE
  $ youtube.sh LVFQI35EpSE


以上面這三個例子,下載後會存成 LVFQI35EpSE.flv ,這樣就可以下載到 YouTube 的影片囉

如果想要手動使用 wget 抓取 也可以,就使用如下的方式
如果想要下載這一個 http://www.youtube.com/watch?v=vVge3CiE5uU 的影片
使用下面的方式也可以下載

$ wget -q -O - http://www.youtube.com/watch?v=vVge3CiE5uU | \
grep watch_fullscreen | awk -F '&' '{print $3}' | grep -v "^$"


會得到一個 t 的值,如右 t=OEgsToPDskJQ2NnnGoACoOqdSt1Yj9My 每一次取得都會不同

再來就要運用該 t 的值,套入如下命令

$ wget -O youtube.flv \
"http://www.youtube.com/get_video?video_id=vVge3CiE5uU&t=OEgsToPDskJQ2NnnGoACoOqdSt1Yj9My"

-O 後面放 下在下來後要儲存的檔案名稱

經由上面這兩個步驟也可以將 YouTube 上的影片下載下來

如果想要將下載下來的 flv 影片檔轉成 mpg 格式,可以再透過 ffmgep 來轉換
將下面加了兩行加入 youtube.sh  最後面內,使它下載後自動把flv轉成mpg:
(當然您的系統要先安裝有 ffmpeg )

exec ffmpeg -i "$VID.flv" -ab 56 -ar 22050 -b 500 -s 320x240 "$VID.mpg"
exec rm "$VID.flv"

這樣檔案就會轉成 .mpg 的格式了

Linux 系統相關 » Linux 指令 | 評論(3) | 引用(0) | 閱讀(3166)
TTT
2010/06/14 18:51
請問是youtube網頁編排方式改了,造成grep錯誤嗎?
thanks!
TTT
2010/06/14 18:49
Invalid host name ???
why ?
can you help me! thanks!
vercin Email
2009/06/10 17:34
請問一下,下面這個步驟要怎樣作?
chmod: 無法存取「youtube.sh」: 沒有此一檔案或目錄

上傳到 Linux 系統上,並將檔案屬性改成 755
chmod 755 youtube.sh
bruce_wu 回覆於 2009/06/11 09:57
1.你登入 Linux 要有可以執行 Shell Script 的權限帳號
2.檔案改成 755 可執行
3.使用 ./youtube.sh 執行
分頁: 1/1 第一頁 1 最後頁
 
發表評論
   
表情
emotemotemotemotemot
開啟HTML
開啟UBB
開啟表情
隱藏
記住我
暱稱   密碼   訪客無需密碼
網址   電郵   [註冊]