全体表示

[ リスト ]

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行)なのですが、ここまでもってくるのにも相当悩みました。もう少しでもウェブ標準技術を理解したいところですが、これがなかなか難しい…。

閉じる コメント(3)

顔アイコン

最後の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 ]

コメント投稿
名前パスワードブログ
投稿

閉じる トラックバック(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日記 ]

トラックバック先の記事

  • トラックバック先の記事がありません。


.

nullpage
人気度

ヘルプ

Yahoo Image

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
  今日 全体
訪問者 14 146384
ブログリンク 0 4
コメント 0 198
トラックバック 0 12

新規登録

Opera

LibreOffice

翻訳支援

登録されていません

フリーソフト

登録されていません

グラフィック・デザイン

登録されていません

Inkscape

登録されていません

Gimp

登録されていません

検索 検索

ケータイで見る

モバイル版Yahoo!ブログにアクセス!

モバイル版Yahoo!ブログにアクセス!

URLをケータイに送信
(Yahoo! JAPAN IDでのログインが必要です)

開設日: 2005/2/10(木)


プライバシーポリシー -  利用規約 -  ガイドライン -  順守事項 -  ヘルプ・お問い合わせ

Copyright (C) 2012 Yahoo Japan Corporation. All Rights Reserved.