I've been trying to get Twitter's Trending Topics, for a data mining project. But it's using WOEID for location query and that's giving me a hard time. And possibly not only me.
In 2010, it made sense, I get it.
How do you represent a “place”? That’s what we were wondering when we were putting together our API for Trends on Twitter. We needed a way to represent a place in a permanent and language-independent way - we didn’t want to be caught in using an identifier that may change over time, and we didn’t want to be caught in internationalization issues. Where we landed was on using Yahoo!’s Where On Earth IDs, or WOEIDs, as our representation. - https://blog.twitter.com/engineering/en_us/a/2010/woeids-in-twitters-trends.html
But now in 2018, Yahoo! even itself dropped it's support for WOEID. The query pages are dead, where.yahooapis.com subdomain is dead, and the replacement "Yahoo BOSS" service ended in 2016.
[...] we will discontinue the BOSS JSON Search API, as well as the BOSS Placefinder API and BOSS Placespotter API, on March 31, 2016. -https://developer.yahoo.com/boss/
There are some alternative projects to cure this, most of them still alive thanks to archive.org kindly serving the offline db for WOEIDs.
- Project 1: Tyler Bell's GPLPlanet (latest commit in 2014) - https://github.com/twbell/GPLplanet
- Project 2: woeid-python (last commit 2016) - https://github.com/Ray-SunR/woeid
- Offline WOEID database Download link: https://archive.org/details/geoplanet_data_7.10.0.zip
Also Twitter API documentation links to now obsolete pages.
Returns the top 50 trending topics for a specific WOEID, if trending information is available for it.
id, Required, The Yahoo! Where On Earth ID of the location to return trending information for. Global information is available by using 1 as the WOEID .
The page "https://developer.twitter.com/en/docs/trends/trends-for-location/api-reference/get-trends-place" has the link "https://developer.yahoo.com/geo/geoplanet/data/" which says "The requested page was not found." in the ugliest way possible.
Yes that screenshot is deliberately large, just to show you the epic footer which is also a header.
Even if you manage to handle WOEID all by yourself (ie. offline), you still won't have coordinates. That makes it harder to integrate with other projects like Google Maps or OpenWeatherMap which uses the good old lat&lon pairs.
Also some WOEIDs will not be accepted by Twitter.
WOEID for Istanbul (State): 2347289 - 404
Sorry, that page does not exist.
WOEID for Istanbul (Town): 2344116 - 200 OK.
Sigh... I'm really tired.
Please Twitter, find a better way to represent locations in your API (preferably with latitude and longitude).
A disgruntled developer.
PS: Of course Istanbul is a state, every country in the world uses states, ain't it <3
PPS: During this work, I mumbled "OH WOE IS ME" once in every hour or so, so let's all remember KC Green's epic cartoon.