Die neuesten Bilder und Videos der Schauspielerin Mayu Matsuoka werden jeden Tag automatisch gesendet. Während der Erstellung von LINE Bot war ich süchtig danach, die Bild- / Video-URL von tweepy zu erhalten, also werde ich sie teilen.
Wenn ich jetzt zurückblicke, habe ich viel verschwendete Zeit verbracht, aber wenn ich vorerst einen Artikel schreibe, wird diese verschwendete Zeit ein wenig belohnt! !! Ich werde es schreiben.
search_tweets.py
import os
import tweepy
from datetime import datetime, date, timedelta
from dateutil.relativedelta import relativedelta
consumer_key = os.getenv('TWITTER_CONSUMER_KEY')
consumer_secret = os.getenv('TWITTER_CONSUMER_SECRET')
access_token = os.getenv('TWITTER_ACCESS_TOKEN')
access_token_secret = os.getenv('TWITTER_ACCESS_TOKEN_SECRET')
bearer_token = os.getenv('TWITTER_ACCESS_TOKEN_SECRET')
#Suchen Sie auf Twitter nach Tweets zu Mayu Matsuoka und erhalten Sie die URL
def search_tweets():
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
yesterday = datetime.strftime(datetime.today() - relativedelta(days=1), f"%Y-%m-%d")
#Twitter-Suche unter der Bedingung, dass es Bilder und Videos von 10 oder mehr Likes gibt, gestern bis heute, 1 oder mehr Retweets, wobei Retweets weggelassen werden
q = f'#Mayu Matsuoka ODER Mayu Matsuoka Filter:media exclude:retweets min_faves:10 since:{yesterday} min_retweets:1'
#Der problematische Teil
tweets = tweepy.Cursor(api.search, q=q).items(20)
contents = []
for tweet in tweets:
print(tweet.text)
print(tweet.extended_entities)
try:
media = tweet.extended_entities['media']
for m in media:
print(m)
preview = m['media_url_https']
if m['type'] == 'video':
origin = [variant['url'] for variant in m['video_info']['variants'] if variant['content_type'] == 'video/mp4'][0]
else:
origin = m['media_url_https']
#Formatiert zum Senden mit LINE Bot
content = {'preview': preview, 'origin': origin, 'type': m['type']}
contents.append(content)
print('--------------------------------------------')
except:
print('Error')
print('--------------------------------------------')
return contents
if __name__ == "__main__":
search_tweets()
** Ich hätte in der Lage sein sollen, die URLs beider Tweets mit Bildern und Videos mit diesem Code abzurufen. .. .. .. .. ** **.
Ich kann nach Tweets suchen, aber ich stelle fest, dass einige Video-URLs abgerufen werden können und andere nicht.
Beim Versuch ist möglicherweise ein Fehler aufgetreten. .. ..
Als ich jeden Tweet gedruckt habe, habe ich einige Tweets ohne Extended_entities gefunden.
for tweet in tweets:
print(tweet.text)
#Ursache Teil
# extened_Da es keine Entitäten gibt, tritt hier außer ein Fehler auf:Ich wollte gerade.
print(tweet.extended_entities)
try:
media = tweet.extended_entities['media']
Als ich es nachgeschlagen habe, gab es viele Artikel.
Erhalten Sie Tweets mit mehr als 140 Zeichen https://qiita.com/hitsumabushi845/items/f7fd87106381fc65fc86
** Es scheint, dass extended_entities verschwindet, wenn die Tweet- und Video-URL 140 Zeichen überschreitet. ** **.
Ich habe lange gebraucht, um das zu bemerken. Oder besser gesagt, als ich es nachgeschlagen habe, war es sofort gelöst.
Das Hinzufügen von tweet_mode = 'erweitert' und include_entities = True zu den api.search-Parametern löst das Problem.
tweets = tweepy.Cursor(api.search, q=q).items(20)
tweets = tweepy.Cursor(api.search, q=q,
#Erweitern Sie hier den ausgelassenen Teil
tweet_mode='extended', #Holen Sie sich alle ausgelassenen Tweets
include_entities=True).items(20) #Holen Sie sich alle ausgelassenen Links
AttributeError: 'Status' object has no attribute 'text'
Wenn tweet_mode auf erweitert gesetzt ist, ändert sich der Schlüsselname des Tweet-Textes anscheinend von Text zu Volltext.
for tweet in tweets:
# text → full_text
# print(tweet.text)
print(tweet.full_text)
print(tweet.extended_entities)
try:
media = tweet.extended_entities['media']
search_tweets.py
import os
import tweepy
from datetime import datetime, date, timedelta
from dateutil.relativedelta import relativedelta
consumer_key = os.getenv('TWITTER_CONSUMER_KEY')
consumer_secret = os.getenv('TWITTER_CONSUMER_SECRET')
access_token = os.getenv('TWITTER_ACCESS_TOKEN')
access_token_secret = os.getenv('TWITTER_ACCESS_TOKEN_SECRET')
bearer_token = os.getenv('TWITTER_ACCESS_TOKEN_SECRET')
#Suchen Sie auf Twitter nach Tweets zu Mayu Matsuoka und erhalten Sie die URL
def search_tweets():
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
yesterday = datetime.strftime(datetime.today() - relativedelta(days=1), f"%Y-%m-%d")
#Twitter-Suche unter der Bedingung, dass es Bilder und Videos von 10 oder mehr Likes gibt, gestern bis heute, 1 oder mehr Retweets, wobei Retweets weggelassen werden
q = f'#Mayu Matsuoka ODER Mayu Matsuoka Filter:media exclude:retweets min_faves:10 since:{yesterday} min_retweets:1'
#Der problematische Teil
tweets = tweepy.Cursor(api.search, q=q).items(20)
contents = []
for tweet in tweets:
print(tweet.full_text)
print(tweet.extended_entities)
try:
media = tweet.extended_entities['media']
for m in media:
print(m)
preview = m['media_url_https']
if m['type'] == 'video':
origin = [variant['url'] for variant in m['video_info']
['variants'] if variant['content_type'] == 'video/mp4'][0]
else:
origin = m['media_url_https']
#Formatiert zum Senden mit LINE Bot
content = {'preview': preview, 'origin': origin, 'type': m['type']}
contents.append(content)
print('--------------------------------------------')
except:
print('Error')
print('--------------------------------------------')
return contents
if __name__ == "__main__":
search_tweets()
Für mich, der ein Fan von Mayu Matsuoka (allgemein bekannt als Mayura) ist und keine Zeit mehr hat, jeden Tag die Twitter-Timeline zu überprüfen, ist dieser LINE-Bot nur für mich, aber wenn Sie möchten, lese ich diesen Artikel. Wenn Sie ein Fan von Mayu Matsuoka sind, registrieren Sie sich bitte als Freund mit dem unten stehenden QR-Code! !! !!
Vielen Dank! !!
Auch wenn es Fehler in diesem Artikel gibt oder wenn Sie denken, dass Sie mehr tun sollten, kommentieren Sie bitte immer mehr! !!
[Python] Suchen und erhalten Sie Twitter-Tweets mit Tweepy https://vatchlog.com/tweepy-search/ Erhalten Sie Tweets mit mehr als 140 Zeichen https://qiita.com/hitsumabushi845/items/f7fd87106381fc65fc86 Holen Sie sich die Video-URL mit Python + Tweepy https://thinkami.hatenablog.com/entry/2017/11/02/062226
Recommended Posts