ロゴ
Adobeがdiv病の元?今年もよろしくお願いいたします
Dec 14

URLを渡すとページの内容(htmlソース)をJSONPとかで取得できるAPIをYahoo! Pipesで作った(管理人日記) - むぅもぉ.jp
Big Sky :: JSONでHTMLを取得するYahoo! Pipesが凄い

このAPIで、SafariのWebクリップみたいなことができるじゃないかと思い、ちょっとブックマークレットを作ってみた。
ブックマークレット何!?って人は、こちらを参照。
いやぁYahoo! Pipesすごいな!!あと、ぷーるさんに感謝。

[Yahoo!Japanのトップニュース](このリンクをブックマーク)

実行すると、

こんな感じでYahoo!Japanのトップニュースが表示される。
Firefox2/Safari3/Opera9では動作OK。

ブックマークレットは作ったこと無かったので弾さんがやっていた
メタブックマークレットタイプでやってみた。

ブックマークレットのソース

CODE:
  1. javascript:(function(u){var s=document.createElement('script');s.charset='UTF-8';s.src=u;document.body.appendChild(s)})('http://www.ohmiyapatriots.com/blog/scripts/show_yahootopic.js')

スクリプトは↓

CODE:
  1. (function(){
  2.     var load_page = function(){
  3.         var url = 'http://www.yahoo.co.jp/';
  4.         var s = document.createElement('script');
  5.         s.charset = 'utf-8';
  6.         s.src = 'http://pipes.yahoo.com/poolmmjp/page_loader?url=' +
  7.             encodeURIComponent(url) + '&_render=json&_callback=show_yahoo_topic';
  8.         document.body.appendChild(s);
  9.     };
  10.     show_yahoo_topic = function(data) {
  11.         var div = document.getElementById('yahoo_topic') || create_element();
  12.         div.innerHTML = data.value.items[0].description.match(/<table.*\/table>/);
  13.         document.body.appendChild(div);
  14.     };
  15.     var create_element = function(){
  16.         var div = document.createElement('div');
  17.         div.id='yahoo_topic';
  18.         div.setAttribute("style","border:1px solid #9b72cf;background-color:#f1f1fd;" +
  19.         "width:224px;position:fixed;right:0px;top:0px;opacity: 0.8;");
  20.         return div;
  21.     };
  22.     load_page();
  23. })()

JSONPで呼び出される関数がどうしてもグローバルじゃないと呼び出せないので
もし、ページにshow_yahoo_topicという関数あったら汚染されるけど、まー大丈夫だと思う。
何かうまくやる方法あったら教えてください。

あと、Yahoo!Japanのトップページからトピックだけ正規表現で
引っ張ってきてるんだけども、トピックの部分だけ改行しないで1行で記述されているので、

<table.*\/table>

だけで取って来れてびっくりした。
(.は改行文字を除いた文字にマッチする表現なので)

最近Yahoo!Japanがたまに新デザインでサイトを表示するので
もしかしたらうまく動かないかもしれないのでご免なさい。
こんなことができるよという一例としてみてください。
ほんとFetch Pageモジュールはすごい!!
色々できそう (;゚∀゚)

このエントリをはてなブックマークに登録 このエントリを del.icio.us に登録 このエントリをlivedoorクリップに登録 add to Yahoo Bookmark

この記事のカテゴリー:Development
トラックバックURL:
この記事のURL:

2 Responses to “Yahoo!のトップニュースがすぐ見れるブックマークレット”

  1. mm man Says:

    これヤフーの現在の新ページでも表示できるようになりませんか?
    とても素晴らしいそうですw

    ぜひスタートページとして使いたいですね~

  2. koko1000ban Says:

    素晴らしいなんてありがとうございますw
    新ページでも動くよう対応してみます!

Leave a Reply