09f5d33684d1cf48da1732aa6f984823_Rkindle unlimited(読み放題)は本当に良いサービスですね。

月980円で本を13万冊を読み放題することができ、自分もマンガを中心に多用しています。

しかし、kindle unlimited(読み放題)には課題があります。

例えば、amazonのサイトで読み放題の対象タイトルを検索することはできますが、読み放題で読むことができるマンガの巻数がわかりません。
ひとつずつ商品の詳細を調べてみないとわからず、何のタイトルが複数巻あるかは簡単に検索することはできないのは困りますよね。

例)「アカギ-闇に降り立った天才」は1~10巻まで読み放題で読めるなど。

今回は技術を駆使して、読み放題で読むことができるタイトルが、何巻まで読むことができるかがわかるWEBサイトを作ってみました。2無題_R

使用技術

  • Amazon Product Advertising API・・・Amazonから商品データを取得することに使用
  • mecab・・・amazonの商品名にフリガナを振るために使用
  • テキスト解析プログラム(python)・・・テキスト解析をしてシリーズが何巻目まであるかまとめる
  • mysql・・・amazonの商品データとテキスト解析した結果を登録
  • wordpress・・・データをWEBページに表示。wordpressのフィルターを使って情報を表示

以下はそれぞれのメモです。

1.Product Advertising APIで読み放題対象を全件取得する

Amazon Product Advertising APIを使って、kindle unlimitedで読むことができる商品データを集めます。
集めたデータはmysqlに保持します。

amazonからのデータ取得は次のpythonのプログラムで取ってます。
プログラムはこちらを使ってます。

https://github.com/yasirosyokuhin/amazonDataGet

GetAmazon.pyが情報取得のメインプログラムです。

必要なライブラリ。たぶん他にも必要・・・(他忘れた)
pip install mecab-python3
pip install mojimoji
pip install bottlenose
pip install BeautifulSoup
pip install mysqlclient

Product Advertising APIでは一回に取得できる件数に上限がありますので、少しずつ条件を変えながら情報を集めています。
power検索を使うことで、出版日付や値段の条件が使えるので検索条件を変更していくことがポイントです。
結果、3万件近くのマンガの商品データを取得することができました。
処理を追加、追加と繰り返したことで、かなり汚いプログラムになってしまいました。。。

2.mecab(形態素分析)を使ってタイトルに読み仮名を振る

mecabを使う理由としては、サイトで表示させるときにアイウエオ順でINDEXを作って表示したいからです
タイトル数だけでも15,000もあるので、INDEXがないと探すのが大変です。
mecabは形態素の分析ライブラリですが、フリガナを振ることにも使えますので今回はフリガナを振るために使います。

2-1.centos にmecabをinstall

http://qiita.com/h1dia/items/26b8bca4bba4acc44a8e

この記事を参考にmecab+mecab-ipadic-NEologdを入れます。
mecab-ipadic-NEologdは最新の単語にも対応しているので優秀です。

2-3. pythonのプログラムでmecabを使用して読み仮名を振る

プログラムはこちら。正直かなり雑で100点が取れる代物ではありません。
https://github.com/yasirosyokuhin/amazonDataGet/blob/master/Furigana.py

内容

  • mecabで読むことができない、数字に関しては自前でマッピングを作成して変換。
  • mecabでヨミガナを振る
  • 読み仮名が振れていないものは、ローマ字の場合は、自前でマッピングを作成して変換。

という流れです。これで読み仮名を振って、見出しを作成します。

3.テキスト解析(独自ロジック)を使って、何巻目まであるのか調べる

プログラムはこちら。こちらも100点が取れる代物ではありません。
https://github.com/yasirosyokuhin/amazonDataGet/blob/master/SeriesSort.py

内容

  • タイトル一覧をソートして、タイトルの中に数字(巻数)があるかを確認
  • 巻数を取得してDBに登録

4.集めたデータをサイト(wordpress)に表示

新規にサイトを作ってもよいですが、すぐに導入できるwordpressを使いました。
mysqlのDBにはすでにデータが登録された状態にあるので、wordpressから直接DBに対してクエリを発行して
情報を取得。そしてそれをサイトに表示される仕組みとします。

ページの作成にはwordpressのフィルターを使いました。
フィルターを1つ作ることで、読み仮名やページ番号をパラメータ化することで、
動的なページを簡単に作ることができます。

フィルター
https://github.com/yasirosyokuhin/amazonDataGet/blob/master/wordpress_filter/functions.php

DBからのデータ取得は$wpdb->get_resultsを使えば簡単にクエリを発行でき、データを取得できます。

ショートコードのパラメータとして、INDEX(ア行~から始まる)をつけて呼ぶことで、
該当の見出しに属するリストを取得することができます。

あとは、このショートコードを配置した固定ページをINDEX分作成するだけです。

これだけで簡単にWEBアプリ(サイト)を作ることができました。wordpressは便利だ。
以上メモは終わりです。

この記事で紹介されているプログラムにおける責任は一切負えませんので、その点ご留意ください。