Guest User

Untitled

a guest
May 21st, 2018
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. import configparser
  2. from tweepy import OAuthHandler, API, Stream
  3. import wget
  4. import sys
  5. import os
  6. import time
  7. import tweepy
  8.  
  9. def main():
  10. # config
  11. cf = configparser.ConfigParser()
  12. cf.read("config.txt")
  13. CONSUMER_KEY = cf.get("API", "CONSUMER_KEY")
  14. CONSUMER_SECRET = cf.get("API", "CONSUMER_SECRET")
  15. ACCESS_TOKEN = cf.get("API", "ACCESS_TOKEN")
  16. ACCESS_TOKEN_SECRET = cf.get("API", "ACCESS_TOKEN_SECRET")
  17. proxy=cf.get("Proxy","http_proxy")
  18. #auth
  19. api = authentication(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN,ACCESS_TOKEN_SECRET)
  20. print('nnTwitter Image And Video Downloader:n========================n')
  21. username = input("nEnter the twitter Account(For Example:@abc123): ")
  22. #proxy
  23. os.environ['http_proxy'] =proxy
  24. os.environ['https_proxy'] =proxy
  25.  
  26.  
  27. ids = []
  28. for page in tweepy.Cursor(api.friends_ids, screen_name=username).pages():
  29. ids.extend(page)
  30. time.sleep(60)
  31.  
  32. screen_names = [user.screen_name for user in api.lookup_users(user_ids=ids)]
  33.  
  34. for friend in screen_names:
  35. max_tweets = 3200 ##user_timeline can only return up to 3,200 of a user’s most recent Tweets.
  36. tweetset = getTweetsUser(friend, max_tweets, api)
  37. media_URLs = getTweetMediaURL(tweetset)
  38. downloadFiles(media_URLs, friend)
  39. print('nnFinished Downloading.n')
  40.  
  41.  
  42. def getTweetsUser(username, max_tweets, api):
  43. # get all tweets from 'username'
  44. try:
  45. raw_tweets = api.user_timeline(screen_name=username, include_rts=False, exclude_replies=True)
  46. except Exception as e:
  47. print(e)
  48. sys.exit()
  49. last_tweet_id = int(raw_tweets[-1].id - 1)
  50. print('ngetting tweets.....')
  51. i = 0
  52. f = open("tweets.txt", "w", encoding='utf-8')
  53. while i < max_tweets:
  54. sys.stdout.write("rTweets count: %d" % len(raw_tweets))
  55. sys.stdout.flush()
  56. temp_raw_tweets = api.user_timeline(screen_name=username, max_id=last_tweet_id, include_rts=False,
  57. exclude_replies=True)
  58.  
  59. if len(temp_raw_tweets) == 0:
  60. break
  61. else:
  62. last_tweet_id = int(temp_raw_tweets[-1].id - 1)
  63. raw_tweets = raw_tweets + temp_raw_tweets
  64. i = i + 1
  65.  
  66. print('nFinished getting ' + str(min(len(raw_tweets), max_tweets)) + ' Tweets.')
  67. f.write(str(raw_tweets))
  68. f.close()
  69. return raw_tweets
  70. def getTweetMediaURL(tweetset):
  71. #get all images' and videos' url
  72. print('nCollecting Media URLs.....')
  73. tweets_with_media = set()
  74. for tweet in tweetset:
  75. if hasattr(tweet, 'extended_entities'):
  76. media = tweet.extended_entities.get('media', [])
  77. if (len(media) > 0):
  78. # Videos
  79. if 'media' in tweet.extended_entities:
  80. for videomedia in tweet.extended_entities['media']:
  81. if 'video_info' in videomedia:
  82. for vi in videomedia['video_info']['variants']:
  83. if str(vi['url']).find('.m3u8')==-1:
  84. tweets_with_media.add(vi['url'])
  85. sys.stdout.write("rMedia Links fetched: %d" % len(tweets_with_media))
  86. sys.stdout.flush()
  87. else:
  88. # images
  89. for imagemedia in tweet.extended_entities['media']:
  90. tweets_with_media.add(imagemedia['media_url'])
  91. sys.stdout.write("rMedia Links fetched: %d" % len(tweets_with_media))
  92. sys.stdout.flush()
  93.  
  94. print('nFinished fetching ' + str(len(tweets_with_media)) + ' Links.')
  95.  
  96. return tweets_with_media
  97.  
  98.  
  99. def downloadFiles(media_url, username):
  100. #download
  101. print('nDownloading......')
  102. try:
  103. os.mkdir('tweetmedia')
  104. os.chdir('tweetmedia')
  105. except:
  106. os.chdir('tweetmedia')
  107. try:
  108. os.mkdir(username)
  109. os.chdir(username)
  110. except:
  111. os.chdir(username)
  112. for url in media_url:
  113. wget.download(url)
  114. print('nAll Finished......')
  115.  
  116.  
  117. def authentication(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN,ACCESS_TOKEN_SECRET):
  118. auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
  119. auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
  120. api = API(auth)
  121. return api
  122.  
  123.  
  124. if __name__ == '__main__':
Add Comment
Please, Sign In to add comment