しょぼいカレンダー のLite(軽量)版APIクライアントを作りました
モチベーション
元々は https://github.com/sue445/cure-mastodon-bots で https://github.com/xmisao/syobocal を使っていたのですが、以下のような難点がありました
- 番組の時間を
Time.parse
でpaeseしてるので *1、HerokuのようにJST以外の環境で動かすと時間がずれる - レスポンスが
Hash
のArray
なので、レスポンスを利用側で拡張したい時にオープンクラスしてモンキーパッチをあてづらい
1年くらいはアプリ側でモンキーパッチをあてて使っていたのですが *2、別のボットを作る時にcure-mastodon-botsと同じことをやるのが嫌だったのでgem化しました
使い方
Ruby本体の Time
と activesupportの ActiveSupport::TimeWithZone
に対応してます。
require "syobocalite" require "time" start_at = Time.parse("2018-10-07 08:30:00") end_at = Time.parse("2018-10-07 09:00:00") # or Time.zone = "Tokyo" start_at = Time.zone.parse("2018-10-07 08:30:00") end_at = Time.zone.parse("2018-10-07 09:00:00") # Get programs that start between 8:30 and 9:00 Syobocalite.search(start_at: start_at, end_at: end_at)
http://cal.syoboi.jp/cal_chk.php
は日付単位でしか取得できないですが、自分の用途だと時間で絞りたいことが多いので時間を引数に渡せるようにしています。*3
*1:https://github.com/xmisao/syobocal/blob/v0.9.1/lib/syobocal/calchk.rb#L27-L28
*2: https://github.com/sue445/cure-mastodon-bots/blob/cd4940a07e2bd38d2671838e44fe6eac9cf799f7/lib/syobocal_ext.rb
*3: https://sites.google.com/site/syobocal/spec/db-php だと時間単位で取得できるのは知ってるのだけど、そっちは番組名とサブタイトルが同時に取得できないので不便