Opera9でヤフー動画
|
以前はOpera9でもヤフー動画が使えた覚えがあるのですが、いつの間にかActiveXを使ったウェブベースのプレーヤを利用するように仕様が変わったのでIE専用になったようです。 うちはリーチDSLで動画を見るのはかなり辛いし、特に見たい番組が有る訳ではないのですが、以前のようにメディアプレーヤを使って見られるようにするOpera9専用ユーザスクリプトをつくってみる事にしました。 ヤフー動画のページがどんな風になっているのかざっと調べてみて、どうすればいいのかは概ね判ったのですが、ウェブ技術に疎いので実際にどのようにコーディングして良いのかさっぱり判りません…。そこで判らないながらも無理やりやってしまう方法としてOpera9のデベロッパーコンソールを使う事にしました。必要な情報をデベロッパーコンソールでさがしてそれをそのまま使っています。必要な情報を動的に解析してさがすような事はしていません。でも今使えればまぁ良しとする事にしました。 やっている事は非常に簡単で、利用可能環境チェックスクリプトを常に可能になるようにする事、ウェブプレーヤを開くスクリプトをウィンドウメディアメタファイル(ASX)を開くスクリプトに変更する事、最後に、サーバがASXのコンテンツタイプをtext/htmlとして返すために正しく開けない事への対策としてそこからストリームのアドレスを直接取り出して開く事、この3点です。 できればストリームを開いた後の真っ白なウィンドウを閉じたかったのですが、これはまだ自分には難しそうなので手で閉じる事にしました。 以下、テキストエディタでコピペしてyahoo_Douga.jsとして Opera9のUser Scriptディレクトリに入れておけば使えるはずです(数本の無料動画を開いて確認しました)。 // ==UserScript==
// @name yahoo_Douga
// @author nullpage
// @namespace http://blogs.yahoo.co.jp/nullpage_vwxyz
// @version -1
// @description yahooo douga enabler for opera9
// @include http://*streaming.yahoo.co.jp/*
// ==/UserScript==
// fake env checker
if(location.hostname == 'streaming.yahoo.co.jp' ) {
window.opera.defineMagicFunction(
'isStreamingEnvCheck' ,
function(){ return true; }
);
// bypass web player
window.opera.defineMagicFunction(
'wo',
function(ofunc,thisobj,url){
url= url.replace(/player\.html/ , 'makeAsx.php');
url= url.replace(/&spid=/ , '&spaceid=');
url= url.replace(/&hash=[\da-f]+/ , '');
url= url.replace(/&ev=\d+/ , '');
var w= window.open(url);
}
);
}
// asx (text/html) opener
if(
location.hostname == 'player.streaming.yahoo.co.jp' &&
location.pathname == '/player/makeAsx.php'
) {
location= document.getElementsByTagName(
"ref"
)[0].attributes[0].nod eVal ue;
}
※かなり酷いコード(特に最後の1行)なのですが、ここまでもってくるのにも相当悩みました。もう少しでもウェブ標準技術を理解したいところですが、これがなかなか難しい…。
|
トラックバック(1)
トラックバックされた記事
[opera][javascript][user.js] text で開かれたページを別の MIME タイプで開 ...
先にコード var xhr = new XMLHttpRequest(); xhr.open( 'GET', location.href, true ); xhr.onreadystatechange = function() { if ( xhr.readyState == 4 ) { location.href = 'data:video/x-ms-asf;charset=utf-8,'+encodeURI(xhr.responseText); }
2007/6/19(火) 午後 11:05 [ miya2000のOpera日記 ]
トラックバック先の記事
- トラックバック先の記事がありません。


最後のnod eVal ueがばらけてしまうのは何故? ヤフーブログだから?
2007/2/21(水) 午後 7:50 [ nullpage ]
素晴らしいです! 早速使わせていただいています。 『サイボーグ009』のOPを久々に見ました。 > ストリームを開いた後の真っ白なウィンドウを閉じたかった ちょっと無理矢理ですが、loadイヴェントの際にタブを閉じるようにするというのはどうでしょうか。 ユーザー JavaScript の末尾に下のコードを追記してみてください。 window.addEventListener('load', function () { if (location.href.match(/^http:\/\/player.streaming\.yahoo\.co\.jp\/.*/)) { window.close(); } }, false);
2007/2/21(水) 午後 9:30 [ 渡邉 ]
ありがとうございます。無料コンテンツは数分で終わるのも多いようですので自動クローズはなんとかした方がいいですね。試してみようと思います。アドバイスありがとうございました。
2007/2/22(木) 午後 11:36 [ nullpage ]