書籍データ取得ツール books-data v0.2.0 をリリースした

no extension

書籍データ取得ツール books-data v0.2.0 をリリースした。

v0.1.0 の使い勝手が微妙に悪かったのでコマンド構成を変えた。

$ books-data -h
Search for books data

Usage:
  books-data [flags]
  books-data [command]

Available Commands:
  help        Help about any command
  history     Lookup review data from history log
  review      Make review data
  search      Search for books data
  version     Print the version number

Flags:
      --access-key string      Config: PA-API Access Key ID
  -a, --asin string            Amazon ASIN code
      --associate-tag string   Config: PA-API Associate Tag
      --config string          Config file (default $HOME/.books-data.yaml)
      --debug                  for debug
  -h, --help                   help for books-data
  -i, --isbn string            ISBN code
      --marketplace string     Config: PA-API Marketplace (default "webservices.amazon.co.jp")
  -l, --review-log string      Config: Review log file (JSON format)
      --secret-key string      Config: PA-API Secret Access Key
  -t, --template-file string   Template file for formatted output

Use "books-data [command] --help" for more information about a command.

search コマンドで PA-API または openBD から書籍情報を検索する。 ASIN コードを指定する場合はこんな感じ(Web ページへのリンク URL は長ったらしいので省略している,あしからず)。

$ books-data search -a B07TYKJQFK | jq .
{
  "Type": "paapi",
  "ID": "B07TYKJQFK",
  "Title": "数学ガールの秘密ノート/ビットとバイナリー",
  "URL": "https://www.amazon.co.jp/exec/obidos/ASIN/B07TYKJQFK/mytag-20/",
  "Image": {
    "URL": "https://images-fe.ssl-images-amazon.com/images/I/41Q0Hyr8g3L._SL160_.jpg",
    "Height": 160,
    "Width": 111
  },
  "ProductType": "Kindle版",
  "Authors": [
    "結城 浩"
  ],
  "Publisher": "SBクリエイティブ",
  "Codes": [
    {
      "Name": "ASIN",
      "Value": "B07TYKJQFK"
    }
  ],
  "PublicationDate": "2019-07-19",
  "LastRelease": "2019-07-20",
  "Service": {
    "Name": "PA-API",
    "URL": "https://affiliate.amazon.co.jp/assoc_credentials/home"
  }
}

PA-API へアクセスするためのアクセスキー等の情報は設定ファイル(既定は $HOME/.books-data.yaml)で指定できる。

marketplace: webservices.amazon.co.jp
associate-tag: mytag-20
access-key: AKIAIOSFODNN7EXAMPLE
secret-key: 1234567890

PA-API のアクセスキーがない場合は -i オプションで ISBN を指定して openBD から検索できる。

$ books-data search -i 9784797391398 | jq .
{
  "Type": "openbd",
  "ID": "9784797391398",
  "Title": "数学ガールの秘密ノート/ビットとバイナリー",
  "Image": {
    "URL": "https://cover.openbd.jp/9784797391398.jpg",
    "Height": 0,
    "Width": 0
  },
  "ProductType": "Book",
  "Authors": [
    "結城浩/著"
  ],
  "Publisher": "SBクリエイティブ",
  "Codes": [
    {
      "Name": "ISBN",
      "Value": "9784797391398"
    }
  ],
  "PublicationDate": "2019-07-22",
  "LastRelease": "0001-01-01",
  "Service": {
    "Name": "openBD",
    "URL": "https://openbd.jp/"
  }
}

前回書いたとおり,まるでやる気の感じられない情報量だけど(笑)

レビュー情報を作成する場合は review コマンドを使う。

$ books-data review -a B07TYKJQFK -r 5 "この本はオススメ" | jq .
{
  "Book": {
    "Type": "paapi",
    "ID": "B07TYKJQFK",
    "Title": "数学ガールの秘密ノート/ビットとバイナリー",
    "URL": "https://www.amazon.co.jp/exec/obidos/ASIN/B07TYKJQFK/mytag-20/",
    "Image": {
      "URL": "https://images-fe.ssl-images-amazon.com/images/I/41Q0Hyr8g3L._SL160_.jpg",
      "Height": 160,
      "Width": 111
    },
    "ProductType": "Kindle版",
    "Authors": [
      "結城 浩"
    ],
    "Publisher": "SBクリエイティブ",
    "Codes": [
      {
        "Name": "ASIN",
        "Value": "B07TYKJQFK"
      }
    ],
    "PublicationDate": "2019-07-19",
    "LastRelease": "2019-07-20",
    "Service": {
      "Name": "PA-API",
      "URL": "https://affiliate.amazon.co.jp/assoc_credentials/home"
    }
  },
  "Date": "2019-08-04",
  "Rating": 5,
  "Star": [
    true,
    true,
    true,
    true,
    true
  ],
  "Description": "この本はオススメ"
}

作成したデータ(JSON 形式)はログファイルにも蓄積される。 ログファイルは review-log オプションで設定ファイルまたはコマンドラインで指定する。

review-log: /home/username/review-log.json

ログファイルが設定されていれば history コマンドでレビュー情報を取り出すことができる。

$ books-data history -a B07TYKJQFK | jq .
{
  "Book": {
    "Type": "paapi",
    "ID": "B07TYKJQFK",
    "Title": "数学ガールの秘密ノート/ビットとバイナリー",
    "URL": "https://www.amazon.co.jp/exec/obidos/ASIN/B07TYKJQFK/mytag-20/",
    "Image": {
      "URL": "https://images-fe.ssl-images-amazon.com/images/I/41Q0Hyr8g3L._SL160_.jpg",
      "Height": 160,
      "Width": 111
    },
    "ProductType": "Kindle版",
    "Authors": [
      "結城 浩"
    ],
    "Publisher": "SBクリエイティブ",
    "Codes": [
      {
        "Name": "ASIN",
        "Value": "B07TYKJQFK"
      }
    ],
    "PublicationDate": "2019-07-19",
    "LastRelease": "2019-07-20",
    "Service": {
      "Name": "PA-API",
      "URL": "https://affiliate.amazon.co.jp/assoc_credentials/home"
    }
  },
  "Date": "2019-08-04",
  "Rating": 5,
  "Star": [
    true,
    true,
    true,
    true,
    true
  ],
  "Description": "この本はオススメ"
}

ログファイルの中身は以下のような JSON 形式の配列として格納されているので,ぶっちゃけテキスト・エディタ等で編集できる(笑)

[
  {
    "Book": {
      "Type": "paapi",
      "ID": "B07TYKJQFK",
      "Title": "数学ガールの秘密ノート/ビットとバイナリー",
      "URL": "https://www.amazon.co.jp/exec/obidos/ASIN/B07TYKJQFK/mytag-20/",
      "Image": {
        "URL": "https://images-fe.ssl-images-amazon.com/images/I/41Q0Hyr8g3L._SL160_.jpg",
        "Height": 160,
        "Width": 111
      },
      "ProductType": "Kindle版",
      "Authors": [
        "結城 浩"
      ],
      "Publisher": "SBクリエイティブ",
      "Codes": [
        {
          "Name": "ASIN",
          "Value": "B07TYKJQFK"
        }
      ],
      "PublicationDate": "2019-07-19",
      "LastRelease": "2019-07-20",
      "Service": {
        "Name": "PA-API",
        "URL": "https://affiliate.amazon.co.jp/assoc_credentials/home"
      }
    },
    "Date": "2019-08-04",
    "Rating": 5,
    "Star": [
      true,
      true,
      true,
      true,
      true
    ],
    "Description": "この本はオススメ"
  }
]

いや,最初は SQLite とか使おうと思ったのよ。 でも途中までテーブル設計してたら思ったより面倒な感じがしたのでしばらく先送りすることにした。 他に追加したい機能もあったりするし,データ構造が固まるまでは JSON 形式のままアドホックな運用でもいいかな,と。

以上,いいわけでした。

なお search および review, history コマンドではテンプレートファイルを指定して出力を整形できる。 こんな感じ。

$ books-data search -a B07TYKJQFK -t testdata/book-template/template.bib.txt 
@BOOK{Book:B07TYKJQFK,
    TITLE = "数学ガールの秘密ノート/ビットとバイナリー",
    AUTHOR = "結城 浩",
    PUBLISHER = {SBクリエイティブ},
    YEAR = 2019
}

よし。 次はいよいよ青空文庫APIサーバへの対応に取り掛かるぞ。

今回紹介した書籍

photo
数学ガールの秘密ノート/ビットとバイナリー
結城 浩
SBクリエイティブ 2019-07-19 (Release 2019-07-20)
Kindle版
B07TYKJQFK (ASIN)

まだ読んでる途中。後日,感想を書く予定。

reviewed by Spiegel on 2019-08-04 (powered by PA-API)