Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czas i program TV
Forum PHP.pl > Forum > PHP
okokok
Witam,
Napisałem skrypt który kradnie z WP program TV i wrzuca go do mojej bazy. Wykonuje się prawie 15 min i kradnie program dla wszystkich stacji. Jest to praca na szkolny konkurs, więc raczej mnie nie pozwą Problem w tym że WP, a właściwie firma A+C któa przygotowuje dla nich program, miesza z godzinami. Pewnie wiecie o co mi chodzi. Program emitowany we wtorek o godzinie 2:30 jest wyświetlany w poniedziałkowej tabelce, też o 2:30. Nie wiem jak sobie z tym poradzić Taki program dodawany jest do bazy, a następnie wyświetlany, w poniedziałek o godzinę 2:30, czyli przed wszystkimi programami na wtorek. Jak to naprawić?

Kod skryptu kradnącego:
  1. <?php
  2. include('./mysql.php');
  3. include('./simple_html_dom.php');
  4.  
  5. $html = file_get_html('http://tv.wp.pl/');
  6. $i = 0;
  7. foreach($html->find('select#stationId option') as $e) {
  8. if($e->id && substr($e->id, 0, 1) == 'B') {
  9. $stacje[$i]['nr'] = $e->value;
  10. $stacje[$i]['kod'] = $e->id;
  11. $stacje[$i]['nazwa'] = iconv('ISO-8859-2', 'UTF-8', $e->innertext);
  12.  
  13. $i++;
  14. }
  15. }
  16.  
  17. for($i = 0; $i <= 7; $i++) {
  18. $dni[] = date('Y-m-d', time()+(86400*$i));
  19. }
  20.  
  21. echo 'TRUNCATE TABLE programy;<br />'.PHP_EOL;
  22. mysql_query('TRUNCATE TABLE programy');
  23.  
  24. foreach($stacje as $i => $stacja) {
  25. foreach($dni as $j => $dzien) {
  26. if($html = file_get_html('http://tv.wp.pl/program.html?name='.$stacja['kod'].'&stid='.$stacja['nr'].'&date='.$dzien.'&time=')) {
  27. foreach($html->find('div.program') as $e) {
  28. $html2 = str_get_html($e->innertext);
  29. $godzina = $html2->find('div.programL strong', 0);
  30. $godzina_text = iconv('ISO-8859-2', 'UTF-8', $godzina->innertext);
  31. $program = $html2->find('div.programR h4 a', 0);
  32. $program_text = iconv('ISO-8859-2', 'UTF-8', $program->innertext);
  33.  
  34. echo 'INSERT INTO programy (id, dzien, godzina, stacja, program) VALUES (NULL, \''.$dzien.'\', \''.$godzina_text.'\', \''.$stacja['nazwa'].'\', \''.$program_text.'\');<br />'.PHP_EOL;
  35. mysql_query('INSERT INTO programy (id, dzien, godzina, stacja, program) VALUES (NULL, \''.$dzien.'\', \''.$godzina_text.'\', \''.$stacja['nazwa'].'\', \''.$program_text.'\')');
  36. }
  37. }
  38. }
  39. }
  40. ?>


edit:
Includeowane pliki:
mysql.php - połączenie z serwerem MySQL, wybranie bazy i ustawienie kodowania;
simple_html_dom.php - klasa o tej samej nazwie, służy do wyciągania elementów z kodu html, coś jak JSowe getElementById.
solr
Odpowiadając na twoje pytanie, 1) wyciągasz z "$godzina_text" samą godzinę (np z 5:15, chcesz tylko 5) 2) pierwszy znaleziony zawsze zapisujesz (to będzie ten najwcześniejszy - ranny) 3) drugi i kolejne zapisujesz, tylko jeśli poprzednia pozycja w programie była przed 00, czyli np 23 4) jeśli element jest z godziną 00 to ani tego elementu ani już dalej nic nie zapisujesz dla tego dnia (tylko dla następnego).
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-2025 Invision Power Services, Inc.