Les dernières images et vidéos de l'actrice Mayu Matsuoka sont automatiquement envoyées tous les jours.Lors de la création de LINE Bot, j'étais accro à essayer d'obtenir l'URL de l'image / vidéo de tweepy, donc je vais la partager.
En y repensant maintenant, j'ai passé beaucoup de temps perdu, mais si j'écris un article pour le moment, ce temps perdu sera un peu récompensé! !! Je vais l'écrire.
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')
#Recherchez les tweets liés à Mayu Matsuoka sur Twitter et obtenez l'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")
#Recherche Twitter à la condition qu'il y ait des images et des vidéos de 10 likes ou plus, d'hier à aujourd'hui, 1 ou plusieurs retweets, en omettant les retweets
q = f'#Filtre Mayu Matsuoka OU Mayu Matsuoka:media exclude:retweets min_faves:10 since:{yesterday} min_retweets:1'
#La partie problématique
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']
#Formaté pour l'envoi avec 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()
** J'aurais dû être en mesure d'obtenir l'URL des deux tweets avec des images et des vidéos avec ce code. .. .. .. .. ** **
Je peux rechercher des tweets, mais je remarque que certaines URL de vidéos peuvent être obtenues et d'autres non.
Il peut y avoir une erreur lors de l'essai. .. ..
Quand j'ai imprimé chaque tweet, j'ai trouvé des tweets sans Extended_entities.
for tweet in tweets:
print(tweet.text)
#Cause partie
# extened_Puisqu'il n'y a pas d'entités, une erreur se produit ici sauf:J'allais.
print(tweet.extended_entities)
try:
media = tweet.extended_entities['media']
Quand j'ai cherché, il y avait de nombreux articles.
Recevez des tweets de plus de 140 caractères https://qiita.com/hitsumabushi845/items/f7fd87106381fc65fc86
** Il semble que Extended_entities disparaisse lorsque l'URL du tweet et de la vidéo dépasse 140 caractères. ** **
Il m'a fallu beaucoup de temps pour remarquer cela. Ou plutôt, quand je l'ai recherché, il a été résolu en un instant.
L'ajout de tweet_mode = 'extended' et include_entities = True aux paramètres api.search résoudra le problème.
tweets = tweepy.Cursor(api.search, q=q).items(20)
tweets = tweepy.Cursor(api.search, q=q,
#Ici, prolongez la partie omise
tweet_mode='extended', #Obtenez tous les tweets omis
include_entities=True).items(20) #Récupérer tous les liens omis
AttributeError: 'Status' object has no attribute 'text'
Apparemment, lorsque tweet_mode est défini sur extended, le nom de la clé du texte du tweet passe de text à full_text.
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')
#Recherchez les tweets liés à Mayu Matsuoka sur Twitter et obtenez l'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")
#Recherche Twitter à la condition qu'il y ait des images et des vidéos de 10 likes ou plus, d'hier à aujourd'hui, 1 ou plusieurs retweets, en omettant les retweets
q = f'#Filtre Mayu Matsuoka OU Mayu Matsuoka:media exclude:retweets min_faves:10 since:{yesterday} min_retweets:1'
#La partie problématique
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']
#Formaté pour l'envoi avec 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()
Pour moi, qui suis fan de Mayu Matsuoka (communément appelé Mayura) et que je n'ai plus le temps de consulter la chronologie de Twitter tous les jours, ce LINE Bot est uniquement pour moi, mais si vous le souhaitez, je lis cet article. Si vous êtes fan de Mayu Matsuoka, veuillez vous inscrire en tant qu'ami avec le code QR ci-dessous! !! !!
Je vous remercie! !!
De plus, s'il y a des erreurs dans cet article, ou si vous pensez que vous devriez en faire plus, veuillez en commenter de plus en plus! !!
[Python] Recherchez et obtenez des tweets Twitter avec tweepy https://vatchlog.com/tweepy-search/ Recevez des tweets de plus de 140 caractères https://qiita.com/hitsumabushi845/items/f7fd87106381fc65fc86 Obtenir l'URL de la vidéo avec Python + tweepy https://thinkami.hatenablog.com/entry/2017/11/02/062226
Recommended Posts