Писал как говорится на коленке, но работает.
Может кто и оптимизирует код
Пасер работает с временными зонами, из нужно указать в перемененной $gmt
Список временных зон:
Спойлер (Отобразить)
Собственно сам код:
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- header('Content-Type: text/html; charset=utf-8');
- //Jumi
- $jumi = "";
- //По умолчанию кажем первый канал
- if ($_GET['ch']){$chanel = $_GET['ch'];} else {$chanel = '244';}
- //Смещение по времени
- $gmt = "120";
- //Список каналов
- $chanels_ID = array(
- '244' => 'Первый',
- '247' => 'Россия 1',
- '273' => 'ТВ Центр - Урал',
- '1139' => 'НТВ',
- '266' => 'Культура',
- '235' => 'Россия 2',
- '566' => '5 канал',
- '715' => 'РЕН ТВ',
- '1394' => 'СТС',
- '1401' => 'ТНТ',
- '1408' => 'Семёрка (7ТВ)',
- '1409' => 'ТВ3',
- '1422' => 'ЗВЕЗДА',
- '1447' => 'ДОМАШНИЙ',
- '676' => 'Россия 24',
- '276' => '2x2',
- '1263' => 'MTV',
- '108' => 'МУЗ',
- '1449' => 'ПЕРЕЦ',
- '692' => '24 Техно',
- '646' => '3 канал +',
- '556' => '365',
- '258' => 'AB Moteurs',
- '277' => 'Ajara TV',
- '227' => 'Amazing Life',
- '214' => 'Animal Planet',
- '697' => 'AXN Sci-Fi',
- '219' => 'BBC World',
- '220' => 'Bloomberg',
- '211' => 'Cartoon Network',
- '221' => 'CNN',
- '651' => 'Deutsche Welle',
- '226' => 'Discovery Channel',
- '224' => 'Discovery Science',
- '223' => 'Discovery World',
- '295' => 'ESPN classic',
- '208' => 'EuroNews',
- '376' => 'Eurosport 2',
- '259' => 'Extreme Sports',
- '228' => 'Fashion TV',
- '568' => 'HD Life',
- '629' => 'HD Спорт',
- '683' => 'Luxe HD',
- '229' => 'Mezzo',
- '294' => 'MGM',
- '284' => 'National Geographic',
- '218' => 'Nickelodeon',
- '636' => 'Ocean TV',
- '549' => 'Private Spice (для взрослых)',
- '230' => 'Reality',
- '681' => 'SyFy',
- '233' => 'ТСМ',
- '501' => 'TV club',
- '288' => 'TV1000',
- '552' => 'TV1000 Русское кино',
- '289' => 'TV21',
- '231' => 'TV5',
- '698' => 'Universal Channel',
- '324' => 'Viasat Explorer',
- '325' => 'Viasat History',
- '685' => 'World Fashion Channel',
- '213' => 'Zone Romantica',
- '553' => 'Авто Плюс',
- '554' => 'Боец',
- '621' => 'Время',
- '696' => 'Детский',
- '216' => 'Детский мир',
- '623' => 'Дом кино',
- '663' => 'Зоо ТВ',
- '659' => 'Иллюзион +',
- '541' => 'Индия',
- '584' => 'Интересное ТВ',
- '212' => 'Канал Disney',
- '201' => 'Киноклуб',
- '666' => 'Кинопоказ',
- '448' => 'Киносоюз',
- '298' => 'Кинохит',
- '291' => 'Комедия ТВ',
- '585' => 'Кухня ТВ',
- '557' => 'Ля-Минор',
- '655' => 'Мать и дитя',
- '558' => 'Много ТВ',
- '550' => 'Моя Планета',
- '622' => 'Музыка Первого',
- '631' => 'Настоящее Смешное Телевидение',
- '650' => 'Настоящее Страшное Телевидение',
- '202' => 'Наше кино',
- '447' => 'Наше Новое Кино',
- '630' => 'Ностальгия',
- '369' => 'О2ТВ',
- '530' => 'Охота и рыбалка',
- '203' => 'Премьера',
- '595' => 'Радость Моя',
- '326' => 'РБК',
- '658' => 'Русский Иллюзион',
- '540' => 'Русский Экстрим',
- '657' => 'Сарафан',
- '222' => 'Спас ТВ',
- '940' => 'Спорт 1',
- '887' => 'Страна',
- '586' => 'ТВ Бульвар',
- '620' => 'Телекафе',
- '292' => 'Телеклуб',
- '662' => 'Телепутешествия',
- '665' => 'Тин ТВ',
- '563' => 'ТНВ',
- '432' => 'Усадьба',
- '682' => 'Феникс+ Кино',
- '677' => 'Эксперт-ТВ',
- '945' => '24 ДОК',
- '949' => 'BBC',
- '950' => 'BBC Entertainment',
- '951' => 'BizTV',
- '952' => 'Blue Hustler',
- '953' => 'C Music TV',
- '954' => 'CNBC',
- '955' => 'Da Vinci',
- '956' => 'Daring!TV',
- '958' => 'English Club TV',
- '959' => 'Fine Living Network',
- '960' => 'Fox Crime',
- '961' => 'Fox Life',
- '962' => 'France 24',
- '963' => 'Gulli',
- '964' => 'HD Медиа',
- '968' => 'Первый метео',
- '969' => 'ЧП.Info',
- '980' => 'Домашние животные',
- '981' => 'Еврокино',
- '985' => 'High Life',
- '986' => 'Investigation Discovery',
- '987' => 'JimJam',
- '989' => 'KidsCo',
- '990' => 'Киномания',
- '991' => 'Комеди ТВ',
- '993' => 'Кинопоказ HD-1',
- '994' => 'Кинопоказ HD-2',
- '996' => 'Luxe.TV',
- '997' => 'Man TV',
- '998' => 'MCM POP',
- '999' => 'MCM TOP',
- '1000' => 'Mezzo Live HD',
- '1001' => 'Мир сериала',
- '1003' => 'MusicBox RU',
- '1004' => 'MusicBox TV',
- '1005' => 'Мужской',
- '1008' => 'myZen.tv',
- '1009' => 'Viasat Nature CEE',
- '1010' => 'Недвижимость',
- '1011' => 'NewsOne',
- '1013' => 'Nat Geo WILD',
- '1014' => 'Футбол',
- '1015' => 'Hustler TV Europe',
- '1016' => 'Мультимания',
- '1017' => 'Кино плюс',
- '1021' => 'Охотник и Рыболов',
- '1022' => 'Открытый Мир',
- '1023' => 'Парк развлечений',
- '1024' => 'Playboy TV',
- '1026' => 'Propoker',
- '1028' => 'Психология 21',
- '1029' => 'Дождь',
- '1030' => 'Russian Travel Guide',
- '1035' => 'Rusong TV',
- '1036' => 'Russia Today',
- '1057' => 'Style TV',
- '1058' => 'Телепутешествия HD',
- '1059' => 'Top Shop TV',
- '1060' => 'ТурИнфо',
- '1061' => 'TV1000 Action',
- '1063' => 'Успех',
- '1064' => 'VH1 Classic',
- '1065' => 'VH1 European',
- '1066' => 'Viasat_Sport',
- '1068' => 'Война и мир',
- '1069' => 'Вопросы и ответы',
- '1070' => 'Всегда с тобой',
- '1071' => 'Оружие',
- '1072' => 'Wedding TV',
- '1073' => 'Кто есть кто',
- '1074' => 'Женский мир',
- '1075' => 'World Music Channel',
- '1076' => 'XXL',
- '1077' => 'Загородный',
- '1078' => 'Загородная жизнь',
- '1080' => 'Zee-TV',
- '1083' => 'Тонус-ТВ',
- '1093' => 'РТВ - Любимое кино',
- '1094' => 'РТВ - Наше кино',
- '1128' => 'Совершенно секретно',
- '1134' => 'TV Sale',
- '1150' => 'TDK',
- '1151' => 'TiJi',
- '1160' => 'ТВ АРМ РУ',
- '1177' => 'MTV Dance',
- '1178' => 'MTV Hits',
- '1179' => 'MTV Rocks',
- '1216' => 'TLC',
- '332' => 'Первый образовательный',
- '290' => 'Ru.TV',
- '660' => 'Юмор BOX',
- '1285' => 'Fashion TV HD',
- '1286' => 'Nat Geo Wild HD',
- '1287' => 'National Geographic HD',
- '503' => 'A-ONE',
- '984' => 'Раз ТВ',
- '1299' => 'Дискотека ТВ',
- '1027' => 'Pro все',
- '1354' => 'Спорт 2',
- '293' => 'Travel Channel',
- '1081' => 'Zooпарк',
- '528' => 'Драйв',
- '529' => 'Здоровое ТВ',
- '329' => 'Ретро',
- '661' => 'BRIDGE TV',
- '206' => 'Eurosport',
- '1019' => 'КХЛ',
- '1025' => 'Pro Dеньги',
- '1170' => 'ТРО',
- '560' => 'МИР',
- '672' => 'ЖИВИ!',
- '215' => 'DIVA Universal',
- '555' => 'Русская ночь',
- '1037' => 'Шансон-TB',
- '1482' => 'ТВСАМ',
- '1161' => 'Знание',
- '1493' => 'Outdoor Channel',
- '400' => 'Союз',
- '204' => 'НТВ-ПЛЮС Спорт Плюс',
- '504' => 'НТВ-ПЛЮС Наш футбол',
- '1018' => 'НТВ-ПЛЮС Спорт',
- '205' => 'НТВ-ПЛЮС Футбол',
- '207' => 'НТВ-ПЛЮС Спорт Онлайн',
- '632' => 'НТВ-ПЛЮС Баскетбол',
- '455' => 'НТВ-ПЛЮС Теннис',
- '689' => 'SONY ТВ',
- '946' => '8 Канал',
- '1615' => 'Shopping Live',
- '1641' => 'Ночной клуб'
- );
- $select = '
- <form name="setupzone" action="" method="GET"/>
- <select size="1" name="ch" onchange="this.form.submit()">'."\r\n";
- foreach($chanels_ID as $key => $value){
- $selected = "".($key==$chanel)?" selected":""."";
- $select .= "\t".'<option '.$selected.' value="'.$key.'">' . $value.'</option>'."\r\n";
- }
- $select .= '
- </select>
- <noscript><input type="submit" value="Submit"></noscript>
- </form>';
- //Определяем понедельник текущего месяца
- $today = date('w');
- //Массив дней
- $days = array(
- '0'=>'<span style="color:#FF0000;">Вс</span>',
- '1'=>'<span style="color:#000000;">Пн</span>',
- '2'=>'<span style="color:#000000;">Вт</span>',
- '3'=>'<span style="color:#000000;">Ср</span>',
- '4'=>'<span style="color:#000000;">Чт</span>',
- '5'=>'<span style="color:#000000;">Пт</span>',
- '6'=>'<span style="color:#FF0000;">Сб</span>');
- for($time=$mon; $time<=$mon+518400; $time+=86400){
- $day = date('w', $time);
- $ofsetdays = date('Y-m-d',$time);
- $sele = "".($ofsetdays!=$_GET['day'])?"class=actlink":""."class=cureitlink";
- //Ввывод ссылок на дни недели
- $dates[] = "<a ".$sele." href=\"".$jumi."?day=".$ofsetdays."&dt=".$_GET['dt']."&ch=".$chanel."\"> ".$days[$day]." </a>";
- }
- $date = $_GET['day'];
- ///////////////////////////////////////////////////////////////////////////////////////
- //Парсер контента
- ///////////////////////////////////////////////////////////////////////////////////////
- // Кодируем в UTF, Удалаям все лишние пробелы переносы и табы
- $url = iconv("cp1251", "UTF-8//TRANSLIT",str_replace( array( "\n", "\r", "\t" ), "", file_get_contents("http://tv.mail.ru/print_p.html?date=".$date."&zone=".$gmt."&period=3&channel=".$chanel."")));
- $text = "/<!-- content -->(.*?)<!-- \/content -->/";
- preg_match_all($text,$url,$res);
- $content_parser = $res[1][0];
- /*Получаем заголовок -(Телевизионная программа на 28 декабря, среда)*/
- preg_match("/<h2 class=mb10>(.*?)<\/h2>/i", $content_parser, $title);
- $title = $title[1];
- //Название канала
- preg_match("/<h2 class=chna>(.*?)<\/h2>/i",$content_parser,$chna);
- $chna = $chna[1];
- //Постер канала
- preg_match_all("/src=\"(.*?)\/(.*?)\/(.*?)\"/", $content_parser, $image);
- $image = "chimg/".$image[3][0];
- //Закачиваем картинки
- $person = file_get_contents("http://tv.mail.ru/pic/channel/$image");
- file_put_contents("chimg/".$image, $person, LOCK_EX);
- //Контент
- $content = strip_tags(preg_replace (array("/<h2 class=mb10>(.*?)<\/h2>/","/<img[^>]+\>/i","/<h2 class=chna>(.*?)<\/h2>/i"),array("", "",""),$content_parser),"<table><tr><td>");
- ?>
- <style>
- a.actlink span{
- background-color:#bab5b5;
- padding:5px;
- -moz-border-radius-topleft: 3px;
- -moz-border-radius-topright: 3px;
- -moz-border-radius-bottomright: 0px;
- -moz-border-radius-bottomleft: 0px;
- -webkit-border-radius: 3px 3px 0px 0px;
- border-radius: 3px 3px 0px 0px;
- }
- a.actlink span:hover{
- background-color:#d6d4d4;
- color:bab5b5;
- }
- .titleCh{
- color:#fff;
- background-color:#a72496;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- text-align: center;
- padding:5px;
- }
- .titleCh2
- {background-color:#009bdb;
- padding:5px;
- }
- a.cureitlink span{
- background-color:#a0bbc7;
- padding:5px;
- -moz-border-radius-topleft: 3px;
- -moz-border-radius-topright: 3px;
- -moz-border-radius-bottomright: 0px;
- -moz-border-radius-bottomleft: 0px;
- -webkit-border-radius: 3px 3px 0px 0px;
- border-radius: 3px 3px 0px 0px;
- }
- td.time{
- padding-right:5px;
- color:black;;
- }
- </style>
- <!-- Вывод данных CONVEX.RU -->
- <table border="0" cellspacing="2" cellpadding="2" style="width: 99%;">
- <tbody>
- <tr>
- <td align="right" valign="top" style="width: 200px;"><h2 class="titleCh"><?php echo $chna;?></h2></td>
- <td align="center" valign="top"> <h3 class="titleCh titleCh2"><?php echo $title;?></h3></td>
- <td align="left" style="width: 250px;" valign="top"><?php echo implode (" " ,$dates); ?><br><?php echo $select; ?></td>
- </tr>
- <tr>
- <td align="left" valign="top"><img src="<?php echo $image;?>" width="48" height="48" alt="happy" class="kartinka" style="float: right;" /></td>
- <td align="left" valign="top" colspan="2">
- <?php echo $content;?>
- </td>
- </tr>
- </tbody>
- </table>
- <!-- Конец вывода данных CONVEX.RU -->