Telkku konsoliin

Kryil 10.02.05 00:34

Telkku.comin tiedot tiivistettynä väritettynä *nix-konsoliin.

 Tekstiversio  Arvo: 3 (3 ääntä)  Äänestä: +  -
Itse käytän seuraavaa komentoa näyttämään tämän suoraan työpöydälläni:
Eterm --borderless --buttonbar false --scrollbar false\
 --font -*-terminus-medium-*-*-*-*-*-*-*-*-*-*-1 --trans\
 --geometry 41x17+2205+795 --no-cursor --exec sh ~/.tp/tptelkku.sh
(huom: asun maalla, en näe subtv:tä, joten olen poistanut sen tulostuksen omalta kohdaltani.
Ikkunan kokoa on syytä kasvattaa.)

-- tptelkku.sh --
#!/bin/bash

telkku=~/.tp/tptelkku.php
tauko=600

while [ 0 ]
do
     clear
     php $telkku
     sleep $tauko
done
---

Ja php-scripti. Eli tätä on tosiaan tarkoitus ajaa shellissä. Tosin tämä toimii myös ihan nettisivuna ajettuna.
Php:tä siksi, että tein puolet scriptistä puolen vuotta sitten, enkä osaa muita scriptikieliä riittävän hyvin.
Hyvin se toimii.
<?php
   header("Content-type: text/plain");
          
    //Määritellään tarvittavat muuttujat
    //$URI            = "http://www.telkku.com/ohjelmatiedot00m.shtml"; //Myös menneet
   $URI  = "http://www.telkku.com";
   $start              = "<table width=100% border=0 cellspacing=0 cellpadding=1>";
   $end  = "</table>";
   $chnames     = array('', "Yle 1", "Yle 2", "MTV3", "Nelonen", "SubTV");
       
   $data                = file($URI);
   $copy                = false;
   $channels    = array();
   $channel     = 1;
       
   $replace     = array("</td>", "&nbsp;");
   $to    = array("\t", "");
       
   //Välilyöntimäärät formatointia varten
   $chanspaces  = 9;
   $timespaces  = 12;
       
   //Ansi-väritys
   /* *nix-consolissa tekstiä voi värittää tietyillä väreillä.
    * Tämä tapahtuu niin, että merkkijonoon laitetaan merkki escape (ascii 33)
    * ja sen perään värikoodi. Eli jos halutaan vihreää tekstiä, se tapahtuu
    * merkeillä '\033[32m' (ilman hipsuja). Värikoodeja löytyy googettamalla ansi colors
    */

   $doansi            = true;
   $chancolor   = "\033[1m\033[32m"; // Boldattu vihreä
   $chancolorclear      = "\033[0m"; //Tekstin normalisointi
   $timecolor   = "\033[31m";
   $timecolorclear      = "";
   $titlecolor  = "\033[37m";
   $titlecolorclear= "";

   for($i=0;$i<count($data);$i++) {
      if (trim($data[$i]) == $end && $copy == true) {
          $copy = false;
          $channel++;
          if ($channel > 5) $channel = 1;
          continue;
      }
      if (trim($data[$i]) == $start) {
         $copy = true;
         continue;
      }
               
      if ($copy == true) {
         $channels[$channel] .= trim(strip_tags(str_replace($replace, $to, $data[$i]))) ."\n";
      }
   }
       
   // Listaa kaiken
   //for($i=1;$i<=count($channels);$i++) {
   //   print "\n\n{$chnames[$i]}\n{$channels[$i]}";
   //}

   // Tulostetaan "hieno" formatointi ja vain kolme ohjelmatietoa
   // Tämän olisi voinut tehdä jo aikaisemmassa vaiheessa, mutta
   // tein tosiaan päivityksen puolen vuotta vanhaan scriptiin.
   for($i=1;$i<=count($channels);$i++) {
      if ($doansi) print str_pad($chancolor.$chnames[$i], $chanspaces+strlen($chancolor)).$chancolorclear;
      else print str_pad($chnames[$i], $chanspaces);

      $temp = explode("\n", $channels[$i]);

      $j=0;
      foreach ($temp as $key => $tieto) {
         $tiedot = explode("\t", $tieto);

         if ($doansi) print str_pad($timecolor.$tiedot[0], $timespaces+strlen($timecolor)).$timecolorclear;
         else print str_pad($tiedot[0], $timespaces);
         if ($doansi) print $titlecolor;

         if (strlen($tiedot[1])>20) print substr($tiedot[1], 0, 17) ."...\n";
         else print $tiedot[1] ."\n";

         if ($doansi) print $titlecolorclear;

         print str_pad("", $chanspaces);
         $j++;
         if ($j>2) break;
      }
      print "\n";
   }
?>

petri_koo 13:48 10.2.05 
Helpommin riisuttavat ohjelmatiedot löytyy Ylen sivuilta

http://www.yle.fi/ohjelmaopas/index.php?co%5B%5D=tv1&date=20050210&l=f&verbose=no&mode=pda kanavan valinta mukana

http://www.yle.fi/ohjelmaopas/index.php?co%5B%5D=tv1&date=20050210&l=f&verbose=no&mode=text riisuttu malli

tolle riisutulle mallille kun tekee strip_tags funktion käsittelyn niin loppu käy helposti.
Kryil 15:27 10.2.05 
No kappas. Täytyykin muistaa tuo seuraavalla kerralla kun tekemisen puute iskee.
kinnupa1 00:46 15.2.05 
En saanut toimimaan tätä sivuillasni se sanoo jotain tällaista:

Warning: Cannot modify header information - headers already sent by (output started at /home/webbiin/public_html/tv2.php:22)

in /home/webbiin/public_html/tv2.php on line 23

Yle 1 00:20-03:59 Uuutisikkuna   Yle 2 23:45-01:00 Mikämikä-tvpeli   MTV3 00:20 Ostoskanava 00:55 Cupido 01:45-06:10 Oldskool Chat Nelonen 00:10 Tuomas & Juuso Ex... 01:10 Ostosruutu 01:40-04:00 4deitti SubTV 00:25 Neon Genesis Evan... 00:50 Salaiset arkistot 01:35-06:00 Sub chat

voisko joku selittää mitä oon tehnyt väärin. Kopioin vaan ton php scriptin sivuilleni ja kokeilin. Itse en älynnyt mitä pitäis tehdä voiskos joku pro auttaa.
editoitu: 16:00 15.2.05
Kryil 15:57 15.2.05 
kinnupa1, ensinnäkin, on laitonta laittaa omille nettisivuilleen telkku.com:ista kopioitua tietoa. Tämän scriptin tarkoitus on hakea ne omaan käyttöön itselleen. Eli älä hostaa tätä muille kuin itsellesi.

Toiseksi, muokkaamattomana tämä tulostaa *nix-konsoli-yhteensopivan tekstin värityksen, joka siis näyttää juuri tuollaiselta mössöltä kun sitä katselee pelkkänä tekstinä. Eikä se toimi muun sivun osana muokkaamattomana, koska ensimmäisenä se yrittää lähettää headereita. Näin siksi, että sitä voitaisiin ajaa myös nettisivun kautta, jos jollakulla ei sattuisi olemaan php-binääriä koneellaan.
Eli ajatus on, että teet shell-scriptin, joka ajaa tuon scriptin määritetyin aikavälein ja laitat sen konsoliin. Sellainen on jo esimerkissä.

Jos haluat ajaa tätä nettisivuna, tee seuraavanlainen shell-scripti ja aja sitä konsolissa:
#!/bin/bash

while [ 0 ]
do
clear
curl -s <sivun urli>
sleep 600
done

Ja luonnollisesti laitat tuon scriptin <?php-tagista ?>-tagiin yksinään omaan tiedostoonsa.
On ystävällistä nukkua pitkä tovi (tässä 10 minuuttia), jotta telkku.com:in kuorma ei kasvaisi suuriin mittoihin. Eivätkä ne tv-ohjelmat vaihdu minuutin välein.