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

しょぼいカレンダー API 用のライブラリでキャスト、スタッフ、楽曲の情報を取得できるようにした

https://github.com/r7kamura/syoboi_calendar の改良を重ね、キャスト、スタッフ、楽曲の情報も取得できるようにした。

コメント

しょぼいカレンダーはシリーズ作品を「タイトル」という単位で扱っていて、そのタイトルの中にコメントという形で色々な情報が含まれている。例えばたまたま直近で更新された作品「龍の歯医者」を例にすると、コメントにはこういう情報が含まれている。

*リンク
-[[公式 http://www.nhk.or.jp/anime/ryu/]]
-[[日本アニメ(ーター)見本市 http://animatorexpo.com/]]
-[[ニコニコチャンネル http://ch.nicovideo.jp/anime-ryu]]

*メモ
-全2話

*スタッフ
:原作:舞城王太郎
:監督:鶴巻和哉
:脚本:舞城王太郎、榎戸洋司
:キャラクターデザイン・作画監督:井関修一
:動画検査:村田康人
:色彩設計:長尾朱美
:美術監督:藤井綾香
:CG監督:鈴木貴志、宮城健
:撮影監督:山田豊徳
:音響監督:庵野秀明
:効果:野口透
:音響演出:山田陽
:音楽:TOMISIRO、ナカムラヒロシ
:アニメーション制作:スタジオカラー

*主題歌「ぼくらが旅に出る理由」
:作詞・作曲:小沢健二
:編曲:ナカムラヒロシ
:歌:RINKU
:コーラス:MASUMI

*挿入歌「かくれんぼ」
:作詞・歌:DAOKO
:作曲・編曲:ナカムラヒロシ

*キャスト
:岸井野ノ子:清水富美加
:ベルナール・オクタビアス:岡本信彦
:悟堂ヨ世夫:山寺宏一
:夏目柴名:林原めぐみ
:サルバトール・ブランコ:松尾スズキ
:有栖川カンネ:名塚佳織
:佐藤修三:徳本恭敏
:家村宗達:高木渉
:小澤:櫻井孝宏
:ギレリ:津田健次郎

記法のルール

数千件ほどデータを見た限り、以下のようなルールが存在することが分かった。

  • * で始まる行は Lv1 の見出し、つまり Markdown における # で始まる行と同等の存在ということになる。稀に Lv2 の見出しとして ** が登場することもある
  • : で始まる行は辞書形式で、- で始まる行は順序無しリスト形式になる。メモの項目などは、稀に行頭に何も付けず平文が書かれることもある
  • 見出しの内容は「リンク」「メモ」「スタッフ」などが多いが完全に固定されている訳ではなく、任意の項目になる可能性がある
  • 楽曲は挿入歌 1 、挿入歌 2 などのように、複数件存在する場合もある。曲の役割を表現する部分と鍵括弧との間には、半角スペースを1個含む場合と含まない場合がある
  • Lv1 の見出し間では、空行を設ける場合と、設けない場合がある。およそタイトルID 3000以前のものは空行を設けないものが多いが、それ以降では空行を設けるものが多い
  • URL は角括弧 2 つで囲み、タイトルと URL との間に半角スペースを1つ置く。プロトコルを archive:// のようにすると、Web Archive へのリンクとなる

ライブラリの使い方

syoboi_calendar gem では以下のようなインターフェースでコメントの情報を利用できる。

タイトルの取得

require "syoboi_calendar"

client = SyoboiCalendar::Client.new
title = client.list_titles(title_id: 4482).first
title.class #=> SyoboiCalendar::Resources::TitleResource

キャスト

title.casts.count #=> 10
title.casts[0].class #=> SyoboiCalendar::Personality
title.casts[0].name #=> "清水富美加"
title.casts[0].role #=> "岸井野ノ子"

スタッフ

title.staffs.count #=> 17
title.staffs[0].class #=> SyoboiCalendar::Personality
title.staffs[0].name #=> "舞城王太郎"
title.staffs[0].role #=> "原作"

主題歌

title.songs_theme[0].class #=> SyoboiCalendar::Song
title.songs_theme[0].name #=> "ぼくらが旅に出る理由"
title.songs_theme[0].role #=> "主題歌"
title.songs_theme[0].personalities[0].class #=> SyoboiCalendar::Personality
title.songs_theme[0].personalities[0].name #=> "小沢健二"
title.songs_theme[0].personalities[0].role #=> "作詞・作曲"

挿入歌

title.songs_inserted[0].class #=> SyoboiCalendar::Song
title.songs_inserted[0].name #=> "かくれんぼ"
title.songs_inserted[0].role #=> "挿入歌"
title.songs_inserted[0].personalities[0].class #=> SyoboiCalendar::Personality
title.songs_inserted[0].personalities[0].name #=> "DAOKO"
title.songs_inserted[0].personalities[0].role #=> "作詞・歌"