|
[
2007/06/29 10:55 | by bruce_wu ]
|
而寫這一個 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 的格式了

上傳檔案出現 406 ERROR 訊息
Linux 下停用按下 [Ctrl]-[Alt]-[Delete] 重新啟動系統
2007/06/29 10:55 | by


thanks!
why ?
can you help me! thanks!
chmod: 無法存取「youtube.sh」: 沒有此一檔案或目錄
上傳到 Linux 系統上,並將檔案屬性改成 755
chmod 755 youtube.sh
2.檔案改成 755 可執行
3.使用 ./youtube.sh 執行