TwitterのREST APIについて その5(自動いいねまで)

こんばんは、みんろです!

TwitterAPIを使って色々してみたいPart5です!
本日はPythonを使っていいねができるところまで進めて行きますよ。
 

【前回】TwitterAPIについて(自動フォローまで)
 https://minro-blog.info/system/develop/twitter-api-4/

 

【参考にしたURL】
 https://syncer.jp/Web/API/Twitter/REST_API/

 

特定ワードでツイート検索して、いいねしてなかったらいいねする

最終ソースコードは下記のような感じ!処理内容とソースコードの中身を下で解説していきます。
search_favorite.py

import json, config, log #標準のjsonモジュールとconfig.pyの読み込み
from requests_oauthlib import OAuth1Session #OAuthのライブラリの読み込み

CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
twitter = OAuth1Session(CK, CS, AT, ATS) #認証処理

#searchURL
searchurl = "https://api.twitter.com/1.1/search/tweets.json"
#favoriteURL
favoriteurl = "https://api.twitter.com/1.1/favorites/create.json"
#tweet_researchURL
tweeturl = "https://api.twitter.com/1.1/statuses/show.json"

#favorite logic
def favorite(tweet_id):
    #follow params
    params = {"id" : tweet_id}
    #request_follow
    res = twitter.post(favoriteurl, params = params) #post送信
    #responsrog
    log.favoritelog(json.dumps(json.loads(res.text), ensure_ascii=False))

    if res.status_code == 200: #正常投稿出来た場合
        print("Success.")
    else: #正常投稿出来なかった場合
        print("Failed. : %d"% res.status_code)
    return;

#tweet_research logic
def tweet_research(tweet_id):
    #follow params
    params =  {'id' : tweet_id}
    #request_tweet_research
    req = twitter.get(tweeturl, params = params)

    if req.status_code == 200:
        search_tweet = json.loads(req.text)
        log.tweet_research(json.dumps(search_tweet, ensure_ascii=False))
        if search_tweet['favorited'] == False:
            print('not_favorite')
            return False;
        else:
            print('favorited')
            return True;
    else:
        print("ERROR: %d" % req.status_code)
        return False;


#search keyword
keyword = "#ブログ初心者"
#search params
params = {'q' : keyword, 'count' : 2}
#request_search
req = twitter.get(searchurl, params = params)

#search and request_favorite
if req.status_code == 200:
    search_timeline = json.loads(req.text)
    log.searchlog(json.dumps(search_timeline, ensure_ascii=False))
    for tweet in search_timeline['statuses']:
        if tweet_research(tweet['id_str']) == False:
            favorite(tweet['id_str'])
            print('----------------------------------------------------')
        else:
            print('----------------------------------------------------')
else:
    print("ERROR: %d" % req.status_code)

 

【処理の流れ】

  ①キーワードでタイムラインを検索して、最大2ツイートまで抽出。
  ②再度ツイートを個別に取得し、いいね済みか確認する。
  ③いいねしていなければ、いいねする。

【ソースコード解説】

 ●17行目~30行目
  前回と同じでいいね関数を用意しておきます。
  引数としては、ツイートごとに発番されているツイートIDをキーにいいねする。  

#favorite logic
def favorite(tweet_id):
    #follow params
    params = {"id" : tweet_id}
    #request_follow
    res = twitter.post(favoriteurl, params = params) #post送信
    #responsrog
    log.favoritelog(json.dumps(json.loads(res.text), ensure_ascii=False))

    if res.status_code == 200: #正常投稿出来た場合
        print("Success.")
    else: #正常投稿出来なかった場合
        print("Failed. : %d"% res.status_code)
    return;

 

●32行目~50行目
  個別ツイート取得の関数を用意しておきます。
  いいね済みかどうかをチェックし、いいね済みであればTrueを返却するような関数にしています。
  なぜか、ツイート検索の方ではいいねをしてても、してないことになっていました。。
  解決しなかったので、逐一、個別でツイートを検索してます。

#tweet_research logic
def tweet_research(tweet_id):
    #follow params
    params =  {'id' : tweet_id}
    #request_tweet_research
    req = twitter.get(tweeturl, params = params)

    if req.status_code == 200:
        search_tweet = json.loads(req.text)
        log.tweet_research(json.dumps(search_tweet, ensure_ascii=False))
        if search_tweet['favorited'] == False:
            print('not_favorite')
            return False;
        else:
            print('favorited')
            return True;
    else:
        print("ERROR: %d" % req.status_code)
        return False;

 

log.pyは前回記載しているものでOKなので、早速実行してみましょう。
「not_favorite」の表示の後、「Success」が表示されていれば、いいねができている。
本日はここまで!

おすすめ

コメントを残す

メールアドレスが公開されることはありません。