rcmdnk's blog

20160114_hatebuposts_200_200

ブログのサイドバーに付けてるはてなブックマークの人気リストをアップデートしました。

ちょっと前に一時期使えなくなっていたんですが、 その辺の修正をしてOctopressのプラグイン化もしてみました。

はてなブックマークの人気リスト

はてなブックマークでは、そのサイトの人気リストを表示させる ウィジェットを用意してくれています。

ブログパーツの設定

これを使えばはてなブログ以外でも簡単に人気リストを表示することが出来ます。

取得したJavaScriptの中で大きさやテーマなどを変更することも出来ますが、 さらに細かい修正をしたい場合には CSSを直接いじってあげると自分のサイトと良い感じに調整することも出来ます。

ただ、これだとサムネイルとかがつかないのでちょっと寂しい。

そこで、人気リストのRSSを取得することで、 そこに載っている画像情報を読み込んでサムネイル付きにすることが出来ます。

ここまでは以前やったこと。

最近起きた問題とその解決法

12月途中からこのRSSを使って取得する方法がうまく行かなくなりました。

https://b.hatena.ne.jp/entrylist?mode=rss&sort=count&url=http://rcmdnk.github.io

と言ったURLを使っているのですが、ブラウザからだと上手く見れるものの、 Rubyのスクリプトでopen-uriを使って

1
2
require 'open-uri'
open("https://b.hatena.ne.jp/entrylist?mode=rss&sort=count&url=http://rcmdnk.github.io")

とすると 503 Service Temporarily Unavailableなエラーが出てしまいます。

これはどうもUser Agentをチェックしてブラウザ以外からのアクセスを制限しているみたい。。。

はてなブックマークの RSS を Ruby で取得していたのですが、こ… - 人力検索はてな

上の回答に従って、

1
2
3
require 'open-uri'
open("https://b.hatena.ne.jp/entrylist?mode=rss&sort=count&url=http://rcmdnk.github.io",
     {'User-Agent' => 'Opera/9.80 (Windows NT 5.1; U; ja) Presto/2.7.62 Version/11.01 '})

とスクリプトを変更してあげると取得することが出来ました。

まあアクセス制限しようとしているところなんであれですが、 それ程負荷をかけるものではないので暫くはこのまま使わせていただくということで。

octopress-hatebu-posts

ちょっとまとめるついでに、この部分を Octopresssのプラグインとしてまとめました。

ファイルを適時配置して_config.ymlを設定してあげれば簡単に設置できると思います。

  • オリジナルウィジェット。
  • エントリーリストから取得する方法(JSで動的に取得するがオリジナルよりは速い)。
  • RSSからJSで動的に取得する方法。画像付き。
  • サイト構築時にRSSから画像付きで取得する。

の4つのオプションがあります。

色味はこのブログに合わせてシンプルなものになっているので、 必要であればsass/plugins/_hatebu-posts.scssを適時いじっていい感じにしてもらえれば、と。

Sponsored Links
Sponsored Links

« Homebrewでetcディレクトリの入ったFormulaを作る時の注意点 werckerでのbundle-installにおけるトラブルシューティング »

}