Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Program Telewizyjny [v2], Skrypt, PHP 4 i 5
tiraeth
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam!

Dzisiaj napisałem kolejny program telewizyjny (widać mało ich w sieci). Program ten jest w stanie pobrać ramówki wszystkich kanałów dostępnych na <span style="font-weight: bold;">tv.wp.pl</span>. Nareszcie udało mi się skorygować problem z sortowaniem, gdy program zaczyna się po północy (np. 00:40) - sprawdzam czy jakiś się właśnie o tej godzinie rozpoczyna i dodaję do niego jeden dzień. Dobra koniec gadania, oto kod:
  1. <?php
  2. # Przykładowe stacje do wykorzystania
  3.  
  4. # TVP1  1
  5. # TVP2  2
  6. # TV Polonia  3
  7. # Polsat  5
  8. # Polsat 2  6
  9. # TVN  17
  10. # TV4  18
  11. # TVP3 Wrocław 30
  12. # Jetix  74
  13. # TVNSiedem 238
  14. # Cartoon Network 361
  15.  
  16. $stacja = '1';
  17.  
  18.  $url = 'http://tv.wp.pl/index_druk.html?T[date]='.date('Y-m-d').'&T[time]=0&T[category]=ALL&T[station]='.$stacja;
  19.  
  20.  $file = file($url);
  21.  $read = implode('', $file);
  22.  $read = str_replace(&#092;"n\", \"\", $read);
  23.  $read = str_replace(&#092;"r\", \"\", $read);
  24.  
  25.  if(preg_match('/<table width=\"585\" cellpadding=\"3\" cellspacing=\"0\" border=\"1\" class=\"drukowalne\" >(.*?)</table>/', $read, $zmienna))
  26.  {
  27. $wynik = $zmienna[0];
  28.  }
  29.  
  30.  if(preg_match_all('/<td class=\"drukowalne\" bgcolor=\"(.*?)\" width=\"35\" valign=\"top\" align=\"right\" nowrap>(.*?)</td><td class=\"drukowalne\" bgcolor=\"(.*?)\" valign=\"top\">(.*?)</td>/', $wynik, $result))
  31.  {
  32. $godziny = $result[2];
  33. $program = $result[4];
  34.  
  35. foreach($program as $key => $value)
  36. {
  37.  $program[$key] = explode('<span class=\"SGinfo\">', $program[$key]);
  38.  
  39.  $programy[$key] = $program[$key][0];
  40. }
  41.  
  42. unset($program);
  43.  
  44. foreach($programy as $key => $value)
  45. {
  46.  $programy[$key] = strip_tags($programy[$key]);
  47. }
  48.  
  49.  
  50. foreach($godziny as $key => $value)
  51. {
  52.  $godziny[$key] = strip_tags($godziny[$key]);
  53.  
  54.  if($key > 5 && eregi('00:', $godziny[$key]))
  55.  {
  56. $time = date('d F Y', time()+3600*24);
  57. $time.= ' '.$godziny[$key].':00';
  58.  }
  59.  else
  60.  {
  61. $time = date('d F Y');
  62. $time.= ' '.$godziny[$key].':00';
  63.  }
  64.  $program[$key]['godzina'] = strtotime($time);
  65.  $program[$key]['program'] = $programy[$key];
  66. }
  67.  
  68. unset($programy);
  69.  
  70. $teraz_czas = time();
  71.  
  72.  for($i=0; $i<count($program); $i++)
  73.  {
  74. if($program[$i]['godzina'] <= $teraz_czas)
  75. {
  76.  echo '<span style=\"font-family:Verdana; font-size:10px; color:silver\"><b>'.date('H:i', $program[$i]['godzina']).'</b> '.$program[$i]['program'].'</span><br />';
  77. }
  78. else
  79. {
  80.  echo '<span style=\"font-family:Verdana; font-size:10px; color:black\"><b>'.date('H:i', $program[$i]['godzina']).'</b> '.$program[$i]['program'].'</span><br />';
  81. }
  82.  }
  83.  
  84.  }
  85. ?>

Sorki za brak komentarzy w kodzie ale narazie jest to wersja RC biggrin.gif Więc będzie jeszcze dużo zmian (np. logo stacji, obrazek trwa etc.)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no fajny, tylko powiedz mi proszę czemu pewne programy są na czarno a inne na szaro. nie kumam

edit: a już kumam. Te szare to już były rolleyes.gif

Ten post edytował nospor 24.03.2005, 10:26:57


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Vengeance
post
Post #3





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


$file = file($url);

Proponuje zamienić to na pobieranie poprzez
fsockopen() i wyslanie zadania HTTP.

Twoj sposob nie zadziala np. przy allow_fopen_url=Off w php.ini


--------------------
Go to the top of the page
+Quote Post
Wave
post
Post #4





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

Ostrzeżenie: (0%)
-----


Pobawiłem się nim (mam nadzieję że mogłem:)), poprawiłem kilka błędów, dodałem
Cytat
logo stacji, obrazek trwa
i kilka innych. snitch.gif
http://wave.coolinc.info/program.php

źródło: http://wave.coolinc.info/program.phps
Go to the top of the page
+Quote Post
tiraeth
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Niestety jeszcze nie opanowałem funkcji fsockopen, więc jeżeli możesz napisz kod, który wysłał by nagłowek GET poprzez fsockopen smile.gif
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wave: W operze wywala mi błąd js:



http://wave.coolinc.info/program.php
Unknown context
Syntax error while loading (line 103)
-->
----------------------------^


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tiraeth
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nadeszła wersja 2.01-BETA
  1. <?php
  2. # Przykładowe stacje do wykorzystania
  3.  
  4. # TVP1  1
  5. # TVP2  2
  6. # TV Polonia  3
  7. # Polsat  5
  8. # TVN  17
  9. # TV4  18
  10. # TVP3 Wrocław 30
  11. # Jetix  74
  12. # TVNSiedem 238
  13. # Cartoon Network 361
  14.  
  15. $stacja = ($_POST['id_stacja']) ? $_POST['id_stacja'] : '1';
  16.  
  17. # pobieramy formularz ze stacjami
  18.  
  19. $url2 = 'http://tv.wp.pl/index.html';
  20.  
  21. $a = file($url2);
  22. $b = implode('', $a);
  23. $b = str_replace(&#092;"n\", \"\", $b);
  24. $b = str_replace(&#092;"r\", \"\", $b);
  25.  
  26. if(preg_match('/<select name=T[station](.*?)</select>/', $b, $res))
  27. {
  28.  $wyn = $res[0];
  29.  $wyn = str_replace(&#092;"T[station]\", \"id_stacja\", $wyn);
  30.  $wyn = preg_replace('/<option value=\"(0|---)\">(.*)</option>/', '', $wyn);
  31.  
  32.  echo '<form action=\"tv.php\" method=\"POST\"><p align=\"center\">';
  33.  echo 'Kanał: '.$wyn.' <input type=\"submit\" value=\"Pokaż\">';
  34.  echo '</p></form>';
  35. }
  36.  
  37.  
  38.  
  39. echo '<span style=\"font-family:Verdana; font-size:12px; color:#000000\"><img src=\"http://i.wp.pl/a/i/program_tv/'.$stacja.'.gif\" border=\"0\" align=\"center\">Program na <b>'.date('d-m-Y').'</b></span><br /><br />';
  40.  
  41.  $url = 'http://tv.wp.pl/index_druk.html?T[date]='.date('Y-m-d').'&T[time]=0&T[category]=ALL&T[station]='.$stacja;
  42.  
  43.  $file = file($url);
  44.  $read = implode('', $file);
  45.  $read = str_replace(&#092;"n\", \"\", $read);
  46.  $read = str_replace(&#092;"r\", \"\", $read);
  47.  
  48.  if(preg_match('/<table width=\"585\" cellpadding=\"3\" cellspacing=\"0\" border=\"1\" class=\"drukowalne\" >(.*?)</table>/', $read, $zmienna))
  49.  {
  50. $wynik = $zmienna[0];
  51.  }
  52.  
  53.  if(preg_match_all('/<td class=\"drukowalne\" bgcolor=\"(.*?)\" width=\"35\" valign=\"top\" align=\"right\" nowrap>(.*?)</td><td class=\"drukowalne\" bgcolor=\"(.*?)\" valign=\"top\">(.*?)</td>/', $wynik, $result))
  54.  {
  55. $godziny = $result[2];
  56. $program = $result[4];
  57.  
  58. foreach($program as $key => $value)
  59. {
  60.  $program[$key] = explode('<span class=\"SGinfo\">', $program[$key]);
  61.  
  62.  $programy[$key] = $program[$key][0];
  63.  $opisy[$key] = $program[$key][1];
  64. }
  65.  
  66. unset($program);
  67.  
  68. foreach($programy as $key => $value)
  69. {
  70.  $programy[$key] = strip_tags($programy[$key]);
  71. }
  72.  
  73. foreach($opisy as $key => $value)
  74. {
  75.  $opisy[$key] = strip_tags($opisy[$key], '<br>');
  76.  $help = explode('<br>', $opisy[$key]);
  77.  if(count($help) > 2)
  78.  {
  79. $c = count($help); $c--;
  80. $opisy[$key] = $help[$c-1].'<br>'.$help[$c];
  81.  }
  82.  elseif(count($help) == 2)
  83.  {
  84. $c = count($help); $c--;
  85. $opisy[$key] = $help[$c];
  86.  }
  87. }
  88.  
  89.  
  90. foreach($godziny as $key => $value)
  91. {
  92.  $godziny[$key] = strip_tags($godziny[$key]);
  93.  
  94.  if($key > 5 && eregi('00:|01:|02:|03:', $godziny[$key]))
  95.  {
  96. $time = date('d F Y', time()+3600*24);
  97. $time.= ' '.$godziny[$key].':00';
  98.  }
  99.  else
  100.  {
  101. $time = date('d F Y');
  102. $time.= ' '.$godziny[$key].':00';
  103.  }
  104.  $program[$key]['godzina'] = strtotime($time);
  105.  $program[$key]['program'] = $programy[$key];
  106.  $program[$key]['opis'] = $opisy[$key];
  107. }
  108.  
  109. unset($opisy);
  110. unset($programy);
  111.  
  112. $teraz_czas = time();
  113.  
  114.  for($i=0; $i<count($program); $i++)
  115.  {
  116. $a = $i; $a++;
  117. if($program[$i]['godzina'] <= $teraz_czas && $program[$a]['godzina'] > $teraz_czas)
  118. {
  119.  echo '<span style=\"font-family:Verdana; font-size:11px; color:#FF0000\"><b>'.date('H:i', $program[$i]['godzina']).'</b> '.$program[$i]['program'].'</span><br />'.&#092;"n\";
  120.  echo '<span style=\"font-family:Tahoma; font-size:9px; color:#AAAAAA\">'.$program[$i]['opis'].'</span><br />'.&#092;"n\";
  121. }
  122. elseif($program[$i]['godzina'] <= $teraz_czas)
  123. {
  124.  echo '<span style=\"font-family:Verdana; font-size:11px; color:#838383\"><b>'.date('H:i', $program[$i]['godzina']).'</b> '.$program[$i]['program'].'</span><br />'.&#092;"n\";
  125.  echo '<span style=\"font-family:Tahoma; font-size:9px; color:#AAAAAA\">'.$program[$i]['opis'].'</span><br />'.&#092;"n\";
  126. }
  127. else
  128. {
  129.  echo '<span style=\"font-family:Verdana; font-size:11px; color:#000000\"><b>'.date('H:i', $program[$i]['godzina']).'</b> '.$program[$i]['program'].'</span><br />'.&#092;"n\";
  130.  echo '<span style=\"font-family:Tahoma; font-size:9px; color:#AAAAAA\">'.$program[$i]['opis'].'</span><br />'.&#092;"n\";
  131. }
  132.  }
  133.  
  134.  }
  135. ?>


Changelog:
Kod
+ Dodano wyświetlanie loga stacji
+ Aktualnie trwający program podświetla się na czerwono
+ Pobieranie formularza z programami z wp.pl
+ Wyświetlanie skróconych informacji nt. programu


Mam nadzieję, że teraz jest lepszy smile.gif Niedługo dojdzie span z większym opisem programu + pokazanie na górze skryptu trwający program i pasek stanu (ile upłynęło od rozpoczęcia się programu.
Go to the top of the page
+Quote Post
Wave
post
Post #8





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

Ostrzeżenie: (0%)
-----


nospor JS? Tam nie ma ani trochę JS. To może wina bannera z serwera. :/

Ten post edytował Wave 25.03.2005, 12:55:09
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




wave: nie wiem czyja to wina, ale wyskakuje bŁąd js po kliknięciu pokaz.

http://wave.coolinc.info/program.php
Unknown context
Syntax error while loading (line 103)
-->
----------------------------^

Może ty nie masz wlączonego, aby pokazywaŁo ci automatycznie błąd js. Jak nie to se podejrzyj w konsoli js po wciśnięciu pokaż. Ja używam opery 7.54

edit: sprawdzilem, to wyskakuje tylko na kanalach panstwowych, czyli tvp1,tvp2, polonia

Ten post edytował nospor 25.03.2005, 13:03:15


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
gregi
post
Post #10





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


a jak to jest z legalnością pobierania zawartości tv wp?

czy trzeba od wp wykupić licencje?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 12:08