У меня есть список твитов, для которых я хотел бы загрузить их текстовое содержимое. Есть ли простое решение для этого, желательно с помощью скрипта Python? Я смотрел на другие библиотеки, такие как Tweepy, и все выглядит не так просто, и загрузка их вручную не может быть и речи, поскольку мой список очень длинный.Twitter API - получить твиты с определенным идентификатором
ответ
Вы можете получить доступ к определенным твитам по их идентификатору с помощью statuses/show/:id
API route. Большинство библиотек Python Twitter соответствуют тем же шаблонам или предлагают «дружественные» имена для этих методов.
Например, Twython предлагает несколько show_*
методов, в том числе Twython.show_status()
, что позволяет загружать определенные твиты:
CONSUMER_KEY = "<consumer key>"
CONSUMER_SECRET = "<consumer secret>"
OAUTH_TOKEN = "<application key>"
OAUTH_TOKEN_SECRET = "<application secret"
twitter = Twython(
CONSUMER_KEY, CONSUMER_SECRET,
OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
tweet = twitter.show_status(id=id_of_tweet)
print(tweet['text'])
и возвращаемый словарь следует Tweet object definition заданную API.
tweepy
library использует tweepy.get_status()
:
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
api = tweepy.API(auth)
tweet = api.get_status(id_of_tweet)
print(tweet.text)
, где он возвращает немного богаче объект, но атрибуты на нем снова отражают опубликованный API.
Спасибо, очень полезно! Это именно то, что я искал! – Crista23
Вы можете получить доступ к твитов навалом (до 100 одновременно) с/статус поиска конечной точки: https://dev.twitter.com/rest/reference/get/statuses/lookup
Разделяя мою работу, которая была значительно ускоряется предыдущие ответы (спасибо). Этот скрипт Python 2.7 извлекает текст для идентификаторов твитов, хранящихся в файле. Отрегулируйте get_tweet_id() для вашего формата входных данных; оригинал сконфигурирован для передачи данных на https://github.com/mdredze/twitter_sandy
'''
Gets text content for tweet IDs
'''
# standard
from __future__ import print_function
import getopt
import logging
import os
import sys
# import traceback
# third-party: `pip install tweepy`
import tweepy
# global logger level is configured in main()
Logger = None
# Generate your own at https://apps.twitter.com/app
CONSUMER_KEY = 'Consumer Key (API key)'
CONSUMER_SECRET = 'Consumer Secret (API Secret)'
OAUTH_TOKEN = 'Access Token'
OAUTH_TOKEN_SECRET = 'Access Token Secret'
def get_tweet_id(line):
'''
Extracts and returns tweet ID from a line in the input.
'''
(tagid,_timestamp,_sandyflag) = line.split('\t')
(_tag, _search, tweet_id) = tagid.split(':')
return tweet_id
def get_tweets_single(twapi, idfilepath):
'''
Fetches content for tweet IDs in a file one at a time,
which means a ton of HTTPS requests, so NOT recommended.
`twapi`: Initialized, authorized API object from Tweepy
`idfilepath`: Path to file containing IDs
'''
# process IDs from the file
with open(idfilepath, 'rb') as idfile:
for line in idfile:
tweet_id = get_tweet_id(line)
Logger.debug('Fetching tweet for ID %s', tweet_id)
try:
tweet = twapi.get_status(tweet_id)
print('%s,%s' % (tweet_id, tweet.text.encode('UTF-8')))
except tweepy.TweepError as te:
Logger.warn('Failed to get tweet ID %s: %s', tweet_id, te.message)
# traceback.print_exc(file=sys.stderr)
# for
# with
def get_tweet_list(twapi, idlist):
'''
Invokes bulk lookup method.
Raises an exception if rate limit is exceeded.
'''
# fetch as little metadata as possible
tweets = twapi.statuses_lookup(id_=idlist, include_entities=False, trim_user=True)
for tweet in tweets:
print('%s,%s' % (tweet.id, tweet.text.encode('UTF-8')))
def get_tweets_bulk(twapi, idfilepath):
'''
Fetches content for tweet IDs in a file using bulk request method,
which vastly reduces number of HTTPS requests compared to above;
however, it does not warn about IDs that yield no tweet.
`twapi`: Initialized, authorized API object from Tweepy
`idfilepath`: Path to file containing IDs
'''
# process IDs from the file
tweet_ids = list()
with open(idfilepath, 'rb') as idfile:
for line in idfile:
tweet_id = get_tweet_id(line)
Logger.debug('Fetching tweet for ID %s', tweet_id)
# API limits batch size to 100
if len(tweet_ids) < 100:
tweet_ids.append(tweet_id)
else:
get_tweet_list(twapi, tweet_ids)
tweet_ids = list()
# process rump of file
if len(tweet_ids) > 0:
get_tweet_list(twapi, tweet_ids)
def usage():
print('Usage: get_tweets_by_id.py [options] file')
print(' -s (single) makes one HTTPS request per tweet ID')
print(' -v (verbose) enables detailed logging')
sys.exit()
def main(args):
logging.basicConfig(level=logging.WARN)
global Logger
Logger = logging.getLogger('get_tweets_by_id')
bulk = True
try:
opts, args = getopt.getopt(args, 'sv')
except getopt.GetoptError:
usage()
for opt, _optarg in opts:
if opt in ('-s'):
bulk = False
elif opt in ('-v'):
Logger.setLevel(logging.DEBUG)
Logger.debug("verbose mode on")
else:
usage()
if len(args) != 1:
usage()
idfile = args[0]
if not os.path.isfile(idfile):
print('Not found or not a file: %s' % idfile, file=sys.stderr)
usage()
# connect to twitter
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
api = tweepy.API(auth)
# hydrate tweet IDs
if bulk:
get_tweets_bulk(api, idfile)
else:
get_tweets_single(api, idfile)
if __name__ == '__main__':
main(sys.argv[1:])
Я пробовал свой код, функция «statuses_lookup» не отменяет никакого значения, даже не получаю исключения. Можете ли вы предложить мне, что может быть неправильно. – charvi
Я отправил код, который я попробовал.
–
charvi
Он по-прежнему работает для меня, проверенный сегодня вечером. Создавали ли вы потребительский ключ, секрет потребителя, токен клятвы и секретные строки клятвы на apps.twitter.com и помещали их в скрипт? Вы установили tweepy? Вы использовали действительный идентификатор твита (например, 260244087901413376)? Где вы отправили код? – chrisinmtown
Я не хватает репутации, чтобы добавить фактический комментарий так, к сожалению, это путь:
Я нашел ошибку и странную вещь в chrisinmtown ответ :
Каждый 100-й чириканье будет пропущен из-за ошибки. Вот простое решение:
if len(tweet_ids) < 100:
tweet_ids.append(tweet_id)
else:
tweet_ids.append(tweet_id)
get_tweet_list(twapi, tweet_ids)
tweet_ids = list()
Использование лучше, так как оно работает даже за пределом скорости.
api = tweepy.API(auth_handler=auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
- 1. Twitter API - получить твиты с id_str
- 2. Twitter API - Показать все твиты с определенным хэштегом?
- 3. получить только твиты с картинки с использованием Twitter Search API
- 4. Twitter API - получить твиты около точки gps
- 5. Получить общедоступные твиты Twitter API 1.1
- 6. Получить твиты из Twitter ЖСК API
- 7. twitter api получает твиты (сообщения)
- 8. Twitter api (Twitter4j). Как получить американские твиты?
- 9. Twitter API обнаруживает закрепленные твиты
- 10. Получить последние твиты - Какой API
- 11. Как получить твиты с помощью twitter API в python?
- 12. Получить твиты с картинками, используя twitter search api
- 13. получить твиты с использованием stream API twitter, используя 1.1
- 14. получить последние твиты из twitter с помощью API 1.1
- 15. получить все твиты пользователя с twitter user_timeline api
- 16. Twitter получить поисковые твиты API не работает с тегом hash
- 17. Получите последние твиты, используя Twitter Streaming API
- 18. Twitter Search API - Популярные твиты не работают
- 19. Как извлечь исторические твиты из twitter API?
- 20. Использование Twitter api v1.1 Поиск/твиты
- 21. Twitter: Получить твиты за определенный период времени
- 22. Twitter API - как получить твиты в реальном времени от пользователя
- 23. пакет twitteR пропускает твиты?
- 24. Twitter API - Получение твитов не удается получить твиты по случаю
- 25. PHP: Twitter Search API - Как получить твиты из данных JSON
- 26. Twitter API - как создать новые твиты
- 27. Каковы последние твиты, возвращенные потоковым API Twitter?
- 28. Показывать последние твиты, используя Twitter Stream API
- 29. ошибок Получение твиты из Twitter API 1.1
- 30. Как получить потоковые твиты, используя twitter-api в clojure?
Что вы подразумеваете под простейшим? Извините, но нет такого инструмента, который будет принимать голосовые данные и загружать твиты для вас, вам нужно закодировать, BTW tweepy - одна из самых простых и хорошо документированных библиотек API Twitter. – ZdaR