2013年03月03日

youtube-dlを拡張したら男の子達が幸せになれるかもしれないと思ったので

みんな大好きyoutube-dl。 コマンドラインから使えて素敵なこいつ。 名前とは裏腹にいくつかの動画サイトに対応していて素晴らしい。

素敵すぎるので、このサイトのエントリにも何度か登場している。

やたー。emacs-w3mでリンク先のyoutubeの動画をmplayerを使ってストリーミング再生できたよー とか 仕事中にこっそりあれな動画を楽しむ苦肉の策 とかね。

だけど、足りない。 最も有名なあいつは押さえているけど、 男の子が大好きな類のサイトへの対応が全然足りない!!

ってことでハムスターちゃんとか赤いあれとかあれなHostに対応してみました。

具体的なサイト名が知りたい方はgit cloneでもしてから

% PATH/youtube-dl --list-extractors

でもしてくださいな。generalの上あたりに集中して置いてある。

と。これだけでもつまらんので対応サイトを増やす方法書いておく。

まずこいつはInfoExtractors.pyってファイルの中で InfoExtractorクラス及び それを継承した各サイト用の子クラス(FacebookIEなど)を持っている。

なので適当にコピペ(ひどい)して 対応したいサイト用の子クラスを適当に作る。 自分はXVideosIEクラスからコピペした。男の子だもの。

で、とりあえずクラス名と_VALID_URLとIE_NAMEをそれぞれ適当に書き換える。 動画IDを後程使うのでそれをグループ化でうまく取れるように_VALID_URLの正規表現は書いてね!

今回クラス名はHogeIEってことにしますね。(後で使う)

そんで、他にどこをいじるかを説明する前に そのクラスにある_real_extractメソッドのケツを見てもらうと、 infoとかいう連想配列らしきもの(Pythonではディクショナリでしたっけ?)があって それをreturnしてますよね。

その中で

  • video_id
  • video_url
  • video_title
  • video_thumbnail

という変数を使ってる。 つまりこいつらの情報をWebページから拾えればいいわけですよ。

video_id は、このメソッドの頭で_VALID_URLを使って拾っているわけですよ。

video_title はHTMLのタイトル要素から適当に正規表現で拾ってくるわけですよ。

video_urlとvideo_thumbnailはもうHTMLソースの中からそれっぽいのを探してきて それっぽい正規表現を書くことになるわけですよ。

まあflashvarsっていう文字列見付けてきたら その前後でjpgとかflvとかそういう文字列を探せばどうにかなるはずだ頑張ろう。

んで、実はこれだけじゃあ足りなくて 上記ファイルの最後にある gen_extractorsメソッドの中にある配列っぽいやつの中で 自分が定義したやつを追加しておかないといけない。

まあ、適当に

GenericIE()

とか書いている行の上あたりにでも

HogeIE(),

とでも書けば幸せになれるはず。

以上で簡単なところは対応できるので 後はmakeしてyoutube-dlを適当にPATHが通ってるところに放り込めば ムスコも泣いて大喜び。

というわけでまだ対応されてないけど有用だというところに対応して 僕にも対応版使わせてくださいね!

タグ:youtube-dl Python
posted by 麦汁 at 02:03 | Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/341493477
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
×

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