Tomblooハックス – Flash SWFからJPEGファイルを取り出す
Spark勉強会 JSplashの資料を公開+α – 最速チュパカブラ研究会を見てpure javascriptでFlashを再生できるなら、Flashの中のオブジェクトも触り放題で長年のTumblrユーザの夢であるFlashの中身をpostできるのでは!
と思ったけど調べてみるとJSplash自体はSWFのパーサを持っているわけではなくて、あらかじめswfmill swf2xml and xml2swfで作ったXMLをJSONで持っておいてそれを使うようになっていました。そこで方向を見失ってとりあえずページの中にあるembedタグのSWFを全部読み込んで中に入っているjpegを一覧表示するものを作ってみました。
使い方
ファイルをダウンロードして、Tomblooのscriptディレクトリに入れたあと、一度Firefoxを再起動して(もしくはTomblooのファイル再読み込みを行って)からCtrl+Shift+DもしくはFirefoxのTomblooのメニューから実行します。
ダウンロード
scriptディレクトリにコピーする
Tomblooのscriptディレクトリにダウンロードしたswfparser.jsをコピーします。コピーしたらFirefoxを再起動してください。
詳しくはiview for Tomblooのscriptディレクトリにコピーするを参照してください。
実行
Flashの表示されているページでCtrl+Shift+Dを押すかFirefoxのメニューのTools/Tombloo/swfparserという項目を選んで実行すると、Flashのファイルから抽出されたJPEGファイルがページ上部に表示されます。下はYahoo! JAPANの右側ブランドパネルFlash広告の例。
どうでもいいけどFlashが表示されるサイズよりも大きいjpegファイルが埋まってるものなんですねー。
注意点
- このスクリプトはSWFファイル自体が内部に持っているJPEGデータを表示するだけなので、Flashが動的に外部から読み込んで表示しているJPEGファイルは取り出せません。
- いまのところ
DEFINEBITSJPEG(6), DEFINEBITSJPEG2(21), DEFINEBITSJPEG3(35)で定義されている画像が取り出せます。DEFINEBITSLOSSLESS系はビットマップをWindowsのBMPに変換する方法がよくわからなかったので対応していません。 表示された画像はsrcがdata uriになっているのでTumblrにpostしたりはできません。Tomblooからは31_Tombloo.Service.extractors.jsを適用するとpost可能になります。パッチをTombloo本体にマージしてもらったので次のバージョン(0.3.24)からこのパッチなしにpostできるようになります。
0.3.24 がリリースされたのでTomblooをアップデートすればpostできます。

No comments
Jump to comment form | comments rss [?] | trackback uri [?]