tweepy で呟くとか
tweepy で呟けたので残します。
なお、コードは CC0 (Public Domain) で。
ディレクトリ構成
. ├── setup.py └── src └── echo_twitter ├── compat.py ├── __init__.py ├── my_twit.py └── twit.py
setup.py
from setuptools import setup, find_packages params = { 'name': 'echo_twitter', 'version': '0.0.1', 'package_dir': {'': 'src'}, 'packages': find_packages( exclude=["*.tests", "*.tests.*", "tests.*", "tests"]), 'author': 'example.com', 'license': 'Public Domain', } params['install_requires'] = [ 'tweepy', 'docopt', ] params['entry_points'] = { 'console_scripts': [ 'my_twit = echo_twitter.my_twit:main', ], }
.py
__init__.py は空
twit.py
# -*- coding: utf-8 -*- import os def get_settings_io(home_path=None): ''' ~/.my_twitrc ファイルを読み込み、 ConfigParser で読み込める StringIO オブジェクトを返す ''' from .compat import StringIO home_path = home_path or os.environ['HOME'] file_path = os.path.join(home_path, '.my_twitrc') with open(file_path, 'r') as fp: lines = [u'{}'.format(x.strip()) for x in fp] lines = u'\n'.join([u'[settings]'] + lines) return StringIO(lines) def get_settings(keys, home_path=None): ''' keys で渡されたリストのキーの値を返す ''' from ConfigParser import SafeConfigParser settings = SafeConfigParser() settings.readfp(get_settings_io(home_path)) values = [settings.get('settings', x) for x in keys] return tuple(values) def get_api(): ''' tweepy の API を返す ''' from tweepy import OAuthHandler, API auth = OAuthHandler(*get_settings(['consumer_key', 'consumer_secret'])) auth.set_access_token(*get_settings(['access_token', 'access_token_secret'])) return API(auth) def update_status(message, verbose): ''' 呟く ''' get_api().update_status(message)
my_twit.py
# -*- coding: utf-8 -*- """ Usage: my_twit [-hv] [COMMENT] ... つぶやける Arguments: COMMENTS つぶやく内容 Options: -h --help -v verbose mode """ def main(): from docopt import docopt from .twit import update_status args = docopt(__doc__) comment = ' '.join(args['COMMENT']) verbose = args['-v'] update_status(comment, verbose)
compat.py
try: from io import StringIO except ImportError: try: from cStringIO import StringIO except ImportError: from StringIO import StringIO