スポンサードリンク

PythonでAmazonのKindle Unlimited情報を取得してみるに続いて、
あらかじめテキストファイルに記載していた書名を取得して
Amazon Product Advertising APIに対して検索を行います。

Pythonでテキストファイルを開く

テキストファイルは、以下のようなソースで読み込みます。

読み込みたいのは以下のようなテキストファイルです。

英語多読用の本のリストが欲しい

これは何かというと、英語多読用の本のリストです。

SSS英語多読研究会がすすめる「非常にやさしい本からはじめ、100万語単位で読む多読」をやってみたいと思っていたのですが、
多読をするためにはまず教材となる英語の本を用意する必要があります。

SSS英語多読研究会では、レベル別に読むべき本を紹介してくれています

問題は、多読をするためには大量の本を読まなければいけないのですが、
目安である100万語まで到達するまでにはかなりの本が必要になります。

特にレベルの低いころに読む本は、1冊あたりの字数が少ないために
どうしても本の数が多くなってしまいます。

1冊500円~600円程度で購入できるので、数冊買う分にはいいのですが、
多読となると数十冊単位で読む必要があります。
となると、数万円は軽くかかります。

しかもそのレベルを通り過ぎてしまえば、必要がなくなってしまうという
悲しい運命が待っています。
簡単なものから始めるがゆえに、ほぼ読み捨てしなければならないということです。

そこで目を付けたのが、Kindle Unlimitedです。

読み放題のKindle Unlimitedであれば、お金を気にせず読み進められます。
洋書もかなりの冊数あります(先ほど洋書一覧で見ると137万冊以上あるようです)ので、
きっと多読に使える本もあるはずということです。

ただ、ここで問題になるのは対象になる本を見つける方法です。
リストにあがっている本をいちいち検索するのはメンドくさい、
そもそもKindle Unlimitedにない本もある(ないことが多い)、
効率よく多読するには本を効率よく見つけることも大切だということで
リストからKindle Unlimitedにあるのかを探すプログラムを作ることにしました。

今回検索するリストは、SSS英語多読研究会がレベル0として推薦しているものです。

書名リストからAmazon Product Advertising APIを呼び出すプログラム

書名リストのテキストをlevel0.txtとして、Pythonプログラムと同じディレクトリに置きます。

前回の「PythonでAmazonのKindle Unlimited情報を取得してみる」に、ファイルの読み込み処理を組み込みます。

修正したプログラムが以下です。

file_readというメソッドを作って、ここでテキストファイルを読み込み
1行ずつを配列の各要素に入れて返します。

file_readの呼び出し元では、返り値でループさせます。
その際に、sleep(5)を入れています。

これで実行してみると、
「AttributeError: no such child: {http://webservices.amazon.com/AWSECommerceService/2013-08-01}Item」
というエラーで終了します。

APIの結果がない場合にエラーで落ちてしまっています。
今度はこれの対策を考えます。

以下のように書き換えてみました。

調べてみると、「root.Items.find(‘Item’)」は、
Itemが空の時Noneを返すということなので、
「items.find(‘Item’)」をitem_findに放り込んで
これがNoneの場合は処理しないようにしました。

結果はというと、以下のようになりました。

結果は全滅・・・。
一つもKindle Unlimitedにはないという結果に。

そしてなぜか「if (item is not None):」のelse部分を通ってくれなかったという謎も。

リストを広げて再取得してみることにします。

スポンサードリンク