LoginSignup
8
12

More than 5 years have passed since last update.

簡単なツイッター投稿プログラム

Last updated at Posted at 2017-03-31

@shiracamus さんから教えていただいた組み方の考え方を参考に、作って見た。

確かに、役割分担でちゃんと書き分けることは、忘れた頃修正するときに頭に入りやすい。メンテナンス力が上がるね。

使い方。

シェルスクリプトかなんかで起動すればすぐ使えます。

とりあえず入れたメッセージ機能は、


TL().message([ユーザー名],[テキスト])

でできます。

こんな感じで
スクリーンショット 2017-03-31 10.32.19.png

スクリプト

#!/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()
8
12
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12