Ошибка TwitterHTTPError при получении трендов Twitter

#python #twitter

#python #Twitter

Вопрос:

Я пытаюсь понять, почему я получаю эту ошибку. Этот код взят из онлайн-класса, который я посещаю. Я меняю LOCAL_WOE_ID на идентификатор WOE в моем локальном регионе, и именно тогда я получаю сообщение об ошибке. Если я использую идентификатор для крупного города, кажется, все в порядке.

 import pickle
import os
if not os.path.exists('secret_twitter_credentials.pkl'):
    Twitter={}
    Twitter['Consumer Key'] = '...'
    Twitter['Consumer Secret'] = '...'
    Twitter['Access Token'] = '...'
    Twitter['Access Token Secret'] = '...'
    with open('secret_twitter_credentials.pkl','wb') as f:
        pickle.dump(Twitter, f)
else:
    Twitter=pickle.load(open('secret_twitter_credentials.pkl','rb'))

WORLD_WOE_ID = 1
US_WOE_ID = 23424977

LOCAL_WOE_ID=2344925

# Prefix ID with the underscore for query string parameterization.
# Without the underscore, the twitter package appends the ID value
# to the URL itself as a special case keyword argument.

world_trends = twitter_api.trends.place(_id=WORLD_WOE_ID)
us_trends = twitter_api.trends.place(_id=US_WOE_ID)
local_trends = twitter_api.trends.place(_id=LOCAL_WOE_ID)
  

Я получаю эту ошибку.

 TwitterHTTPError: Twitter sent status 404 for URL: 1.1/trends/place.json using parameters: (id=2344925amp;oauth_consumer_key=...amp;oauth_nonce=...amp;oauth_signature_method=HMAC-SHA1amp;oauth_timestamp=1553037060amp;oauth_token=...amp;oauth_version=1.0amp;oauth_signature=...)
details: {'errors': [{'code': 34, 'message': 'Sorry, that page does not exist.'}]}
  

Ответ №1:

Проблема, по-видимому, связана с тем, что LOCAL_WOE_ID из 2344925 недопустимо для Twitter API.

Twitter предоставляет другой API twitter.trends.available() , который предоставляет список всех доступных поддерживаемых WOEIDs. Документы API находятся по адресу: https://developer.twitter.com/en/docs/trends/locations-with-trending-topics/api-reference/get-trends-available.html

2344925 НЕ отображается в этом списке (хотя он найден в некоторых других поисковых системах WOEID, напримерhttps://www.flickr.com/places/info/2344925 ), несоответствие, предположительно, связано с Yahoo! в настоящее время не полностью поддерживает их данные «Где на Земле» (https://en.wikipedia.org/wiki/WOEID ).

Ответ №2:

Я беру тот же класс и получаю ту же ошибку.

Я нашел обходной путь. Поскольку Yahoo больше не выдает WOEID, и вам нужно использовать его только для приложения Twitter, вы можете найти ближайший к вам город из списка таким образом; запустите

 twitter_api.trends.available() 
  

в вашем ноутбуке jupyter (конечно, после установки и импорта twitter). Это даст вам список городов, и вы можете ctrl f для своего.