読者です 読者をやめる 読者になる 読者になる

Thanks Driven Life

日々是感謝

Advent Calendar 2013 を emacs から選んで見れる helm plugin を書いた 2013

全国13万人の技術系 Advent Calendar ファンの皆さんこんばんわ。

2013年も師走になってしまい、周りはクリスマスと Advent Calendar の空気ですね。 みなさま体調にはお気を付けて年末をお過し下さい。

ところで一昨年やった二番煎じです

gongo/emacs-advent-calendar-2013 · GitHub

デモです。

f:id:gongoZ:20131203233436g:plain

何ができるの

M-x advent-calendar-2013
  1. お好きな Calendar をお選び下さい。Enter を押すとブラウザで Calendar が開きます。
    • TAB を押して View calendar を選ぶと、 2 に進みます
  2. 選択した Calendar に登録されている記事が表示されます。Enter を押すと、その記事がブラウザで開きます

どのカレンダーが対象なの

今回は以下の記事よりカレンダー一覧を頂きました。

本日12月1日より,プログラマ有志による2013年の技術系Advent Calendarが各所ではじまる:インフォメーション|gihyo.jp … 技術評論社

また、対象となるサイトは

  • Qiita
  • Adventar
  • Atnd

となります。conpass や zusaar 、partake その他もろもろは今回省いております*1

記事と判断するのは?

Qiita や Adventar はわかりやすいんですが、atnd だと特に決まっていないので とりあえずコメントから抽出しています。そしてコメントで「これは記事だな」って判断するのが

  • <a> タグがある
  • https?:// がある

みたいな判断をしているので、Advent Calendar の記事のつもりが無いコメントでも リンクになりえる書き方されてたらリスト化するようにしています。

あと、一応キャッシュっぽいこともしてるので、同じカレンダーを再度選択した場合は記事一覧がすぐ表示されると思います。

キャッシュを消す API 作りわすれたんですが、まあ ↓ とかやれば消えます多分……

(clrhash advent-calendar->cache-calendar)

まとめ

普段スクレイピングとかは Ruby でやるので emacs だとめんどいっすね そんなわけで雰囲気で書いたので動かないページあると思います

*1:どこに記事を載せるかみたいなのが統一感無く(独自表に書いたりコメントに書いたり)て取りづらかったので。ATND はぎりぎり comment によく書かれていたので採用