PHPでニコニコのマイリストを取得するメモ
ニコニコのマイリストはRSSで取得できるので
別にたいしたことしてないですが。
簡単に箇条書きすると
- 取得したいマイリストのURLを作る
- file_get_contensでそのURLからXMLを取得
- simplexml_load_stringでオブジェクト化
- オブジェクトのままだとメンドイので配列化
- [“channel”][“item”]をforeachで回してマイリストに入っている動画の情報を取得
- 動画の[“description”]にHTML形式で色々入っているので必要ならパースして取り出す
こんな感じ。
URLは基本、http://www.nicovideo.jp/mylist/(マイリストのID)?rss=2.0
で取得できるんだけど、いくつか設定ができて
http://d.hatena.ne.jp/kotas/20070918/mylistfeed
こちらを参考にさせてもらい、パラメータを?rss=2.0&nodescription=1&noinfo=1
にしました。
動画の説明文とか、途中で切れてる物もらってもしょうがないし。
XML取得した後、オブジェクトだと値の評価がしにくいので配列化。
$arr = json_decode(json_encode($xmlobj), true);
これでいけるってPHPマニュアルにも書いてあるので
タグの属性値とかいらないしこれで変換。
あとは回して取り出すだけなんだけど、自分の場合マイリストの動画メモに作者を書いてたりするので
HTMLタグ形式で書かれたdescriptionを軽くパースしてそこを取り出しました。
幸い、pタグでそれぞれがくくられているのでタグでパース。
$arr = preg_split(‘/<[^>]*[^\/]>/i’, $item[“description”], -1, PREG_SPLIT_NO_EMPTY);
ってやれば$arr[0]が動画メモ、$arr[1]がサムネのイメージタグになります。
イメージタグをさらに分解して内容取り出したりもしたけど、
よく考えたらそのまま使って問題ないのでそのまま貼りつける感じに。
あと、どうやらguidの中に動画投稿日があるっぽいのでそれもパースして取り出しました。
こっちは定型文なのでstr_replaceとかでいらない文字削除してexplodeで分解して欲しいものだけ取る感じ。
preg_matchでもいいけど、あれなんかコードが長くなりやすいので。
投稿日はRSS取得のURLにnoinfo=1をつけなければdescriptionに入ってくるのでそっち取ってもいいと思います。
なんかマイリスト自体のpubDateがおかしい気がするけど
たいした問題ではないので無視することにして終わり。
以上、メモ。
Tags: php