カレンダー
クイック サーチカテゴリ管理最近のエントリ
|
2009年 8月 14(金曜日)YouTube Downloaderの改修YouTube仕様変更に合わせてダウンローダーを変更最近、私のYouTuneダウンローダでダウンロードエラーしているファイルがボチボチあったので、YouTubeの仕様の変更が行なわれているのには気が付いていました。それでも大多数はダウンロードできていたので後まわしにしていたところ、昨日8/13の朝から一切ダウンロードできなくなりました。先方の都合に文句を言う筋合もありませんので早速対応しました。 仕様変更の中身以前はビデオが表示されるURL(<http://www.youtube.com/watch?v=KONKcBvRHt8>の形式)の中身(1)を読み、"fullscreenUrl"のラインから"video_id"を取得して、"http://youtube.com/get_video?"のメソッドに食わせてやるというものでした。この方法で多くのツールが配布されています。しかし、実際に試してみると、既に"fullscreenUrl"は中身がなくなっているのです。 var fullscreenUrl = '/watch_popup?v=KONKcBvRHt8'; 結局、紆余曲折(後述)ありましたが、結果的には以下のような方法で取得できました。
"fmt_url_map": "18|http://v8.lscache5.c.youtube.com/videoplayback?ip=0.0.0.0 さてここまで分ったので、早速CGIを修正しました。実はこの方法は、従来のものを含めて第3の方法です。第2のもの(後述)を含めてサポートするようにしましたが、実際、8/13以降は全て上記の第3の方法でダウンロードされているように観察されます。 これにて、サービスのページと、ソフトウェアのページをアップデートしました。 紆余曲折と第2の方法実際には、すんなりは分りませんでした。第2の方法というべきものがあり、2008年の後半から一部のビデオファイルでサポートされていたようです。ググって発見したこの方法をやってみて、"動かん動かん"と唸っていました。 朝から動いていないのが分ったので、早速自作のproxyでブラウザとYouTubeのやりとりを眺めてみると、怪しいのは以下のリクエストです。 GET http://www.youtube.com/get_video?video_id=KONKcBvRHt8 お馴染の"get_video"メソッドですのでログを grep してすぐ見つかりました。従来と違うのは、"t"という呪文パラメタが追加されています。さて、これを更にググってみると、外人が概ね以下のようなことを書いていました。
これを実装してみましたが、うまくダウンロードできません。このときのエラーコードが微妙に変化するのと、自作proxyではどうした訳かブラウザからの視聴も失敗してしまうため、中々理由が分りませんでした。疑心暗鬼になって、「さては小細工されたかぁ」と思い、GET メソッドのパラメタやUserAgentなんかもいじったりしてしまいました。 もう一回ログに戻ってみると、"get_video"の直前に、怪しいリクエストがあります。 GET http://v24.lscache4.c.youtube.com/videoplayback?ip=0.0.0.0 "videoplayback"でググってみると、どうやら、これで取得できるっぽいです。それで探ってみると、"swfArgs"の中にありました。フラッシュプレイヤーに渡すパラメタのようです。パイプの前の数字はビデオ解像度のパラメタとして見覚えがありますので、後のURLがその解像度のURLということになるでしょう。これで実装すると、ファイルがダウンロードできました。 結局のところYouTube側は、むしろ直ダウンロードし易い形に仕様変更してくれたようです。実際、分り難くすることも含めて第2の方法を採用したが、アクセスが1回増えるのも無駄だし、ということで第3の方法にしたのかもしれません。まだ、仕様を詳細に解析していませんが、使い易くしていただいてありがたいことだ、と思っていて良いように思います。 2009年 7月 16(木曜日)デジタル写真の向きを合わせるJPEG画像の向き(EXIF Orientation)JPEG画像には画像の向きを示す情報が記録されている場合があり、画像ビューワはこれをヒントとして、画像の向きを合わせて表示することが期待されています。そのソフトウェア的な対応方法を説明します。 最近Canon製の一眼レフデジカメ(Kiss X2)を購入しました。Canon製デジカメは、知る限りではコンデジも含めて全機種に重力センサが付いていて、撮影時に画像の天地向きを記録することができます。(しないこともできる)。これをgqviewなどの対応したソフトで閲覧すると、自動的に縦向き(portrait)の写真はクルっと回転して正しい向きに直して見ることができます。対応していないと縦画像が寝てしまいますので一長一短なのですが、デフォルトでは利用するように設定されています。 私が提供しているPhotostandでは、Linux版もWindows版も特に何も処理していませんでしたので、そのまま(縦向きの画像は寝た状態で)表示されます。つまり、システムの壁紙表示機能はこの仕様に対応していませんでした。 EXIFの仕様と対応この向き情報は、EXIFのOrientationに記録されています。従って、表示の前にこの情報を読み出して、正しい向きに直してやる必要があります。仕様に関しては、このサイトが詳しいのですが、かいつまんで書くと以下のようなものです。
|
ブログ管理 |