読者です 読者をやめる 読者になる 読者になる

BuzzLog / バズログ

BuzzLog / バズログはニュースとエンターテインメントを伝えるメディアです

Amazon の売れ筋商品をつぶやく bot を Python で実装してみる

Web API を勉強する目的で、twitter API + Amazon Product Advertising API を使った bot を作ってみます。
やることはざっくり以下の要素に分解されます。

Amazon Product Advertising API で商品リストを取得

先人に感謝しつつ、おもむろに “pip install python-amazon-simple-product-api” します。
Product Advertising API は色々パラメータいじれば好きな情報が取ってこれます。
私は売り上げランキングが欲しかったので、BrowseNode 指定して、salesrank でソートしたリクエストを投げました。

Twitter API を利用してツイート

Amazon Product Advertising API を利用して取得した文字列をツイートします。
OAuth2 の認証が必要なので若干面倒です。
ここも、先人に感謝しつつ、おもむろに “pip install python-twitter” しましょう。

入門 Python 3

入門 Python 3

cron を使って定期的に実行

自宅でサーバー立てるのもできなくもないが、
常時電源 ON な PC を自宅にこさえるのはエコでないという考えのもと、
Amazon EC2 を使うことにします。

環境セットアップ Ubuntu on EC2

イメージは無料利用枠の “Ubuntu Server 16.04 LTS (HVM), SSD Volume Type - ami-be4a24d9” を利用します。
これ、デフォルトで python3 が入ってて幸せです。
諸々のツールを入れて、上で作ったスクリプトを実行します。

sudo apt-get update
sudo apt-get -y install python3-pip

# setup python libraries
pip3 install python-twitter
pip3 install python-amazon-simple-product-api

# clone repository
git clone https://github.com/ks6088ts/WebApi.git

# set up credentials
cd WebApi
mkdir .private
vi .private/amazon.yml 
vi .private/twitter.yml 

# execute script
python3 main.py

cron でスクリプトを定期実行する

以下のサイトを参考にしつつ、
10 分毎にツイートを試みてみる。

*/10  *  *  *  * /home/ubuntu/task.sh 

task.sh はこんな感じ。
何か不要な cd とかあるのはご愛嬌。。

cd /home/ubuntu/WebApi
python3 /home/ubuntu/WebApi/main.py

www.server-memo.net

嵌ったことのメモ

Amazon Product Advertising API を叩くと 503 エラー

Amazon 公式の回答によると以下の通り。
リクエスト出し過ぎだから制限してるよ!ってことみたい。

A 503 error means that you are submitting requests too quickly and your requests are being throttled.

docs.aws.amazon.com

Status is a duplicate とか言われてツイートできない

187 | Status is a duplicate | The status text has been Tweeted already by the authenticated account.

なるほど、同じ内容のツイートは出来ないということね。

Error Codes & Responses — Twitter Developers

タイムゾーンが違っていて cron が正しく動いてくれなかった

ubuntuタイムゾーンが日本時間と違うので以下を実行。
Asia/Tokyo に設定して解決。

sudo dpkg-reconfigure tzdata