2013年03月29日

つぶやき専用コマンド tweet-command を試してみた

Terminal.app から気軽に一方的につぶやきたいなあと思って そういうのができるようなのがどこか転がってないかなあって探してたら tweet-command という物を見付けたのでそれを試してみた。

まず、このtweet-commandというものがRuby製のコマンドなので Ruby1.9.3または2.0.0が動く環境でも用意しておいてね。

麦汁さんはrbenv+ruby-buildな環境で2.0.0-p0をインスコして

$ rbenv global 2.0.0-p0

とかしてる。

嘘ついてた。2.0.0じゃなかった……。 rvmの1.9.3使ってた……。 rbenvの2.0.0だとSSLエラーになってる。

それから適当なディレクトリにtweet-commandをgithubからcloneしてくる。 hubコマンドを入れてあれば

$ hub clone tomoari/tweet-command

でOKだしgitコマンドさえあれば

$ git clone git://github.com/tomoari/tweet-command.git

でいける。けどhubコマンドのが楽よね。

それからこのリポジトリのREADMEのインストール手順にも書いてるように 適当にPATHの通ってるところにsym linkを張る。

$ ln -s ~/path/to/tweet-command/tweet.rb ~/bin/tweet

ちなみにREADMEには 「Ruby (1.9.3 での動作しか確認していませんが、1.8.7でも動くかもしれません)」 と書いてますが force_encoding とか使ってるので1.8.7では怒られます。 怒られたから2.0.0使ってる。

で、認証通しておくために一度

$ tweet

しておく。

すると認証用のURLが出て来るのでそれをWebブラウザのアドレス欄にコピペして ユーザ名、パスワードを放り込んで承認したら PINコードが表示されるのでそれを元のTerminalに入力。 それが済んだら ~/.tweet に認証情報が放り込まれる。

そこでおもむろに

echo 'オンドゥルラギッタンディスカー!' | tweet

みたいに標準入力をパイプで渡してあげればつぶやいてくれる感じ。 お手軽!

ただこれTwitter API 1.1用ではないのよね。 恐らくURLのバージョン番号を書き換えるだけでいけると思うから 誰かforkして対応してね(はぁと)

タグ:twitter
posted by 麦汁 at 22:54 | Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

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) | その他 | このブログの読者になる | 更新情報をチェックする