『メディア芸術データベース』のAPIからシェル芸でデータを抜いてきて週刊少年ジャンプの短期連載作品だけを抽出してみる

Twitterで、ジャンプの短期連載の単行本だけを集めた本棚の写真を見かけたので、こういった短期連載作品群のリストを作れないかなーと思ってちょっと調べてみた。
で、そういったマンガの単行本のDB的なの無いかなー…と思って調べてたところ、文化庁が2015年に『メディア芸術データベース』なるものを出していた。みてる限りまだ開発版であること、2017年6月以降はあまり更新されてなさげなとこが気になるのだが、APIもあるようで十分に遊べそうな印象。せっかくAPIも用意されてるので、ここからデータを引っ張ってみる。

APIについては、以下のような仕様のようだ。

  • jsonで出力される
  • 1リクエストにつき100件まで(ページ数を指定して1ページ目以降は取得する)
  • レーベル(ジャンプ・コミックスとか)はデータとして存在してるが、指定しての抽出はできない

 

レーベル指定ができないと、最初の抽出時に『週刊少年ジャンプ』のマンガだけを取得できないので、一旦集英社のコミックスだけを抽出する。
シェル芸でやるならAPIか取ってきたデータをそのまま後ろのコマンドに渡したいところなのだけど、取得に300回以上のリクエストが投げられるので流石にそれはできない。というわけで、一度ファイルに書き出すことにする(あんまり連続してアクセスすると取得できない場合があるので、ひとまず10秒のsleepを入れてる。なのでかなり時間がかかるので注意)。

curl -s -XGET 'https://mediaarts-db.bunka.go.jp/mg/api/v1/results_books?publisher=集英社' | jq '.page_total' | seq $(cat) | xargs -n1 -I@ bash -c "curl -s -XGET 'https://mediaarts-db.bunka.go.jp/mg/api/v1/results_books?publisher=集英社&page=@' |jq '.results[]';sleep 10" > ./shueisha.txt
blacknon@BS-PUB-UBUNTU-01:~$ curl -s -XGET 'https://mediaarts-db.bunka.go.jp/mg/api/v1/results_books?publisher=集英社' | jq '.page_total' | seq $(cat) | xargs -n1 -I@ bash -c "curl -s -XGET 'https://mediaarts-db.bunka.go.jp/mg/api/v1/results_books?publisher=集英社&page=@' |jq '.results[]'" > ./shueisha.txt
blacknon@BS-PUB-UBUNTU-01:~$ head -50 shueisha.txt
{
  "id": 1254063,
  "isbn": "",
  "mmm_id": "MMM000000215",
  "name": "一条さんちのお献立",
  "label": "SGスペシャル",
  "volume": "",
  "volume_sort": 1,
  "author": "[著]一条ゆかり",
  "publisher": "集英社 ∥ シュウエイシャ",
  "publish_date": "1990/07/18",
  "owner_ndl": 0,
  "owner_kawasaki": 0,
  "owner_meiji": 0,
  "owner_kyoto": 0,
  "owner_osaka": 1,
  "owner_prange": 0
}
{
  "id": 1254001,
  "isbn": "",
  "mmm_id": "MMM000000278",
  "name": "〔○誅〕天罰研究会",
  "label": "ヤングジャンプ・コミックス",
  "volume": "2",
  "volume_sort": 2,
  "author": "[著]小林よしのり / [カバー撮影]田勢敏明",
  "publisher": "集英社 ∥ シュウエイシャ",
  "publish_date": "1982/05/25",
  "owner_ndl": 0,
  "owner_kawasaki": 0,
  "owner_meiji": 0,
  "owner_kyoto": 1,
  "owner_osaka": 1,
  "owner_prange": 0
}
{
  "id": 1253999,
  "isbn": "",
  "mmm_id": "MMM000000280",
  "name": "〔○誅〕天罰研究会",
  "label": "ヤングジャンプ・コミックス",
  "volume": "1",
  "volume_sort": 1,
  "author": "[著]小林よしのり / [カバー撮影]田勢敏明",
  "publisher": "集英社 ∥ シュウエイシャ",
  "publish_date": "1982/01/25",
  "owner_ndl": 0,
  "owner_kawasaki": 0,
  "owner_meiji": 0,
Sponsored Links

おお、取れた取れた。
取得後、ひとまず簡単に集計してどんなデータが含まれてるかをチェックしてみる。

blacknon@BS-PUB-UBUNTU-01:~$ cat shueisha.txt | jq -r 'select(.label=="ジャンプ・コミックス")|.name'|sort|uniq -c|sort -k1n|head -50
      1 100%
      1 21-G
      1 21世紀の流れ星
      1 7つのマーブル / 7つの秘石
      1 ABCモギィ
      1 AT Lady!
      1 AT lady!
      1 All colour but the black
      1 B-DASH!!
      1 BLACK CITY
      1 BLEACH OFFICIAL CHARACTER BOOK
      1 BLUE DRAGON ST
      1 BLUE DRAGON 天界の七竜
      1 BOMBER GIRL
      1 BREAK FREE
      1 Bastard!!
      1 Bastard!! data book
      1 COLOSSUS ORDER
      1 COOL
      1 CROSS TREASURES
      1 Claymore
      1 Cowa!
      1 D.Gray-man公式ファンブック灰色ノ聖櫃
      1 DOING
      1 DRAGON BALL 590 QUIZ BOOK
      1 DRAGON BALL Z 神と神
      1 Daruma
      1 Death note
      1 Dragonball forever ドラゴンボール完全版公式ガイド
      1 Dragonball landmark ドラゴンボール完全版公式ガイド
      1 Dramatic irony
      1 ENDZONE
      1 End zone
      1 Enigma
      1 FIGHT
      1 FLYING LAP
      1 FOREVER
      1 Field of colors
      1 GAOH!
      1 HACHI -東京23宮-
      1 HAND'S
      1 HARELUYA -ハレルヤ-
      1 Hard luck
      1 Hunter×hunterハンターズ・ガイド
      1 I'm A Faker!
      1 I'm a faker!
      1 JF・AT版Naruto-ナルト-滝隠れの死闘オレが英雄だってばよ!
      1 KANABALISM
      1 KING KONG
      1 LIVE

 

ありゃ。
どうもノイズが入ってる。大文字小文字を間違えて入れてあったり、公式ガイドのような漫画作品でないものが「ジャンプ・コミックス」扱いで入ってしまってる。
そもそも1冊だと短編集が紛れ込む可能性が高いので、対象とするにはちょっと厳しそう…。ドラゴンボールとかのフルカラー版も編ごとに分けて形状されてるので、目的のデータ抽出にはノイズになってしまう。

致し方無いので、「編」とか「ガイドブック(ガイド)」と書いてるような書籍名は除外してかつ2巻以上6巻未満の作品のみを出力させてみることにする。

cat shueisha.txt | jq -r 'select(.label=="ジャンプ・コミックス")|select(.name|test("編|ガイド|ファン|ブック|BOOK|book")|not)|.name+"\t"' | sort | uniq -c | sort -k1n | awk '$1>1&&$1<6'
blacknon@BS-PUB-UBUNTU-01:~$ cat shueisha.txt | jq -r 'select(.label=="ジャンプ・コミックス")|select(.name|test("編|ガイド|ファン|ブック|BOOK|book")|not)|.name+"\t"' | sort | uniq -c | sort -k1n | awk '$1>1&&$1<6' | head -20
      2 -甲冑の戦士-雅武
      2 3年奇面組
      2 A・O・N
      2 B-DASH
      2 BAKUDAN
      2 BLEACH 4コマコマブリ
      2 Be Takuto!!
      2 COOL
      2 Childragon
      2 DIABOLUS
      2 DIAMOND
      2 DOIS SOL
      2 DRAGON BALL 極限バトルコレクション
      2 Doubles
      2 ETOILE
      2 Fの閃光
      2 HACHI 東京23宮
      2 ILLEGAL RARE
      2 JOKER
      2 K.O.SEN

…うーん。どうしてもノイズが入ってしまう。
出版データだけだと、連載作品じゃないものもレーベルに入ってしまったりする(ヒット作品の外伝とかそういうのとか…)ので、これだけだと完全なリスト化が難しそう 。
ただ、ノイズは含まれているのだが、一応短期連載作品は全部含んだ状態(のハズ)なので、あとは人力で除外してやればリスト化はできそうな気もする。

ノイズを含むとはいえ300件以上はありそうなので、「ジャンプって競争激しいんだなぁ…」という認識は合ってたのかもしれない。
ちなみに、一通りやったあとで気づいたのだが、Wikipediaに連載作品一覧があった。連載期間も(ちょっと集計しにくい形式ではあったけど)あったので、こっちからスクレイピングして取得したほうが早かったかなぁ…(´・ω・`)。

 


Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*