Zegarynka i kalendarz to jakby podstawowe zadania, które Gerwazy może realizować. Znając dwa poprzednie wpisy łatwo to można wykonać.
Przy tej okazji weszła jedna istotna zmiana do funkcji GerwazySay – otóż funkcja dostaje dodatkowy parametr, którym jest numer wypowiedzi. Pozwoli to lepiej zorganizować pliki na serwerze (nr ten został dodany na początku nazwy pliku). Dodatkowo jest to identyfikator, który będzie wskazywał Gerwazemu co ma wypowiedzieć. W pierwszym założeniu Gerwazy miał otrzymywać tekst przesłany metodą GET (lub POST) ale w konsekwencji wyszło inaczej. Do samego silnika mogłem przez to przenieść funkcję synonimów i nie tylko co za chwilę zobaczycie.
Funkcja zegarka i kalendarza to będą dwie pierwsze wypowiedzi realizowane przez Gerwazego. Wystarczy odczytać ID z tablicy GET i w zależności od parametru utworzyć tekst. Przykład poniżej:
<?php if(isset($_GET['id']) && $_GET['id']+0>0){ if($_GET['id']+0==1){ // zegarek $wyp='{Jest godzina|Minęła godzina} '.date("H:i").'.'; }elseif($_GET['id']+0==2){ // kalendarz $mc=array(0=>'', 1=>'stycznia', 2=>'lutego', 3=>'marca', 4=>'kwietnia', 5=>'maja', 6=>'czerwca', 7=>'lipca', 8=>'sierpnia', 9=>'września', 10=>'października', 11=>'listopada', 12=>'grudnia' ); $wday=array(0=>'niedziela', 1=>'poniedziałek', 2=>'wtorek', 3=>'środa', 4=>'czwartek', 5=>'piątek', 6=>'sobota' ); $wyp='Dziś jest '.$wday[date('w')].', '.date('j').' '.$mc[date('n')].'.'; }elseif($_GET['id']+0>1000){ // tu można odtworzyć muzykę // a może uskutecznić jakieś radio? } } else { echo 'Co mam powiedzieć?'; exit; } ?>
Teraz już można wywołać zegarek z poziomu przeglądarki:
http://IP_RASPBERRY/gs.php?id=1
A tak oczywiście wywołamy kalendarz
http://IP_RASPBERRY/gs.php?id=2
Oczywiście zamiast „IP_RASPBERRY” należy podać IP swojego Gerwazego.
Całość skryptu wygląda teraz tak:
<?php if(isset($_GET['id']) && $_GET['id']+0>0){ if($_GET['id']+0==1){ // zegarek $wyp='{Jest godzina|Minęła godzina} '.date("H:i").'.'; }elseif($_GET['id']+0==2){ // kalendarz $mc=array(0=>'', 1=>'stycznia', 2=>'lutego', 3=>'marca', 4=>'kwietnia', 5=>'maja', 6=>'czerwca', 7=>'lipca', 8=>'sierpnia', 9=>'września', 10=>'października', 11=>'listopada', 12=>'grudnia' ); $wday=array(0=>'niedziela', 1=>'poniedziałek', 2=>'wtorek', 3=>'środa', 4=>'czwartek', 5=>'piątek', 6=>'sobota' ); $wyp='Dziś jest '.$wday[date('w')].', '.date('j').' '.$mc[date('n')].'.'; }elseif($_GET['id']+0>1000){ // tu można odtworzyć muzykę // a może uskutecznić jakieś radio? } } else { echo 'Co mam powiedzieć?'; exit; } $wyp=urlencode($wyp); GerwazySay($wyp,(isset($_GET['id'])?$_GET['id']+0:0)); function mieszaj($text=''){ if(preg_match_all("/{([^{}]*)}/", $text, $matches)){ foreach($matches[1] AS $key=>$match){ $do_zamiany=explode('|',$match); if(count($do_zamiany)>1){ $text=str_replace($matches[0][$key],$do_zamiany[rand(0,count($do_zamiany)-1)],$text); } } $text=mieszaj($text); } return $text; } # funcja GerwazySAY - TTS function GerwazySay($text='',$id=0){ $file="/mnt/gerwazy/".$id.'-'.md5($text); if(!is_file($file)){ $url="http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=".$text."&tl=pl"; exec('wget -q -U Mozilla -O '.$file.' "'.$url.'"'); } exec('/usr/bin/mplayer -ao alsa -really-quiet -noconsolecontrols "'.$file.'" > /dev/null',$out); } ?>
Kto spostrzegawczy na pewno zauważył do czego jeszcze można wykorzystać Gerwazego. Pomysłów może być wiele – w końcu Gerwazy to odtwarzacz mplayer 😉