2009-11-30 4 views
29

Я создаю приложение (PHP), которое принимает данные о погоде yahoo из бесплатного RSS-канала и сопоставляет его с шестнадцатеричным цветом на основе данных, полученных из RSS-канала. Проблема, с которой я сталкиваюсь, - найти способ захватить код местоположения или WOEID, не делая этого вручную.Yahoo Search API WOEID

Yahoos API отправляет обратно RSS-канал, пока вы предоставляете WOEID ->http://weather.yahooapis.com/forecastrss?w=4097

Есть этический способ сделать это? Мои знания начинающего говорят мне, что я должен написать скрипт, который будет искать yahoo, используя этот термин, и захватить первый WOEID, но я бы предположил, что yahoo не хочет, чтобы скрипты делали это, и это кажется сложным ... Если нет, есть ли альтернатива API, которые сделают это проще для меня?

Спасибо!

+1

Для тех, кто спотыкаясь по этому вопросу на 2013: Yahoo! убили API WOEID. Мы разместили об этом здесь: http://soup.metwit.com/post/47181933854/an-alternative-to-yahoo-weather-api –

ответ

64

Почему бы просто не использовать Yahoo! Служба GeoPlanet для разрешения места в WOEID? Или использовать сервис YQL для доступа к GeoPlanet через его таблицу?

http://where.yahooapis.com/v1/places.q('Barrie CA')?appid=[yourappidhere] 

или

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22Barrie%20CA%22&format=xml 

Нет необходимости выскабливание.

Приветствия

G

(раскрытие информации; я работаю Yahoo! и являюсь частью группы за WOEIDs и GeoPlanet)

+2

Спасибо, Vicchi! Вы, ребята, прекрасно справляетесь с тем, чтобы начинающие, как я, учились! – askon

+2

Святой курит, этот ответ класс. Только то, что я искал – Ryan

+0

Я получаю идентификатор страны, но в таблице таблицы есть деревенский город? – lolalola

5

Я получил некоторую полезную информацию: http://developer.yahoo.com/geo/geoplanet/

И

http://developer.yahoo.com/geo/geoplanet/guide/api-reference.html#api-countries

  1. Найти WOEID значимого ориентира: http://where.yahooapis.com/v1/places.q ('Сиднейская% 20opera% 20house') AppID = [yourappidhere]

  2. решить WOEID к месту: Http: // где. yahooapis.com/v1/place/2507854?appid=[yourappidhere]

  3. Найти WOEID конкретного места: http://where.yahooapis.com/v1/places.q ('Нортфильд% 20mn% 20США') AppID = [yourappidhere]

  4. Получить ряд WOEIDs, которые соответствуют данному месту, заказанному наиболее вероятными: http://where.yahooapis.com/v1/places.q ('Springfield'); начать = 0; кол = 5 AppID = [yourappidhere]

  5. Найти родитель данность? WOEID (и вернуть подробный отчет): http://where.yahooapis.com/v1/place/638242/parent?select=long & AppID = [yourappidhere]

  6. Верните топоним для данного WOEID в конкретный язык (там, где он существует): http://where.yahooapis.com/v1/places.q ('usa')?Ланг = Fr = & AppID [yourappidhere]

  7. Чтобы получить представление места в формате JSON: http://where.yahooapis.com/v1/place/2487956?format=json & AppID = [yourappidhere ]

  8. Чтобы получить список географических что сосед конкретный WOEID: http://where.yahooapis.com/v1/place/12795711/neighbors?appid=[yourappidhere]

1

Yahoo ! Geo Technologies рада сообщить о наличии поддержки PlaceFinder в YQL. Таблица geo.placefinder позволяет пользователям делать запросы к PlaceFinder через запросы YQL. В новой таблице представлено несколько различных способов доступа к PlaceFinder. Описание поддерживаемых запросов и параметров можно получить с помощью http://query.yahooapis.com/v1/public/yql?q...&appid=test. Вот несколько примеров:

Геокодирования адрес улицы (1600 Pennsylvania Ave, Washington, DC) с использованием свободной формы входного формата:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%221600%20Pennsylvania%20Ave%2C%20Washington%2C%20DC%22&appid=test 

Геокодирования адрес улицы (701 First Ave, Sunnyvale, CA 94089), используя многострочный формат ввода:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20line1%3D%22701%20First%20Ave%22%20and%20line2%3D%22Sunnyvale%2C%20CA%2094089%22&appid=test 

Геокодирование код аэропорта (SFO):

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%22sfo%22&appid=test 

Геокодирование точки интереса (POI) на французском языке:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%22Eiffel%20Tower%22%20and%20lang%3D%22fr%22&appid=test 

обратного геокодирование с использованием географических координат:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%2237.416275%2C%20-122.025092%22%20and%20gflags%3D%22R%22&appid=test 

Геокодирования адрес улицы (701 Первой Ave, Sunnyvale, CA 94089) с использованием анализируются входной формат :

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20house%3D%22701%22%20and%20street%3D%22First%20Ave%22%20and%20city%3D%22Sunnyvale%22%20and%20state%3D%22CA%22%20and%20postal%3D%2294089%22&appid=test 

Определение ближайших перекрестков и часовой пояс для адреса:

http://query.yahooapis.com/v1/public/yql?q=select%20line1%2C%20line2%2C%20line3%2C%20line4%2C%20cross%2C%20timezone%20from%20geo.placefinder%20where%20text%3D%22701%20First%20Ave%2C%20Sunnyvale%2C%20CA%22%20and%20flags%3D%22T%22%20and%20gflags%3D%22C%22&appid=test 

Этот пример иллюстрирует способность YQL выбрать только определенные поля из ответа