図書館の返却期限を取得し Plagger で iCal フォーマットに変換

 去年の12月に引っ越す際には知らなかったことなのでけして引っ越しの決め手になったわけではないのですが、うちの近所に区立の図書館があってよく利用しています。歩いて3分もかからないすぐ近所の図書館をとてもよく利用しています、と言った方がよいかも知れません。それで引っ越してからはすっかり本を買わなくなりました。子育てでお金が掛かるのでそれは必然だったと今では思わざるを得ないのですが、これでもし家のすぐ近所に図書館がなかったらどうしていたんだろうと思わないでもありません。
 それはともかく、昨今の図書館は大変便利で、本を借りに行くのと返しに行くのと以外はネットで済みます。といっても、借りに行くのと返しに行くのと以外には、検索するのと予約するのとくらいしかやることはないのですが、ネットで予約して、受け取る図書館を指定しておくと(受け取る図書館にない本は区内の他の図書館から取り寄せてくれます)準備が出来たらメールが届くので、あとは借りに行くだけです。このシステムにはほぼ満足しています。唯一問題になる可能性があるとすれば、それは返却日を忘れてしまうということでしょうか。図書館のサイトにログインすれば現在借りている本(やCDやなんやかや)の一覧とそれぞれの返却日、予約中の本(やCDやなんやかや)のステータス一覧(もう借りに行っていいのか、まだ準備できていないのかなど)を確認出来るのですが、返却日だけを確認するためにわざわざサイトにログインするのがほとんど唯一の手間と言えば手間と言えなくもありません。
 そういうわけで、WWW::Mechanize と Web::Scraper で返却日を取得して、Plagger で google カレンダーや iCal に取り込める形に変換してみました。図書館のサイトへのログインアカウントは Config::Pit で管理しています。ソースコードに直接アカウント情報を書かないで済むのは良いですね!

 どこの図書館のサイトか書くのを忘れていました。東京都大田区立図書館のサイトです。大田区に住んでいる・通勤している・通学している Plagger・図書館ユーザーのみなさん、ぜひ試してみてください。

 assets/plugins/CustomFeed-Script/ota_library.pl at master from greenplastic’s plagger - GitHub

 次のような yaml ファイルを作って plagger -c ota_library2ical.yaml して生成した .ics ファイルを google カレンダーや iCal で取り込みます。

 ota_library2ical.yaml

global:
  plugin_path:
    - lib/Plagger/Plugin
  assets_path: assets
  timezone: Asia/Tokyo
  log:
    level: error

plugins:
   - module: Subscription::Config
     config:
       feed:
         - script:/PATH/TO/assets/plugins/CustomFeed-Script/ota_library.pl

   - module: CustomFeed::Script

   - module: Aggregator::Simple

   - module: Publish::iCal
     config:
       dir: /PATH/TO/htdocs/
       filename: ota_library.ics

 唯一の問題は、借りているサーバー(このブログを置いているところ)が海外にあって、そこからだと図書館のサイトにつながらないことくらいでしょうか :/
 google カレンダーで日本語が文字化けする場合は、apache の設定に以下を追加すると良さそうです。

AddType "text/calendar; charset=utf-8" ics
comments powered by Disqus