Pythonで百人一首ボットを作ってみる!! パート1
皆さん
こんにちは、こんばんは
TomoProgです。
前々回のブログ「Python使ってつぶやいてみた」でTwitterへ投稿するやり方を学びました。
これを応用して百人一首ボットを作ってみたいと思います。
それでは頑張っていきましょう!!
百人一首ボットの仕様
まずは仕様を考えるところからスタートです。
とりあえず、考えてみた仕様はこんな感じ。
何分毎にするかは後々決めていきます。
また、投稿する内容が多いので、投稿を分割するかもしれません。
その辺りは作りながら決めていきましょう!!
絵札の画像を集めてみる
一番時間がかかりそうな絵札画像の収集からやっていきます。
百人一首の絵札の画像は探せば沢山の種類がネット上にありますが、今回は下記のサイトの絵札画像を収集していきます。
Ogura Hyakunin Isshu - Wikimedia Commons
このサイトに表示されている画像はサムネイル用なので、前回の画像収集プログラムの時にもやったようにaタグのhref属性のURLから取得していきます。
<!-- imgタグのsrc属性はサムネイル用なので、aタグのhref属性のURLからオリジナルを取得していく --> <a href="/wiki/File:Hyakuninisshu_003.jpg" class="image"> <img alt="" src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Hyakuninisshu_003.jpg/86px-Hyakuninisshu_003.jpg" width="86" height="120" ・・・ />
そしてここで気づいたのです。
そう。このhref属性はルート記号("/")から始まってるのです。
普通にhref属性の内容でURLを開こうとすると「404 Not Found」でオリジナルの画像のURLまで辿りつけないのです・・・。
というわけで、href属性の前方にルートディレクトリのパス(https://commons.wikimedia.org/)をつけて、そのURLにアクセスし、画像を集めることにしました。
これでなんとか画像はすべて全部ゲット出来ました!!
とりあえず画像付きでつぶやいてみる
画像をTwitter上に投稿するコードを公式のサンプルプログラムを参考に書いてみることにします。
twitterモジュールのドキュメントにアップロードのやり方が書いてあったので、参考に書いてみました。
twitter · PyPI
#-*- coding:utf-8 -*- from twitter import * import json # global変数 conf_file_name = "conf.json" def main(): """ Content: エントリーポイント """ # 設定ファイル読み込み with open(conf_file_name) as f: conf_data = json.loads(f.read()) # Twitterアプリ認証 app_auth = OAuth(conf_data["access_token"], conf_data["access_token_secret"], conf_data["consumer_key"], conf_data["consumer_secret"]) app = Twitter(auth=app_auth) # 画像をつぶやく with open("001.jpg", "rb") as image_f: image_data = image_f.read() t_up = Twitter(domain="upload.twitter.com", auth=app_auth) id_img = t_up.media.upload(media=image_data)["media_id_string"] app.statuses.update(status="画像アップロードテスト", media_ids=id_img) print("Success!!") if __name__ == "__main__": main()
Twitterクラスのdomain引数に"upload.twitter.com"を指定して新しく画像アップロード用のインスタンスを作成するみたいです。
さて、実行してみると・・・
画像が投稿できました!!