[Сценарий] Погода от Яндекс

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

PAV
Сообщения: 963
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 68 раз
Поблагодарили: 94 раза

Re: [Сценарий] Погода от Яндекс

Сообщение PAV » Пн окт 07, 2024 5:29 pm

Изменил скрипт, опять заработало. Что принципиально поменялось я так и не понял.

Код: Выделить всё

$url = "https://api.weather.yandex.ru/v2/informers?lat=55.755863&lon=37.6177&extra=true";
$apiKey = "ВАШ КЛЮЧ"; // Ваш API-ключ

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "X-Yandex-API-Key: $apiKey"
));

$response = curl_exec($ch);
curl_close($ch);

if ($response === false) {
    echo 'Ошибка выполнения запроса: ' . curl_error($ch);
} else {
    echo $response;
    $data = json_decode($response);
$weather=$data->fact;
sg("Moscow.Temp",$weather->temp);
sg("Moscow.Pressure",$weather->pressure_mm);
sg("Moscow.Humidity",$weather->humidity);
sg("Moscow.WindSpeed",$weather->wind_speed);
sg("Moscow.Image","https://yastatic.net/weather/i/icons/funky/dark/".$weather->icon.".svg");
sg("Moscow.UpTime",$weather->obs_time);
$dir = $weather->wind_dir;
switch ($dir){
   case 's':
     $dir="южное";
     break;
   case 'n':
     $dir="северное";
     break;
   case 'w':
     $dir="западное";
     break;
   case 'e':
     $dir="восточное";
     break;
   case 'sw':
     $dir="юго-западное";
     break;
   case 'nw':
     $dir="северо-западное";
     break;
     case 'se':
     $dir="юго-восточное";
     break;
     case 'ne':
     $dir="северо-восточное";
     break;
   case 'calm':
     $dir="штиль";
     break;
}
sg("Moscow.WindDir",$dir);
$cond = $weather->condition;
switch ($cond){
   case 'clear':
     $cond="ясно";
     break;
   case 'partly-cloudy':
     $cond="малооблачно";
     break;
   case 'cloudy':
     $cond="облачно";
     break;
   case 'overcast':
     $cond="пасмурно";
     break;
   case 'light-rain':
     $cond="небольшой дождь";
     break;
   case 'rain':
     $cond="дождь";
     break;
   case 'heavy-rain':
     $cond="сильный дождь";
     break;
   case 'showers':
     $cond="ливень";
     break;
   case 'wet-snow':
     $cond="дождь со снегом";
     break;
   case 'light-snow':
     $cond="небольшой снег";
     break;
   case 'snow':
     $cond="снег";
     break;
   case 'snow-showers':
     $cond="снегопад";
     break;
   case 'hail':
     $cond="град";
     break;
   case 'thunderstorm':
     $cond="гроза";
     break;
   case 'thunderstorm-with-rain':
     $cond="дождь с грозой";
     break;
   case 'thunderstorm-with-hail':
     $cond="гроза с градом";
     break;
}
sg("Moscow.Type",$cond);

//Прогноз дождя
sg('Moscow.Rain',0);
$rain = (string) $weather->condition.(string) $data->forecast->parts[1]->condition.(string) $data->forecast->parts[0]->condition;
if (strpos($rain, "rain") !== false) $rain = 30;
if (strpos($rain, "shower") !== false) $rain = 30;
if (strpos($rain, "hail") !== false) $rain = 30;
if (strpos($rain, "thunder") !== false) $rain = 30;
$rainp=$rain+0;
if ($rainp > 0) sg('Moscow.Rain',1);
}
Ответить