Ruby
残すはFFI::MemoryPointerの話のみ。 OUT引数 Cのインタフェースを設計するときに、関数にポインタを渡し、ポインタを介することで関数の出力を受け取るようにするということがよくある。 例えば、次のようなコードが一例。 /* rbuf.h */ typedef struct _ri…
昨日の続き。 いよいよCインタフェースとの結びつけをやっていく。 グローバル変数の結びつけ グローバル変数の結びつけを行うには、FFI::Library#attach_variableを使う。 そうすると、グローバル変数にアクセスするアクセサメソッドが使えるようになる。 a…
昨日の続き。 Ruby-FFIのコア・コンポーネント Ruby-FFIを理解する上で、重要なクラス、モジュールがいくつかある。 FFI::Library ライブラリのロードや、グローバル変数、関数を結びつける機能などを提供する。 FFI::Pointer ライブラリで確保されたネイテ…
ニコニコ動画のダウンロードツールを作ってみたものの、ちょっと不満点が。 それは何かと言うと、RTMPで配信されている動画をダウンロードする場合、 ダウンロードの進捗が細かく表示されない ダウンロードの進捗度合いが分からない というもの。 これは、ダ…
これまでの各記事は、以下から。 ニコニコ動画のダウンロードツールをRubyで書いてみた。(その1) - いものやま。 ニコニコ動画のダウンロードツールをRubyで書いてみた。(その2) - いものやま。 ニコニコ動画のダウンロードツールをRubyで書いてみた。(…
昨日までの内容は、以下から。 さて、HTTPの動画はダウンロード出来たので、次はRTMPの動画のダウンロード。 gem探し RTMPのプロトコルを読み込んで実装するのはさすがに難しいので、RTMPを扱えるgemを検索。 しかし・・・見つからない! 厳密に言えば、それ…
Nicovideo DownloaderをRubyへポーティングしたはずなのに、なぜか正しくダウンロード出来ない。 ということで、今日はその調査と解決。 Cookieの確認 Forbiddenが出てるということは、認証で何か失敗しているということ。 そうなると、怪しいのはCookie。 …
昨日に引き続き、Rubyへのポーティング。 Rubyへのポーティング(続き) 昨日やったのは、ログイン処理まで。 元のNicovideo Downloaderは、ログインしたあとに動画のURLにアクセスしているけれど、そのレスポンスでやってるのは動画のタイトル情報を取得し…
Nicovideo Downloaderのコードは読んだので、次は原因探し。 printfデバッグ(笑) さて、ちゃんとPythonに精通した人とかならデバッガを使って調査をしたりするんだろうけど、残念ながら自分はPythonについてそれほど詳しくない。 なので、あまり褒められた…
自分がニコニコ動画のダウンロードツールとして使っていたのが、Nicovideo Downloader。 便利なツールなんだけど、ちょっと不満が。 具体的には、公式動画でいくつかダウンロード出来ないものがあるということ。 ただ、原因が分からない・・・ ブラウザでは…