Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Program Telewizyjny [v2]
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
tiraeth
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.)
nospor
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
Vengeance
$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
Wave
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
tiraeth
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
nospor
Wave: W operze wywala mi błąd js:



http://wave.coolinc.info/program.php
Unknown context
Syntax error while loading (line 103)
-->
----------------------------^
tiraeth
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.
Wave
nospor JS? Tam nie ma ani trochę JS. To może wina bannera z serwera. :/
nospor
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
gregi
a jak to jest z legalnością pobierania zawartości tv wp?

czy trzeba od wp wykupić licencje?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.