Парсим демотивацию

Предыстория скрипта: в свободное время я люблю просматривать демотиваторы, но дальше первой страницы я не путешествую. Все бы ничего, но на странице содержится 60 демотиваторов, и отыскание новых становится неприятным и утомительным занятием. Подумав, я решил написать скрипт, которые будет просматривать главную страницу сайта с демотиваторами и, в случае появления новых, слать свежак мне на почту.

Для реализации мне понадобился phpmailer для php5, который лежит в папке со скриптом, папка cache с правами 777, в которую будет складываться кеш с информацией о старых демах. Скрипт запускает крон с периодичностью в 5 минут. В качестве почтового шлюза я использую smtp от google. Собственно, для облегчения работы с smtp я использую phpmailer.

Если вы пользователь windows или не знаете что такое cron, можно обойтись обыкновенной Оперой, поставив автообновление страницы скрипта.

    include('class.phpmailer.php');
    include('class.smtp.php');
   
    $mail             = new PHPMailer();

    $mail->IsSMTP();
    $mail->Host       = "mail.yourdomain.com";
    $mail->SMTPDebug  = 0;                 
   
    $mail->SMTPSecure = 'ssl';
    $mail->SMTPAuth   = true;              
    $mail->Host       = "smtp.gmail.com";
    $mail->Port       = 465;             
    $mail->Username   = "your.smtp.account@email.com";
    $mail->Password   = "password";      
    $mail->SetFrom('no-reply@yourdomain.com', 'demotivation daemon');
    $mail->Subject    = "Новые демотиваторы";

    $mail->AddAddress('your@email.com', "Chuck Norris");

    $cache = array();
   
    $cache_file = dirname(__FILE__).'/cache/demotivation.txt';

    if( is_file($cache_file) && $content = file_get_contents($cache_file) ) {
        if( $temp = unserialize($content) ) {
            $cache = $temp;
        }
    }
   
    if( sizeof($cache) > 1000 ) {
        $cache = array_slice($cache, 900);
    }
   
    $url = 'http://demotivation.me';
    $content = file_get_contents($url);
   
    preg_match_all("|<a href='([^>]*)'s+target='_blank'><img src='(.*)' border='1'>.+</a>|i", $content, $matches);
   
    $links = $matches[1];
    $images = $matches[2];
   
    $diff = array_diff($images, $cache);

    foreach( $diff as $key => $row ) {
        echo '<div><a href="'.$url.$links[$key].'"><img src="'.$url.$row.'" /></a></div>';
    }

    $cache = array_merge($cache, $images);
    $cache = array_unique($cache);
    file_put_contents($cache_file, serialize($cache));
   
    if( sizeof($diff) ) {
        $body = '';
        foreach( $diff as $key => $row ) {
            $body .= '<div><a href="'.$url.$links[$key].'"><img src="'.$url.$row.'" /></a></div>';
        }
       
        $mail->MsgHTML($body);
        if(!$mail->Send()) {
            echo "Mailer Error: " . $mail->ErrorInfo;
        } else {
            echo "Message sent!";
        }
        die();
    }

Интересное

Project Glass — Очки будущего от Google
Компания Google представила суперсовременные «очки дополненной реальности» или Project Glass. Впрочем,...
Отзыв о FirstVDS
При покупке хостинга у FirstVDS мне предложили скидку за годный отзыв в блоге или на форуме....
Git и Bitbucket
Git – это распределенная система контроля версий. Пожалуй, на этом теория заканчивается, так как...
Проверка сайта на вирусы
Если пользоваться привычной терминологией, то web вирусы не являются вирусами в традиционном...

Комментарии

    Чтобы оставлять комментарии, авторизируйтесь

    Войти через OpenID

    рейтинг0+-
    Популярные
    Точки входа
    Наверх