Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czas i program TV
okokok
post 24.03.2012, 15:13:48
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 24.03.2012

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


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.
Go to the top of the page
+Quote Post
solr
post 24.03.2012, 22:17:19
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 8
Dołączył: 11.08.2010

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


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).
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 Wersja Lo-Fi Aktualny czas: 19.06.2025 - 20:06