web-dev-qa-db-fra.com

Retour Yahoo! données API météo en Celsius, en utilisant YQL

J'essaie d'obtenir Yahoo! API météo avec des températures en degrés Celsius.

J'ai ajouté &u=c dans la demande, mais il renvoie toujours des données en Fahrenheit.

Voici l'URL que j'utilise:

http://query.yahooapis.com/v1/public/yql?q=select%20item%20from%20weather.forecast%20where%20location=%22LEXX0003%22&format=json&u=c

Et la réponse:

{"query":{"count":1,"created":"2014-01-13T13:06:43Z","lang":"en-US","results":{"channel":{"item":{"title":"Conditions for Beirut, LE at 1:59 pm EET","lat":"33.82","long":"35.48","link":"http://us.rd.yahoo.com/dailynews/rss/weather/Beirut__LE/*http://weather.yahoo.com/forecast/LEXX0003_f.html","pubDate":"Mon, 13 Jan 2014 1:59 pm EET","condition":{"code":"30","date":"Mon, 13 Jan 2014 1:59 pm EET","temp":"64","text":"Partly Cloudy"},"description":"\n<img src=\"http://l.yimg.com/a/i/us/we/52/30.gif\"/><br />\n<b>Current Conditions:</b><br />\nPartly Cloudy, 64 F<BR />\n<BR /><b>Forecast:</b><BR />\nMon - Partly Cloudy. High: 64 Low: 55<br />\nTue - Cloudy. High: 66 Low: 56<br />\nWed - Mostly Sunny. High: 68 Low: 58<br />\nThu - Sunny. High: 70 Low: 60<br />\nFri - Scattered Showers. High: 65 Low: 57<br />\n<br />\n<a href=\"http://us.rd.yahoo.com/dailynews/rss/weather/Beirut__LE/*http://weather.yahoo.com/forecast/LEXX0003_f.html\">Full Forecast at Yahoo! Weather</a><BR/><BR/>\n(provided by <a href=\"http://www.weather.com\" >The Weather Channel</a>)<br/>\n","forecast":[{"code":"30","date":"13 Jan 2014","day":"Mon","high":"64","low":"55","text":"Partly Cloudy"},{"code":"26","date":"14 Jan 2014","day":"Tue","high":"66","low":"56","text":"Cloudy"},{"code":"34","date":"15 Jan 2014","day":"Wed","high":"68","low":"58","text":"Mostly Sunny"},{"code":"32","date":"16 Jan 2014","day":"Thu","high":"70","low":"60","text":"Sunny"},{"code":"39","date":"17 Jan 2014","day":"Fri","high":"65","low":"57","text":"Scattered Showers"}],"guid":{"isPermaLink":"false","content":"LEXX0003_2014_01_17_7_00_EET"}}}}}}`

Des idées?

18
Khodour.F

Mieux vaut tard que jamais...

var locationQuery = escape("select item from weather.forecast where woeid in (select woeid from geo.places where text='GB-LND') and u='c'"),
    locationUrl = "http://query.yahooapis.com/v1/public/yql?q=" + locationQuery + "&format=json&callback=?";

C'est plus facile à lire si vous le cassez. Vous, nous sommes assez proches, nous avions juste besoin du u = c dans le cadre de la requête, pas à la fin de l'URL.

68
DanV

J'ai utilisé le yql

select item from weather.forecast where woeid=22724447 and u='c'

et cela a bien fonctionné avec les résultats en degrés Celsius. J'ai changé le "LEXX0003" pour le vrai WOEID de cette zone et il semble avoir fonctionné.

10
Aris

Chaque fois que je devais appeler une température que je voulais en Celsius, j'utilisais simplement une fonction de conversion simple:

function FtoC(temp) {return Math.round((temp - 32) / (9 / 5));}

Là encore, je voulais basculer entre Fahrenheit et Celsius. Le simple fait d'appeler l'élément Celsius JSON à partir de Yahoo est probablement mieux si tout ce que vous voulez utiliser est Celsius.

1
Michael Howard

Vous pouvez essayer ceci:

Requête YQL:

select * from weather.forecast where woeid in (select woeid from geo.places(1) where text="jiangmen,cn") and u="c"

EndPoint:

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22jiangmen%2Ccn%22)%20and%20u%3D%22c%22&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys

Ce travail quand j'essaie tout à l'heure

1
Zhao Weihao