chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

無料Kindleコミックを一覧表示するWebアプリをGoogleAppEngineで実装

GoogleAppEngine上に無料Kindleコミックを出版日順(新しいもの順)で表示できるWebアプリを実装した。また、無料本一覧の表示が遅くならないように、一度検索した結果はDB(DataStore)に格納して、一覧表示はDBから引っ張るようにした(一覧表示は早いが、最初の検索は遅い)。

サイトのURLは以下
https://amazon-kindle-search.appspot.com
※ご注意点:Amazonの価格変動が激しくて更新が追い付いていません。すでに無料期間が終わったコンテンツやらURLが変更になったのやらありまして、注文される場合は値段を十分に確認してください。

今後の取り組み(残課題)

  • CRONでAmazonAPIを定期的に叩いてDBを更新する
  • AmazonAPIだと検索は10Pageの上限があり、無料Kindle本すべてを取得することができないので、Pythonでクローラを作って、AmazonのWebサイトから書籍ID(ASIN)を取得する
  • AmazonAPIではランキング(カスタマーレビュー)が取れないので、Webサイトからランキングを取得してDBに追加。一覧表示にランキングを加えると共に、一覧表示の際に、ランキングを表示条件に指定可能にする。
  • 認証機能をつけてパーソナライズ(昔読んだ本は表示しないとか、除外キーワードを指定して興味のないシリーズは表示しない等)

GoogleAppEngineは進化しており、かつてデバッグはローカルで行い、デプロイ後にサーバ側でエラーが発生してもデバッグなんかできなかったと思うのだけど、今のGoogleAppEngineは管理画面(ダッシュボード)で実行時のエラーログが表示され、ソースのどの行でエラーになっているかが分かり、また、SnapShot機能を使えば、実行時の変数の値が見られたりする(左の画面がサーバへのデプロイ後のデバッグ画面)。これはかなり便利

■補足
そもそもなぜこんなことをやっているか??(ふと我に返って記憶を辿る。。)
いつもコミックを読むのは、無料のKindleコミック。ただ、、無料Kindleコミックは数が多くてどれが新しいやつか、あるいは、読んだやつ、読んでないやつを選別するのに結構時間がかかる。ならば、無料Kindleコミックの最新情報が取れればいいのではないか?と思い、AmazonAPIの叩き方勉強を兼ねて、GoogleAppEngine上で、((Kindleコミック && 無料) order by 出版日)の一覧を表示してくれるWebサービスを作ってみた。GoogleAppEngineを使っているのは、ただ、無料枠があるというのが理由。GoogleAppEngineはPaaSなのでWebサービスを実装するには、GAEの作法に合わせてプログラムを組む必要がある。
クラウドではAWSが先頭で、IBMMicrosoftが次を走ってるという印象で、Googleクラウドサービスはかなり利用者が少ないという印象です。そんな中でもさらにマイナーな(癖のある)GoogleAppEngineって使っている人いるんだろうか。。

https://blog.hartleybrody.com/scrape-amazon/

■追記

そもそもこのページを作った理由は、、
Kindle無料コミックで、最近に出版された、人気の高いマンガを選び出すためであった。

しかし!!Amazonサイトではメニューが良くできていてメニューを正しく選べばそんな条件のリストが出せることが分かった。。
すなわち、、、

(1)Kidleコミックトップ画面に行く
https://www.amazon.co.jp/%E3%82%B3%E3%83%9F%E3%83%83%E3%82%AF-%E6%BC%AB%E7%94%BB-Kindle-%E3%82%AD%E3%83%B3%E3%83%89%E3%83%AB-%E9%9B%BB%E5%AD%90%E6%9B%B8%E7%B1%8D/b/ref=sv_kinc_3?ie=UTF8&node=2293143051

(2)左のニューリリース、過去7日等を選択
(これで新しいコミックに絞り込まれる)
(3)カスタマーレビューで、★N個以上を選択
(4)並び替えプルダウンで、価格の安い順番を選択

この操作により、当初欲しかったコンテンツが一覧表示される。
はぁ。。知らなかった。。 この徒労感。。
この条件の画面アクセスURLは以下

https://www.amazon.co.jp/s/ref=sr_pg_1?fst=as%3Aoff&rh=n%3A2250738051%2Cn%3A%212250739051%2Cn%3A2275256051%2Cn%3A2293143051%2Cp_n_date%3A2275275051%2Cp_72%3A2275269051&page=1&bbn=2293143051&sort=price-asc-rank&ie=UTF8&qid=1493766123&lo=digital-text

■追記:GAE無料期間終了

Google(Google Cloud Platform)から、4月末でGoogleAppEngineの無料期間が終わるので、今後は有料になるとのメール連絡があった。有料化されると自分のサイトの利用料は月1700円程度になるそうで、とてもそんなにお金払っていられないので、有料化の契約はせずに止まるに任せることにした。ただ、、集めたKindle無料本のデータだけはGAEのストレージからExportしてローカルに保存しておくことにした。収集のためのPythonソースはローカルにあるので消されても問題なし。

Subject;Don't lose your work. 7 days left in your free trial.
7 days left
Seven days left.
There are still seven days until your trial expires.
Upgrade your account now to enable automatic billing and prevent loss of service when your trial expires.