| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
TV-skripti älykkäällä cachellaemoporo 29.06.04 00:25 Käyttää XS Labsin TV-API:a. Kun sinne lisätään uusia kanavia niin tämä skripti tukee niitä automaattisesti. :)
<?php /* (c) Joonas Loppi / joonas.loppi@xs.fi Changed: 11.10.2004 (dd.mm.yyyy) License: http://creativecommons.org/licenses/by-nc/2.0/ --- Description --- XS Labs TV API example. For wider use contact sales@xs.fi to obtain your own license key. The sample key can be deactivated at any time. Contact support@xs.fi for any questions. */ $key = '6b7u-dTp3-TAmu-6cf7'; function error($str) { die('XS TV API: '.$str); } // We need to update the cache if(!file_exists('tv_cache.dat') || filemtime('tv_cache.dat') < strtotime(date('j F Y'))) { $update = file_get_contents('http://service.xs.fi/tv/?v=1&k='.$key); $h = &fopen('tv_cache.dat', 'w'); if($h) { fwrite($h, $update, strlen($update)); fclose($h); } else error('Cannot open tv_cache.dat for writing.'); } $file = explode("\n", file_get_contents('tv_cache.dat')); $prog = array(); // Program list from tv_cache.dat $chan = null; // Currently handling channel $sday = 0; // Start of the day (UNIX timestamp) $prev = 0; // Previous program's start time for($i = 0, $c = count($file); $i < $c; $i++) { /* Opcodes: (stolen from XS Labs interface) e / Error d / Date (unix timestamp/human readable) p / Program data (Relative start time/Name/Description) c / Channel (Country code (ISO)/Channel name) l / Come back later */ $data = substr($file[$i], 1); switch($file[$i]{0}) { case 'e': // Error occurred. error($data); break; case 'd': list($sday) = explode('/', $data); break; case 'c': list($iso, $chan) = explode('/', $data); $prev = $sday; // First show's start time is relative to start of the day again break; case 'p': if(!array_key_exists($chan, $prog)) $prog[$chan] = array(); // Showtime is relative, add the previous show's start time list($showTime, $showName, $showDesc) = explode('/', $data); $prev = $showTime+$prev; $prog[$chan][] = array( $prev, $showName, $showDesc); } } // Fill the 'display' array with 3 currently airing shows. $display = array(); $now = time(); for(reset($prog); ($key = key($prog)) !== null; next($prog)) { $chan = $key; $display[$chan] = array(); $mode = 0; for($i = 0, $c = count($prog[$chan]); $i < $c; $i++) { if($mode == 0 && $prog[$chan][$i][0] > $now) { $mode = 1; $ex = (array_key_exists($i-1, $prog[$chan])); $display[$chan][] = $prog[$chan][(($ex) ? $i-1 : $i)]; } elseif($mode == 0) continue; // Ignore the aired shows. if(count($display[$chan]) > 2) break; // We only want the 3 latest shows. $display[$chan][] = $prog[$chan][$i]; } } // This chunk of code renders the display array. for(reset($display); ($key = key($display)) !== null; next($display)) { print '<br /><b>'.$key."</b><br />"; for($i = 0, $c = count($display[$key]); $i < $c; $i++) print (($i == 0) ? 'Nyt' : date('G:i', $display[$key][$i][0])).': '.str_replace('&', '&', $display[$key][$i][1])."<br />\n"; } ?> emoporo 00:26 29.6.04 Sori, väärä osasto. Ekaks yritin postata PHP-puolelle mutta sessio expiroitui ja kun loggasin uudestaan niin unohdin kiireessä valita oikeen osaston. :( Akiro 00:31 29.6.04 No jospa anteeksipyytelyn sijasta siirtäisit oikeaan, tuolla on tuollainen hieno Editoi/Poista-linkki.. emoporo 00:36 29.6.04 Katos. ^_^ Joskus ennen vaan ihmiset vahingossa pisti koodeja väärälle alueelle eikä muistaakseni sillon ne ite pystyny siirteleen. No anyway. amp_god 17:39 29.6.04 -Scotty- 21:59 29.6.04 Saisiko jotekin suosikki-ohjelmat esim. lihavoituna? :D emoporo 00:39 30.6.04 amp_god: Ei tietenkään, muuten vaan sähköpostiosoitteena on @xs.fi. ^_^ -Scotty-: Tämä vain demonstroi kuinka noi tiedot haetaan, jos vaikka HTML:n sekaan noita pusket niin vaikka str_replace()a voisit katsoa.. amp_god 02:41 30.6.04 Hmmmh.... Helpommin saa omaan tietokantaan telkun tavarat osotteesta http://www.yle.fi/ohjelmaopas/index.php [ Itsellä on jo 100% toimiva parseri tonne & kakkosmonitoris näkyy jatkuvasti mitä telkussa menee / mitä seuraavaksi ] emoporo 11:31 30.6.04 No se olikin hyvä syy antaa ääneksi 1. amp_god 16:29 30.6.04 emoporo: Postaa vaan _OMIA_ Ohjelmia tänne... kyllähän kaikki saa kattottua netistä valmiita... ;) emoporo 18:17 30.6.04 Eli se mistä tämän 'plagioin omanani' on osoitteessa http://www.xs.fi/static/phps/tv_api.phps ? No katso sitä sähköpostiosoitetta siinä kommentissa. sales@xs.fi. Lähetä sinne vaikka postia tyyliin 'emoporo?' ja vastaan siihen, niin riittääkö se todistamaan että tein sen itse? Hieman myös harmittaa se että postasin tämän koodin tänne että ihmiset voivat esittää mielipiteensä koodaustavasta ja arvostella koodia niin sinä annat ääneksi ykkösen sen takia kun mielestäsi olen plagioinut omanani. Äläkä sano että et silti usko muttet jaksa lähettää postia. Jos jotain väität niin kyllä pitää pystyä pysymään sanansa takana. Kryil 02:07 1.7.04 Niin... Tällä sivustolla näyttää olevan tapana, että jos et ole jo muutenkin suosiossa, et osaa mitään, eikä koodisi ole mitenkään ihmeellistä. Kun taas ne, jotka ovat mainetta keränneet, keräävät myöskin pisteitä yksinkertaisemmillakin pätkillä. Entil-zha 04:53 1.7.04 Hmm... onhan tuo kivan oloinen mutta yhtä asiaa ihmettelen. Miksi olet luonut erillisen error funktion joka sisältää pelkän die:n? Eipä siinä sinänsä mitään, jokainen taplaa tyylillään. Muuten kyllä hyvän oloinen. emoporo 13:00 1.7.04 Kannattaa luoda funktio jos samaa koodia kutsutaan useammin kuin kerran. Ja tässä tapauksessa kutsun sitä 'jopa' 2 kertaa, eli sitä on helppo muuttaa jos haluaa tulostaa sen errorin muutenkin kuin vain kuolla.. uusio 19:23 2.7.04 koodaileppa huvikses semmonen joka näyttää menossa olavan ohjelman ja seuraavaksi tulevan ohjelman emoporo 00:20 3.7.04 uusio: Just niin se tekee. Mitä ihmettä höpötät? Jos haluat vaan menossa olevan ohjelman ja seuraavan niin muuta tuo if(count($display[$chan]) > 2) numero 2 tilalle 1. Ja jos haluat sen sanovan 'nyt' ja 'seuraavaksi' niin tee tuohon viimeiseen for-lausekkeeseen ehto if($i == 0) ja niin edespäin... uusio 00:35 3.7.04 kuha sekoilen.. väärää koodia kommentoin.. -nD- 17:29 12.7.04 kiva domain sulla :p hieno koodi emoporo 17:08 27.9.04 Päivittelin nyt uuden version. Siinä oli yks bugi mitä kukaan ei oo huomannu eikä tullu valittaan. :O Kun se näytti just nyt tulevan ohjelman, niin se skippas seuraavan mutta näytti kaks seuraavaa. Eli sen ei olis saanu skipata. Aika tyhmä moka porolta. Pyytää anteeksi. :( Pistin tuohon esimerkin vuoksi vähän paremmat muotoilut niin näyttää ohjelmat vähän hienommalta. emoporo 13:24 11.10.04 Taas uus versio. Protokolla muuttu optimaalisemmaks, ja mukaan tuli myös kuvaukset TV-ohjelmille. josk 08:26 7.2.05 Kehitysidea: Kun hiiren osoittemen vie tv-ohjelman nimen päälle niin ilmestyisi laatikko jossa on ohjelman kuvaus. Helpoin tapa saada tekstin päälle ilmestymään ns. alt-laatikko on esim näin... <font title="Description text bla bla blaah">TV-ohjelman nimi</font> molliolli 14:51 15.4.05 Ei toimi enää toi osite mistä toi hakee |
![]() Haku
|