A Api Meteorológica Simples Do Yahoo Não Funciona

eu estava usando um código simples, que inclui uma api do yahoo código, para obter apenas o clima da minha cidade e colocar na minha página web, no entanto, acabei de ler que o yahoo api pública não está mais funcionando e eu não sei como pode um eu obter este código para trabalhar, tenho uma conta do yahoo, criei uma api e eu não sei como proceder, pois aqui. Se alguém me puder ajudar, este é o código:

<?php
/*Clima*/
if(isset($_POST['zipcode']) && is_numeric($_POST['zipcode'])){
    $zipcode = $_POST['zipcode'];
}else{
    $zipcode = 'ARMA0056';
}
$result = file_get_contents('http://weather.yahooapis.com/forecastrss?p=' . $zipcode . '&u=c');
$xml = simplexml_load_string($result);

//echo htmlspecialchars($result, ENT_QUOTES, 'UTF-8');

$xml->registerXPathNamespace('yweather', 'http://xml.weather.yahoo.com/ns/rss/1.0');
$location = $xml->channel->xpath('yweather:location');

if(!empty($location)){
    foreach($xml->channel->item as $item){
        $current = $item->xpath('yweather:condition');
        $forecast = $item->xpath('yweather:forecast');
        $current = $current[0];
        $clima = <<<END
           <span>{$current['temp']}&deg;C</span>

END;
    }
}else{
    $clima = '<h1>No results found, please try a different zip code.</h1>';
}
/*Clima*/
?> 
Author: FZE, 2016-03-27

5 answers

Substitui apenas http://weather.yahooapis.com por http://xml.weather.yahoo.com. créditos a https://forum.rainmeter.net/viewtopic.php?f=13&t=23010

 10
Author: blackxel, 2016-03-28 00:26:46

Xml.weather.yahoo.com era a solução,mas a URL não parece estar mais funcionando. Eu estou usando felizardos consulta para obter o XML i.e."https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%3D2489314"

Este parece ser o mesmo XML, com excepção de" resultados " adicionados à árvore.

 3
Author: Yeeha68, 2016-04-22 17:11:22

O Yahoo actualizou recentemente a forma como lida com os pedidos. Costumava ser apenas sobre qualquer conexão, mas agora para torná-lo mais seguro e mais fácil de lidar, eles recentemente optaram em enviar todos os pedidos sobre o OAuth1. Use o código de amostra que eles fornecem em sua página e obter a informação do pedido sobre JSON.

Ver https://developer.yahoo.com/weather / para mais informações.

 0
Author: SDC, 2016-03-27 22:23:48

Substitua http://weather.yahooapis.com com http://xml.weather.yahoo.com. Por exemplo, se você clicar neste link, que é o antigo one ***8http://tempo.yahooapis.com/forecastrss?w=2459115&u=c&d=5 ele vai dar uma mensagem de erro que pede a credencial válida OAuth. Mas se você usar a ligação abaixo, * * * 8http://xml. weather. yahoo. com/forecastss? w=2459115&u=C&d=5, Isto irá mostrar os dados meteorológicos no formato xml, e então você poderá analisar todos os dados meteorológicos indicados da forma como você gosto.

Nota: w = número woied ou à medida que o usa no seu url p=zipcode. Ambos te dão o mesmo resultado. Se você quiser obter o número woied de qualquer cidade do mundo, basta ir para ***8https://weather.yahoo.com/ e selecionar qualquer cidade, e você vai notar o número woied mostrado na barra de endereços url. Esse número é número woied daquela cidade específica. Espero que isto ajude.

 0
Author: Josi, 2016-04-04 23:28:22

O YAHOO mudou algumas regras sobre a api; Fiz seguir A classe a trabalhar para mim... a esperança funciona contigo.; $fcast=$phpObj - >query->results->channel->item - >forecast; altere esta linha para outros itens...

<?php 
date_default_timezone_set('CET');
class weatherfc{
public $result;
function weather($city){
 $BASE_URL = "http://query.yahooapis.com/v1/public/yql";
 $yql_query = 'select * from weather.forecast where woeid in (select woeid from geo.places(1) where text="'.$city.'") and u="c"';
$yql_query_url = $BASE_URL . "?q=" . urlencode($yql_query) . "&format=json";
    // Make call with cURL
    $session = curl_init($yql_query_url);
    curl_setopt($session, CURLOPT_RETURNTRANSFER,true);
    $json = curl_exec($session);
    // Convert JSON to PHP object
  $phpObj =  json_decode($json);
  //var_dump($phpObj);
    $weatherd='<div> Weather In '.$city.'<br>';
    $fcast=$phpObj->query->results->channel->item->forecast;
    foreach($fcast as $witem){
    $fdate=DateTime::createFromFormat('j M Y', $witem->date);

    $weatherd.= '<div class="days">';
    $weatherd.= '<div class="item"><div>'.$fdate->format('d.m').'&nbsp;'.$witem->day.'</div><div class="image" style="width:90px !important; height:65px !important;"><img src="http://us.i1.yimg.com/us.yimg.com/i/us/nws/weather/gr/'.$witem->code.'d.png" width=90></div></div>';
    $weatherd.= '<div><span>'.$witem->high.'&deg;C</span>';
    $weatherd.= '<span>'.$witem->low.'°C</span></div></div>';
    };
    $this->result=$weatherd;
}

}

$h= new weatherfc;
$h->weather("Antalya,Turkey");
echo $h->result;
?>



    <style>
    .days{
    width:90px;
    font-size:12px;
    float:left;
    font-family:Arial, Helvetica, sans-serif;
    border:#999 1px dotted;
    }

</style>
 0
Author: mgunduz, 2016-04-27 02:54:24