Возникли проблемы с использованием extended_entities в tweepy - PullRequest
0 голосов
/ 27 февраля 2019

Я новичок в Python и здесь.Я просто пытался собрать нужные мне данные.

Я пытался получить данные твитов от пользователя с tweepy и python 3.7, но мне не удалось получить данные, относящиеся к типам носителей.

Iтакже пытался использовать extended_entities, но из-за ошибки «AttributeError: у объекта« Status »нет атрибута extended_entities» »

Дно кода - это то, что я пробовал.

import tweepy  # https://github.com/tweepy/tweepy
import csv
from urllib.request import urlopen

# Twitter API credentials
consumer_key = ""
consumer_secret = ""
access_key = ""
access_secret = ""

# initialize a list to hold all the tweepy Tweets
def redirect(url):
     page = urlopen(url)
     return page.geturl()



def get_all_tweets(screen_name):
     # Twitter only allows access to a users most recent 3240 tweets with this method

     # authorize twitter, initialize tweepy
     auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
     auth.set_access_token(access_key, access_secret)
     api = tweepy.API(auth)


     # initialize a list to hold all the tweepy Tweets
     alltweets = []

     # make initial request for most recent tweets (200 is the maximum allowed count)
     new_tweets = api.user_timeline(screen_name=screen_name, count=1, tweet_mode='extended',include_entities=True)

     # save most recent tweets
     alltweets.extend(new_tweets)

     # save the id of the oldest tweet less one
     oldest = alltweets[-1].id - 1

     # keep grabbing tweets until there are no tweets left to grab
     while len(new_tweets) > 0:
          print("getting tweets before %s" % (oldest))

          # all subsequent requests use the max_id param to prevent duplicates
          new_tweets = api.user_timeline(screen_name=screen_name, count=200, max_id=oldest, tweet_mode='extended',include_entities=True)

          # save most recent tweets
          alltweets.extend(new_tweets)

          # update the id of the oldest tweet less one
          oldest = alltweets[-1].id - 1

          print("...%s tweets downloaded so far" % (len(alltweets)))

     outtweets = []  # initialize master list to hold our ready tweets
     for tweet in alltweets:

         try :
             outtweets.append([tweet.created_at, tweet.full_text.encode("utf-8"), tweet.retweet_count, tweet.favorite_count, tweet.entities['hashtags'],tweet.extended_entities['media'][0]['type']])


         except (NameError, KeyError,UnicodeEncodeError):
             pass

          with open('%s_416.csv' % screen_name, 'w') as f:
              writer = csv.writer(f)
              writer.writerow(["created_at","full_text","retweet_count","favorite_count", "hashtags", "media"])
              writer.writerows(outtweets)
     pass


if __name__ == '__main__':
         # pass in the username of the account you want to download
         username = ["username"]
         for x in username:
             get_all_tweets(x)

Кто-нибудь знает другие способы отображения только типов из медиа-объекта?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...