Я пытаюсь извлечь отдельные фрагменты данных из общего потока твитов для двух отслеживаемых ключевых слов, используя пакет Python TwitterAPI.Как получить исходный любимый счетчик и подсчет каждого пользователя из API потоковой передачи Twitter в Python
Я бы в идеале хотел бы получить подсчитывать оригинальные любимые для retweeted_status
объекта (не для status
оболочки пользователя), но у меня возникают трудности, делая это, так как и print(retweeted_status['favorite_count'])
и print(status['favorite_count'])
всегда возвращает нулевое значение.
В противном случае я хотел бы иметь возможность подсчитывать количество последователей каждого пользователя в потоке. Я могу видеть объект под названием «friends_count» в полном формате JSON вернулся из каждого твита, когда я бегу print(item)
, но если я бегу print(user['friends_count'])
я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "twitter.py", line 145, in <module>
friends()
File "twitter.py", line 110, in favourites
print(user['friends_count'])
KeyError: 'friends_count'
Это то, что мой полный код выглядит на момент:
import sys
sys.path.append('/Library/Python/2.6/site-packages')
from TwitterAPI import TwitterAPI
import string
OAUTH_SECRET = "foo"
OAUTH_TOKEN = "foo"
CONSUMER_KEY = "foo"
CONSUMER_SECRET = "foo"
def friends():
TRACK_TERM = 'hello'
api = TwitterAPI(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET)
f = api.request('statuses/filter', {'track': TRACK_TERM})
for user in f:
print(user['friends_count'])
def favorite():
TRACK_TERM = 'kanye'
api = TwitterAPI(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET)
h = api.request('statuses/filter', {'track': TRACK_TERM})
for retweeted_item in h:
print(retweeted_item['favorite_count'])
if __name__ == '__main__':
try:
friends()
favorite()
except KeyboardInterrupt:
print '\nGoodbye!'
Любые советы или информация была бы оценена - я предполагаю, что я сделал ошибку где-то в синтаксисе (Я новичок Python!), который бросает KeyErrors, но не был в состоянии работать что это из документации для пакета TwitterAPI или самого API Twitter после нескольких часов поиска.
EDIT: это то, что API потоковой передачи возвращается для сообщения одного пользователя при запуске for user in f print(user)
(я не знаю, как сделать его более читаемым/обернуть текст в Stack Overflow, извините) - вы можете видеть как " friends_count 'и' followers_count 'возвращают число, но я не знаю, как распечатать их отдельно, без его просто в результате KeyError.
{u'contributors': None, u'truncated': False, u'text': u'Hearing Kanye spit on a Drake beat is just really a lot for me!!!! I was not prepared!!', u'is_quote_status': False, u'in_reply_to_status_id': None, u'id': 719940912453853184, u'favorite_count': 0, u'source': u'<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>', u'retweeted': False, u'coordinates': None, u'timestamp_ms': u'1460482264041', u'entities': {u'user_mentions': [], u'symbols': [], u'hashtags': [], u'urls': []}, u'in_reply_to_screen_name': None, u'id_str': u'719940912453853184', u'retweet_count': 0, u'in_reply_to_user_id': None, u'favorited': False, u'user': {u'follow_request_sent': None, u'profile_use_background_image': True, u'default_profile_image': False, u'id': 247986350, u'verified': False, u'profile_image_url_https': u'https://pbs.twimg.com/profile_images/715358123108601856/KM-OCY2D_normal.jpg', u'profile_sidebar_fill_color': u'DDEEF6', u'profile_text_color': u'333333', u'followers_count': 277, u'profile_sidebar_border_color': u'FFFFFF', u'id_str': u'247986350', u'profile_background_color': u'C0DEED', u'listed_count': 1, u'profile_background_image_url_https': u'https://pbs.twimg.com/profile_background_images/695740599/089d0a4e4385f2ac9cad05498169e606.jpeg', u'utc_offset': -25200, u'statuses_count': 6024, u'description': u'this is my part, nobody else speak', u'friends_count': 298, u'location': u'las vegas', u'profile_link_color': u'FFCC4D', u'profile_image_url': u'http://pbs.twimg.com/profile_images/715358123108601856/KM-OCY2D_normal.jpg', u'following': None, u'geo_enabled': True, u'profile_banner_url': u'https://pbs.twimg.com/profile_banners/247986350/1454553801', u'profile_background_image_url': u'http://pbs.twimg.com/profile_background_images/695740599/089d0a4e4385f2ac9cad05498169e606.jpeg', u'name': u'princess laser tag', u'lang': u'en', u'profile_background_tile': True, u'favourites_count': 9925, u'screen_name': u'hannahinloafers', u'notifications': None, u'url': u'http://eecummingsandgoings.tumblr.com', u'created_at': u'Sun Feb 06 00:49:24 +0000 2011', u'contributors_enabled': False, u'time_zone': u'Pacific Time (US & Canada)', u'protected': False, u'default_profile': False, u'is_translator': False}, u'geo': None, u'in_reply_to_user_id_str': None, u'lang': u'en', u'created_at': u'Tue Apr 12 17:31:04 +0000 2016', u'filter_level': u'low', u'in_reply_to_status_id_str': None, u'place': None}
Я не думаю, что это синтаксис ошибки, но я не знаю этого API. 'KeyError' будет то, что вы пытаетесь получить доступ к тому, что не существует. Что вы видите в 'для пользователя в f: print user' для начала отладки? Вам нужно будет предоставить json, я думаю, или, по крайней мере, его структуру в примере. Это может также содержать ответ на вопрос, почему ваши попытки с «статусом» дают нулевые результаты. – roganjosh
@roganjosh. Я добавил пример того, что происходит, когда я запускаю пользователя в f: print user - надеюсь, это что-то открывает! –
Хорошо, приближаясь. Редактирование недействительно json, поэтому я не уверен, почему API вернет что-то подобное. Я пытаюсь понять это; в результате редактирования отображается один «пользователь»? – roganjosh