2009年07月20日

gdataよりhtmlの方が良い?

LibXMLでのhtmlパースが結構使いやすく
aタグの切り取りができるようになるとページをたぐっていけるので
問題点はJavaScriptで構成された部分だけになる。
しかし調べるとクエリー結果に法則性があるのでフォーム部分の実装ができなくても
どうせ決め打ちならばhtml実装でも良いように思えた。
検索クエリーについてはアメーバVisionもAPIはあるらしいけれど
簡易ブラウザとして機能させる分にはやはりhtmlの方が手っ取り早い
veohについては検索はhtmlベース、データ取得はXMLという形になる。

youtubeの場合そもそもJavaScriptのパラメータからflvのURLをパースしていたのだが
それ以外で最初にhtmlの方が便利だと思ったのは角川アニメチャンネルの存在だったが
gdataの検索とhtmlの検索はいろいろと相違があり、現時点ではhtmlの方がオプションが多いということに気づいた。

例えば「haruhi」でHD動画を検索したい場合


http://www.youtube.com/results?search_type=videos
&search_query=haruhi
&high_definition=1
&search_sort=video_view_count

と「high_definition=1」をつける事で絞ることができるがgdataではキーワードとかで工夫するしかない。
また検索結果はxmlの場合は英語メインで言語指定してやらないといけないが
くかもりの場合は一度言語圏が確定するとその言語優先での検索結果にしてくれるようだ。

チャンネルも無理に特定チャンネルを指定しなくても
「&partner=1」
を指定すれば公式チャンネル内のものだけをリストしてくれる。

オプションのまとめ
基本タイプ
search_type

videos:ビデオ全般
search_users:チャンネル
search_playlists:プレイリスト
チャンネルとプレイリストはオプションが使えない。

検索ワード
search_query
これは一番目にはこない。

ソートオプション
search_sort

video_view_count :再生回数
video_date_uploaded:更新順
video_avg_rating :評価順
video_date_uploaded_reverse:古い順

場所指定
page
値:数字
例:&page=2

HD指定
high_definition=1

公式コンテンツ指定
partner=1

キャプションあり
closed_captions=1

アノテーション アノテーション機能とやらを使っているコンテンツに絞ります。
annotations=1

R18を結果に含む
racy=include
明示的に含まないときはexcludeを指定する。

ログインしない状態でここまで取得できる。
リンクは「watch?v=」となっているものが個別のビデオのリンクなので
それに挟まっているサムネールとテキストだけを取り出せば良い。
IDを取得したらここはgdata APIで



http://gdata.youtube.com/feeds/videos/ビデオID


とすれば良い。
ビデオが削除されている場合は

Video not found
というテキストだけになるのだが
実際に存在してみられるビデオでも上記アクセス方法だと
Video not found
になり


http://gdata.youtube.com/feeds/videos/ビデオID/related


でタイトルのみのfeedが得られる。

しかしwatch?v=で始まるhtmlをパースするとヘッダーに結構情報が入っているし
watch-views-divのwatch-view-countで再生回数
expand-header-statが動画レスポンスとコメント数
ユーザーはwatch-channel-vids-div内のwatch-channel-statsあたりを探せばいい。

htmlの場合classやidといったattributeの値でサーチする形になるので効率の良い方法を
検討する必要がありそうだ。


posted by Xo_ox at 19:00| Comment(0) | 基本データ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。