Искать  
 
   
1 из 2
1
Импорт погода на сайт
Отправлено: 20 Январь 2008 11:44 A.M.   [ Игнорировать ]
Member
RankRankRank
Всего сообщений:  192
Зарегистрирован  2008-01-02

Вот нашел у difour код граббинга

<?

# урл, с которого будут браться данные
$source file_get_contents('http://pda.weather.yandex.ru/index.xml?city_id=27346');

# если нет данных (сайты упал...), то продолжать не надо
if (!$source) die();

/**
 * по шаблону получаем наши данные в массив
 * $match[0] - будет садержать полное совпадение
 * $match[1] - только (.*?) из $source
 * \s+ - это новая строка или пробела, табы
 */
if (preg_match('|</span></td></tr>\s+</table>\s+<div>(.*?)</div>\s+</td>\s+</tr></table>|is'$source$match))
{
    
/**
     * мы должны добавить <div> в самом
     * начале и конце, чтоб получить "более"
     * правильный и валидный код
     */
    
    
$match[1] '<div>'.$match[1].'</div>';
    
    
/**
     * Чтоб сильно не нагружать Yandex
     * и свой хостинг, для получения быстрых
     * результатов
     * мы будем кешировать запросы к нему
     * и обращаться к этому скрипту только
     * через крон, пару раз в день
     */
    
    
if (file_exists('weather.html'))
    
{
        unlink(
'weather.html');
    
}
    
    
# сохраняем все в файл
    
file_put_contents('weather.html'$match[1]);
}

?> 

только как этим воспользоваться? Не хочется юзать информеры

Профиль
 
 
Отправлено: 20 Январь 2008 12:03 P.M.   [ Игнорировать ]   [ # 1 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

1. там есть очень хороший коммент и линк
2. а  что-то не работает?
скрипт
результат

 Подпись 

booooring…

Профиль
 
 
Отправлено: 20 Январь 2008 12:11 P.M.   [ Игнорировать ]   [ # 2 ]
Member
RankRankRank
Всего сообщений:  192
Зарегистрирован  2008-01-02

я хочу на главной сайта чтобы отображалось, как прикрутить на главную страницу?
так вставлять?

<iframe src="weather.html" frameborder="0"></iframe
Профиль
 
 
Отправлено: 20 Январь 2008 12:42 P.M.   [ Игнорировать ]   [ # 3 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

ну можно так, можно с помощью php функционала.

 Подпись 

booooring…

Профиль
 
 
Отправлено: 20 Январь 2008 12:45 P.M.   [ Игнорировать ]   [ # 4 ]
Member
RankRankRank
Всего сообщений:  192
Зарегистрирован  2008-01-02

можно ли это сделать плагином для ЕЕ?
А в шаблоне выводить примерно так {weather}

Профиль
 
 
Отправлено: 20 Январь 2008 01:13 P.M.   [ Игнорировать ]   [ # 5 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

только вставка будет как {exp:weather}

<?php


$plugin_info 
= array(
            
'pi_name'     => 'weather',
            
'pi_version'      => '1.0',
            
'pi_author'     => 'eeclub',
            
'pi_author_url'   => '',
            
'pi_description'    => 'weather',
            
'pi_usage'      => weather::usage()
          );


class 
weather {

    
var $return_data;

    
    
/** ----------------------------------------
    /** Weather  
    /** ----------------------------------------*/

    
function weather()
    
{
        
global $TMPL$FNS;
        
$source file_get_contents('http://pda.weather.yandex.ru/index.xml?city_id=26422');
        if (!
$source) die();
        if (
preg_match('|</span></td></tr>\s+</table>\s+<div>(.*?)</div>\s+</td>\s+</tr></table>|is'$source$match))
         
{
          $match[1] 
'<div>'.$match[1].'</div>';
          
$this->return_data=$match[1]
        
}
    }
    
/* END */
    
// ----------------------------------------
//  Plugin Usage
// ----------------------------------------

// This function describes how the plugin is used.
//  Make sure and use output buffering

function usage()
{
ob_start
(); 
?>
{exp
:weather}
<?php
$buffer 
ob_get_contents();
  
ob_end_clean(); 

return 
$buffer;
}
/* END */


}
// END CLASS
?> 

p.s. вторая ссылка в каком смысле лучше - это если организовывать постоянно обновление, т.к. так же можно на основе плагина XML разбора написать свой плагин, который будет формировать данные как угодно.

P.p.s. можно прописать в плагин, что бы имя файла передавалось как параметр, или что бы прямо из него производился граб yandex’a :

 Подпись 

booooring…

Профиль
 
 
Отправлено: 21 Январь 2008 07:33 P.M.   [ Игнорировать ]   [ # 6 ]
Member
RankRankRank
Всего сообщений:  158
Зарегистрирован  2008-01-21

Хотелось бы еще реализовать импорт курсов валют с http://rbk.ru с запоминанием курсов по датам (в базе) и последующей возможностью открыть график изменения курса.

Профиль
 
 
Отправлено: 22 Январь 2008 03:05 P.M.   [ Игнорировать ]   [ # 7 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

В принципе это тоже простосто http://pda.rbc.ru/quotes.shtml - разбираем данную страницу с помощью техже регов, и пишем в базу. Все. Легче выполнить в виде модуля, который можно будет вызывать мануально или по крону.

 Подпись 

booooring…

Профиль
 
 
Отправлено: 22 Январь 2008 03:08 P.M.   [ Игнорировать ]   [ # 8 ]
Member
RankRankRank
Всего сообщений:  158
Зарегистрирован  2008-01-21

Если бы я еще умела программировать на php…. Крон лучше. Мануально - забудешь.

Профиль
 
 
Отправлено: 27 Январь 2008 01:06 A.M.   [ Игнорировать ]   [ # 9 ]
Member
RankRankRank
Всего сообщений:  192
Зарегистрирован  2008-01-02

работает, только картинки не хочет отображать,
путь картинки делает http://ваш сайт/i/n10.gif

Профиль
 
 
Отправлено: 27 Январь 2008 03:46 A.M.   [ Игнорировать ]   [ # 10 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

вот еще один вариант:
урлы картинок линкуются в папку images
скрипт можно вызывать как
{exp:weather city=”кодгорода”}

если просто {exp:weather} - по умолчани стоит MSK

<?php


$plugin_info 
= array(
            
'pi_name'     => 'weather',
            
'pi_version'      => '1.0',
            
'pi_author'     => 'eeclub',
            
'pi_author_url'   => '',
            
'pi_description'    => 'weather',
            
'pi_usage'      => weather::usage()
          );


class 
weather {

    
var $return_data;

    
    
/** ----------------------------------------
    /** Weather  
    /** ----------------------------------------*/

    
function weather()
    
{
        
global $TMPL,$PREFS;
        
        
$city = (!$TMPL->fetch_param('city')) ? '27612' $TMPL->fetch_param('city');     
        
$url'http://pda.weather.yandex.ru/index.xml?city_id='.$city
        
$source file_get_contents($url);
        if (!
$source) die();
        if (
preg_match('|</a></div></td>\s+</tr></table>\s+<div>(.*?)</div>\s+</td>\s+</tr></table>|is'$source$match))
         
{
          $match[1] 
'<div>'.$match[1].'</div>';
          
$match[1] str_replace('src="/i/','src="'.$PREFS->ini('site_url').'images/'$match[1]);
          
$this->return_data=$match[1]
        
}
    }
    
/* END */
    
// ----------------------------------------
//  Plugin Usage
// ----------------------------------------

// This function describes how the plugin is used.
//  Make sure and use output buffering

function usage()
{
ob_start
(); 
?>
{exp
:weather}
or
{exp:weather city="citycode"}

<?php
$buffer 
ob_get_contents();
  
ob_end_clean(); 

return 
$buffer;
}
/* END */


}
// END CLASS
?> 

p.s. позже, если будет время, сделаю более “правильный” вывод данный.

 Подпись 

booooring…

Профиль
 
 
Отправлено: 27 Январь 2008 11:32 A.M.   [ Игнорировать ]   [ # 11 ]
Member
RankRankRank
Всего сообщений:  192
Зарегистрирован  2008-01-02

Работает!!! Очень удобно что можно код города вставлять.
Но картинки так и не хотят отображаться.

на 1 погода на яндексе
на 2 рисунке работа плагина

странно что “днем” картинка хочет, но не может smile
а “ночью” ее что то нет вообще

Приложения с изображениями
weather1.gifweather2.gif
Профиль
 
 
Отправлено: 27 Январь 2008 12:20 P.M.   [ Игнорировать ]   [ # 12 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

Kristian Sysiko мне будет более полезно итоговый код блока который выводится. Какой адрес у картинки получается?

 Подпись 

booooring…

Профиль
 
 
Отправлено: 27 Январь 2008 12:32 P.M.   [ Игнорировать ]   [ # 13 ]
Member
RankRankRank
Всего сообщений:  192
Зарегистрирован  2008-01-02

адрес у картинки получается:
http://сайт/images/13.gif
images права стоят 777
я вставил через {exp:weather city=”кодгорода”}

Профиль
 
 
Отправлено: 27 Январь 2008 01:23 P.M.   [ Игнорировать ]   [ # 14 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

Kristian, может быть глупый вопрос, а у тебя там вообще картинки лежат??
http://www.eeclub.ws/tmp/weather.rar

 Подпись 

booooring…

Профиль
 
 
Отправлено: 27 Январь 2008 02:56 P.M.   [ Игнорировать ]   [ # 15 ]
Member
RankRankRank
Всего сообщений:  192
Зарегистрирован  2008-01-02

тормознул, я думал картинки будут импортироваться.
Скачал твой архив. Теперь у меня супер.

Профиль
 
 
   
1 из 2
1