<? error_reporting(E_NONE); /* скрипт возвращает список адресов, которые необходимо поставить после часовой отбивки. Адреса хранятся в MySQL-таблице: DROP TABLE IF EXISTS `local`.`timer`; CREATE TABLE `local`.`timer` ( `time` int(10) unsigned NOT NULL default '0', `name` varchar(512) NOT NULL, `day` varchar(3) NOT NULL default '0', `id` int(10) unsigned NOT NULL auto_increment, `type` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; поле time: порядковый номер часа (1-24), в который необходимо поставить файл поле name: адрес файла (url или локальный) поле day: трехбуквенное обозначения дня недели, в который ставить файл (или ALL, если каждый день) поле id: номер записи :) поле type: тип файла (0 - звуковой файл, 1 - rss-файл подкаста) */ mysql_connect('host', 'user', 'pass'); mysql_select_db('database'); $day = date('D'); $time = date('G')+1; $query = "SELECT * FROM `timer` WHERE (`time` = '$time' OR `time` = 0) AND (`day` = '$day' or `day` = 'ALL')"; $res = mysql_query($query) or die(mysql_error()); $ret = ''; while ($ln = mysql_fetch_array($res)) { if ($ln['type'] == 1) { $i = 0; $rss = simplexml_load_file($ln['name']); $urls = $rss->xpath('//enclosure'); $addr = (is_array($urls[$i]['url'])) ? $urls[$i++]['url'][0] : $urls[$i]['url']; $i++; while(($i < count($urls)) && (($url = checkUrl("$addr")) === false)) { $addr = (is_array($urls[$i]['url'])) ? $urls[$i++]['url'][0] : $urls[$i]['url']; $i++; }; if ($url) { if ($ret) $ret .= "\r\n".$url; else $ret = $url; } } else { if ($ln['name']) { if ($ret) $ret .= "\r\n".$ln['name']; else $ret = $ln['name']; } } } function checkUrl($url) { if (stristr($url, '.mp3?')) $adr = array_shift(explode('.mp3?', $url)).'.mp3'; elseif(is_array($url)) $adr = $url[0]; else $adr = $url; $headers = get_headers($adr, 1); if (@isset($headers['Location'])) { return checkUrl($headers['Location']); } if (@isset($headers['Content-Length']) && ($headers['Content-Length'] == 0)) return false; if (@isset($headers['Content-Type']) && (!strstr($headers['Content-Type'], 'audio'))) return false; return $adr; } echo $ret; ?>