はじめに
Pythonを初めて使ったので、必要な処理を毎回ぐぐりながら実装しました。実装内容及び利用した機能をまとめます。末尾に実装コードを載せます。
とある科学の超電磁砲の聖地は東京都の立川市ですっ!
— 聖巡 (@Holy_Ground_) 2018年10月19日
ファイル構成
ファイル名 | 役割 | 備考 |
---|---|---|
bot.py | 投稿処理を行う | |
auth.py | キー情報を記載する | |
db.txt | 一部可変にする投稿内容のリスト | 手動作成 |
実装に利用した機能
ファイル操作(タブ区切りのファイルを読む)
#!/usr/bin/env python for line in open('text.txt', 'r'): itemList = line[:-1].split('\t') print itemList
重複投稿エラーの対応
レコードのデータ量が少ないと重複内容を投稿する場合があります。その場合、Twythonでは403エラーが返ってきます。これを例外処理して、定期実行を継続させます。
import twython try: #正常処理 except twython.TwythonError: #エラー処理
その他
UNIX系なので改行コードはLFです。
実装コード
bot.py
#!/usr/bin/env python # coding: utf-8 import random import twython # twitter configuration from twython import Twython from auth import ( consumer_key, consumer_secret, access_token, access_token_secret ) twitter = Twython( consumer_key, consumer_secret, access_token, access_token_secret ) prefecture_list = [] municipality_list = [] title_list = [] # Read Data Base for line in open('db.txt', 'r'): title, prefecture, municipality = line[:-1].split('\t') title_list.append(title) prefecture_list.append(prefecture) municipality_list.append(municipality) #print title, prefecture, municipality, title # message create list_max_num = len(prefecture_list) list_num = random.randrange(0,list_max_num) message = title_list[list_num] + 'の聖地は' + prefecture_list[list_num] + 'の' + municipality_list[list_num] + 'ですっ!' try: # tweet print(message) twitter.update_status(status=message) except twython.TwythonError as err_message: print err_message
auth.py
#*には各種キーを入れる consumer_key = '********' consumer_secret = '********' access_token = '********' access_token_secret = '********'
db.txt
#タブ区切り タイトル 都道府県名 自治体名 時をかける少女 東京都 台東区 シュタインズ・ゲート 東京都 千代田区 とある科学の超電磁砲 東京都 立川市
最初はタイトルを3番目の項目していたのですが、そうするとなぜか文字列処理時に先頭になるタイトル名が消失するという問題が発生しました。Pythonの文字列処理がよく解っていないのですが、そのため、タイトルを1番目の項目にしました。そしたら、解決しました。
おわりに
Pythonを初めて触ったので、わからないことのほうが多いです。しかし、ネット上に情報が大量にあるため、都度調べれば実装できてしまいます。規模が大きくなってきたら、ファイル構成とか管理方法とかも考えます。
*1:ただし、公式には宣言を入れるべきではないようです。 【python】# coding: utf-8はもうやめる - 静かなる名辞