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 側にもかなりの付加がかかります。連続使用はやめましょう。
  • 実行は自己責任でお願いします。問題、不具合が起きても一切保障しません。

entry tags

trackback

  • http://miwa.offside.ne.jp/cgi-bin/mtos/mt-tb.cgi/7

comments