YouTube で削除された動画を探すシェルスクリプト
September 8, 2006 11:17 AM
YouTube では、公開されていた動画が大人の事情で削除されることがあります。
ですが、ここで削除されるのは動画のタイトルなどの「付加情報」のみで、動画の実体が削除されるタイミングとはタイムラグがあるようです。
ですので、「This video has been removed ...」と赤文字で表示されていても、分散されたサーバーを探せば見つかる場合があります。
具体的にはこんな感じ。
#!/bin/sh
id=$1
func() {
i=${2}
while [ $i -le ${3} ]; do
buf=`curl -I -v http://${1}$i${4}.youtube.com/get_video?video_id=$id 2>&1 | grep 'HTTP/1\.1 200' -c`
if [ $buf -gt 0 ]; then
echo http://${1}$i${4}.youtube.com/get_video?video_id=$id
curl -o $id.flv http://${1}$i${4}.youtube.com/get_video?video_id=$id
exit
fi
i=`expr $i + 1`
done
}
while read PARAM ; do
func ${PARAM}
done << EOF
sjl-casing 1 20 .sjl
sjl-v 1 152 .sjl
lax-v 1 80 .lax
v 1 228
EOF
例えば「salvage.sh」というファイル名で保存して、
$sh ./salvage.sh video_id
このように実行します。
- HEAD でステータスをチェックして、200の場合はダウンロードが始まります。
- curl が無い場合は、wget などで書き換えてください。
- 最大で500近いサーバにアクセスするので、時間がかかる場合があります。
- YouTube 側にもかなりの付加がかかります。連続使用はやめましょう。
- 実行は自己責任でお願いします。問題、不具合が起きても一切保障しません。
trackback
- http://miwa.offside.ne.jp/cgi-bin/mtos/mt-tb.cgi/7
comments