Здравствуйте.
Описываю ситуацию:
Есть на YouTube канал одного пользователя, он где-то раз в пару недель выкладывает новое видео.
Постоянно ходить на Yotube и проверять лень.
Можно включить уведомления о приходе новых сообщений через e-mail, но данные сообщения приходят, в большинстве случаев, через час, а то и больше.
Решил написать скрипт, который будет проверять появилось ли новое видео на канале пользователя.
Если появилось - прислать мне смску.
Путем проб и ошибок выяснилось, что ссылка вида
https://gdata.youtube.com/feeds/users/Пользователь/uploads
отдает страничку с информацией о последних обновлениях пользователя. У каждого видео есть тег
<published>
с уникальной датой публикации, например
<published>2014-01-28T14:57:53.000Z</published>
.
Было решено проверять содержимое первого вхождения
<published>
, если значение отличается от ранее известного - появилось новое видео.
Итак, родился скрипт (написан ниже). После этого осталось придумать, как его запускать на выполнение. Есть свой маленький сайт, было принято решение залить скрипт туда и запустить через Cron, в панели управления хостингом. Работает.
А теперь нюанс: как только появится новое видео - скрипт будет слать постоянно смски, пока его не остановить, т.к. первое вхождение
<published>
уже будет отличаться, при повторном запуске скрипта.
Теперь вопрос: как реализовать остановку работы скрипта, после первого успешного выполнения(т.е. найдено новое видео).
Буду рад любой помощи.
<?php
function send_sms($to, $msg, $login, $password){
$u = 'http://www.websms.ru/http_in5.asp';
$ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'Http_username='.urlencode($login). '&Http_password='.urlencode($password). '&Phone_list='.$to.'&Message='.urlencode($msg));
curl_setopt($ch, CURLOPT_URL, $u);
$u = trim(curl_exec($ch));
curl_close($ch);
preg_match("/message_id\s*=\s*[0-9]+/i", $u, $arr_id );
$id = preg_replace("/message_id\s*=\s*/i", "", @strval($arr_id[0]) );
return $id;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11');
$url = 'https://gdata.youtube.com/feeds/users/USER/uploads'; //ссылка на канал
$find = '<published>2014-01-26T04:00:00.000Z</published>'; //время публикации последнего видео на канале пользователя
$mob = ''; //твой мобильный в формате +380123456789
$login = ''; //твой логин на сервисе отправки смс
$pass = '';//твой пароль на сервисе отправки смс
curl_setopt($ch, CURLOPT_URL, $url);
$page = curl_exec($ch);
$page = iconv('utf-8', 'windows-1251', $page);
if ($page != false){
$page = trim(substr($page, 0, 20000));
$pos = strpos($page, $find);
if ($pos == true) {
$msg = 'You have a new video!!!';
//send_sms($mob, $msg, $login, $pass);
}
}
else die;
curl_close($ch);
?>