Jacek Kowalski
2016-02-12 6411a4f462fcd039ce4d233aaf28a5186b20eeea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
require_once('wp_parse.php');
 
echo STAR.'Pobieranie programu TV...';
$stations = array(
    1 => 'TVP 1',
    2 => 'TVP 2',
    233 => 'TVP3 Regionalna',
    3 => 'TV Polonia',
    368 => 'TVP Kultura',
    5 => 'Polsat',
    6 => 'Polsat 2',
    435 => 'Polsat Cafe',
    224 => 'Polsat Sport',
    17 => 'TVN',
    238 => 'TVN 7',
    151 => 'TVN 24',
    375 => 'TVN Style',
    265 => 'TVN Turbo',
    18 => 'TV 4',
    235 => 'TV Puls',
    16 => 'Tele 5',
    355 => 'Animal Planet',
    15 => 'Planete',
    360 => 'National Geographic',
    67 => 'Discovery',
    356 => 'Discovery Science',
    186 => 'Discovery World',
    14 => 'HBO',
    201 => 'HBO 2',
    421 => 'HBO Comedy',
    13 => 'CANAL+',
    179 => 'CANAL+ Film',
    183 => 'CANAL+ Sport',
    437 => 'Cinemax',
    442 => 'Cinemax 2',
    436 => 'FilmBox',
    433 => 'FilmBox Extra',
    174 => 'AXN',
    538 => 'AXN Black',
    539 => 'AXN White',
    85 => 'Ale Kino!',
    205 => 'Kino Polska',
    403 => 'TCM',
    400 => 'Comedy Central',
    42 => 'Eurosport',
    364 => 'Eurosport 2',
    420 => 'BBC Entertainment',
    448 => 'BBC Knowledge',
    415 => 'BBC Lifestyle',
    71 => 'Zone Club',
    78 => 'Zone Romantica',
    267 => 'Zone Europa',
    84 => 'Zone Reality',
    449 => 'BBC CBeebies',
    74 => 'Jetix',
    217 => 'ZigZap',
    361 => 'Cartoon Network',
);
$NUMOF = count($stations);
 
ini_set('mbstring.substitute_character', 'none');
 
$c = curl_init();
$out = fopen('./xmltv-pre.xml', 'w');
fwrite($out, '<?xml version="1.0" encoding="UTF-8" ?>
<tv date="'.date('YmdHis O').'" generator-info-name="BotGG" generator-info-url="http://jacekk.info/botgg">
');
$address = 'http://tv.wp.pl/program.html?stid=$STATION';
$date = date('Y-m-d');
 
$counter = 0;
foreach($stations as $num => $station) {
    echo "\r".STAR.'Pobieranie programu TV: '.floor($counter/$NUMOF*100).'%';
    
    if(!file_exists('./cache/'.$num.'_'.$date) || filesize('./cache/'.$num.'_'.$date)==0) {
        curl_setopt($c, CURLOPT_URL, str_replace(array('$DATE', '$STATION'), array($date, $num), $address));
        curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($c, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($c, CURLOPT_MAXREDIRS, 5);
        curl_setopt($c, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; pl-PL; rv:1.9.2) Gecko/20100101 Firefox/3.6'));
        curl_setopt($c, CURLOPT_RETURNTRANSFER, TRUE);
        $data = curl_exec($c);
        if(!$data) {
            echo FAIL;
            return;
        }
        
        $data = mb_convert_encoding($data, 'UTF-8', 'UTF-8');
        file_put_contents('./cache/'.$num.'_'.$date, $data);
        unset($data);
    }
    
    $doc = new DOMDocument('1.0', 'utf-8');
    @$doc->loadHTMLFile('./cache/'.$num.'_'.$date);
    
    try {
        $wp = new wp_parse($doc);
        $wp->xmltv($station, $out);
    } catch(Exception $e) {
        echo "\n";
        echo STAR.'Błąd przy pobieraniu danych dla kanału '.$station.FAIL."\n";
        continue;
    }
    
    $counter++;
}
 
fwrite($out, '</tv>');
fclose($out);
 
rename('./xmltv-pre.xml', './xmltv-utf.xml');
 
echo "\r".STAR.'Pobieranie programu TV: 100%'.OK;
 
echo STAR.'Czyszczenie cache...';
$today = strtotime('today');
foreach(glob('./cache/*') as $garbage) {
    $date = substr($garbage, -10);
    if(strtotime($date) < $today) {
        unlink($garbage);
    }
}
echo OK;
?>