PHPでXMLいろいろ

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/>があるのを確認。どっちかっていうと、こいつを認識すればいいのか?
続きを読む PHPでXMLいろいろ

YoutubePlaylistPlayer改造中

Youtubeのプレイリストを作るページを改造中。
クッキーに保持しているプレイリストを、XMLでエクスポート&インポートできるようにした。
ただ、インポートは@pagesだと動かせないから鳶の置いてある000webhostでデバッグ。
あと、削除ボタンの処理を変更。クッキーから削除してから表示を削除するようにした。あまり高速連打しなければ削除は簡単になった。
現在外部プレーヤーだと再生できない動画の識別中。
メタデータに
<app:control>
<yt:state name="restricted" reasonCode="limitedSyndication&quot>
Syndication of this video was restricted by its owner.
</yt:state>
<app:control>
があると再生不可っぽい。(確証なし。1個しか見てないし)

Youtubeで遊んでみた

Youtubeの埋め込みプレーヤーとAPIでプレイリストを作ってみた。
Youtubeにもプレイリスト機能はあるんだけど、ログイン必須で面倒だからクッキー使って自作してみた。
プレイリストの管理と動画タイトルの取得にPHPをつかってるからAjaxを使ってみた。prototype.jsのおかげで結構手軽に実装できた。
ただ、

  1. 動画が若干ちらつく(LinuxのFlashプレーヤーのせい?)
  2. ときどきメニューっぽいのが残る(原因不明)
  3. 毎回Youtubeと通信するから負担がかかる(仕様)
  4. ときどき再生エラーする(連続再生のせい?)

の不具合を持ってる。
特に3が不安要素。怒られないかなぁ・・・

就職試験行ってきた

銀座にある会社の就職試験に行ってきた。
・・・中途採用で行ったはずなのに、ほとんど俺の年齢+5以下・・・(のような気がした。違うかもしれない。)
試験開始後におっさん数人遅刻してきてた。大丈夫か?
で、2時間後に試験終了。帰り際にビルのテナント表示見てびっくり。この会社しか入ってない。(ビルは10階建て)できたてみたいだしこんなもん・・・なのか?
続きを読む 就職試験行ってきた

freetypeインストール中

freetypeインストール中。
なぜか、オブジェクトファイルとして.loを吐き出すくせに、.oファイルを要求するからコンパイルが通らねぇ…おまけにobjs/.libsにまで.oファイルを要求するから余計に通らねぇ…
freetypeってこんなにコンパイル面倒だったっけ?
現在の解決策
.loファイルを要求箇所にコピー
数が多くて面倒だからシェルスクリプトで

ls objs/*.lo > lolist
while read file
do
	cp  $file `echo $file | sed -e "s/.lo/.o/"`
	cp `echo $file | sed -e "s/.lo/.o/"` objs/.libs
done < lolist

ftsystem.oが無いとか言われてるから、初期化してやり直し中…追記:(2010/04/22)原因判明。Boostビルド用に作ったgccラッパーが原因だった。排除したらコンパイルに成功した。
ああ。明日就活だ。早めに寝よう…

突然

夕飯食ってさぁゲーム組むかとか思ってたら突然学情ナビから電話が。
明日会社の説明会あるんだけど行ける?と言う内容だった。時間は午前10時30分。
・・・またずいぶん急だな。了承したけど。
つうわけで、明日は急遽会社説明会へ行くことになった。
今渡こそ大丈夫だよな。
続きを読む 突然

そうか・・・今日って日曜日なんだっけ・・・

素で月曜日だと思ってた。なんかもうだめかもしれん・・・
昼頃に家の周囲の草取りしてた。
家のガス管とかの周囲に雑草が生えてるから抜きにくい抜きにくい・・・鎌使おうにも管傷つけたらいけないからあまり使えなかった。
結局その周辺は少し掘り起こして抜いた。一部はブロックから生えてたりコンクリに食い込んだ(?)から放置。どうしろってんだよ。