朝まで動いてたのに、なぜか動かなくなったからまた書き直したよ!!

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”;