pythonからtwitterに投稿するためのモジュールは2つある.
python-twitterとtweepyだ.
python-twitterが主流だが,使い始めた当時python-twitterのOAuth認証のドキュメントがなくてtweepyを利用していた.
そこでtweepyの紹介をする.
TLから取得
まずは簡単なAPIを叩いて見る.
import tweepy tl = tweepy.api.public_timeline() print tl[0].text()
tlにはオブジェクトになっているのでtextで呼び出さなければならない.
userStatus
import tweepy id = "hoge" # ここはユーザネームかID usr = tweepy.api.get_user(id) print usr.description #これはプロフィールを取得できる.
他にもユーザメッソドはいろいろある.
調べ方は
import tweepy id = "hoge" # ここはユーザネームかID usr = tweepy.api.get_user(id) print dir(usr)
こうやると全てのメソッドが出てくる.非常に便利な関数.
dir()はtweepyに限らずpythonの組み込み関数なので積極的に使っていくと良いと思います.
tweepy利用例
新しくフォローしてくれた人とリムーブした人をチェックする機能です.
また自動でフォロー,リムーブも行なっています.
# coding:utf-8 import tweepy import sys import codecs import time import json import os ######################################## CONSUMER_KEY = '******' CONSUMER_SECRET = '*******' ACCESS_KEY = "*******" ACCESS_SECRET = "*******" ######################################## reload(sys) sys.setdefaultencoding('utf-8') sys.stdout = codecs.getwriter('utf-8')(sys.stdout) sys.stdin = codecs.getreader('utf-8')(sys.stdin) FOLLOW = 'follow/follow.json' user = "hogeohoge" ######################################### # follow # ######################################### """フォロー,フォロワーを取得""" def write_friend_ship(filename,friends,followers): """json形式で書き込みます""" friend_ship = {"friends":tuple(friends),"followers":tuple(followers)} f = open(filename,"w") json.dump(friend_ship,f) f.close() def get_friend_ship(filename): """json形式で書き込んだファイルからfriendshipを 取得します""" if os.path.exists(filename): f = open(filename) friend_ship = json.load(f) f.close() friends = friend_ship["friends"] followers = friend_ship["followers"] return set(friends),set(followers) else: return None def get_differ(new,old): """new にあってold にないものを返す関数""" if not isinstance(new,set): new = set(new) if not isinstance(old,set): old = set(old) return new.difference(old) def thanks_follow(new,api): """新たにフォローしてくれた人をフォロー""" for user in new: api.create_friendship(user) api.update_status('@'+t+u' フォローありがとう!') def remove(gone,api): """リムーブする""" for user in gone: api.destroy_friendship(user) if __name__ == "__main__": friends = tweepy.api.friends_ids(user) followers = tweepy.api.followers_ids(user) now_friends = set(friends[0]) now_followers = set(followers[0]) old_friends,old_followers = get_friend_ship(FOLLOW) # removeされたフォロワー gone_followers = get_differ(old_followers,now_followers) # 新たにフォローしてくれた人 new_followers = get_differ(now_followers,old_followers) auth = tweepy.OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET) auth.set_access_token(ACCESS_KEY,ACCESS_SECRET) api = tweepy.API(auth) thanks_follow(new_followers,api) remove(gone_followers,api) write_friend_ship(FOLLOW,now_followers,now_followers)
ファイル形式ではなくjson形式で保存しているのは
辞書型でそのまま保存できるからです.
他にもpickleなどありますが,jsonのほうが早いのでこちらを利用しています.
英語ですが,ドキュメントもあるのであわせてこちらも!
API Reference — tweepy v1.4 documentation
追記:jsonよりも更に早いmsgpackというライブラリもあるのでそちらをおすすめします!
使い方はjsonと全く同じです.
MessagePack: It's like JSON. but fast and small.