Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [TV] Program - znowu, Funkcja, php 4 i 5
tiraeth
post 9.12.2005, 18:54:06
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%)
-----


Kolejna odsłona. Funkcja zwraca tablicę z programem na dany dzień, konkretny przedział czasu i odpowiedni kanał - wszystko przekazywane za pomocą parametrów funkcji. Po odebraniu takiej tablicy możemy zrobić z nią wszystko smile.gif Dodatkowo zwracany jest (zazwyczaj) jeden Hit Dnia, u którego jeden z kluczy w tablicy to hit=true!

  1. <?php
  2. /************************************************************************
  3.  *
  4.  * ********************************
  5.  *
  6.  *  PROGRAM TELEWIZYJNY
  7.  *
  8.  ************************************************************************/
  9.  
  10. function programTV($tv_stacja = false, $date = false, $from_to = false)
  11. {
  12.  $data = ($date) ? $date : date('Y-m-d');
  13.  $stacja = ($tv_stacja) ? $tv_stacja : 17;
  14.  $titles = array('Kawa czy herbata?', 'Przyroda Ameryki'); # ITD...
  15.  
  16.  if(!eregi('..', $from_to))
  17. $from_to = false;
  18.  
  19.  define('TV_DATA', $data); # Domyslna data wyswietlania
  20.  define('TV_STACJA_ID', $stacja); # Numer stacji
  21.  define('FROM_TO', $from_to); # Zakres godziny przy wyswietlaniu
  22. # OD..DO, np. 12:00..14:00
  23. # lub "false" aby caly dzien wyswietlic
  24.  
  25.  $url = 'http://tv.wp.pl/index_druk.html?T[date]='.TV_DATA.'&T[time]=0&T[category]=ALL&T[station]='.TV_STACJA_ID.'&T[page]=1&T[ctime]=0';
  26.  
  27.  $handle = implode("", file($url));
  28.  
  29.  if(preg_match_all('#<b class="ng">(.*?)</b>#is', $handle, $nazwa))
  30.  {
  31. define('TV_STACJA', $nazwa[1][0]);
  32.  
  33. if(preg_match_all('#<td class="drukowalne" (.*?)</td>#is', $handle, $result))
  34. {
  35.  $res = $result[1];
  36.  $i=0; $a=0; $b=0;
  37.  
  38.  while($b<count($res)/2)
  39.  {
  40. $tmp = '<'.$res[$i];
  41.  
  42. if(eregi('hit.gif', $tmp) && $ishit == false) {
  43.  $hit = true;
  44.  $ishit = true;
  45. }
  46. else
  47.  $hit = false;
  48.  
  49. $date = strip_tags($tmp, '<br>');
  50. $tmp = '<'.$res[$i+1];
  51. $title = strip_tags($tmp, '<br>');
  52. $desc = '';
  53.  
  54. if(eregi('<br>', $title))
  55. {
  56.  $list = explode('<br>', $title);
  57.  $title = $list[0];
  58.  
  59.  for($j=1; $j<count($list); $j++)
  60.  {
  61.  $desc.= $list[$j].'<br>';
  62.  }
  63.  $desc = substr($desc, 0, -4);
  64.  if(strlen($desc) < 25) $desc = '  ';
  65. }
  66.  
  67. if(count($titles) > 0)
  68. {
  69.  foreach($titles as $t)
  70.  {
  71. if(eregi($t, $title))
  72.  $title = $t;
  73.  }
  74. }
  75.  
  76. $time = strtotime(TV_DATA.' '.$date);
  77. if(date('H', $time) <= 04 && date('i', $time) <= 40)
  78.  $time+= 3600*24;
  79.  
  80. $from = 0; $to = 0;
  81. if(ereg('..', FROM_TO))
  82. {
  83.  list($from, $to) = explode('..', FROM_TO);
  84.  
  85.  $from = strtotime(TV_DATA.' '.$from);
  86.  $to = strtotime(TV_DATA.' '.$to);
  87.  
  88. }
  89.  
  90. if(($from <> 0 AND $from <= $time AND $to <> 0 AND $to >= $time) OR FROM_TO == false)
  91. {
  92.  $Tab[$a]['time'] = $time;
  93.  $Tab[$a]['title'] = $title;
  94.  $Tab[$a]['desc'] = $desc;
  95.  
  96.  if($hit == true)
  97. $Tab[$a]['hit'] = true;
  98.  else
  99. $Tab[$a]['hit'] = false;
  100.  
  101.  $a++;
  102. }
  103. $i+=2;
  104. $b++;
  105.  }
  106. }
  107.  }
  108.  
  109.  return $Tab;
  110. }
  111. ?>


Sposób użycia
  1. <?php
  2. include('programTV.php'); # wczytujemy funkcję
  3.  
  4. $def = programTV(); # Odczytujemy na dzisiaj domyslnie kanal ID=17
  5. $dzisiaj = programTV(1); # Odczytujemy kanał o ID=1 na dzisiaj - cały dzień
  6. $rano = programTV(1, false, '03:00..12:00'); # Kanał ID=1, na dzisiaj, od 03:00 do 12:00
  7. $jutro = programTV(false, '2005-12-09', 18:00..24:00); # Na 9 grudnia, kanał domyślny, od 18:00 do 24:00
  8. ?>
Go to the top of the page
+Quote Post
NuLL
post 10.12.2005, 02:15:23
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Ja ladnie podziekuje za skrypt smile.gif Co prawda na stronie mi sie nie przyda ale przynajmniej wlaczajac localhosta mam co daja w TVN Turbo dzis i jutro biggrin.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
tiraeth
post 10.12.2005, 11:39:35
Post #3





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

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


A nie ma za co winksmiley.jpg Poprostu uważam, że taki bajer jest zawsze przydatny, a nie każdemu chce się czekać aż się obrazki/reklamy załadują w innym serwisie smile.gif
Go to the top of the page
+Quote Post
vihoo
post 31.01.2006, 19:50:52
Post #4





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 28.11.2005

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


Ja bym zmienił:
  1. <?php
  2.  
  3. $time = strtotime(TV_DATA.' '.$date);
  4. if(date('H', $time) <= 03 && date('H', $time) <= 30)
  5.  $time+= 3600*24;
  6.  
  7. ?>

na:
  1. <?php
  2.  
  3. $time = strtotime(TV_DATA.' '.$date);
  4. if(date('H', $time) <= 04 && date('H', $time) <= 30)
  5.  $time+= 3600*24;
  6.  
  7. ?>

bo się troszkę znaczniki czasu krzaczą.
A tu:
  1. <?php
  2.  
  3. foreach($titles as $t)
  4. {
  5.  if(eregi($t, $title))
  6. $title = $t;
  7. }
  8.  
  9. ?>

wywala mi błędy - chyba z powodu braku zmiennej $titles. Po wywaleni pętelki chodzi poprawnie.


--------------------
--------------------------
zapraszam na Wejherowo - centrum informacji
Parkiety, granit
Go to the top of the page
+Quote Post
tiraeth
post 31.01.2006, 22:11:20
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%)
-----


  1. <?php
  2. foreach($titles as $t)
  3. {
  4.  if(eregi($t, $title))
  5. $title = $t;
  6. }
  7. ?>

Odpowiada za zmianę nazwy programu, gdy w nazwie umieszczony jest opis odcinka, np. "Kawa i herbata Coś tam jacyś goście" zamieni na "Kawa i herbata" gdy na początku funkcji w zadeklarowanej tablicy $titles znajdzie się ten tytuł smile.gif

Odnośnie czasu - i tak jest błąd, nie sprawdza minut, literówka smile.gif

Poprawiłem kod!! Poprawiłem czas...

Kurde, teraz nic nie rozumiem z połowy tego kodu smile.gif Trzeba będzie go okomentować smile.gif
Go to the top of the page
+Quote Post
szygmon
post 31.07.2007, 12:44:21
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.04.2007

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


  1. Parse error: syntax error, unexpected ':' in /home/.../public_html/administration/custom_pages.php(74) : eval()'d code on line 7


taki bł mi wyskakuje. O co chodzi?
Go to the top of the page
+Quote Post
phpion
post 31.07.2007, 15:01:05
Post #7





Grupa: Moderatorzy
Postów: 6 070
Pomógł: 860
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




smile.gif również dziękuję za udostępnienie źródełka i podobnie jak NuLL odpalę sobie na localhoście.
Heh, mam tylko jedną małą uwagę odnośnie nazewnictwa zmiennej $ishit - różnie to można zinterpretować winksmiley.jpg hehehe
Go to the top of the page
+Quote Post
roobik
post 2.08.2007, 14:24:50
Post #8





Grupa: Zarejestrowani
Postów: 407
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław / Szczytna

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


...a mi nie działa, ponieważ
Cytat
Parse error: syntax error, unexpected T_STRING in /......../_public_html/program.php on line 30

więc poszukałem i myślałem, że znalzłem, bo w linii 30 jest :
  1. <?php
  2. if(preg_match_all('#<b class="ng">(.*?)</b>#is', $handle, $nazwa))
  3. ?>

Wyrzuciłem "" (również niżej, gdzie jest "drukowanie"
czyli mam
  1. <?php
  2. if(preg_match_all('#<b class=ng>(.*?)</b>#is', $handle, $nazwa))
  3. ?>

ale dalej mam w 30 linii błąd...
Go to the top of the page
+Quote Post
szygmon
post 4.08.2007, 10:08:29
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.04.2007

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


niech ktoś poprawi ten kod, żeby działał poprawnie
Go to the top of the page
+Quote Post
roobik
post 8.08.2007, 22:56:28
Post #10





Grupa: Zarejestrowani
Postów: 407
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław / Szczytna

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


Przydałoby się... Nie jestem zbyt mocny w php. Ale wiele rozwiązań już testowałem - zawsze z tym samym błędem... Pomóżcie proszę...
Go to the top of the page
+Quote Post
Koshin
post 9.08.2007, 15:01:56
Post #11





Grupa: Zarejestrowani
Postów: 196
Pomógł: 0
Dołączył: 29.04.2002
Skąd: jesteś?

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


pierwotną linie 28 należy zmienić na:

  1. <?php
  2. $handle = implode('\"', file($url));
  3. ?>


--------------------
My czuwamy.eu abyś mógł spać spokojnie
zapasowakopia.pl - myśl zanim będzie za późno.
Go to the top of the page
+Quote Post
roobik
post 9.08.2007, 21:34:13
Post #12





Grupa: Zarejestrowani
Postów: 407
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław / Szczytna

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


sad.gif
po zmianie: jest tylko biała strona... nic sięjuż nie pokazuje... nawet błędy sad.gif
Go to the top of the page
+Quote Post
bim2
post 10.08.2007, 17:26:48
Post #13





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


gadasz głupoty. Mi działa dry.gif


--------------------
Go to the top of the page
+Quote Post
sagittariuspl
post 11.08.2007, 17:10:36
Post #14





Grupa: Zarejestrowani
Postów: 374
Pomógł: 3
Dołączył: 30.12.2006
Skąd: co skąd?

Ostrzeżenie: (10%)
X----


Cytat(roobik @ 9.08.2007, 22:34:13 ) *
sad.gif
po zmianie: jest tylko biała strona... nic sięjuż nie pokazuje... nawet błędy sad.gif
spróbj jeszcze tak:
  1. <?php
  2. print_r($dzisiaj);
  3. ?>
trzeba sobie jeszcze te dane przetworzyć jak widzę biggrin.gif

Ten post edytował sagittariuspl 11.08.2007, 17:10:59


--------------------
Tylko sprawdzone typy bukmacherskie na BetGen.pl
Potrzebujesz konta bankowego? Nie? Każdy potrzebuje. Porównaj konta i wybierz najlepsze dla siebie
Zostań milionerem zaczynając od zbierania truskawek. Każdy może być bogaty - to nie mit.
Go to the top of the page
+Quote Post
bim2
post 13.08.2007, 18:21:14
Post #15





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


  1. <?php
  2. $dzisiaj = programTV(1, false, date("H:i", (time()-2*3600)).'..23:59');
  3. foreach($dzisiaj AS $iKey => $sValue)
  4. {
  5. if($sValue['time']<time() AND $dzisiaj[$iKey+1]['time']>time())
  6. echo '<b>- '.$sValue['title'].'</b> : '.date("H:i", $sValue['time']).':<br />';
  7. else
  8. echo '- '.$sValue['title'].' : '.date("H:i", $sValue['time']).':<br />';
  9. }
  10. ?>

Wyswietla też któy program oglądamy winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
Taifun
post 14.08.2007, 21:24:36
Post #16





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

Ostrzeżenie: (10%)
X----


jak zrobić żeby pokazywał same seriale? tongue.gif Serio pytam


--------------------
Go to the top of the page
+Quote Post
bim2
post 15.08.2007, 11:02:55
Post #17





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Zrób tablicę z nazwami seriali i później filtruj kanały pod tym kątem. :roll2:


--------------------
Go to the top of the page
+Quote Post
sokolam
post 17.08.2007, 11:36:05
Post #18





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 17.08.2007

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


Pomoze mi ktos z tym lub podesle gotowy skrypt na tpspeed@wp.pl questionmark.gif

Mecze sie no i nie moge tego odpalic sad.gif
Go to the top of the page
+Quote Post
roobik
post 22.08.2007, 12:08:56
Post #19





Grupa: Zarejestrowani
Postów: 407
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław / Szczytna

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


Również bym prosił o wskazówkę... Ewentualnie skrypt
z_line(at)wp.pl
Go to the top of the page
+Quote Post
bim2
post 22.08.2007, 16:16:58
Post #20





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


sciana.gif sciana.gif sciana.gif
  1. <?php
  2. $dzisiaj = programTV(17, false, date("H:i", (time()-2*3600)).'..23:59');
  3. foreach($dzisiaj AS $iKey => $sValue)
  4. {
  5. if($sValue['time']<time() AND $dzisiaj[$iKey+1]['time']>time())
  6. echo '<b>- '.$sValue['title'].'</b> : '.date("H:i", $sValue['time']).':<br />';
  7. else
  8. echo '- '.$sValue['title'].' : '.date("H:i", $sValue['time']).':<br />';
  9. }
  10. ?>

Funkcje podał juz tirateh... W razie problemów już na PW. Nie róbmy śmietnika worriedsmiley.gif

EDIT: Cały skrypt
http://phpfi.com/257920

Ten post edytował bim2 22.08.2007, 16:18:46


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 15.05.2024 - 18:09