[]ついったん(@twittan)のように受信したDMをTweetするPythonスクリプト

追記2

gistに最新のコードがあります。
http://gist.github.com/534705

WordPressソースコードを表示させる

はてなダイアリーからWordPressに移転させて、はてダで最も重宝していたスーパーPre記法の代わりを探す必要が出てきた。

とりあえずCodeColorerというPluginがよさそうだったのでインストール。

フォントが見づらかったので、cssを編集してフォントを「Monaco」から「Courier」にした。

[cc line_numbers="off"] /wp-content/plugins/codecolorer/codecolorer.css [/cc]

CodeColorerのテスト

ついでに最近コードを書いていなかったので、任意のアカウントで受信したDMをそのままTweetするPythonスクリプトを作ってみた。

もし利用することがあれば、当然DMを送った人はそれをTweetされるとは思っていないので、普段利用しているアカウントでは実行してはいけない。

ついったん(@twittan)のように専用のアカウントを作ってbioに明示するか、認証したユーザーからのDMのみTweetするといいかも。

tweetDM.py

python-twitterモジュール使用

[cc lang="python"]
import time
import re
import twitter

class tweetDM:
def __init__(self, account, password, id_file, user_file):
self.api = twitter.Api(account, password)
self.id_file = id_file
self.user_file = user_file

def readFile(self):
idfile = open(self.id_file, 'r')
latest_id = int(idfile.readline())
idfile.close()
return latest_id

def writeFile(self, status_id):
idfile = open(self.id_file, 'w')
idfile.write(str(status_id))
idfile.close()

def getDM(self):
latest_id = self.readFile()
dms = self.api.GetDirectMessages(since_id = latest_id)
messages = []
if dms:
status_id = dms[0].id
self.writeFile(status_id)
usrfile = open(self.user_file, 'r').readlines()
user_list = [user[:-1] for user in usrfile]
for s in dms:
if s.sender_screen_name in user_list:
messages.append(s.text)
return messages

def main(self):
messages = self.getDM()
if messages:
for s in messages:
self.api.PostUpdates(s)
time.sleep(15)

if __name__ == '__main__':
account = 'your_twitter_screen_name'
password = 'your_twitter_password'
id_file = 'latest_id.txt' #最後に取得したDMのstatus_id
user_file = 'user_list.txt' #許可するユーザー(screen_name)

obj = tweetDM(account, password, id_file, user_file)
obj.main()
[/cc]