Youtubeに動画のメタデータをリクエストすると、XMLで返してくるので解析中。
解析は"$data=simplexml_load_file(“http://gdata.youtube.com/feeds/api/videos/”.$videoid);"でXMLを取得&パースして各種要素にアクセス。
で、Youtubeの一部動画は外部プレーヤーで再生できないようになってるから、それの判定プログラムを書いた。
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:app='http://purl.org/atom/app#' xmlns:media='http://search.yahoo.com/mrss/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007'>
<id>http://gdata.youtube.com/feeds/api/videos/GF69Om75cT4</id>
<published>2008-10-24T16:30:40.000Z</published>
<updated>2010-04-26T10:40:56.000Z</updated>
<app:control>
<yt:state name='restricted' reasonCode='limitedSyndication'>
Syndication of this video was restricted by its owner.
</yt:state>
</app:control>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>
<category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='Film' label='映画とアニメ'/>
対象の動画のXMLの一部。
でこれが、単純に読み込んだ場合の一部
SimpleXMLElement Object (
[id] => http://gdata.youtube.com/feeds/api/videos/GF69Om75cT4
[published] => 2008-10-24T16:30:40.000Z
[updated] => 2010-04-26T10:40:56.000Z
[category] => Array (
[0] => SimpleXMLElement Object (
[@attributes] => Array (
[scheme] => http://schemas.google.com/g/2005#kind
[term] => http://gdata.youtube.com/schemas/2007#video
)
)
途中、<app:control>がごっそりなくなってる…
ググってみると、XMLのタグ名に:が付いてるのは名前空間らしく、$app=$data->children(“app”,true);でアクセスするみたい。
ただ、外部プレーヤーで再生出来る動画にこのタグはないから、if(!empty($app))で判定してやる必要がある。
あと、@attributes以下にアクセスするには
$yt=$app->children("yt",true);$yt->state->attributes()->reasonCode=="limitedSyndication"
みたいな感じでattributes関数を挟んでやる必要があるみたい。
面倒くさいなぁ…
追記:XMLの最後に<yt:noembed/>があるのを確認。どっちかっていうと、こいつを認識すればいいのか?
さらに面倒くさいこと。
firefoxはwindows版とUbuntu版で<input type="file">のsizeパラメータ扱いが違うみたい。具体的には、Windows版はエディタと参照ボタンまでで一つとして見てるから、インポートボタンのスペースが無い場合、下にずれ込む。Ubuntu版は別々に見てる、もしくは見方を間違えてるのか、エディタの隣にインポートボタンが食い込む…(スペース自体はあるから下にずれ込まない)
たまには呪文をとなえてみるか:仕事版を参考に、sizeを計算する関数を書いて大体のところは合うようにした。
なんでこんな仕様してるんだ?
あとついでに、GoogleChromeとOperaをインストールして動作試験してみた。
結果
ブラウザ | 結果 |
firefox3.6.3 | input fileのレンダリング以外不具合なし。 |
Internet Exploere 8 | 特に問題無し |
Google Chrome 4 | 右ペインがしたにずれる |
Opera 10.51 | プレイリスト出力時に、拡張子がXMLにされる。 シャッフル中、項目が移動してるのが見える&遅い。(いちいち表示してるせい?) |
こんな感じになった。とりあえず、基本機能には問題無し。SafariとかSleipnirとかはエンジン被ってるし、たぶん大丈夫だろう。