#自動ファボ
Twitter APIのKey取得方法は、他にも色々リソースがあるので割愛
import tweepy
#xxxxxxxxxxxxxxxxxxxxxは各自取得したAPIをkeyを入れてください。
CONSUMER_KEY = 'xxxxxxxxxxxxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxx'
ACCESS_SECRET = 'xxxxxxxxxxxxxxxxxxxxx'
# インスタンス作成
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
# ここで検索をかけています。
# 検索したいワードをqという変数に入れます。今回は"プログラミング"でやってます。
# 取得したいTweet数をcountという変数に入れます。今回は100でやってます。
search_results = api.search(q="プログラミング", count=100)
for result in search_results:
tweet_id = result.id #Tweetのidを取得
user_id = result.user._json['id'] #ユーザーのidを取得
try:
api.create_favorite(tweet_id) #ファボする
api.create_friendship(user_id) #フォローする
except Exception as e:
print(e)
自動フォローアンフォロー
(Cronでも実装できるように実験中)
# coding: utf-8
#! /usr/bin/python
import tweepy
import time
def get_api():
keys = dict(
screen_name = 'XXXXXXXXX',
consumer_key = 'XXXXXXXXX',
consumer_secret = 'XXXXXXXXX',
access_token = 'XXXXXXXXX',
access_token_secret = 'XXXXXXXXX',
)
SCREEN_NAME = keys['screen_name']
CONSUMER_KEY = keys['consumer_key']
CONSUMER_SECRET = keys['consumer_secret']
ACCESS_TOKEN = keys['access_token']
ACCESS_TOKEN_SECRET = keys['access_token_secret']
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
return api, SCREEN_NAME
def unfollow(api,followers, friends):
unfollow_cnt = 0
for f in friends:
if f not in followers:
if unfollow_cnt <= 50:
api.destroy_friendship(f)
print("{0}のフォローを解除しました。".format(api.get_user(f).screen_name))
time.sleep(10)
unfollow_cnt += 1
else:
print('一度に解除可能な人数(50人)に達したため処理を中断します。')
break
return unfollow_cnt
def follow(api, followers, friends):
follow_cnt = 0
for followerId in followers:
count=0
for friendId in friends:
if followerId == friendId:
break
count += 1
if count == len(friends):
try:
api.create_friendship(followerId, True)
print("ID:{0}をフォローしました。".format(api.get_user(followerId).screen_name))
time.sleep(10)
follow_cnt += 1
except tweepy.error.TweepError:
print('フォローが失敗しました。')
return follow_cnt
def yes_no_input(choice):
while True:
if choice in ['y', 'Y']:
return True
else:
return False
if __name__ == "__main__":
u_cnt = 0
f_cnt = 0
api, SCREEN_NAME = get_api()
followers = api.followers_ids(SCREEN_NAME)
friends = api.friends_ids(SCREEN_NAME)
choice = input("フォロー解除を実行しますか? [y/N]: ").lower()
if yes_no_input(choice):
u_cnt = unfollow(api, followers, friends)
choice = input("フォローを実行しますか? [y/N]: ").lower()
if yes_no_input(choice):
f_cnt = follow(api, followers, friends)
print('{}人をフォロー解除、{}人をフォローしました。'.format(u_cnt,f_cnt))
input()
Cronで定期的に実行
Python3で実行するため、まずはPythonの絶対PATHを指定(PATHが無いとimportエラーになるため)
ターミナルで下記を実行
python --version
echo $PATH
表示される
「/Users/ユーザー名/anaconda3/bin:/opt……/hg/bin」みたいなやつをコピー
ターミナルで下記を入力
crontab -e
vimの操作画面で(i)を打って、INSERT画面に移行
i
先ほどのPATHを、下記の形でペースト(PATH=)
PATH=/Users/ユーザー名/anaconda3/bin:/opt……/hg/bin
続いてcronコマンドを入力するが、コマンドは下記の形で入力する
┌───────────── 分 (0 - 59)
│ ┌───────────── 時間 (0 - 23)
│ │ ┌───────────── 日 (1 - 31)
│ │ │ ┌───────────── 月 (1 - 12)
│ │ │ │ ┌───────────── 曜日 (0 - 6) (日から土;7はシステムによっては日)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * * 実行するコマンド
cron入力例
12 7 * * * 毎日7:12に実行
0 21 * * * 毎日21:00分に実行
0 18 * * 2 毎週火曜の18:00に実行
0,10 18 * * 1-5 毎平日の18:00と18:10に実行
0,10,20,30,40,50 * * * * 毎日10分毎に実行
*/10 * * * * 毎日10分毎に実行
0 9 1 * * 毎月1日の9:00に実行
* * * * * 毎分実行
毎日朝9時に実行させる場合のサンプルコードを、PATHの次の行に入力
0 9 * * * python /Users/ユーザー名/Desktop/ファイル名.py
escボタンを押してvimを閉じ、下記を入力すれば完了
:wq
ターミナルに『installing new crontab』と表示されていれば成功
失敗する場合は、下記に書き換えることでエラー箇所を表示するログをデスクトップに作成
0 9 * * * python /Users/ユーザー名/Desktop/ファイル名.py > /Users/ユーザー名/Desktop/exec-error.log 2>&1
複数のスクリプトを実行したい場合は、「;」で区切るとファイル1の実行結果に関わらず
ファイル2も実行される
「&&」で区切る場合、ファイル1の実行に成功した場合ファイル2が実行される
0 9 * * * python /Users/ユーザー名/Desktop/ファイル名1.py ; python /Users/ユーザー名/Desktop/ファイル名2.py
#API制限
ツイートとリツイート(合算値):3時間で300件
いいね:24時間で1000件
フォロー:24時間で1000件
ダイレクトメッセージ:24時間で1万5000件
#リファレンス
自動フォロー&ファボ
フォローアンフォロー
cron
ターミナル
API制限