ラベル フィード の投稿を表示しています。 すべての投稿を表示
ラベル フィード の投稿を表示しています。 すべての投稿を表示

2013年6月27日木曜日

Feedly のカテゴリーを整理 - 正常に登録されてないフィードを Organize 画面で削除

1. 登録されているはずのフィードに +add to my feedly ボタンが表示される

Google Reader から Feedly にインポートしたフィードの中に、正常に登録されていなものがあった。

SnapCrab_No-0322左メニューのカテゴリー内にフィードが表示されているにも関わらず、そのフィードを選択すると、フィード名の隣に、+add to my feedly ボタンが表示される。

フィードが登録されているなら、このボタンは表示されないはずなのに。

そのため、当該フィードを削除したくなっても、Remove ボタンを押すことができない。

 

2. Organize 画面でフィードを削除する

これに対処するには、

  1. もし、対象のフィードが必要なものであるなら、一度、+add to my feedly ボタンを押し Feedly へ登録する。
  2. 左側に表示されるメニューより、 Organize を選択する。

SnapCrab_No-0323

この Organize 画面に表示されるフィードから、正常に登録されてないフィードを削除できる。

SnapCrab_No-0324

追記(2014/9/9): もし、登録してあるカテゴリーとフィードの数が多い場合、Google Chrome を使う方がよい。Firefox の方が処理が遅い。

2013年6月22日土曜日

Firefox でフィード(Atom, RSS)の登録先を設定する - Feedly Cloud へ追加したい場合

1. 「購読」ボタンの設定

Firefox でサイトのフィードを登録したい場合、フィードの「購読」ボタンを押す。

購読」ボタンの配置は、「ツールバーのカスタマイズ」で行う。

  • メニューより、表示 > ツールバー > カスタマイズ…

SnapCrab_No-0294

「購読」ボタンを押すと、フィードのプレビューが表示され、登録先を選択する画面が表示される。「この購読に使用するフィードリーダー」をカスタマイズしたい。

SnapCrab_No-0296

 

2. 購読に使用するフィードリーダーを追加

a. 設定名と値

登録先を追加するには、about:config の設定より、以下の設定名に準じた値を設定する。

  • browser.contentHandlers.types.0.title
  • browser.contentHandlers.types.0.type
  • browser.contentHandlers.types.0.uri

ただし、上記に含まれる数字(ここでは 0)は、「他の登録先で使われている数字」と重複しないこと。

(cf. Browser.contentHandlers.types.*.uri - MozillaZine Knowledge Base)

手順としては、最初にブラウザのロケーションバーに about:config と入力する。

その後、検索フィールドに

browser.contentHandlers.

と入力して、設定名を絞り込み、既に設定してある値を表示。

設定名に含まれる数字を確認し、「これまでに使われている数字」を控えておく。

 

b. Feedly Cloud の場合

SnapCrab_No-0298例えば、フィードの追加先として、Feedly Cloud を追加したいとする。

自分の環境では、「これまでに使われている数字」の中で最も大きい数は 5 だった。そこで、新しく追加する設定名には、重複しないように 6 を使うことにした。

設定名を追加するには、設定値が表示されている部分で、

  • 右クリック > 新規作成 > 文字列

を選択し、下記の値を入力する。

設定名

browser.contentHandlers.types.6.title

feedly

browser.contentHandlers.types.6.type

application/vnd.mozilla.maybe.feed

browser.contentHandlers.types.6.uri

http://cloud.feedly.com/#subscription/feed/%s

※ 値の末尾に空白がないことを確認すること。

一度、Firefox を再起動する。これにより、上記の …. title で設定した値がフィードリーダーの候補として、ダイアログに表示されるようになる。

SnapCrab_No-0297

 

関連記事

2013年5月6日月曜日

Twitter のフィードを取得する - TwitterGoodRSS または Twilog に乗り換えた

1. Twitter の API version 1 でフィードを取得できなくなる

SnapCrab_No-0851これまで Twitter のフィードを取得するには、以下のように API を利用していた。

How to find twitter RSS feed URL によると、

http://api.twitter.com/1/statuses/user_timeline.rss?screen_name=accountName

例えば、Twitterサポート (@TwitterHelpJP) のフィードを取得するには、

この方法は API version 1 に基づいている。

残念ながら、この API version 1 は使えなくなる。

 

2. API version 1 の代替サービス

API version 1 を用いたフィードの取得の代替方法にはいくつかある。

a. TwitterGoodRSS

SnapCrab_No-0852TwitterGoodRSS サービスは、Twitter API 1.1 に対応している。

気に入っている点は、画像をインライン展開してくれること。大きな画像で表示してくれるので見やすい。

Twitterの(公式よりまともな)RSSを生成するサービス TwitterGoodRSS をつくったよ! - yayuguのにっき によると、

URL、#ハッシュタグ、@リプライに対応。さらに公式の画像サービスpic.twitter.comの画像をインライン展開できます。

さらに、リストからRSSを生成する機能もつけました。

2013/03/05 追記: Twitter API 1.1に対応しました

利用するには、

  1. http://twittergoodrss.herokuapp.com/ に登録。
  2. Twitter で「連携アプリを認証」する。
  3. 提示されるブックマークレット「TwitterGoodRSS 」を登録。

これで、フィードリーダーに登録したいユーザーの Twitter ページで、ブックマークレットをクリックすると、フィードが表示される。

このサービスが一番使いやすそうだ。

 

b. Twilog

SnapCrab_No-0853 Twilog は1日単位でツイートをまとめて表示してくれる。フィードの配信もしている。

ただし、登録ユーザ以外のフィードは配信してないようだ。(昔はしてたような気がするけれど。)

 

c. Twitter RSS

ツイッターの更新情報をRSSで受け取れる『Twitter RSS』 | 100SHIKI

Twitter RSSを使えば、気になる人のつぶやきを、フォローせずにチェックすることができますな。

なんらかの理由でフォローをしたくない、もしくはRSSリーダーで見たい、という人におすすめだろう。

Twitter RSS で配信されるフィードを確認したところ、画像の展開は行われなかった。表示が見にくい。

 

d. Topsy

SnapCrab_No-0854 Topsy を利用していたこともあるが、最近、配信されなくなってしまった。

 

3. API vesroin 1.1 の制約

SnapCrab_No-0855API version 1 は、後少しで使えなくなる。次期バージョンである API versoin 1.1 が控えているが、使いづらいらしい。理由は RSS を返さないことと、「認証」を必要とすること。

本の虫: Twitter API 1.1により、Twitterは終了する によると、

Twitter API Version 1.1の登場により、Version 1はdeprecatedとなった。1.1では、RSSがサポートされていない。これでTwitterは完全に終了した。終わりの始まりだ。

API v1 Retirement Date Extended to June 11, 2013 | Twitter Developers によると、

We're extending the API v1 retirement date from May 7, 2013 to June 11, 2013, in order to accommodate additional blackout testing.

Twitter APIと開発者規約変更のインパクトまとめ:結局、Twitter API 1.1で何が変わる? 5つのポイント - @IT によると、

多くのAPIはエンドポイントURLが変わるだけですが、一部廃止・変更もあるので、注意が必要です。公式ドキュメントに廃止・変更になるAPIのリストがないので、以下にまとめました。

なお、廃止対象に挙げているAPIでもAPI 1.1のエンドポイントで実際呼び出せてしまうものがいくつかありますが、ドキュメントには記載されておらず、今後呼び出せなくなる可能性がありますので使うべきではないでしょう。

また、これまで一部のAPIはOAuth認可なしで呼び出せましたが、Twitter API 1.1では全てOAuthが必須となります。

ただし、ウェブサイトに埋め込むタイムラインは認証は必要ない。

Following up on API housekeeping | Twitter Developers  によると、

It's possible you may be able to use an Embedded Timelines widget to display these tweets on your internal site as an alternative without OAuth.

Otherwise, you'll need to register an application to dev.twitter.com/apps, learn about OAuth, and use it to fetch a JSON-based feed (instead of RSS) from https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=DeptVetAffairs -- Single-user OAuth with Examples gives some tips on how to perform these kind of requests for a use case like yours.

 

関連記事

2013年5月4日土曜日

「Facebook ページ」のフィードを取得するブックマークレット

1. Facebook ページが配信するフィード

a. フィードを表示するブックマークレット

「Facebook ページ」のフィードを取得したい。そのためのブックマークレット。

使い方は、

  1. 予め上記リンクをブックマークに登録する。
  2. 登録したい Facebook ページで登録したブックマークをクリック。

これにより、フィードを配信している URL に移動する。記事のタイトルが文字化けして表示されるが、FeedlyGoogle Reader に登録すると、文字化けは解消される。

ただし、記事の中にある写真は、Facebook のサイトで見るよりも小さい。これに対して、サムネイルをマウスオーバーで拡大するアドオン Thumbnail Zoom Plusを併用すると良い。

 

b. フィードを検出できないのでブックマークレットが必要

Facebook ページは、その場でフィードを配信している URL が指定されていない。そのため、ブラウザがフィードを検出できない。一般的なブログのようにフィードを簡単に取得できないから不便。これは Facebook 内で「ページフィード」を利用させたいからだろう。

Firefox では、標準でフィードを検出する仕組みが備わっている。ツールバーをカスタマイズすることにより、「購読」ボタンを好きな場所へと配置できる。 Google Chrome では、拡張機能 RSS Subscriptions with FEED で同じ機能を使える。

最近、企業サイトの中に、ホームページをパンフレットの代わりとし、「更新情報」を Facebook ページで提供する形を見かける。フィードリーダーに情報を集約している自分としては、この仕様では困る。なぜなら、わざわざ Facebook を開くのは面倒だから。そのようなサイトを見る度に、自前でフィードを出力するか、フィードを出力するブログで更新情報を通知してほしいと思う。

 

c. 「お知らせ」のフィード

ところで、Facebook の「お知らせ」通知には、フィードが用意されている。

Facebookのお知らせのRSSフィードを作成するにはどうすればよいですか。 | Facebookヘルプセンター

お知らせページでFacebookのお知らせのRSSフィードを作成することができます。ページ上部のRSSリンクをコピーして、RSSリーダーに貼り付けます。

フィードを登録するには、「お知らせ」より、RSS のリンクをクリックし、フィードリーダーに登録する。

 

2. Facebook ページのフィードを得る方法

Facebook ページの フィードを得るには、Facebook APIsGraph API を利用する。

フィードを取得する流れは、

  1. Facebook ページの idGraph API を利用して取得する。
  2. id と「フォーマット」を指定して、フィードを得る。

例えば、フェイスブック ジャパン ( https://www.facebook.com/FacebookJapan )のフィードを手動で取得するには、

  1. Graph API Explorer を用いて、Graph API で GET を選択し、フィールドに FacebookJapan と入力し、送信ボタンを押す。
  2. FacebookJapan の id を含んだ情報が表示される。

この id を下記の URL に当てはめる。

  • http://www.facebook.com/feeds/page.php?&format=rss20&id=[ここにidを指定する]

これにより、以下の URL がフィードだと分かる。

修正(2013/09/24): Firefox において、安全でないコンテンツをブロックする動作に対する対策をした。

 

フォーマットが RSS2.0 だと文字化けしない

フィードの「フォーマット」として、ATOM RSS2.0 を指定できる。

両方とも、フィードのプレビューをブラウザで確認するとタイトル部分が文字化けする。しかし、RSS2.0 の方は、Feedly へ登録すると文字化けが直る。

 

3. ソースコード

ブックマークレットのソースコードは、以下の通り。

利用したメソッド。

全体の構成。

利用したサイト。

 

対象ページによる場合分け

Facebook ページには、独自のユーザーネームが付けられているページと、そうでないページがある。

例えば、フェイスブック ジャパン にはユーザーネームが設定されている。

これに対して、NICI JAPAN は、Facebook ページの URL が異なる。

この場合、末尾の数次が id のようだ。

 

関連記事

2013年3月22日金曜日

Google Chrome でフィードを検出する拡張機能 RSS Subscriptions with FEED - feedly を利用するための設定

1. Google Chrome で配信されているフィードを検出する RSS Subscriptions with FEED

Google Chrome でフィードを配信してるサイトにおいて、フィードを登録するには、

を使う。インストールすると、ロケーションバーに配信されているフィードを表すアイコンが表示される。

SnapCrab_No-0080

アイコンをクリックすると、登録可能なフィードの候補が表示される。

SnapCrab_No-0081

一つのフィードを選択すると、フィードのプレビューが表示される。

フィードリーダーに登録するには、対象のフィードリーダーを選択して、Subscribe Now ボタンを押す。

SnapCrab_No-0085

 

2. Feedly への登録ボタンを作成する

フィードリーダーとして、Feedly を利用するには、新規に追加する必要がある。

そのためには、フィードリーダーを選択するセレクトボックスを開き、最下段の Add new… クリックする。

SnapCrab_No-0082

Edit feed reader ダイアログが表示されたら、フィールドに以下を入力する。

  • Description : feedly
  • URL : http://www.feedly.com/home#subscription/feed/%s

SnapCrab_No-0083

これにより、フィードリーダーとして、feedly を選択できるようになる。

SnapCrab_No-0084

登録したいフィードのプレビューを表示したら、Subscribe Now ボタンを押し、feedly へ飛んで、フィードを追加する。

 

Full Text RSS Feed を利用して全文配信を Feedly へ登録する

全文配信してないサイトに対しては、 Full Text RSS Feed を利用して登録する。

上記と同じように、新規に登録先のフィードリーダーを作成する。

Edit feed reader ダイアログが表示されたら、フィールドに以下を入力する。

  • Description : feedly 全文配信
  • URL :  http://www.feedly.com/home#subscription/feed/http://fulltextrssfeed.com/%s

全文配信してないサイトに対しては、セレクトボックスで「feedly 全文配信」を選択し、Subscrive Now ボタンを押す。

追記(2013/06/22): Feedly Cloud へ登録したい場合は、URL として以下を設定する。

http://cloud.feedly.com/#subscription/feed/%s

 

関連記事

2011年9月5日月曜日

フィードを全文配信する Full Text RSS Feed Builder を開くためのブックマークレット

1. フィードを全文配信してほしい

フィードを全文配信してないサイトを、Google Reader に登録するとき、「まるごとRSS」 を使っていた。

全文配信されてないサイトは、いつの間にか読まなくなる。部分的にフィードを配信しているサイトは、全文配信されるように変換しておきたい。

 

2. フィードを全文配信してくれる Full Text RSS Feed Builder

Full Text RSS Feed は、まるごとRSS と同じように、フィードを全文配信するためのサービス。

部分的に配信しているRSSフィードを全文配信に変換してくれるサイト「Full Text RSS Feed Builder」 : ライフハッカー[日本版]によると、

「Full Text RSS Feed Builder」は、部分的にRSSを配信しているフィードを全文配信に変換してくれるサービス。…

まず、Full Text RSS Feed Builderにアクセスしましょう。変換したいRSSフィードを入力して「Submit」します

Full Text RSS Feed の特徴を確認すると、

no ads

広告が表示されないので、ありがたい。 こちらに乗り換えよう。

 

3. Full Text RSS Feed Builder を開くためのブックマ-クレット

毎回 Full Text RSS Feed を開くのは面倒なので、ブックマークレットを作っておく。 以下をブックマークに D&D 。

ブックマークレットの内容は、以下の通り。

(function(){
    var l=location,
        url="http://fulltextrssfeed.com/";
    l.href=url+l.host+l.pathname;
})();

 

4. フィードの画像が表示されないときの対策

登録したフィードの画像が表示されないとは、

を参照。

2011年7月9日土曜日

Youtube でユーザの「お気に入り」「再生リスト」のフィードを取得

Youtube において、ユーザのお気に入りを Goolge Reader に登録したい。

CropperCapture[236]

 

「お気に入り」のフィード

特定のユーザの「お気に入り」のフィードを取得するには、

http://gdata.youtube.com/feeds/api/users/username/favorites

上記の URL の username は、ユーザーの YouTube ユーザー名に置き換えてください。

(デベロッパー ガイド: Data API プロトコル -ユーザーの再生リストの取得 より)

 

「再生リスト」のフィード

「再生リスト」に登録されたフィードは別にある。取得するには、

http://gdata.youtube.com/feeds/api/users/username/playlists

上記の URL の username は、ユーザーの YouTube ユーザー名に置き換えてください。

(ユーザーの再生リストの取得 より)

 

個別「再生リスト」のフィード

個々の再生リストを開き、その URL を見ると、

http://www.youtube.com/view_play_list?p=ランダムな文字列

末尾にランダムな文字列があるのを確認できる。これを元にして、以下の URL にアクセスする。ただし、ここではユーザ名がないことに注意。

http://gdata.youtube.com/feeds/api/playlists/ランダムな文字列

(cf. 単独の再生リストの取得gd:feedLink の href 属性)

 

参考サイト

2009年9月20日日曜日

JavaScript で外部サイトのフィードを取得 - Google AJAX Feed API を利用

0. 目次

  1. 公式 HP と、外部ブログを組み合わせる事例が多い
  2. ユーザが HP を更新したいなら、CMS を利用するのがいい
  3. 外部ブログのフィードを取得する方法
  4. Google AJAX API
  5. Google AJAX Feed API
  6. フィードを取得するためのソースコード

 

1. 公式 HP と、外部ブログを組み合わせる事例が多い

見かけよりも、サイトの内容が大事

090918-006企業サイトを見ていると、公式 HP とは別に、ブログは外部サービスを利用している例を見かける。

「金かけてるのに、自社の紹介とブログが別って、何で?」

CMS を使って、一体感のあるデザインにした方がいいと思うけれど、別々の例をいくつか見ていたら、次第に慣れてきた。

「それでも、まぁいいかぁ~」

という気になる。

Flash を中心に構築しているサイトであれば、ブログを組み込むのは手間がかかるだろう。

Twitter の興隆っぷりを見ていると、発信する媒体の統一性など、受信してくれる価値に比べたら微々たるもの。情報が文脈から切り離され、情報としてのみ価値を有し、デザインは二の次というのは潔い。RSS フィードを受信することが習慣化するにつれ、ますますそういう意識に陥る。見かけよりも中身が大事。

 

されど見かけも重要

しかし、デザインに全体的な統一感があると、サイトをはじめて見る人にしてみれば、内容の理解がしやすい。まとまって見える分記憶に残りやすい。

「ちゃんとしたところだな」

という感じを演出できる。

以前、それほど PC に詳しくない人から、

「ブログはホームページではないですよね?」

と言われたことがある。最初、その意味がわからなかった。できあいのシステムを利用したブログと、所謂 HP 作成用のソフトで作ったものとは、別のものだと認識しているようだ。感覚として、そこに境界を感じるらしい。

そういう認識を持つ人にとって、ブログでサイトを作って

「これホームページにしておきませんか?」

というのは通じない。体面が大事な企業の HP が、Blogger で何のカスタマイズもされていなかったら、

「ここ大丈夫か?」

と思ってしまう感覚は理解できる。人は、見かけで判断することもあると。

追記 (2010.5.3) : ダダ漏れ東京女子流 のインタビューが配信されているのを見た。そのグループのサイトを見たら、一目で色々なサービスを利用していることがわかるデザインだった。公式サイトは看板で、個別の内容は各々のサービスを参照という形が、最近益々不自然でない印象を受ける。

 

2. ユーザが HP を更新したいなら、CMS を利用するのがいい

年間少しのお金を出せば、ドメインとサーバスペースを取得できる。できあいのブログが嫌なら、CMS をインストールすれば、快適な環境が得らえる。

しかし、既にプロバイダーと契約していると、容量が少ないながら無料でホームページ用のスペースを持っていることが多い。既にその場に HP を作っている場合、

「アドレスを変えたくないし、無料のスペースがあるのでこれ以上はお金をかけたくない。」

と考える人がいる。そういう心情も理解できなくはない。しかし、加えて

「でも、ブログのように自分で HP の内容を更新したい。」

となると、ちょっと悩んでしまう。 (+_+) 

サーバの仕様によっては CGI が使えるので、CMS で置き換えることもできる。しかし、無料の場合、制約が多くて無理なことも多い。もし、Perl が使えるなら、シンプルで軽そうな blosxom は良さげ。これでも処理が重たく感じられるようなサーバなら、別の手を考えるしかない。

 

3. 外部ブログのフィードを取得する方法

HP にとって、アドレスは昔ほど意味を持たなくなっている。単語を検索して、辿りつくのが普通。

であるなら、既存の HP は潰して、別の URL へリダイレクトさせるだけの役割を持たせればいい。しかし、今あるものは、それはそれで活用したい場合、どうしよう?

苦肉の策として、日々更新したい内容は、外部のブログで更新。そのフィードを、スクレイピングして既存のホームページに表示する。

しかし、制約があって、サーバに RSS を取得するライブラリをインストールして利用する方法がわからなかったら、どうしよう?

JavaScript: 外部RSS読み込み by “Google Ajax Feeds API” | t.p.fields - web+tech info  によると、

とあるお仕事でJavaScriptを用いて外部RSSを読み込む作業をすることになった。…

JavaScriptでのクロスドメイン処理は難しいので、”Google Ajax Feeds API“を使わせてもらうことにした。

“Google Ajax Feeds API”は、かの有名なGoogleが提供してくれる、RSS/Atomなどの各種フィードを取得するためのJavaScript API。

なるほど、これを使って外部ブログのフィードを読み込み HP に表示すればいい訳か。

そこで、以下の図のような構成を想定。

  1. HP には、トップページに日々更新した内容を表示。
  2. レイアウトは 2段組で、左側にはブログのタイトルの一覧を表示し、右側にはその内容を配置。
  3. ブログの内容は、外部ブログからまるごと取得して表示。
  4. 内容の右下の「前の投稿」のリンクは、トップページに表示した記事よりも前の投稿へのリンク。このリンクにより外部ブログへ飛ぶ。

090918-005

これで、既存の HP はそのままで、ブログを使ってユーザが更新できる。ブラウザの JavaScript が有効であれば、見かけそのままで、HP のアドレスを変更する必要もない。かなり強引な方法だけれど。。 ^^;

 

4. Google AJAX API

Home Page - Google AJAX API によると、

Google AJAX API では、リッチでダイナミックなウェブサイトを JavaScript と HTML だけで実装できます。JavaScript コードを数行追加するだけで、自分のサイトに地図動的な検索ボックスを追加したり、フィードをダウンロードできます。

この中に Google AJAX Feed API がある。

デベロッパー ガイド - Google AJAX API もチェック。共通の枠組みについて説明がされている。

 

5. Google AJAX Feed API

Google AJAX Feed API によると、

AJAX Feed API を使用すると、JavaScript だけを使用して、公開されている Atom フィードや RSS フィードをダウンロードできるので、自分のコンテンツや Google Maps API などの他の API に、フィードを簡単にマッシュアップできます。

早速利用方法から見ていく。

AJAX API キーの使用 によると、

この API を使用するためにキーは必要ありません。アプリケーションやサイトでキーを使用するかどうかは、完全に任意です

今回は AJAX API キーは利用しない。

この API が扱いやすそうなのは、JSON 形式と XML 形式の結果 によると、

AJAX Feed API の JSON 形式は、オリジナルのフィードを簡素化し、標準化したものです。これにより Atom および RSS の titledescriptionsummary などの属性が共通の JSON プロパティにマッピングされるので、Atom フィードにも RSS フィードも統一的に利用できます。

必要な情報は JSON 形式の結果 を見ればよい。

予め承知しておくことは、

AJAX Feed API は Feedfetcher を使用しているため、API から提供されるフィードのデータが最新ではない場合もあります。Google のフィード クローラ (Feedfetcher) がフィードを取得する頻度は、ほとんどのサイトでは 1 時間に 1 回を超えることはありません。一部の頻繁にアップデートされるサイトに対しては、更新の頻度が高くなります。

(フィードのクロール頻度 より)

外部ブログの投稿がリアルタイムに HP の方に更新されることはない。pubsubhubbub でリアルタイムになるといいのだけれどなぁ。

 

6. フィードを取得するためのソースコード

表示

index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <head>
  <link rel="stylesheet" type="text/css" href ="gajax.css"></link>
  <script type="text/javascript" src="blog.js"></script>
  <script type="text/javascript" src="http://www.google.com/jsapi"></script>
  <script type="text/javascript" src="gajax.js"></script>
 </head>
 <body>
  <!-- フィードのタイトル一覧 -->
  <div id="feedTitle"></div>
  
  <div id="main">
   <!-- フィードの内容 -->
   <div id="feed"></div>
   <!--前の投稿へのリンク -->
   <div id="nextLink"></div>
  </div>
 </body>
</html>

 

gajax.css

基礎編1 フロートを使ってみる を参考に CSS で段組。

#feedTitle { 
 font-size: small;
 float:left;
 padding: 10px;
 width: 30%;
}
#main {
 float:left;
 width: 67%;
}
#nextLink {
 text-align: right;
}
.title { font-size: x-large; }
.content { padding: 20px; }

 

Google AJAX Feed API の利用

gajax.js

はじめての Google AJAX Feed API を元に作成。先ほどのデベロッパー ガイド - Google AJAX API も参考に。

以下のコードは、冒頭の blog オブジェクトで、対象の外部ブログのフィード URL と、1 ページに表示する投稿数、外部ブログの URL を指定。

その他以下を参照。

ブログのエントリーの公開日時の扱いは、Date オブジェクトを生成してから使うことに気をつける。

publishedDate

エントリが公開された日付の、「13 Apr 2007 12:40:07 -0700」という形式の文字列。new Date(entry.date) を使って日付を解析することができます。

(JSON 形式の結果 より)

var blog = { 
 feedurl: "http://jutememo.blogspot.com/feeds/posts/default",
 numOfPost: 7, // 1 ページに表示する投稿数
 url: "http://jutememo.blogspot.com/"
}

// エントリーのタイトルをリンク付きにして div 要素に入れて返す。
function createTitleWithLink(entry, idx){
 var div = document.createElement("div");
 var anchor = document.createElement("a");
 anchor.href = entry.link;
 anchor.setAttribute("name", idx);
 anchor.appendChild(document.createTextNode(entry.title));
 div.className = "title";
 div.appendChild(anchor);
 return div;
}
// エントリーの内容を div 要素に入れて返す。
function createContent(entry){
 var div = document.createElement("div");
 div.innerHTML = entry.content;
 div.className = "content";
 return div;
}
// エントリーのタイトルへのアンカーを作成し、div 要素に入れて返す。
function createFeedTitle(entry, idx){
 var anchor = document.createElement("a");
 var div = document.createElement("div");
 anchor.setAttribute("href", 
  location.protocol + "//" + location.hostname + location.pathname + "#" + idx);
 anchor.appendChild(document.createTextNode(entry.title));
 div.appendChild(anchor);
 return div;
}
// 「前の投稿」を生成
// createURL 関数は blog.js で定義。
function createNextLink(entry){
 var anchor = document.createElement("a");
 anchor.href = createURL(blog.url, blog.numOfPost, new Date(entry.publishedDate));
 anchor.appendChild(document.createTextNode("前の投稿"));
 return anchor;
}
google.load("feeds", "1");
function initialize() {
 var feed = new google.feeds.Feed(blog.feedurl);
 feed.setNumEntries(blog.numOfPost)
 feed.load(function(result) {
  if (!result.error) {
   var divFeedTitle = document.getElementById("feedTitle");
   var divFeed = document.getElementById("feed");
   var divNextLink = document.getElementById("nextLink");
   for (var i = 0; i < result.feed.entries.length; i++) {
    var entry = result.feed.entries[i];
    // フィードのタイトル一覧を生成
    divFeedTitle.appendChild(createFeedTitle(entry, i));
    // フィードのタイトルを生成
    divFeed.appendChild(createTitleWithLink(entry, i));
    // フィードの内容を生成
    divFeed.appendChild(createContent(entry));
   }
   // 前の投稿へのリンクを生成
   divNextLink.appendChild(createNextLink(result.feed.entries[blog.numOfPost-1]));
  }
  });
}
google.setOnLoadCallback(initialize);

 

Blogger における「前の投稿」へのリンク

blog.js

JavaScript で Blogger の「前の投稿」へのリンクを生成 を参照。

// Blogger の場合

// num が一桁の数字のとき先頭に 0 を加えて二桁にする
function padzero(num){
 return ("" + num).length == 1 ? "0" + num : num;
}
function format(date){
 return date.getFullYear() + "-" + 
  padzero(date.getMonth()+1) + "-" + 
  padzero(date.getDate()) +
  encodeURIComponent("T" + padzero(date.getHours()) + ":" + 
   date.getMinutes() + ":" + 
   padzero(date.getSeconds()) + "+") +
  "09:00";
}
function createURL(url, numOfPost, date){
 return url + "search?updated-max=" + format(date) + "&max-results=" + numOfPost;
}