くりにっき

フルスタックキュアエンジニアです

syobocaliteを作った

しょぼいカレンダー のLite(軽量)版APIクライアントを作りました

github.com

モチベーション

元々は https://github.com/sue445/cure-mastodon-botshttps://github.com/xmisao/syobocal を使っていたのですが、以下のような難点がありました

  • 番組の時間をTime.parse でpaeseしてるので *1、HerokuのようにJST以外の環境で動かすと時間がずれる
  • レスポンスが HashArray なので、レスポンスを利用側で拡張したい時にオープンクラスしてモンキーパッチをあてづらい

1年くらいはアプリ側でモンキーパッチをあてて使っていたのですが *2、別のボットを作る時にcure-mastodon-botsと同じことをやるのが嫌だったのでgem化しました

使い方

Ruby本体の TimeactivesupportActiveSupport::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 だと時間単位で取得できるのは知ってるのだけど、そっちは番組名とサブタイトルが同時に取得できないので不便