Flex、AIR、Java、Androidなど

1月14日 2009

YouTubeのページURLをもらって動画のタイトルとSWFのURLを返すスクリプト

Posted by: tachibana In: プログラミング

会社のホームページ製作に当たって興味があったので色々調べていたのですがYoutubeは直接flvのアドレスを叩けないようになったんですね(何かやりようもあるのかもしれませんが)。

まあそこはFlex/AIR。SWFLoaderにSWFのアドレスを指定してload()してやればJavascriptでHTMLに埋め込むようにFlex内に埋め込めるようです。以下のように。

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="loadVideo()" >
    <mx:Script>
        <![CDATA[
            private function loadVideo():void
            {
                var url:String = "http://jp.youtube.com/v/xxxxxxxxxxx";
                Security.allowDomain(url);
                player.load(url);
             }
        ]]>
    </mx:Script>
    <mx:SWFLoader id="player" width="400" height="300"/>
</mx:Application>

というわけで無理してflvのパスを抜く必要もないのでPerlでタイトルとSWFのURLを含んだXMLを返すスクリプトを書いてみました。

ちょっと前に色々とPerlの便利な小技を紹介してくれているサイトを見つけ(→perl-mongers.orgさま)、Web::Scraperというのが紹介されていたので試してみたかったのもあります。

以下。

#!/usr/bin/perl
use strict;
use Web::Scraper;
use URI;

my $query = $ENV{'QUERY_STRING'};
my ($name, $value);
($name, $value) = split(/=/, $query);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex( $1 ))/eg;

my $uri = URI->new($value);
my $scraper = scraper {
    process '/html/head/title', 'name' => 'TEXT';
    process '/html/head', 'location' => 'HTML';
};

my $res = $scraper->scrape($uri);

my $script = $res->{location};

if($script =~ /video_id=(.*?)\&/)
{
    $script =  $1;
}

print <<EOF;
Content-type: text/html

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <name>@{[substr($res->{name}, 10)]}</name>
    <location>http://jp.youtube.com/v/$script</location>
</root>
EOF

多分もっとスマートな書き方があると思います。が、やりだすときりがないのでとりあえずこれで良しとしときます。

これにGETでURLエンコードしたYoutubeのURLを付けてアクセスすれば、

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <name>Whitney Houston - Saving All My Love For You</name>
    <location>http://jp.youtube.com/v/I_esJmpDcLM</location>
</root>

こう返ってきますので後はそれをどうにでもできます。将来的に他の情報もScrapeすると思うのでXMLで返すようにしてます。

面白いですね。

EasyFreeAds Blog News Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google Yahoo Buzz StumbleUpon

Tags:

No Responses to "YouTubeのページURLをもらって動画のタイトルとSWFのURLを返すスクリプト"

Comments are closed.

Categories

 

2017年5月
« 4月    
1234567
891011121314
15161718192021
22232425262728
293031  

About

Author: tachibana

  • ちょっとしたことはTwitterに書いています。こっちはアプリの公開等の時に更新されます。
  • 最近はもっぱらJavaとObjective Cです。AS3は飽きました。
  • スクリプト言語ではPerlが好きでしたが最近はGAE/Jで何でもやってます。
  • Linuxは自宅サーバー建てるのがやっとのレベルです。前の会社で何日も徹夜してやったのはいい思い出です。
  • アプリへのご要望などご意見等ありましたらお気軽にご連絡下さい。

Alternative content here