RSS погода
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов TV Server // Обмен опытом
Предыдущая тема :: Следующая тема  
Автор Сообщение
vik_al_gaid



Зарегистрирован: 06.08.2009
Сообщения: 4

СообщениеДобавлено: Thu Aug 06, 2009 10:17 am    Заголовок сообщения: RSS погода Ответить с цитатой
Добрый день. Длительное время использовал rss с погодой от gismeteo.ru Сейчас недоступна. поделитесь информацией, где взять rss информацию о погоде/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Xharm



Зарегистрирован: 22.07.2009
Сообщения: 159

СообщениеДобавлено: Thu Aug 06, 2009 1:24 pm    Заголовок сообщения: Ответить с цитатой
это тебе куда погоду в прогу чтоли вставить хочешь?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Thu Aug 06, 2009 11:13 pm    Заголовок сообщения: Ответить с цитатой
Доступна. По адресу http://informer.gismeteo.ru/rss/НомерГорода.xml
Правда сейчас там есть небольшой косячок - теперь rss-канал в utf-8 (новая версия поддерживает распознавание кодировок, поэтому это уже не проблема), и названия дней недели и месяцев на английском. Все никак руки не дойдут сделать парсер.
Вернуться к началу
apog



Зарегистрирован: 29.11.2007
Сообщения: 96

СообщениеДобавлено: Sun Aug 09, 2009 1:40 am    Заголовок сообщения: Ответить с цитатой
Цитата:
Все никак руки не дойдут сделать парсер.

Ну вот добрался и до парсера после того, как поставил себе новую DigiTV 5.7.2 с поддержкой различных кодировок в rss.
Делюсь со всеми безвозмездно. Просьба не ругать, если покажется, что это не самый легкий и прямой путь решения проблемы. Дело в том, что у меня эфирный сервер не имеет прямого доступа в Интернет по различным причинам, в том числе и в целях безопасности. В сети у меня работает веб-сервер под управлением GNU/Linux, он доступен для эфирного сервера. На нем я поддерживаю зеркала тех Интернет-ресурсов, которые использую на эфирном сервере.
На веб-сервере, наряду со сценарием регулярного обновления rss каналов, работает такой скрипт:
Код:
#!/bin/sh
# Этот скрипт производит поиск сокращенных английских названий
# месяцев и дней недели в xml-файле погодного rss канала портала
# GISMETEO.RU и заменяет их на полные русские названия.
#
FILE=/var/www/rss/27612.xml # Имя обрабатываемого файла
# Поиск и замена названий месяцев
sed -i 's/ Jan/ января/g' $FILE
sed -i 's/ Feb/ февраля/g' $FILE
sed -i 's/ Mar/ марта/g' $FILE
sed -i 's/ Apr/ апреля/g' $FILE
sed -i 's/ May/ мая/g' $FILE
sed -i 's/ Jun/ июня/g' $FILE
sed -i 's/ Jul/ июля/g' $FILE
sed -i 's/ Aug/ августа/g' $FILE
sed -i 's/ Sep/ сентября/g' $FILE
sed -i 's/ Oct/ октября/g' $FILE
sed -i 's/ Nov/ ноября/g' $FILE
sed -i 's/ Dec/ декабря/g' $FILE
# Поиск и замена названий дней недели
sed -i 's/ Mon/ понедельник/g' $FILE
sed -i 's/ Tue/ вторник/g' $FILE
sed -i 's/ Wed/ среда/g' $FILE
sed -i 's/ Thu/ четверг/g' $FILE
sed -i 's/ Fri/ пятница/g' $FILE
sed -i 's/ Sat/ суббота/g' $FILE
sed -i 's/ Sun/ воскресенье/g' $FILE

В тексте скрипта нужно указать путь к обрабатываемому файлу (читайте комментарии).
Надеюсь мое решение будет полезно кому нибудь еще.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
apog



Зарегистрирован: 29.11.2007
Сообщения: 96

СообщениеДобавлено: Sun Dec 05, 2010 10:41 pm    Заголовок сообщения: Ответить с цитатой
Давно сделал новый скрипт на php. Работает стабильно.
Делюсь с надеждой, что кому либо пригодится мой труд.
Код:

#!/usr/bin/php
<?php
// Скрипт формирует XML-файл RSS канала с прогнозом погоды
// на основе данных, полученных в XML с сайта Gismeteo.ru
// Модификация скрипта от PinPinP с форума www.softtime.ru
// © Поганюко Александр, 2009.08.20
$FORECAST  = array();        // В этом массиве будут храниться новости,
                             // полученные из XML файла
$currentFORECAST  = null;    // Текущая новость. Используется в процессе
                             // импорта данных
$index = null;               // Текущий индекс в массиве новостей.
                             // Используется в процессе импорта данных

// Функция для обработки начальных тегов XML
// На входе:
//   - указатель на SAX парсер
//   - имя XML тега
//   - массив аттрибутов
function saxStartElement($parser,$name,$attrs)
{
    global $currentFORECAST ,$index;

    switch($name)
    {
        case 'MMWEATHER':
// Тег FORECAST содержит все новости. Мы должны подготовить
// массив $FORECAST для приема новостей из XML файла.
            $FORECAST  = array();
        break;

        case 'FORECAST':
// Каждая новость находится в теге FORECAST. Подготавливаем массив
// $currentFORECAST для приема этой новости
            $currentFORECAST = array();

// Если у новости есть дата - сохраняем ее в массиве
            if (in_array('day',array_keys($attrs))) $currentFORECAST ['day'] = $attrs['day'];
            if (in_array('month',array_keys($attrs))) $currentFORECAST ['month'] = $attrs['month'];
            if (in_array('tod',array_keys($attrs))) $currentFORECAST ['tod'] = $attrs['tod'];
            if (in_array('weekday',array_keys($attrs))) $currentFORECAST ['weekday'] = $attrs['weekday'];
        break;

// Сохраняем в массиве всю необходимую информацию
        case 'PHENOMENA':
            $currentFORECAST ['phenomena_cloudiness'] = $attrs['cloudiness'];
            $currentFORECAST ['phenomena_precipitation'] = $attrs['precipitation'];
            $currentFORECAST ['phenomena_rpower'] = $attrs['rpower'];
            $currentFORECAST ['phenomena_spower'] = $attrs['spower'];
        break;

        case 'PRESSURE':
            $currentFORECAST ['pressure_min'] = $attrs['min'];
            $currentFORECAST ['pressure_max'] = $attrs['max'];
        break;

        case 'TEMPERATURE':
            $currentFORECAST ['temperature_min'] = $attrs['min'];
            $currentFORECAST ['temperature_max'] = $attrs['max'];
        break;

        case 'WIND':
            $currentFORECAST ['wind_min'] = $attrs['min'];
            $currentFORECAST ['wind_max'] = $attrs['max'];
            $currentFORECAST ['wind_direction'] = $attrs['direction'];
        break;

        case 'RELWET':
            $currentFORECAST ['relwet_min'] = $attrs['min'];
            $currentFORECAST ['relwet_max'] = $attrs['max'];
        break;

        default:
// Все остальные теги, которые могут встретиться в XML файле
// находятся внутри тега <FORECAST>, поэтому мы просто запоминаем
// их название с тем, чтобы знать, какие именно данные мы
// обрабатываем.
            $index = $name;
        break;
    }
}

// Функция для обработки конечных тегов XML
// На входе:
//   - указатель на SAX парсер
//   - имя XML тега
function saxEndElement($parser,$name)
{
    global $FORECAST ,$currentFORECAST ,$index;

    if ((is_array($currentFORECAST )) && ($name=='FORECAST'))
// Если в данный момент у нас есть массив $currentFORECAST (т.е.
// мы обрабатываем содержимое новости) и имя закрывающего
// тега - "FORECAST", то это значит, что данные для этой новости
// кончились и мы можем поместить готовую новость в массив
// новостей.
    {
        $FORECAST [] = $currentFORECAST ;
// Уничтожаем массив текущей новости, чтобы показать, что
// в данный момент мы не занимаемся получением данных для
// новости.
        $currentFORECAST  = null;
    }
// В любом случае закрытие тега означает, что символьные
// данные, получаемые парсером не нужно помещать куда-либо.
    $index = null;
}

// Функция для обработки символьных данных
// На входе:
//   - указатель на SAX парсер
//   - символьные данные XML
function saxCharacterData($parser,$data)
{
    global $currentFORECAST ,$index;

// Мы принимаем только данные для новостей, помещенные в
// какой-нибудь тег. Все остальные символьные данные
// (как правило это пустое пространство, использованное
// для форматирования) мы опускаем за ненадобностью.
   if ((is_array($currentFORECAST )) && ($index))
        $currentFORECAST [$index] = $data;
}

// Создаем SAX парсер, который будет использоваться для
// обработки XML-данных.
$parser = xml_parser_create();
// Регистрируем функции для обработки различных типов
// XML-данных:
//  - начальный и конечный тэги XML
xml_set_element_handler($parser,'saxStartElement','saxEndElement');
//  - символьные данные
xml_set_character_data_handler($parser,'saxCharacterData');
// Также существуют аналогичные функции для регистрации
// обработчиков других типов XML-данных.
// Убираем case folding, в этом случае имена тэгов будут
// передаваться обработчикам в оригинальном виде. Если case
// folding включен, то все имена тегов будут переведены
// в верхний регистр.
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,false);

// Получаем содержимое XML-файла с новостями.
//$xml = join('',file('news.xml'));
$ch = curl_init();
// В этой строке вписываем url для своего города
curl_setopt($ch, CURLOPT_URL, 'http://informer.gismeteo.ru/xml/тут_цифровой_идентификатор_города.xml');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, 0);
//curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
//curl_setopt($ch, CURLOPT_PROXY, '192.168.0.1');
$xml = curl_exec($ch);
curl_close($ch);

// Производим парсинг (разбор) полученного XML-файла.
// В процессе разбора парсер будет вызывать описанные нами
// функции и в результате мы получим массив $FORECAST day,
// содержащий новости из XML-файла.
if (!xml_parse($parser,$xml,true))
// Парсер возвращает значение FALSE, если произошла
// какая-либо ошибка. В этом случае мы также прекращаем
// выполнение скрипта и возвращаем ошибку.
    die(sprintf('Ошибка XML: %s в строке %d',
        xml_error_string(xml_get_error_code($parser)),
        xml_get_current_line_number($parser)));
// Уничтожаем парсер, освобождая занятые им ресурсы
xml_parser_free($parser);
?>
<rss xmlns:gismeteo="http://www.gismeteo.ru" version="2.0">
   <channel>
      <title>GISMETEO.RU: Погода от ФОБОС и Мэп Мейкер</title>
      <item>
         <title>Прогноз погоды предоставлен Gismeteo.ru совместно с ООО "Рога и копыта"</title>
         <link>http://www.gismeteo.ru</link>
         <description><?php
foreach($FORECAST as $n)
{
    // Вывод времени суток
    if ($n['tod']=='0') echo ('Ночь ');
    elseif ($n['tod']=='1') echo ('Утро ');
    elseif ($n['tod']=='2') echo ('День ');
    elseif ($n['tod']=='3') echo ('Вечер ');
    else echo ('');

    // Вывод числа месяца
    echo ($n['day'].' ');

    // Вывод названия месяца
    if ($n['month']=='01') echo ('января, ');
    elseif ($n['month']=='02') echo ('февраля, ');
    elseif ($n['month']=='03') echo ('марта, ');
    elseif ($n['month']=='04') echo ('апреля, ');
    elseif ($n['month']=='05') echo ('мая, ');
    elseif ($n['month']=='06') echo ('июня, ');
    elseif ($n['month']=='07') echo ('июля, ');
    elseif ($n['month']=='08') echo ('августа, ');
    elseif ($n['month']=='09') echo ('сентября, ');
    elseif ($n['month']=='10') echo ('октября, ');
    elseif ($n['month']=='11') echo ('ноября, ');
    elseif ($n['month']=='12') echo ('декабря, ');
    else echo ('');

    // Вывод названия дня недели
    if ($n['weekday']=='1') echo ('воскресенье: ');
    elseif ($n['weekday']=='2') echo ('понедельник: ');
    elseif ($n['weekday']=='3') echo ('вторник: ');
    elseif ($n['weekday']=='4') echo ('среда: ');
    elseif ($n['weekday']=='5') echo ('четверг: ');
    elseif ($n['weekday']=='6') echo ('пятница: ');
    elseif ($n['weekday']=='7') echo ('суббота: ');
    else echo ('');

    // Вывод информации об облачности
    if ($n['phenomena_cloudiness']=='0') echo ('ясно, ');
    elseif ($n['phenomena_cloudiness']=='1') echo ('малооблачно, ');
    elseif ($n['phenomena_cloudiness']=='2') echo ('облачно, ');
    elseif ($n['phenomena_cloudiness']=='3') echo ('пасмурно, ');
    else echo ('');

    // Вывод информации об осадках
    if ($n['phenomena_rpower']=='0' && $n['phenomena_precipitation']=='4') echo ('возможен дождь, ');
    elseif ($n['phenomena_rpower']=='0' && $n['phenomena_precipitation']=='5') echo ('возможен ливень, ');
    elseif ($n['phenomena_rpower']=='0' && $n['phenomena_precipitation']=='6') echo ('возможен снег, ');
    elseif ($n['phenomena_rpower']=='0' && $n['phenomena_precipitation']=='7') echo ('возможен снег, ');
    elseif ($n['phenomena_rpower']=='1' && $n['phenomena_precipitation']=='4') echo ('дождь, ');
    elseif ($n['phenomena_rpower']=='1' && $n['phenomena_precipitation']=='5') echo ('ливень, ');
    elseif ($n['phenomena_rpower']=='1' && $n['phenomena_precipitation']=='6') echo ('снег, ');
    elseif ($n['phenomena_rpower']=='1' && $n['phenomena_precipitation']=='7') echo ('снег, ');
    elseif ($n['phenomena_spower']=='0' && $n['phenomena_precipitation']=='8') echo ('возможна гроза, ');
    elseif ($n['phenomena_spower']=='1' && $n['phenomena_precipitation']=='8') echo ('гроза, ');
    elseif ($n['phenomena_precipitation']=='10') echo ('без осадков, ');
    elseif ($n['phenomena_precipitation']=='9') echo ('');
    else echo ('');

    // Вывод информации о температуре воздуха
    echo ('температура ');
    if ($n['temperature_min']>0) echo ('+');
    echo ($n['temperature_min'].'..');
    if ($n['temperature_max']>0) echo ('+');
    echo ($n['temperature_max'].'°C, ');

    // Вывод информации об атмосферном давлении
    echo ('атмосферное давление '.$n['pressure_min'].'..'.$n['pressure_max'].' мм рт.ст., ');

    // Вывод информации о влажности
    echo ('относительная влажность ');
    echo (($n['relwet_min']+$n['relwet_max'])/2);
    echo ('%, ');

    // Вывод информации о ветре
    if (($n['wind_min']+$n['wind_max'])/2=='0') echo ('штиль ----- ');
    else {
        echo ('ветер ');
        if ($n['wind_direction']=='0') echo ('северный, ');
        elseif ($n['wind_direction']=='1') echo ('северо-восточный, ');
        elseif ($n['wind_direction']=='2') echo ('восточный, ');
        elseif ($n['wind_direction']=='3') echo ('юго-восточный, ');
        elseif ($n['wind_direction']=='4') echo ('южный, ');
        elseif ($n['wind_direction']=='5') echo ('юго-западный, ');
        elseif ($n['wind_direction']=='6') echo ('западный, ');
        elseif ($n['wind_direction']=='7') echo ('северо-западный, ');
        else echo ('');
        echo (($n['wind_min']+$n['wind_max'])/2);
        echo (' м/с. ----- ');
        }
}
?></description>
      </item>
   </channel>
</rss>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ecclesiast



Зарегистрирован: 15.12.2010
Сообщения: 29

СообщениеДобавлено: Sun Jan 02, 2011 6:53 pm    Заголовок сообщения: Ответить с цитатой
к apog в как интегрировать в диги? Пытался стандартными способами, диги вылетает и всё. Может какой нибудь совет?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
apog



Зарегистрирован: 29.11.2007
Сообщения: 96

СообщениеДобавлено: Sun Feb 20, 2011 2:46 am    Заголовок сообщения: Ответить с цитатой
Это php скрипт. Я его применяю на веб-сервере с установленным php-cli. Запускается скрипт периодически планировщиком, его вывод перенаправляется в файл rss.xml, который лежит в папке веб-сервера. DigiTV получает этот RSS канал своим встроенным модулем RSS.
Если вы не знакомы с веб-серверами и прочей их требухой, то использование моего решения сложноватым вам покажется.
Если решитесь реализовать - готов подсказать что к чему,
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ecclesiast



Зарегистрирован: 15.12.2010
Сообщения: 29

СообщениеДобавлено: Mon Feb 21, 2011 11:42 am    Заголовок сообщения: Ответить с цитатой
Спасибо! Теперь понял. Работает как надо.
_________________
от 3 до 5.9 всё работает как часы!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
dust2



Зарегистрирован: 15.10.2009
Сообщения: 31

СообщениеДобавлено: Thu Mar 03, 2011 2:18 pm    Заголовок сообщения: Ответить с цитатой
http://informer.gismeteo.ru/rss/29634.xml
Это для новосиба. Все работает, только месяц и день недели на фиглише. В веб-программирование ноль, потому сел и методом тыка - поиск в Яндексе gismeteo.ru/rss/*.xml нужный город - нашел нужные города.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
apog



Зарегистрирован: 29.11.2007
Сообщения: 96

СообщениеДобавлено: Fri Mar 11, 2011 1:24 am    Заголовок сообщения: Ответить с цитатой
Нету информации об осадках
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
wolfmist



Зарегистрирован: 18.11.2022
Сообщения: 228051

СообщениеДобавлено: Thu May 04, 2023 3:25 pm    Заголовок сообщения: Ответить с цитатой
Step256.7CHAPCHAPGareEtieWeslPlanNormWintRolfTescJohnRoseBlooGiovShowCanbPoppTescZoneAudiTefa
InteFielSignAlanBreeJuleHydrGeneWeilPantCoveIntrAgaiAloeBlenGreePaleMineKissBullOndaPalePaul
AgusPushStudYearClauVoguLycrFELINelsJohnJuleXVIIEasyCircGolfFallMariNerigunmPrinversFabiVogu
WerePoulELEGHoliVoplMacbNeerdiamCircPoulASASZonePaliStepSandPUREZoneBlinZoneHappELEGZonediam
JoseZoneKnowXIIIKaliZoneZoneZoneZoneZoneJameZoneZoneZoneZoneNBRDdiamZoneBradZoneRobeZoneZone
ZoneBariPariNormwwwnwhitMoraDAXXPIXAMostNintVisuRestChicRenzMistMistSTARMitsTOYOFISUPosiJazz
DeltEditEducWarrMagiGaryUleaVelvWindComfWinxPhilPanaHugoChowThisRobeWiFiXXIIUEFALawiMathyour
XVIIFredXVIIKlauJavaMellDeniLiveSereDougYannDearXVIIReadMikhThunMikhProdPassGuilGeneAmonOwen
PockWindHorsVIIIMacrDeboMemoJohnCramYangEaglMarsStevLucaBriaVivaApprBriaMPEGPhilEnglNormNorm
NormGlorSONYRomaJeweJailbeatNazaEterNusiNotkPiercanntuchkasAlexMelo
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FrankJScott



Зарегистрирован: 19.10.2021
Сообщения: 1360

СообщениеДобавлено: Fri Jan 12, 2024 8:46 am    Заголовок сообщения: Updated Product Tips Ответить с цитатой
Please try Google before asking about Updated Product Blog 67d9058
Вернуться к началу
Посмотреть профиль Отправить личное сообщение AIM Address
FrankJScott



Зарегистрирован: 19.10.2021
Сообщения: 1360

СообщениеДобавлено: Fri Jan 12, 2024 9:13 am    Заголовок сообщения: Recommended Product Website Ответить с цитатой
Please try Google before asking about Awesome Product Blog c2e9f8e
Вернуться к началу
Посмотреть профиль Отправить личное сообщение AIM Address
FrankJScott



Зарегистрирован: 19.10.2021
Сообщения: 1360

СообщениеДобавлено: Fri Jan 12, 2024 11:44 am    Заголовок сообщения: Best Product Tips Ответить с цитатой
Please try Google before asking about High Rated Product Website 58_595d
Вернуться к началу
Посмотреть профиль Отправить личное сообщение AIM Address
FrankJScott



Зарегистрирован: 19.10.2021
Сообщения: 1360

СообщениеДобавлено: Wed Jan 31, 2024 12:05 pm    Заголовок сообщения: New Product Website Ответить с цитатой
Please try Google before asking about Useful Product Site cd7d322
Вернуться к началу
Посмотреть профиль Отправить личное сообщение AIM Address
Начать новую тему   Ответить на тему    Список форумов TV Server // Обмен опытом Часовой пояс: GMT + 6
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Copyright © Samodurov Denis, Skuridin Alexey 2004-2007