Forum FAQForum FAQSearchSearch MemberlistMemberlist Forum ignore listForum ignore list RegisterRegister ProfileProfile Log in to check your private messagesLog in to check your private messages Log inLog in
TV parser source

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Server-side
View previous topic :: View next topic  
Author Message
collector



Joined: 07 Sep 2003
Posts: 38
Location: Phobos

PostPosted: 16.02.2004 00:00    Post subject: TV parser source Add user to your forum ignore list Reply with quote

Dajem na uvid kôd phaser servisa... nekima ce ovo biti vrlo zanimljivo..

Code:

#Ovak se otprilike poziva:
$p = new tvParser(3,14,0,",program","","","",
'$url=\'http://www.hrt.hr/htv/program/raspored/raspored.php?prog=\'.$kanalID.\'&dat=\'.date(\"ymd\",$date);');
$p->parsiraj();

class tvParser
{
   var $url;
   var $tempurl='temp.htm';
   var $dan;
   var $maxDana;
   var $kanalID;
   var $startString;
   var $endString;
   var $timezone;
   var $sljedeciDan=0;
   var $satPrije=0;
   var $ampm=array('','');
   var $izbaci=array();
   var $noEcho=false;
   
   function tvParser($kanalID,$maxDana, $timezone, $ampm, $startString, $endString, $izbaci, $url )
   {
      $this->kanalID=$kanalID;
      $this->maxDana=$maxDana;
      $this->startString=$startString;
      $this->endString=$endString;
      $this->izbaci=explode('#',$izbaci);
      $this->timezone=$timezone;
      $this->url=stripslashes($url);
      $this->ampm=explode('#',$ampm);
   }
   function parsiraj()
   {
      for($i=0; $i < $this->maxDana; $i++)
      {
         $date = mktime (0,0,0,date("m"), date("d")+$i , date("Y"));
         $dani=array("nedjelja","ponedjeljak","utorak","srijeda","cetvrtak","petak","subota");
         $kanalID=$this->kanalID;
         $this->dan=$i;
         //echo $this->url."<br>";
         eval($this->url);
         # $url='http://site.dot/raspored.php?prog='.$kanalID.'&dat='.date("ymd",$date);
         #$url='http://discoverycivilisation.co.uk/_listings/index.shtml?channel_code=DUCV&schedule_date='.date("Ymd",$date).'&language_code=ENG';
         if(!isset($url)) die('$url nije postavljen!');
         $this->skiniHtmlStranicu($url);
         $this->automat();
         $this->sljedeciDan=0;
         
      }
   }
   function skiniHtmlStranicu($url)
   {   
      if($this->noEcho) echo "  ".$url."\n";   else echo "<br><br>".$url;
      $fw=fopen($this->tempurl,'w');
      if(!$fw) die("Ne mogu pisati na ".$this->tempurl);
      if(!($fp=fopen($url,'r'))) { echo "...Faild"; return; } else echo "...Ok<br>";
      if(strlen($this->startString)>3) while(!feof($fp)) if(strpos(fgets($fp,256), $this->startString)!=false) break;
      while(!feof($fp))
      {
         $lin = fgets($fp,1024);
         fputs($fw, $lin);
         if(strlen($this->endString)>3) if(strpos($lin,$this->endString)!=false) break;
      }
      fclose($fw);
      fclose($fp);
   }
   function zamjeni_spec($nn)
   {
      return str_replace(array("&quot", "&nbsp", "&#8217", "&#8211"), array("\"", "", "'", "-"), $nn);
   }
   function znak($c)
   {
      if($c=='<') $z=0;
      else if($c=='>') $z=1;
      else if($c=='0' || $c=='1' || $c=='2' || $c=='3' || $c=='4' || $c=='5' || $c=='6' || $c=='7' || $c=='8' || $c=='9') $z=2; #broj
      else if($c==':' || $c=='.') $z=3;   # dijeljnjik hh i mm
      else if($c==' ' || $c=='   ') $z=4;   # razmak
      else if($c==';') $z=5;   #spec. znak
      else if($c=="Š" || $c=="š" || $c=="Ž" || $c=="ž") $z=6;  #šž
      else if($c>' ') $z=7;   #ostali znakovi
      else $z=8;   #neispravni znak
      return $z;
   }
   function automat()
   {
         #   <  >  B  :     ; šž  Z  x   # ulazni znak $c => $z
         #   0  1  2  3  4  5  6  7  8   
      $tab=array(   0, 1, 0, 0, 0, 0, 0, 0, 0,   # 0  odbaci()   
            0, 1, 3, 2, 8, 2,11, 2, 1,    # 1  odbaci()
            0, 1, 3, 2, 8,10,11, 2, 1,    # 2  z stavi()
            0, 1, 4, 5, 8,10,11, 2, 1,    # 3  B stavi()
            0, 1, 2, 5, 8,10,11, 2, 1,    # 4  BB stavi()
            0, 1, 6, 2, 8,10,11, 2, 1,    # 5  BB: stavi()
            0, 1, 7, 2, 8,10,11, 2, 1,    # 6  BB:B stavi()
            0, 1, 2, 2, 8,10,11, 2, 1,    # 7  BB:BB skini_vrijeme() skinit_text() dodaj()
            0, 1, 3, 2, 9, 2,11, 2, 9,   # 8  razmak stavi()
            0, 1, 3, 2, 9, 2,11, 2, 9,   # 9  razmak odbaci()
            0, 1, 3, 2, 8, 2,11, 2, 1,   #10  zamjeni_spec()
            0, 1, 3, 2, 8, 2,11, 2, 1   #11  zamjeni_šž()
            );
      $stanje=0;
      $fp=fopen($this->tempurl,'r');
      $buf=array();
      $hh='';
      $mm='';
      $text='';
      $time=array();      
   
      while(!feof($fp))
      {
         $c=fgetc($fp);
         $z=$this->znak($c);
         $stanje=$tab[$stanje*9 + $z];
         switch($stanje)
         {
            case '0':
            case '1':
               break;
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
               array_push($buf,$c);
               break;
            case '7':
               $mm=array_pop($buf).$c;
               array_pop($buf);
               $hh=array_pop($buf);
               $hh=array_pop($buf).$hh;
               $text=trim(implode($buf));
               if(isset($time[0])) $this->dodaj($time[0],$time[1],$text);
               $time[0]=$hh;
               $time[1]=$mm;
               $buf=array();
               break;
            case '8':
               array_push($buf,' ');
               break;
            case '9':
               break;
            case '10':
               $n=count($buf);
               
               if($buf[$n-5]=='&') $m=-5; else if($buf[$n-6]=='&') $m=-6; else $m=0;
               if($m!=0)
               {
                  $spec_arr=array_splice($buf,$m);
                  $spec=$this->zamjeni_spec(implode($spec_arr));
                  array_push($buf,$spec);
               } else array_push($buf,$c);
               break;
            case '11':
               $c=str_replace(array("Š", "š", "Ž", "ž"), array("?", "ą", "?", "ľ"), $c);
               array_push($buf,$c);
               break;
         }
      }      
   }
   
   function dodaj($h,$m,$t)
   {
      if( strlen($this->izbaci[0])>2)
         foreach($this->izbaci as $iz)
            $t=str_replace($iz,";", $t);
      if(($k=strpos($t,'----'))!=null) $t=substr($t,0,$k);
      if(($k=strlen($this->ampm[0]))>0)
      {
         if(substr($t,0,$k)==$this->ampm[0]) { $t=substr($t,$k+1); if($h==12) $h=0; $h+=12; } else
         if(substr($t,0,$k)==$this->ampm[1]) { $t=substr($t,$k+1); if($h==12) $h=0;  }
      }

      $h+=$this->timezone;
      if($h<0) $h+=24;
      if($h < $this->satPrije && $this->sljedeciDan==0) $this->sljedeciDan=1;
      $this->satPrije=$h;

      $date=date("Y-m-d H:i:s",mktime ($h,$m,0,date("m"), date("d")+$this->dan+$this->sljedeciDan , date("Y")));
      if(!$this->noEcho) echo $date." ".$t."<br>";
      $kanalID=$this->kanalID;
      $t=addslashes(trim($t));
      $query = "INSERT INTO phaser_program(kanalID,vrijeme,tekst) VALUES($kanalID,'$date','$t')";
      $result = mysql_query($query) or die ("Error in query: $query. " .mysql_error());   
   }
   function noecho()
   {
      $this->noEcho=true;
   }
}


...(c) Mr. Green

_________________
Kowach
Back to top
View user's profile Send private message
collector



Joined: 07 Sep 2003
Posts: 38
Location: Phobos

PostPosted: 16.02.2004 00:05    Post subject: xml Add user to your forum ignore list Reply with quote

novi projekt...

http://tv.srk.fer.hr/servisxml.php?kanalID=1_2_5_15_16

kanali idu id 1 do 16 zasad...

http://tv.srk.fer.hr/servisxml.php

_________________
Kowach
Back to top
View user's profile Send private message
njava
mi3.crew


Joined: 25 Aug 2003
Posts: 624
Location: Zagreb

PostPosted: 16.02.2004 11:46    Post subject: Add user to your forum ignore list Reply with quote

jel to mora tak komplicirano?
ajde par rijeci o automat()-u
Back to top
View user's profile Send private message Visit poster's website
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 16.02.2004 12:28    Post subject: Add user to your forum ignore list Reply with quote

No hard feelings, ali daj pročitaj koju o urednom pisanju koda.

Struktura koda ti je očajna. Nečitka.

Gdje su ti komentari?

Dobar kod mogu razumjeti svi, loš kod samo onaj tko ga je napisao, a i to je upitno:)

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
carr



Joined: 13 Nov 2003
Posts: 1397
Location: Karlovac

PostPosted: 16.02.2004 14:37    Post subject: Add user to your forum ignore list Reply with quote

edgar wrote:
No hard feelings, ali daj pročitaj koju o urednom pisanju koda.

Struktura koda ti je očajna. Nečitka.

Gdje su ti komentari?

Dobar kod mogu razumjeti svi, loš kod samo onaj tko ga je napisao, a i to je upitno:)


slazem se glede ovih komentara, poceo sam u zadnje vrijeme sve komentirat, jer kad ces ovo citati za mjesec dana neces imati pojma sta ti neki blokovi koda rade...

makar ovo zadnje je imho bezveze, sta sad znaci da ti "dobar kod mogu razumjeti svi", dobar kod je onaj koji radi dobro, a komentari su tu iskljucivo za tebe.

_________________
Bolje biti malo lud, nego malo pametan.
Back to top
View user's profile Send private message Visit poster's website
njava
mi3.crew


Joined: 25 Aug 2003
Posts: 624
Location: Zagreb

PostPosted: 16.02.2004 15:55    Post subject: Add user to your forum ignore list Reply with quote

carr wrote:
makar ovo zadnje je imho bezveze, sta sad znaci da ti "dobar kod mogu razumjeti svi", dobar kod je onaj koji radi dobro, a komentari su tu iskljucivo za tebe.


pa i ovaj kod dobro radi...

Code:
#!/usr/bin/perl -w
    $sea          =
q          <         _ _ _
                ,="`/ / /'=.
  O            / / / / / / /\,
        O     /_/_/_/_/ / /,^'      _.=//
     o     .-' - _ - _ -`"-,/-/\  /`_,=.'
   o      / -_ - _ -,_ - _ -\/.\|/_,=`^'
     o   / @    _'"`} _- _- ,\.='_. ^",
        /     -'_-'} - _  - _ -=--_'=;
        \-,   "=._}          ;._--_-_;
%        `-._     .~        /;' \ `"=.;
sea          `"\`;-.}_ _ _.;\ \/ \'=._\
=('`'           \ =.}\ \ \ \ \'   '._=_.\
,10,'='          \_}`=._\_\.'`       '=.\
,5,'\\\'x4,4                                  ,_,3,'
".',2,'/}',1,'                               -',-1,'
|',-2,';',-4,'~',-9);map{$sea=ord'a';map{$.=$_;map{$
sea+=$sea{$_}if$.=~/[$_]/}keys%sea;$,.=$"if/\^/}spli
t//;$,.=chr$sea;die"$,$/"if/~/;}split/[,']/,$sea>;$_
=$sea;s;[^%]+%;%;s;s;\s+[`\\].*|\s+;;g;eval;print$@;
Back to top
View user's profile Send private message Visit poster's website
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 16.02.2004 16:19    Post subject: Add user to your forum ignore list Reply with quote

carr I think njava made my point Cool

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
collector



Joined: 07 Sep 2003
Posts: 38
Location: Phobos

PostPosted: 16.02.2004 16:37    Post subject: Add user to your forum ignore list Reply with quote

pa kôd je dost jednostavan s moje strane, pa mi ni netreba previse komentiranja Smile
a inace bas i nemam osjecaja za lijep kôd.

automat()
imamo tablicu stanja i prijelaza $tab, ulazne znakove, koje kategoriziramo u 9 skupina (<,>,broj,dvotocka ili tocka,...) i na osnovi ulaznog znaka i trenutnog stanja prelazimo u sljedece stanje.. za svako stanje definirana je akcija
stavi() - stavi znak na stog,
odbac() - odbaci znak
skini_vrrijeme(), pa skin_savi_text() sa stoga
i dodaj_par(vrijeme,text_prethodni) u bazu..

niti mi neide bas dobro objasnjavanje koda... Smile

_________________
Kowach
Back to top
View user's profile Send private message
ivan



Joined: 08 Sep 2003
Posts: 320
Location: Zagreb

PostPosted: 16.02.2004 18:24    Post subject: Add user to your forum ignore list Reply with quote

Šta ste sad skočili na čovjeka, on je napisao skriptu koja radi, i njegova dobra volja je to što je htio pokazati svima kako je on to napravio i ako nekome nešto ne bude jasno, siguran sam da će mu objasniti.

A stvarno ne znam zašto bi se bilo tko drugi morao moći snalaziti po mojoj skripti ako je meni sve jasno i pregledno (osim u posebnim situacijama)

Stvarno se neću truditi pisati nešto posebno uredan kod, da bi se netko drugi mogao snalaziti u njemu (osim, naravno, u posebnim slučajevima)

_________________
no ojro
Back to top
View user's profile Send private message Visit poster's website
carr



Joined: 13 Nov 2003
Posts: 1397
Location: Karlovac

PostPosted: 16.02.2004 18:35    Post subject: Add user to your forum ignore list Reply with quote

njava wrote:

pa i ovaj kod dobro radi...

Code:
#!/usr/bin/perl -w
    $sea          =
q          <         _ _ _
                ,="`/ / /'=.
  O            / / / / / / /\,
        O     /_/_/_/_/ / /,^'      _.=//
     o     .-' - _ - _ -`"-,/-/\  /`_,=.'
   o      / -_ - _ -,_ - _ -\/.\|/_,=`^'
     o   / @    _'"`} _- _- ,\.='_. ^",
        /     -'_-'} - _  - _ -=--_'Speak to the hand
        \-,   "=._}          ;._--_-_;
%        `-._     .~        /;' \ `"=.;
sea          `"\`;-.}_ _ _.;\ \/ \'=._\
=('`'           \ =.}\ \ \ \ \'   '._=_.\
,10,'='          \_}`=._\_\.'`       '=.\
,5,'\\\'x4,4                                  ,_,3,'
".',2,'/}',1,'                               -',-1,'
|',-2,';',-4,'~',-9);map{$sea=ord'a';map{$.=$_;map{$
sea+=$sea{$_}if$.=~/[$_]/}keys%sea;$,.=$"if/\^/}spli
t//;$,.=chr$sea;die"$,$/"if/~/;}split/[,']/,$sea>;$_
=$sea;s;[^%]+%;%;s;s;\s+[`\\].*|\s+;;g;eval;print$@;


lijepa riba Smile
ne kuzim, ocete reci da ovaj collectorov kod nije dobar jer nema komentara?

jos u pocetku sam se slozio da je dobra praksa komentirat kod....pogotovo dugorocno...ali ne znaci da zato to nije dobar kod.

_________________
Bolje biti malo lud, nego malo pametan.
Back to top
View user's profile Send private message Visit poster's website
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 16.02.2004 20:57    Post subject: Add user to your forum ignore list Reply with quote

ma i carr i ivan su sad fulali misao:(

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
njava
mi3.crew


Joined: 25 Aug 2003
Posts: 624
Location: Zagreb

PostPosted: 16.02.2004 21:30    Post subject: Add user to your forum ignore list Reply with quote

ajmo ovak, kaj ce svatko od nas radit u svojoj prciji (ili u svom kodu), to se fakat nikog ne tice i tu se slazem.

kaj se desava kad se pojavi potreba za:
- timskim radom?
- odrzavanjem / nadogradnjom necije tudje salate?

da ne spominjem da je bilo koji imalo ozbiljniji projekt pisan tom logikom unaprijed osudjen na dizaster. kaj kad aplikacija naraste preko 100.000 linija koda?

onda se pojave komentari u stilu: dobra je aplikacija, radi i sve... al nemoj puhat...
Back to top
View user's profile Send private message Visit poster's website
carr



Joined: 13 Nov 2003
Posts: 1397
Location: Karlovac

PostPosted: 16.02.2004 22:06    Post subject: Add user to your forum ignore list Reply with quote

njava wrote:
ajmo ovak, kaj ce svatko od nas radit u svojoj prciji (ili u svom kodu), to se fakat nikog ne tice i tu se slazem.

kaj se desava kad se pojavi potreba za:
- timskim radom?
- odrzavanjem / nadogradnjom necije tudje salate?

da ne spominjem da je bilo koji imalo ozbiljniji projekt pisan tom logikom unaprijed osudjen na dizaster. kaj kad aplikacija naraste preko 100.000 linija koda?

onda se pojave komentari u stilu: dobra je aplikacija, radi i sve... al nemoj puhat...


ok. a dali je ovaj tu gospodin radio nesto u svojoj prciji ili timski rad? Smile
i da li to onda umanjuje cinjenicu da je ovo ipak dobar program (iako je neuredno iskodiran)?

(da ponovim vec 3 put, nacelno se slazem, ali ona edgarova da nije dobar kod onaj koji netko drugi ne moze citat mi jednostavno ne sjeda..)

_________________
Bolje biti malo lud, nego malo pametan.
Back to top
View user's profile Send private message Visit poster's website
_butch



Joined: 10 Sep 2003
Posts: 870
Location: Maichno, Krlovc

PostPosted: 16.02.2004 23:10    Post subject: Add user to your forum ignore list Reply with quote

osobno si komentiram kod, i to masni komentari prije neke funkcije..

Slazem se da bi se trebalo komentirati, ali covjek zna sta mu sta radi i ne treba digati veliku galamu oko toga.
ALI ako zeli pouditi svoj kod siroj javnosti, onda barem neki komentari bi trebali postojati Smile Very Happy reda radi..
Rolling Eyes

_________________
FRENCH GUARD: No chance, English bed-wetting types.
I burst my pimples at you and call your door-opening request a silly thing, you tiny-brained wipers of other people's bottoms!
Flikrac
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Server-side All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group