朝まで動いてたのに、なぜか動かなくなったからまた書き直したよ!!
perlで初めて正規表現とかLWP::Simpleとか使った。これが俺のperl4作目!!!!!
perlのこの、モジュール切り張りするDIY感がたまらん。やたら似たモジュールがCPANにいっぱいあるのも、秋葉原のごちゃごちゃした電子部品屋で迷ってわけわかんなくなるのみたいで逆に楽しい。
「楽しい!」
■やり方
YouTubeが仕様変更でtパラメータが必要になったらしいので
So-net blog:牛猫亭羊。お散歩する霊柩車の別館にして赤の他人丼。:YouTubeのサイトに仕様変更、今までの直リンクは無効に
1. オモテページのURLで表示
http://www.youtube.com/watch?v=zzzz
2. ソッコーで関連メディアのURLを調べる(tパラメタ取得)
http://www.youtube.com/player.swf?video_id=zzzz&t=Hoge
HTMLを解析しろとのこと
3. FLVファイルのURLをつくってアクセス
http://www.youtube.com/get_video?video_id=zzzz&t=Hoge
LWPでgetして
useLWP::Simple;
$url=”http://www.youtube.com/watch?v=UnWVOOIpzZY”;
#LWPで読み込み
my$page=get($url);
HTML解析して t= を取得。
以下コードベタ貼り
ちなみにコードを貼り付ける時はclip2HtmlEncodeがかなり使える
■YouTubeのFLVファイルを発見する。HTTP-GETで .cgi?url=http~~って感じで渡す
#!/usr/bin/perl-w
#
#FLVファイルのURLを返す
#Environment:Perl5.8
#Date:2006/5/15
#Author:ShoHashimoto
#Website:http://shokai.org
useCGI;
useCGI::Carpqw(fatalsToBrowser);
useJcode;
useLWP::Simple;
#HTTP-header出力
$cgi=newCGI;
print$cgi->header(-type=>”text/html”,
-charset=>”EUC-JP”);
#$bom=”¥xef¥xbb¥xbf”;
#print$bom;
#引数処理
my$url=$cgi->param(“url”);#GET
#LWPで読み込み
my$page=get($url);
#URLを解析して、パラメータvideo_id=の値を取得
@url=split(/¥?v=/,$url);
$v=@url[1];#v
#print$v;
#HTMLを解析して、パラメータt=の値を取得
my@page=split(/¥r?¥n/,$page);#改行で分割
foreach$line(@page){
if($line=~/¥.swf¥?video_id¥=/){
@line=split(/&t=/,$line);
@line=split(/¥”/,@line[1]);
$t=@line[0];#t
}
}
#print$t;
#flvファイルのURL生成
print”http://www.youtube.com/get_video?video_id=$v&t=$t”;