経緯
知り合いのオタクがVOCALOID?のゆかり?にツイート読み上げさせてたのでやってみたかった.
実装
ツイッターのストリーミングAPIを使って取得したツイートの内容をPyhtonのsubprocessモジュールでbashのsayコマンドで読み上げさせる.
sayコマンドはOS X独自のコマンドでLinuxとかではGoogleとかの読み上げ機能を使うといいみたい.
sayコマンドで使える音声は色々あってデフォルトではKyokoという女の声.
ha1f-blog.blogspot.jp
ツイッターのストリーミングはこのページのコードを参考にしました.
qiita.com
sayコマンドの使い方はここを参考にしました,
動作
こんな感じの出力が出てKyokoさんが喋ってくれる.
コード
# -*- coding: utf-8 -*- import tweepy import subprocess from datetime import timedelta #CK = 'XXXXXXXXXXXXXXXXXXXXXX' # Consumer Key #CS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Consumer Secret #AT = 'XXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Access Token #AS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Accesss Token Secert class Listener(tweepy.StreamListener): def on_status(self, status): status.created_at += timedelta(hours=9) print('------------------------------') print(status.text) print(status.author.name + status.author.screen_name + unicode(status.created_at) + status.source) subprocess.call('say ' + '"' + status.author.name + 'さんのツイート"'.decode('utf-8'), shell=True) subprocess.call('say ' + '"' + status.text + '"', shell=True) return True def on_error(self, status_code): print('Got an error with status code: ' + str(status_code)) return True def on_timeout(self): print('Timeout...') return True auth = tweepy.OAuthHandler(CK, CS) auth.set_access_token(AT, AS) listener = Listener() stream = tweepy.Stream(auth, listener) stream.userstream()