Гость
Покинул форум
Сообщений всего: 105
Дата рег-ции: Нояб. 2011
Помог: 3 раз(а)
|
Создавал ранее тему в вопросах для новичков, вот решил сам написать парсер ТВ програм на неделю, на все федеральные и спутниковые каналы.
Писал как говорится на коленке, но работает.
Может кто и оптимизирует код
Пасер работает с временными зонами, из нужно указать в перемененной $gmt
Список временных зон:
Спойлер (Отобразить)Центральный
4 = (МСК 0:00)Иваново
5 = (МСК 0:00)Москва
73 = (МСК 0:00)Воронеж
83 = (МСК 0:00)Смоленск
86 = (МСК 0:00)Ярославль
88 = (МСК 0:00)Калуга
89 = (МСК 0:00)Тамбов
90 = (МСК 0:00)Тверь
92 = (МСК 0:00)Рязань
94 = (МСК 0:00)Брянск
98 = (МСК 0:00)Курск
102 = (МСК 0:00)Владимир
103 = (МСК 0:00)Липецк
104 = (МСК 0:00)Тула
111 = (МСК 0:00)Белгород
112 = (МСК 0:00)Кострома
115 = (МСК 0:00)Орел
129 = (МСК 0:00)Борисоглебск
188 = (МСК 0:00)Новомосковск
189 = (МСК 0:00)Обнинск
Северо-Западный
7 = (МСК 0:00)Сыктывкар, Нарьян-Мар
8 = (МСК -1:00)Калининград
9 = (МСК 0:00)Санкт-Петербург
85 = (МСК 0:00)Мурманск
91 = (МСК 0:00)Вологда
125 = (МСК 0:00)Псков
181 = (МСК 0:00)Великий Новгород
183 = (МСК 0:00)Архангельск
184 = (МСК 0:00)Петрозаводск
193 = (МСК 0:00)Череповец
Южный
61 = (МСК 0:00)Владикавказ, Нальчик, Майкоп, Назрань, Элиста
64 = (МСК 0:00)Ростов-на-Дону
68 = (МСК 0:00)Волгоград
72 = (МСК 0:00)Краснодар
75 = (МСК 0:00)Ставрополь
84 = (МСК 0:00)Астрахань
107 = (МСК 0:00)Сочи
108 = (МСК 0:00)Новочеркасск
122 = (МСК 0:00)Армавир
182 = (МСК 0:00)Махачкала
186 = (МСК 0:00)Грозный
194 = (МСК 0:00)Черкесск
Приволжский
12 = (МСК 0:00)Саранск
13 = (МСК 0:00)Ижевск
14 = (МСК 2:00)Кудымкар
65 = (МСК 0:00)Нижний Новгород
66 = (МСК 0:00)Казань
70 = (МСК 0:00)Самара
71 = (МСК 2:00)Пермь
77 = (МСК 0:00)Саратов
79 = (МСК 2:00)Уфа
93 = (МСК 0:00)Новокуйбышевск
96 = (МСК 0:00)Пенза
109 = (МСК 2:00)Оренбург
118 = (МСК 0:00)Чебоксары
124 = (МСК 0:00)Киров
128 = (МСК 0:00)Балаково
185 = (МСК 0:00)Ульяновск
187 = (МСК 0:00)Йошкар-Ола
Уральский
60 = (МСК 2:00)Ханты-Мансийск
74 = (МСК 2:00)Екатеринбург
76 = (МСК 2:00)Тюмень
80 = (МСК 2:00)Челябинск
87 = (МСК 2:00)Нижневартовск
116 = (МСК 2:00)Курган
119 = (МСК 2:00)Салехард
120 = (МСК 2:00)Нижний Тагил
190 = (МСК 2:00)Сургут
Сибирский
17 = (МСК 3:00)Омск
18 = (МСК 3:00)Томск
19 = (МСК 4:00)Кызыл, Дудинка, Тура
20 = (МСК 5:00)Улан-Удэ
21 = (МСК 6:00)Чита
69 = (МСК 4:00)Красноярск
78 = (МСК 5:00)Иркутск
81 = (МСК 3:00)Горно-Алтайск
82 = (МСК 3:00)Новосибирск
105 = (МСК 3:00)Барнаул
106 = (МСК 3:00)Кемерово
113 = (МСК 4:00)Норильск
114 = (МСК 4:00)Абакан
117 = (МСК 5:00)Усть-Ордынский
121 = (МСК 6:00)Агинское
191 = (МСК 5:00)Тайшет
Дальневосточный
24 = (МСК 6:00)Благовещенск
25 = (МСК 7:00)Биробиджан
26 = (МСК 7:00)Южно-Сахалинск
27 = (МСК 8:00)Магадан
28 = (МСК 8:00)Петропавловск-Камчатский, Анадырь, Палана
67 = (МСК 7:00)Владивосток
95 = (МСК 7:00)Хабаровск
110 = (МСК 6:00)Якутск
192 = (МСК 7:00)Уссурийск
Украина
63 = (МСК -2:00)Киев
Беларусь
123 = (МСК -1:00)Минск
Казахстан
101 = (МСК 2:00)Алматы, Астана
Собственно сам код:
CODE ( htmlphp):
скопировать код в буфер обмена
<?PHP header('Content-Type: text/html; charset=utf-8'); //Jumi $jumi = ""; //По умолчанию кажем первый канал if ($_GET['ch']){$chanel = $_GET['ch'];} else {$chanel = '244';} //Смещение по времени $gmt = "120"; //Список каналов '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>'; //Определяем понедельник текущего месяца //Массив дней '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){ $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 -->/"; $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]; //Закачиваем картинки //Контент $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; } 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 -->
Все изображения качаются по умолчанию в папку chimg
ЗЫ - Ваши предложения по оптимизации, пример работы тут(Отредактировано автором: 28 Декабря, 2011 - 06:00:32)
|