@shiracamus さんから教えていただいた組み方の考え方を参考に、作って見た。
確かに、役割分担でちゃんと書き分けることは、忘れた頃修正するときに頭に入りやすい。メンテナンス力が上がるね。
使い方。
シェルスクリプトかなんかで起動すればすぐ使えます。
とりあえず入れたメッセージ機能は、
TL().message([ユーザー名],[テキスト])
でできます。
スクリプト
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from twitter import *
class TL:
def __init__(self):
# 各自取得して入力してください
OAUTH_TOKEN = ""
OAUTH_SECRET = ""
CONSUMER_KEY = ""
CONSUMER_SECRET = ""
self.T = Twitter(auth=OAuth(OAUTH_TOKEN, OAUTH_SECRET,CONSUMER_KEY, CONSUMER_SECRET))
def tweet(self,text):
self.T.statuses.update(status=text)
def message(self,username,text):
self.T.direct_messages.new(user=username,text=text)
class UI:
def text():
return input("ツイートを入力:")
def generate_tag():
tag = ''
while True:
t = input("タグ(#なし):")
if t == "":
break
else:
tag += " #" + t
return tag
def tweet(text):
print("投稿しています...")
TL().tweet(text)
print("-"*20 + "\n" + text + "\n" + "-"*20)
if __name__ == '__main__':
while True:
text = UI.text() + UI.generate_tag()
UI.tweet(text)
追記:tweepyのほうが扱いやすかった
# -*- coding: utf8 -*-
import tweepy
class Account:
consumer_key = ""
consumer_secret = ""
access_token_key = ""
access_token_secret = ""
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token_key, access_token_secret)
api = tweepy.API(auth)
class TL():
def __init__(self):
self.api = Account.api
def post(self,text):
self.api.update_status(text)
def post_media(self,media,text):
self.api.update_with_media(media,status=text)
def home_timeline(self,count=5):
return self.api.home_timeline(count=count)
def user_timeline(self,count=5):
return self.api.user_timeline(screen_name=[ユーザー名],count=count)
def get_followers(self):
return self.api.followers(count=10)
def send_message(self,screen_name,text):
self.api.send_direct_message(screen_name, text)
class UI:
def hr(icon="-"):
print(icon*30)
def post():
text = UI.text()
if text in ["media","jpg","png","img"]:
media = input("URL or 画像パス:").replace(".png ",".png").replace(".jpg ",".jpg")
text = UI.text() + UI.tag()
TL().post_media(media,text)
else:
text = text + UI.tag()
TL().post(text)
UI.hr()
print(text)
UI.hr()
def send_message(screen_name,text):
TL().send_message(screen_name,text)
def home_timeline():
for tl in TL().home_timeline():
print(tl.created_at) #datetime表示
print(tl.text)
UI.hr()
def user_timeline():
for tl in TL().user_timeline():
print(tl.created_at) #datetime表示
print(tl.text)
UI.hr()
def get_followers():
for user in TL().get_followers():
print(user.screen_name)
UI.hr()
def text():
return input("ツイートを入力:")
def tag():
t = ''
while True:
put = input("タグ(#なし):")
if put == "":
break
else:
t += " #" + put
return t
def main():
#UI.post()
UI.user_timeline()
UI.get_followers()
if __name__ == '__main__':
main()