Telesaated – FHEMWiki (2023)

Kahjuks ei ole praeguste telesaadete hankimine FHEM-is nii lihtne. Üksikud teenusepakkujad ei paku sobivaid liideseid ühegi ringhäälinguorganisatsiooni praeguste telesaadete hõlpsaks lugemiseks ja kuvamiseks. Kuid mõne nipiga see siiski töötab.

Selleks on mitu meetodit:

  • Lihtsamal juhul manustatakse FHEM-i veebiliidesesse iframe. Mõned pakkujad pakuvad isegi isikupärastatud juurdepääsu, et saaksite luua ülevaate just soovitud kanalitest.
  • FHEM installatsiooni on võimalik laadida spetsiaalses xmltv formaadis EPG andmed (6-7 päeva programm kaasas), seda XML faili sõeluda ja siis FHEM-is kuvada nt. lugemistabelid.
  • Linuxi ja Windowsi jaoks on saadaval tööriistad, mille abil saab kraapida erinevate teleteenuste pakkujate lehti ja luua XML-faili xmltv-vormingus (sisaldab olenevalt pakkujast 1-14 päeva saateid). Üks kuulsamaid esindajaid on WebGrab++. Seda XML-faili saab seejärel FHEM-i tagasi lugeda ja kuvada, näiteks lugedes tabelit. Andmete parsimise liiklus on väga suur, seega eelistatakse ülaltoodud meetodit.
  • Mõned veebisaidid hostivad telesaateid RSS-vormingus. Samuti on olemas võrgupõhised RSS-st JSON-i teisendusteenused. Kui nüüd need kaks kombineerida, saate httpmodiga kogu teema lugeda vaid mõne reaga.
  • httpmodi abil saate sirvida oma TV-teenuse pakkuja veebisaiti ja eraldada FHEM-i jaoks vajalikud andmed. See meetod on väga ebasoovitav, kuna see tähendab tohutut liiklust nii teile kui ka teenusepakkujale. Seetõttu seda meetodit siin ei kirjeldata.

Sisu

  • 1 Wariant 1 (iframe):
  • 2 Variant 2 (laadige alla EPG andmed):
    • 2.1 Ettevalmistused:
      • 2.1.1 Puuduvate Perli moodulite installimine:
      • 2.1.2 Looge allalaadimistee ja tagage sobivad load:
      • 2.1.3 99_myUtils.pm laiendus:
      • 2.1.4 Looge virtuaalne seade:
      • 2.1.5 Perli skripti seadistamine:
      • 2.1.6 Seadmele sisseehitatud:
    • 2.2 Sisestage virtuaalseadme andmed:
    • 2.3 Loo lugemistabel:
  • 3 Variant 3 (looge ise EPG andmed):
    • 3.1 Ettevalmistused:
    • 3.2 EPG andmete vastuvõtmine ja töötlemine:
    • 3.3 WebGrab++ integreerimine crontabiga:
  • 4 Variant 4 (lugege RSS-kanalit):
    • 4.1 Looge rssFeed seade:

Wariant 1 (iframe):

määrake wl_TV Interneti-ühenduse iframeattr wl_TV htmlattr width="1024" height="768"

See atribuut määrab iframe'i suuruse ja seda saab vastavalt vajadusele kohandada.

Variant 2 (laadige alla EPG andmed):

See lähenemisviis on veidi keerulisem, kuid siiski lihtne rakendada.

reedel:

Installige puuduvad Perli moodulid:

sudo apt-get install libxml-bare-perl libdatetime-perl wget xz-utils

XML-failide sõelumiseks on vaja kahte esimest teeki. Failide allalaadimiseks on vaja wget-i, xz sisaldab tööriista allalaaditud failide ekstraktimiseks.

Looge allalaadimistee ja andke sobivad load:

sudo mkdir /opt/fhem/tv sudo chown fhem:dialout /opt/fhem/tv

Wgetiga alla laaditud XML-fail peaks hiljem selles kataloogis olema.

Juurutage 99_myUtils.pm:

Selle koodi saab lihtsalt lõikelauale kopeerida ja kleepida faili 99_myUtils.pm.

sub rgUnfold($$){ 我的($seade, $lugemine) = @_;我的 $pealkiri = ReadingsVal($seade, $lugemine.'pealkiri', 'sees');我的 $desc = ReadingsVal($ συσκευή, $reading.'pealkiri', 'sees')."\n\n"。 ReadingsVal($device, $reading.'desc', 'sees'); $title =~ s/(.{1.45}|\S{46,})(?:\s[^\S\r\n]*|\Z)/$1
/G; $desc =~ s/
/\n/g; $desc =~ s/(.{1,65}|\S{66,})(?:\s[^\S\r\n]*|\Z)/$1
/G; $desc =~ s/[\r\'\"]/ /g; $desc =~ s/[\n]|\\n/
/G; TAGASI "".$title."";}

Looge virtuaalne seade:

Seda seadet kasutatakse andmete salvestamiseks. Järgmised 3 saadet ja 3 päeva parima aja programmi salvestatakse alati siia vihjetena.

Määratlege dmy_TV virtuaalne objekt

Perli skripti seadistamine:

Kopeerige järgmine kood faili tv.pl ja kopeerige see kausta /opt/fhem/tv/tv.pl:

#!/usr/bin/perluse range? kasutada hoiatusi, kasutada utf8; kasutuskuupäev::analüüs; kasuta Kodeeri qw(encode_utf8decode_utf8); kasuta XML::Bare 0.53 qw(forcearray); kasutusandmed::kallur; minu $channelFilter = qr/^(?:ARD\.|ZDF\.|Sat1\.|RTL\.|RTL2\.|Pro7\.|DMax\.|Vox\.|Cable\.|CableEinsClassic\.| KabelEinsDoku\.|ntv\.|ProSiebenMaxx\.|Sixx\.|TLC\.|N24Doku\.|SonyEntertainmentTV\.|AandE\.|TNTSerie\.|AnimalPlanet\.|Historia\.|Kinowelt\.\HD\|NatGeo ..|PLANET\ .|Silver Line\.|13thStreet\.|AXN\.|ulme\.|TNTFilm\.)/;minu $timeAdjust = 0;#minu $kanalifilter = qr/^(?:ARD| ZDF $|SAT\ 1|RTL$|RTL II|PRO 7|DMAX|VOX|CABLE 1|13th Street|Animal Planet|Silverline|TNT Film|N24|kaabel eins classics|ProSieben MAXX|Syfy|AE|TLC|AXN | sixx|Kinowelt TV |Ajalugu)/;#my $timeAdjust = 86400;# Sisemine muutuja my $timepiece = 0;eval "use Time::Piece";$timepiece = 1 if (!$@);sub xmltv2epoch($ ) { minu $t = Transport; if (1 == $watch) { return Time::Piece->strptime($t, '%Y%m%d%H%M%S %z')->epoch; } else { substr ( $t , 8 , 0 ) = 'T' ; return str2time($t); }}sub FmtDateTime($){ minu @t = localTime(shift); return sprintf("%04d-%02d-%02d % 02d:%02d:%02d", $t[5]+1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0]); }sub filterText($){ Minu $tekst = nihe; $tekst =~ s/["`;'\r]//g; $tekst =~ s/[\n]/
/σολ; return $text;}sub tvParse($;$){ minu ( $seade, $režiim) = @_; minu $obj = XML::Bare->new(fail => '/opt/fhem/ tv /rytecDE_Basic'); minu $xml = $obj->parse(); minu $lastChannel = ''; minu $lugemine = ''; $i μου = 0; minu $n = 0; minu $k = 0; minu $primeTime = substr(FmtDateTime(time() + $timeAdjust), 0, 11 ).'20:14:00'; minu $sendTelnet = ''; if (!$@) { minu $vana = aeg() + $timeAdjust; foreach (@{forcearray($xml->{'tv'} {'programm'})}) { if ($_->{'channel'}{' value'} =~ $channelFilter) { my $stop = xmltv2epoch($_->{'stop'}{'value' }); # φιλτράρετε παλιό περιεχόμενο if ($stop > $old) { if ($lastChannel ne $_->{'channel'}{'value'}) { $last'->{'channel = kanal $_last'->{'Channel }; $lugemine = $_->{'kanal'}{'väärtus' }; $lugemine =~ s/[\. \s]//g; $lugemine =~ s/de$//; i = 0; $n = 0; } if ($i < 3 && (!define ($mode) || 'next' eq $mode)) { my $fi = sprintf("%03d", $i) ; my$start = xmltv2epoch($_->{'start'}{'value' });My$readingName;My$readingValue;$ReadingName = 'järgmine_'.$lugemine.'_'.$fi.'_bdate' ; $lugemisväärtus = substr(FmtDateTime($start), 0, 10); $sendTelnet .= ";seadista $device $readingName $readingValue" ; $readingName = 'järgmine_'.$lugemine.'_'.$fi.'_btime'; $readingValue = substr(FmtDateTime($start), 11, 8 ); $sendTelnet .= ";seadista $device $readingName $ReadingValue"; #$readingName = 'järgmine_'.$lugemine.'_'.$fi.'_edate'; #$readingValue = substr(FmtDateTime($stop) , 0, 10); #$sendTelnet .= ";seadista $device $readingName $readingValue"; #$readingName = 'järgmine_'.$lugemine.'_'.$fi.'_etime'; #$readingValue = substr( FmtDateTime($stop), 11, 8); #$sendTelnet .= ";seadista $device $readingName $readingValue"; $readingName = 'järgmine_'.$lugemine.'_'.$fi.'_title'; $readingValue = filterText(@{forcearray($_->{'title '})}[0]->{'value'}); $sendTelnet .= ";seadista $device $readingName $readingValue"; $readingName = 'järgmine_ '.$lugemine.'_'.$fi.'_stitle '; if (υπάρχει($_->{'alapealkiri'}{'väärtus'})) { $readingValue = filterText($_->{'alapealkiri' }{'väärtus'}); } else { $readingValue = 'sees'; $sendTelnet .= ";seadista $device $readingName $readingValue"; $readingName = 'järgmine_'.$lugemine.'_'.$fi. '_desc'; if (υπάρχει($_->{'desc'}{'value'})) { $readingValue = filterText($_->{'desc'}{'value'}); } else { $readingValue = 'sees'; $sendTelnet .= ";seadista $device $readingName $readingValue"; $i++; $k++; } if ($n < 3 && (!define($mode) || 'prime' eq $mode )) { my $start = xmltv2epoch($_->{ 'start'}{'value'}); minu $fmtStart = FmtDateTime($start); minu $bdate = substr($fmtStart, 0, 10 ); minu $btime = substr($fmtStart, 11, 8); if ($bdate.' '.$btime gt $primeTime) { minu $fn = sprintf("%03d", $n); το $readingName μου; $readingValue μου; $readingName = 'prime_'.$reading.'_'.$fn.'_bdate'; $lugemisväärtus = substr(FmtDateTime($start), 0, 10); $sendTelnet .= " ;seadista $device $readingName $readingValue"; $readingName = 'prime_'.$reading.' _'.$fn.'_btime'; $lugemisväärtus = substr(FmtDateTime($start), 11, 8); $sendTelnet . = ";seadista $device $readingName $readingValue"; #$readingName = 'prime_'.$reading.'_'.$fn.'_edate'; #$readingValue = substr(FmtDateTime($stop), 0, 10) ; #$sendTelnet .= ";seadista $device $readingName $readingValue"; #$readingName = 'prime_'.$reading.'_'.$fn.'_etime'; #$readingValue = substr(FmtDateTime($stop) , 11, 8); #$sendTelnet .= ";seadista $device $readingName $readingValue" ; $readingName = 'prime_'.$reading.'_'.$fn.'_title'; $readingValue = filterText(@{forcearray($_->{'title'})}[0]->{'value'}); $sendTelnet .= ";seadista $device $readingName $readingValue"; $readingName = 'prime_'.$lugemine. '_'.$fn.'_stitle'; if (υπάρχει($_->{' subtitle'}{'value'})) { $readingValue = filterText($_->{'subtiitle'}{'value' }); } else { $readingValue = 'sees'; $sendTelnet .= ";seadista $device $readingName $readingValue"; $readingName = 'prime_'.$reading.'_'.$fn.'_desc'; if (υπάρχει($_->{'desc'}{'value'})) { $ ReadingValue = filterText($_->{'desc'}{'value'}); } else { $readingValue = 'sees'; $sendTelnet .= ";seadista $device $readingName $readingValue"; $n++; $k++ ; } } if ($k >= 10) { #system('/opt/fhem/fhem.pl 7072 "'.$ sendTelnet.'"'); minu $result = `perl /opt/fhem/fhem.pl 7072 "$sendTelnet"`; $k = 0; $sendTelnet = ''; } } } } if ('' ne $ sendTelnet) { #system('/opt/fhem/fhem.pl 7072 "'.$sendTelnet. '"'); Το $result μου = `perl /opt/fhem/fhem. pl 7072 "$sendTelnet"`; } }}sub tvMerge($$){ minu($dstName, $srcName) = @_; $fh μου; $dst μου; $src μου; minu $start = ''; minu $kanalid1 = ''; minu $kanalid2 = ''; minu $programmid1 = ''; minu $programmid2 = ''; minu $end = ' '; open($fh, '<', $dstName) ή die" Δεν είναι δυνατό το άνοιγμα του αρχείου $!" loe($fh, $dst, -s $fh); κλείσιμο ($fh); open($fh, '<', $srcName) ή "Δεν μπορώ να ανοίξω το αρχείο $!"; loe($fh, $src, -s $fh); κλείσιμο ($fh); if ($dst =~ /^(.*?)< κανάλι/α) { $start = $1; } if ($dst =~ /<\/programm>(?!.*<\/programm>)(.*)$/s) { $end = $1; } ενώ ($dst =~ /(\s*)/sg) { $kanalid1 .= $1; } while ($dst =~ /(\s*)/sg) { $programms1 .= $1; } while ($src =~ /(\s*)/sg) { $kanały2 .= $1; } while ($ src =~ /(\s*)/sg) { $programms2 .= $1; } open($fh, '>', $dstName) or die "Faili $ ei saa avada!"; print $fh $start.$channels1.$channels2.$programms1.$ programmes2.$end;close($fh);}sub tvDownload(){ # Muud serverid # http://www.xmltvepg.nl/rytecDE_Basic.xz # http://91.121.106.172/~ryteepg/epg_data/rytecDE_Basic. xz # http://91.121.106.172/~rytecepg/epg_data/rytecDE_Basic.xz # http://www.vuplus-community.net/rytec/rytecDE_Common.xz # http://www.xmltvepg.nl/rytecDE_Common.xz # http://91.121.106.172/~rytecepg/epg_data/rytecDE_Common.xz # http://www.vuplus-community.net/rytec/rytecDE_SportMovies.xz # http://www.xmltvepg.nl/rytecDE_SportMovies.xz http://91.121.106.172/~rytecepg/epg_data/rytecDE_SportMovies.xz minu $väljund = qx( wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xz -O /opt/fhem/tv /rytecDE_B .xz 2>&1); #minu $väljund = qx(wget http://192.168.178.100:8083/fhem/www/images/guide.xml -O /opt/fhem/tv/rytecDE_Basic 2>&1) ; # print $väljund; $väljund = qx(xz -df /opt/fhem/tv/rytecDE_Basic.xz 2>&1); #print $output;}sub tvDownloadMerge(){ # Muud serverid # http://www.xmltvepg. nl/rytecDE_Basic.xz # http://91.121.106.172/~ryteepg/epg_data/rytecDE_Basic.xz # http://www.vuplus-community.net/rytec/rytecDE_Common.xz # http://www.xmltvepg . /rytecDE_Common.xz # http://91.121.106.172/~ryteepg/epg_data/rytecDE_Common.xz # http://www .vuplus-community.net/rytec/rytecDE_SportMovies.xz # http://www.xmltvepg.n rytecDE_SportMovies.xz # http://91.121.106.172/~rytecepg/epg_data/rytecDE_SportMovies.xz minu $väljund = qx(wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xf -O/opt /rytecDE_Basic.xz 2>&1); #print $out; $väljund = qx(xz -df /opt/fhem/tv/rytecDE_Basic.xz 2>&1); #print $out; $väljund = qx(wget http://www.vuplus-community.net/rytec/rytecDE_Common.xz -O /opt/fhem/tv/rytecDE_Common.xz 2>&1); #print $out; $väljund = qx(xz -df /opt/ fhem/tv/rytecDE_Common.xz 2>&1); #prindi $tulemus; tvMerge('/opt/fhem/tv/rytecDE_Basic', '/opt/fhem/tv/rytecDE_Common');}my$d = shift || die "Seade on vajalik! \n"; minu $m = nihe || die "Mul on vaja funktsiooni! \n";# sõelumisrežiim: järgmine ja põhivärskendus # järgmine režiim: ainult järgmine värskendus # esmane režiim: esialgne värskendus if ('allalaadimine' equiv $m){ tvDownload() ;}elsif (' downloadMerge ' eq $m){ tvDownloadMerge();}elsif ("parse" eq $m){ tvParse($d);}else{ tvParse($d, $m);}väljund;


Peate andma kataloogile ja skriptile endale sobivad õigused:

sudo chmod 744 /opt/fhem/tv/tv.plsudo chown fhem:dialout /opt/fhem/tv/tv.pl

Kanalite loendit saab nüüd vajadusel skriptida.

Allalaadimine tuleb nüüd üks kord konsoolist alustada (mitte segi ajada FHEM-i käsureaga!), vastasel juhul peate mõne päeva ootama, et asjad toimiksid:

perl /opt/fhem/tv/tv.pl dmy_TV downloadMerge

Seejärel peab loodud fail /opt/fhem/tv/rytecDE_Basic olema varustatud vastavate õigustega:

sudo chown fhem:dialout /opt/fhem/tv/rytecDE_Basic

Loo seadmes:

Peate looma 3 "at" seadet. Üks allalaadimiseks (iga 3 päeva järel), üks virtuaalse seadme reaalajas andmete analüüsimiseks (iga 15 minuti järel) ja üks Primetime saadete analüüsimiseks (üks kord päevas). 3 "at" on kopeeritud esialgsete määratlustena ja neid saab reprodutseerida sellisel kujul. Selleks avage mis tahes seade, klõpsake allosas "Original Definition" ja kustutage kõik. Kleepige siit kood, käivitage see ja looge seade. Iga seade tuleb luua eraldi!

defmod at_TV_DOWNLOAD o *00:10:00 { if ((1 == $day) || (4 == $day)) { fhem("\"perl /opt/fhem/tv/tv.pl allalaadimine dmy_TVMerge\" ")}}
defmod at_TV_UPDATE kell +*00:15:00 "perl /opt/fhem/tv/tv.pl dmy_TV next"
defmod at_TV_UPDATE_PRIME o *00:15:00 "perl /opt/fhem/tv/tv.pl dmy_TV prime"

See lõpetab ettevalmistused!

Täitke virtuaalne seade andmetega:

Seda protsessi tuleb teha vaid üks kord ja tulemused on kohe näha, ei pea ootama 15 minutit.

seatud väärtusele_TV_UPDATE execNow

Lugemisrühma loomine:

Lõpuks peame looma 2 lugemisrühma, et praegust telesaadet saaks kuvada ka FHEM-is. Lugemisrühmad, nagu varemgi seadmete puhul, tuleb importida töötlemata sisendina! :

Hetkel voogesitus:

defmod rg_TV Lugemiste rühm,,,<|>,,,<|>,,\dmy_TV:<%tv/ard>,next_ARD_000_btime ,<{rgUnfold($DEVICE,'next_ARD_000_')}@next_ARD_000_title>,<|>,next_ARD_001_btime,<{rgUnfold ($_DEVICEn_,0}DEVICEn_0} <|>,next_ARD_002_btime,<{rgUnfold($ DEVICE,'next_ARD_002_')}@next_ARD_002_title>\dmy_TV:<%tv/zdf>,next_ZDF_000_btime,<{rgUnfold_NFICEτ0FextF@DVICEτ0,0V@FextF0} λος> ,< |> ,next_ZDF_001_btime,<{rgUnfold($设备,'next_ZDF_001_')}@next_ZDF_001_title>,<|>,next_ZDF_002_btime,<{rgUnfold'nF0extICE_D_2_d_ts > next_Sat1_000_btime,<{rgUnfold ($设备, 'next_Sat1_000_')}@next_Sat1_000_title>,<|>,next_Sat1_001_btime,<{rgUnext'Satd@ S o1_001_title>,<|>,następna_sobota_,järgmine_,000_sobota1 Sat1_002_')}@ next_Sat1_002_title>\dmy_TV: <%tv/rtl>,next_RTL_000_btime,<{rgUnfold($DEVICE,'next_RTL_000|Lext_>Next_RTL_000|Lext_>Lext_RTL_000__>Väike)} _001 _btime ,<{n'Rotz0_1 ,<{n'Rotz0_1 @next_RTL_001_title >,< |>,next_RTL_002_btime,<{rgUnfold($DEVICE,'next_RTL_002_')}@next_RTL_001_RTL_> RTL2_00 0_btime ,<{rgRozwiń($URZĄDZENIE,$URZĄDZENIE,_2___0_0_0标题> ,<|>,next_RTL2_001_btime,<{ rgUnfold($URZĄDZENIEL2_000_')RTL2_1_0}_1_0text@next@next >,<|>,next_RTL2_002 _btime,< {rgRozwiń($URZĄDZENIE, 'next_RTL2_002_2_RTL2_002m_2_RTL2_002_my_2 TV:<%tv /pro7>,next_Pro7_000_btime,< {rgUnfold($DEVICE,'next_RTL2_002_title)@0_ext_Pro7_> next_Pro7_001_btime,<{ rgRozwiń($URZĄDZENIE,” next_Pro7_001_')}@next_Pro7_001_')}@next_Pro7_001_')}@next_Pro7_001_') , <{rgUnfold($DEVICE,'next_Pro7_002\001_dle: next_Pro7_002\001_dle) max>,next_DMax_000_btime ,< {rgUnfold($URZĄDZENIE, 'next_DMax_000_')}@next_DMax_000_title>,<|>,next_DMax_DEfold旌<0Unfold_DEfold ,'järgmine_DMax_001_,'järgmine_DMax_001_,'järgmine_DMax_001_,_telg@ next_1_, DMax@next__> 002_btime,< {rgRozwiń($URZĄDZENIE ,'next_DMax_002_')} @next_DMax_002_title>\dmy_TV:<%tv/vox>,next_Vox_time,(0$0_Vox'Unfold Vox_000_')},@next_Vox_000_ ',@next_Vox_000_',@next_Vox_002_title>,@next_Vox_00,V00,ext_Vox| nfold($DEVICE, 'next_ Vox_001_')}@ next_Vox_001_title>,<|>,next_Vox_002_btime,<{rgUnfold($DEV)冰,” next_Vox_002_')}@next_Vox_002_')}@next_Vox_002_')}@next_Vox_001_tile>2\d_title0>d_my_title> kaTV:%_n_kaTV:% _n_katv: Ξεδιπλώστε ($ ΣΥΣΚΕΥΗ,'next_ Kabel_000_')} @next_Kabel_000_title>,<|>,next_Kabel_001. ')}@next_Kabel_001_001_Toit d($DEVICE,'next_Kabel_0 02_')}@ next_Kabel_002_title>\dmy_TV :<%tv/kabel1klassika>,next_KabelEinsClassic_000_btime,<{rgUnfold($DEVICE,' next_KabelEinsClassic_000_' )}@Ebel_0Classe,nextC1 ICE,'next _KabelEinsClassic_001_')}@next_KabelEinsClassic_001_title>,< | >,next_KabelEinsClassic_002_btime,<{rgUnfold($DEVICE) ,'next_KabelEinsClassic_002_')}@next_KabelEinsClassic_002_title>\ dmy_TV:<%tv/13th10 next0stret>,nexth10stret1 _')}@next_13thStreet_000_title>,<| >,next_13thStreet_001_btime,<{rgUnfold($DEVICE,'next_1 3thStreet_001_')}@next_13thStreet_001_title>,< |>,next_13thStreet_002_btime,<$DE_0th_0'th_0 }@next_13thStreet_002_title>\dmy_TV:<%tv/silverline >,next_Silverline_000_btime,<{rgUnfold($DEVICE,'next_Silverline_000 _')}@next_Silverline_000_title>,<| >,next_Silverline_001_btime,<{rgUnfold($ext_001)_illine_ex000 line_001_title>,<|>,next_Silverline_002_btime,< [ 01_btime,<{rgUnFilm_001_btime,<{rgUnFilm_001_btime ,<{rgUnFilm_001_btime,<{rgUnFilm_001_btime,<{rgUnFilm_001_btime,<{rgUnFilm_001_btime,<{rgUnFilm_001_btime,<{rgUnFilm_001_btime,<{rgUnFilm_001_bl_{01{0Filbl <{rgUnFilm_001_btime,<{rgUnFilm_001_btime,1. NTFilm _001_title >,<|> ,next_TNTFilm_002_btime,< {rgRozwiń ($DEVICE,'next_TNTFilm_002_')}@next_TNTFilm_002_title>\dmy_TV:<%tv/axn>,next_AXN_000V_AX_NICEN, Järgmine_0_|AXN_>Järgmine_0_|AXN_0} @ ,next_AXN_ 001_btime, < {rg展开( $DEVICE,'next_AXN_001_')}@next_AXN_001_title>,<|>,next_AXN_002_btime,<{rgUnfold($DEVICE($DEVICE) tle ext_SonyEntertainment TV_000_btime, <{rg展开( $ DEVICE,'next_SonyEntertainmentTV_000_')}@next_SonyEntertainmentTV_000_title>,<|>,next_SonyEntertainmentTV_001_btime,<{rgUnfold($DEVICE_S,'next_Sony'next_TV_000_>'next_Sony'next_TV_0,' < |>,next_SonyEntertainmentTV_002_b时间,<{rgUnfold( $DEVICE ,' next_SonyEntertainmentTV_002_') }@next_SonyEntertainmentTV_002_title>\dmy_TV:<%tv/kinowelt>,next_Kinowelt_000_btime,<{rgUnfold($DEVICE,'next_welt00,0_0_0_b_000,00t2| ,<{rgUnfold( $DE VICE,' next_Kinowelt_001_ ')} @next_Kinowelt_001_title>,<|>,next_Kinowelt_002_btime,<{rgUnfold($DEVICE,'next_Kinowelt_002_')}@next_Kinowelt_001_title>,<|>,next_DE,_rg_2,nex_ next_Kinowelt_002_')}@next_Kinowelt_001_title _ProSiebenMa xx_000_btime,<{rgUnfold ($DEV ICE,' next_ProSiebenMaxx_000_')}@ next_ProSiebenMaxx_000_title>,<|>,next_ProSiebenMaxx_001_btime,<{rgUnfold($DEVICE,00tProSiebenMaxx_000_00tProSiebenMaxx_000_'ie) benMaxx_001_>,001_Maxx_001_>| >,next_ProSiebenMaxx_00 2_btime,<{rgUnfold($DEVICE, 'next_ ProSiebenMaxx_002_')}@ next_ProSiebenMaxx_002_title>\dmy_TV:< %tv/sixx>,next_Sixx_,DE0{0_Sixx_0,DE0 _000__')_>0,0, 0,0,0,0,0,0,0,0,0,0,0,0,1,3,3. 01_btime,<{rgUnfold($DEVICE, 'ne xt_Sixx_001_')}@next_Sixx_001_title >,<|> , next_Sixx_002_btime,<{rgUnfold($DEVICE,'next_Sixx_002_NT_2}tv_xt_xtt2 le:t_Nttv/tmy_ntv/tmy _btime ,<{rgUnfold($DEVICE, 'next_TNTSerie_000_') }@next_TNTSerie_000_title > ,<|>,next_TNTSerie_001_btime ,<{rgUnfold($DEVICE,'next_TNTSerie_}@000_1) _TNTSerie_001_')}@next_TNTSerie_001_')} @next_TNTSerie_001_> _btime,<{rgUnfold($DEVICE,'next_TNTSerie_002_')}@ next_TNTSerie_ 002_title>\dmy_TV:<%tv /syfy>,next_科幻_000_0ICES'Fitime,_t ')}@ next_SciFi_000_title>,__|>Avake lahti{000_text 'next_SciFi_001_ ')}@next_ SciFi_001_title>,<| >,next_SciFi_002_btime,<{ rgUnfold($DEVICE ,'next_SciFi_002_')}@next_SciFi_002_title>\dmy_TV:<%tv/ntv>,next_ntv_000_Vtime,λτ_0ntv}λτ_0ntv ος>,<| > ,next_ntv_001_btime,<{rgUnfold ($设备, 'next_ntv_001_')}@next_ntv_001_title>, <|>,next_ntv_002_btime,<{rgUnfold > , next_N24Doku_000_btime,<{ rgUn折叠($DEVICE,' next_N24Doku_000_')}@next_N24Doku_000_title>,<|>,next_N24Doku_001_btime,<{0}DE_VICE,(40}N)Next0}ext0_2_4 tle>,<|>,next_N24Doku_002_bczas,< {rg展开($DEVICE,'next_N24Doku_002_')}@next_N24Doku_002_title >\dmy_TV:<%tv/history>,next_History_000_btime,<{rgUnfold($DEVICE,'next_N24Doku_002_0)_nextH_0 | ,next_History_001_btime,< {rgRozwiń ($ DEVICE,'next_History_001_')}@next_History_001 _标题> ,<|>,next_History_002_btime,<{rgUnfold($DEVICE,'next_History_002_History_002_Histlet0,LAN_002_Histlet0) _000_bczas, <{ rgUnfold($DEVICE,'next_PLANET_000_')}@ next_PLANET_ 000_标题>, <|>,next_PLANET_001_btime,<{rgUnfold($DEVICE,'next_PLANET_001_000_,'next_PLANET_001_|PLANE_0,extle_PLAN_PLAN_0,extle_PLANET_00,extle le_PLANET_0,extle_PLANET_0_PLANET_0,extle_0_PLANET_>@ _002_btime,<{ rgRozwiń($ URZĄDZENIE,' next_PLANET_002_')}@next_PLANET_002_title>\dmy _TV:<%tv/ kabel1doku>,next_KabelEinsDoku_000_btime,<{rgUnfold(nEext'0ku_0}, belEinsDoku_0ku_0}, belEinsDoku_0ku_00,1tkbel_00,1ts0| _btime,<{ rgUnfold($ URZĄDZENIE,'next_KabelEinsDoku_001_' )} @next_KabelEinsDoku_001_title>,<|>,next_KabelEinsDoku_002_btime,< {rgUnfold($URZĄEinsDoku_Kext) abelEinsDoku_002_title>\dmy _TV:Tv0000000000000_ext. { rgUnfold($DEVICE ,'next_AnimalPlanet_000_')}@next_AnimalPlanet_000_标题>, <|>,next_AnimalPlanet_001_btime,<{ rgUnfold($DEVICE,'next_AnimalPlanet_000_标题>,<|>,next_AnimalPlanet_001_btime,<{ rgUnfold($DEVICE,'next_AnimalPlanet'nimal_plant ,<|>,ne xt_AnimalPlanet_002_btime,< {rgUnfold($ ΣΥΣΚΕΥΗ,'next_AnimalPlanet_002_' )}@next_AnimalPlanet_002_title>\dmy_TV:<%tv/nat geo>,next_NatGeoHD_000_bfold,0ext >,<|>,next_NatGeoHD_001_btime ,<{rgUnfold($ URL Τηλεόραση:<%tv/tlc>,next_TLC_000_btime,<{ rgUnfold($ URL nfold($DEVICE,'next_TLC_002_' )}@next_TLC_002_title:A,%d00_a_a aeg,<{rgUnfold($DEVICE, 'next_AandE_0 00_') }@next_AandE_000_title>,<_|Enfold (Enfold) _AandE_002_')} @next_AandE_002_title>attr rg_TV alias ' Promatcelles TV-_ > ' style="color: żółty;;text-align:center;;font-weight:bold;;"',\ 'r: 1,c:2' => 'style="颜色:黄色;;文本对齐:中心;;字体粗细:粗体;;"',\ 'r:1,c:3' => 'style="颜色:黄色;;;文本对齆;中嗭岆; , 'r:1, c:5' => 'style="颜色:黄色;;文本对齐:中心;; waga czcionki:pogrubiona;;"',\ 'r:1,c:6' => 'style="kolor:żółty;;text-align:center;;waga-czcionki:pogrubiona;;"',\ ' r :1,c:8' => 'style="颜色:黄色;;文本对齐:中心;;字体粗细:粗体;;"',\ 'r:1,c:9' => '样式kolor:żółty;;text-align:center;;font-weight:bold;;"'\}attr rg_TV 组电视节目mattr rg_TV nonames 1attr rg_TV style="font-size:16px;;"

Peaaeg näitab:

defmod rg_TV_PRIME lugemisgrupp,,,<|>,,,<|>,,<显示>\dmy_TV:<%tv/ard>,prime_ARD_000_btime, <{rgUnfold($DEVICE,'prime_ARD_000_')}@prime_ARD_000_title>,<|>,prime_ARD_001_btime,ICE @prime_ARD_0>,<{0-DE_tiUV_> ,prime_ARD_002_btime,<{rgUnfold($DEVICE) ,'prime_ARD_002_')}@prime_ARD_002_title>\dmy_TV:<%tv/zdf>,prime_ZDF_0005_btime(prime_ZDF_0005_btime(prime_ZDF_0005_btime(prime_ZDF_0005_DF)},,<|>,prime_ZDF_001_btime,prime_ZDF_001_D 02_')}@prime_ ZDF_002_title>:\<%prime_/001_at1,0TV_at <{rg Un折叠($DEVICE, 'prime_Sat1_000_ ')}@prime_Sat1_000_title>,<|>,prime_Sattime1_001_VICE 01_')}@prime_Sat1_001_title> ,< |>,prime_Sat1_002_Btime_Sat1_002_Btime,$prime'1'0 } @prime_Sat1_002_title >\dmy _TV:< %tv /rtl>,prime_RTL_000_btime,<{rg_UV0'RT@002_title L_000 _tytuł>, <|>,prime_RTL_001_btime,<{rgUnfold($DEVICE,'prime_RTL_001_') <<_>__01,RT_>RT_01_| 02_btime , <{ rgUnfold'0201_RTL_,prime_RTL_002 _τίτλος>\ dmy_TV: < %tv/rtl2>,prime_RTL2_000_btime,<{rgUnfold($DEVICE,'prime_RTL2_00>prime_RTL2_00 ,<| >,prime_RTL2_002_btime,<{rgUnfold($DEVICE,'prime_RTL2_002_')}@prime _RTL2_002_title>\dmy _TV :<%tv/ pro7>,prime_Pro7_000_btime,<{rgUnfold($DEVICE,'prime_RTL2_002_')) 2_002_title> \ dmy _TV :<%tv/ pro7>,prime_Pro7_000_btime,<{rgUnfold($DEVICE,"Prorime_RTL2_002_) 0 0_tytuł>, < ​​​​|>,prime_Pro7_001_btime,<{rgUnfold($DEVICE_Pro7_Pro7)}00ttime1_Protime1 > ,< | >,prime_Pro 7_002_btime,< {rgUnfold($DEVICE,'prime_Pro7_002_')}@prime_Pro7_002_title>\dmy_TV:<%tv/dmax>,prime_DMax_000_btime,<{rgUnfold_000_btime,<{rgUnfold" 01_btime , < { rgUnfold( $DEVICE,'prime_DMax_001_')}@prime_DMax_001_title>,<|>,prime_DMax_002_btime,<{rgUnfold($DEVICE,'prime2_0_DMax_001_title) 壳b_time,001>壳b_time <{rgUnfold ($DEVICE, ' prime_Vox_000_') }@prime_Vox_000_title>,<|>,prime_Vox_001_btime,<{rgUnfold($DEVICE,'prime_Vox_000_') prime_Vox _002_bczas,< { rg展_VICE,'0prime_2_}0 ox_002_title>\dmy_ TV:<% tv/kaabel1 >,prime_Kabel_000_btime,<{rgUnfold($DEVICE,'prime_Kabel_002_Title,prime_Kabel_00_>Kabel_00_>Kabel_00,prime_Kabel_000| _K abel_001_btime ,< { rg展开($DEVICE,'prime_Kabel_001_' ).ic_000_') }@prime_KabelEinsClassic_000_title>,<|>,prime_KabelEinsClassic_0'01Krg_bfold_0'01Krg_bfold_0'01 ic_001_Btime abelEinsClass ic_001_title>,<|> ,prime_KabelEinsClassic_002_btime ,<{ rgUnfold($ ΣΥΣΚΕΥΗ,'prime_Kabel EinsClassic_002_')}@prime_KabelEinsClassic_002_title>\dmy_TV :<%tv/13thstreet>,prime_13thStreet_000_bprime_3th1@Streth'1}Stret'1} eet _000_title > ,<|>, prime_13thStreet_001_btime,<{ rgUnfold($ URZĄDZENIE, 'prime_13thStreet_001_')}@prime_13thStreet_001_title>,<| >> 00 0_') }@prime_Silverline_000_title>,< | > ,prime_Silverline_001_btime,<{rgUnfold($DEVICE,'prime_Silverline_001_')}@prime_Silverline_001_title>,<|>,prime_Silverline_002_btime,<{ rgUnfold(_e_me_Prime_20_01_01) tle>\dmy _TV :<%tv/tntmovie > , prime_TNTFilm_000_btime , <{rgUnfold($DEVICE,'prime_TNTFilm_000_')}@prime_TNTFilm_000_title>,<|>,prime_TNTFilm_001_btime,<{rgUnfold_001_btime,<{rgUnfold($ICE_1)0NTFilm_0}Ftile_0} >,prime_ TNTFilm_002 _btime ,< { rgUnfold( $DEVICE,'prime_TNTFilm_002_')}@prime_TNTFilm_002_title>\dmy_TV:<%tv/axn>,prime_AXN_000_btime,<{rgUnfold($DEVICE,'prime_0,0_prime_AXN1) {r>b_0_prime_AXN) | ($DEVICE ,' prime_AXN_001_')}@prime_AXN_001_title>,<|>,prime_AXN_002_btime,<{rgUnfold($DEVICE,'prime_AXN_001_')prime_AXN_AXN_0 dmy_TV :{tain_brg0 fold ($ DEVICE ,'prime_SonyEntertainmentTV_000_') } @prime_SonyEntertainmentTV_000_title>,<|>,prime_SonyEntertainmentTV_000_title>,prime_SonyEntertainmentTV_000_title>,prime_SonyEntertainmentTV_001 tainmentTV_001_ ')}@tertainment_TV_Sonytu0}@1>| >,prime_SonyEntertainmentTV_0 02_btime,<{rgUnfold($DEVICE,'prime_SonyEntertainmentTV_002_')} @prime_SonyEntertainmentTV_002_title>\dmy_TV:<%tv/kinowelt>,prime_0fold{0$t'0@0fold_0$t'0 }_0 0_title>, < | >,prime_Kinowelt_001_btime,<{rgUnfold($DEVICE,'prime_Kinowelt_001_')}@ prime_Kinowelt_001_title>,<|>,prime_Kinowelt_002_btime,<{rgUnfold($DEVICE_Kinowelt_1pro7_2%d_tv_tiwelt)_2 maxx > ,prime_ ProSiebenMaxx_000_btime,<{ rgUnfold ($DEVICE,'prime_ProSiebenMaxx_000_')}@prime_ProSiebenMaxx_000_title >,<|>,prime_ProSiebenMaxx_001_bnfold($DEVICE,'0001_btimeV0,,<|>,prime_ProSiebenMaxx_002_btime, < {rgUnfold($DEVICE,'prime_ProSiebenMaxx_002_')}@prime_Pro SiebenMaxx_002_title>\dmy_TV:<% tv/sixx>,prime{0_SixxMaxben_0_0 _')}@prime_ Pro SiebenMaxx_002_title>\ dmy_TV :<% tv/sixx>,prime_Sixx_000_btime,<{rgUnfold($__SiebenMaxx_002_) le>,<|>,prime_ Sixx_001_b时间,< {rgUnfold($DEVICE,'prime_10_x)}_0_0_Six'>} <|>, alg_kuusx_ 002_btime , <{rgUnfold($DEVICE,'prime_Sixx_001_')2prime_Sixx_S_001_TV_02_20 <%tv/tntserie>, prime_TNTSerie_000 _b时间,<{ rgUnfold($DEVICE,'prime_Sixx_001_0) Serie_000_title>,<|> ,prime_TNT Series_001_btime, <{ rgUnfold( $DEVICE,'prime_TNTSerie_000_')1TNTSerie_000_Title _title>,<|>,prime_TNTSerie _002_bczas,< {rg展开($DEVICE, 'prime_TNTSerie_002_0_0NTSerie>)}@prime_TNTSerie_002_0NTSerie> %tv/syfy>,prime_SciFi _000_btime,< {rgUnfold ($DEVICE,'prime_0e|0_SciFi,'prime_0e|0_SciFi')_ >,prime_ SciFi_001_btime ,< { rgUnfold($DEVICE, 'prime_SciFi_001_')}@prime_SciFi_001_')}@prime_SciFi_001_001_')}@prime_SciFi_001_2| unfold( $DE VICE , 'prime_SciFi_002__')}@prime_SciFi_002___tv ,prime_ntv_00 0_bczas,<{ r g展开($DEVICE, 'prime_ntv_000_')}@prime_ntv_000_')}@prime_ntv_000__>>,_prime_ntv_000,_rg_00,_rg| Unfold( $DE VICE,' prime_ntv_001__ntv," prime_ntv_001__ntitle@001_ntv 002_btime ,<{rgUnfold ($URZĄDZENIE, 'prime_ntv_0 02_')}@ prime_ntv_002_title>\dmy_TV:<%tv/n24>,prime_ev_0 me_N24_N')2,0@kue , prime_N24Doku_001_ btime,< { rgUnfold($URZĄDZENIE, 'prime_N24Doku_001_')}@prime_N24Doku_001_title >,<|>,prime_N24Doku_002_btime_4,,prime_History_ 00 0_btime,< { rgRozwiń($URZĄDZENIE, 'prime_History_000_')} @prime_History_000_title >,<|>,prime_history_001_btime,<{rgunfold,>>,$设备,h_0prime| ajalugu_ 002_btime, <{gunfold ')} @ prime_PLANET_000_title > ,< |> , prime_PLANET_001_btime,<{rgUnfold($DEVICE,'prime_PLANET_001_')}@prime_PLANET_001_标题>,<|>,prime_PLANET_001_btime(prime_PLANET_001_btime(prime_PLANET_001_btime(prime_PLANET_002_0202020202002_002_002_002) \dmy_ Telewizja:<%tv / kabel1docu > EinsDoku_001_title>, <|>,prime_KabelEinsDoku_002_btime,<{ r gUnfold($DEVICE,' prime_KabelEinsDoku_002_')}@prime_KabelEinsDoku_002_title >\dmy _TV:<%tv/animalplanet>(prime_KabelTime_V002_DE,prime_KabelEinsDoku_002_title>\dmy>0,pri_memal>\dmy>0,pri_memal me_AnimalPlanet_000_')}@prime_AnimalPlane t_000_title> ,<|>,prime_AnimalPlanet_001 _btime,<{ rgUnfold($ DEVICE,'prime_AnimalPlanet_001_')}@prime_AnimalPlanet_001_title>,<|>,prime_Anim alPlanet_002_Unim alPlanet_002_PDEVICE,'prime_AnimalPlanet_002_PDEVICE,'prime_AnimalPlanet_001_) 002_title>\dmy_TV:<% tv/natgeo>,prime_N atGeoHD_00 0_btime ,< {rgUnfold( $DEVICE, 'prime_NatGeoHD_000_')}@prime_NatGeoHD_000_title>,<|>, prime_NatGeoHD_001_Unfold($DEVICE,'prime_NatGeoHD_000_Natle,0>,0>prime_Natle0>,000_Natle)} _NatGeoHD_001_Unfold($DEVICE,'prime_N atGeoHD_000_title> 01_' )}@prime_NatGeoHD_001_title>,<|> , prime_NatGeoHD _002_ btime,<{rgUnfold($DEVICE ,'prime_NatGeoHD_002_' )}@prime_NatGeoHD_002_title_0002_ GeoHD_000_btime }@prime_TLC_000_title>,<| >,prime_TLC_001_btime ,<{rgRozwiń($URZĄDZENIE ,'prime_TL C_001_') }@prime_TLC_001_title>,<|>,prime_TLC_002_btime,<{rgUnfold($2_ίς>0 \ dmy_TV:<%tv/ae>,prime_AandE_000_btime ,<{rgUn złóż($ URZĄDZENIE,'prime_AandE_00 0_')} @prime_AandE_000_title>,<|>,prime_AandE_001_btime,<{rg_DEVICEe,<{rgUnfold' _AandE_0,1_| >,prime_AandE_002_btime,<{rgUnfold( $URZĄDZENIE, 'prime_AandE_002_')}@prim e_AandE_002_title>attr rg_TV_PRIME 别名电视指_南电视指南Slee':色; ;文本对齐中心;;字体粗细:粗体;;"' ,\'r:1,c:2'=>'风格="颜色:黄色;文本对erśki;pogz " ',\'r:1,c :3' => 'style="kolor :żółty;; text-align:center;;font-weight:bold;" ',\ 'r:1,c:5' = > 'style="颜色:黄色;;文本对齐:中心;;字体-权重:粗体;;"',\ 'r:1,c:6' => 'style="颜色:黄艬;; :中心;;字体粗细;; "',\'r :1,c:8' => '风格="颜色:黄色;;文本-align:center; ;字体粗细:粗体;"',\ 'r:1,c:9 ' => 'style= "颜色:黄色;;文本对齐:中心;;字体粗细:粗"ME\'r:1,c:9 ' => 'style= "颜色:黄色;;文本对齐:中心;;字体粗细:粗"组电视节目mattr rg_TV_PRIME nonames 1attr rg_TV_PRIME style="font-size:16px;"

Loomulikult peate lugemisrühma ikooni kohandama! Laadige lihtsalt kanali logo alla ja salvestage see kausta /opt/fhem/www/images/default/tv. Ärge unustage määrata vastavaid õigusi:

sudo mkdir /opt/fhem/www/images/default/tvsudo chown fhem:dialout /opt/fhem/www/images/default/tv

Nüüd kopeerige ikoonid kataloogi ja andke neile failidele vastavad õigused.

sudo chown fhem:dialout *.png

Kui ikooni ei kuvata, võib aidata järgmine käsk:

Määrake võrgu uuesti diagnoosimise ikoon

Valik 3 (looge ise EPG andmed):

reedel:

Mono ja monitori paigaldamine:

cd ~ sudo apt-get install mono-runtime libmono-system-data4.0-cil libmono-system-web4.0-cil

Laadige alla WebGrab++:

wget http://www.webgrabplus.com/sites/default/files/download/SW/V2.1.0/WebGrabPlus_V2.1_install.tar.gz

Pakkige WebGrab++ lahti:

tar -zxvf WebGrabPlus_V2.1_install.tar.gz

Installige WebGrab++:

cd .wg++./install.sh

Esiteks peate nüüd konfiguratsioonifaili kohandama:

sudo nano WebGrab++.config.xml

Saate kasutada neid seadeid, näiteks:

juhend.xmlrz kuningasMozilla/5.0 (Windows NT 6.1; WOW64); rv:29.0) Gecko/20100101 Firefox/29.0SEE 5 6tj

Seejärel peate sisenema kanalisse. Neid kanaleid saab kopeerida WebGrab++ veebisaidilt. Siin on näide rida:

ARD

Salvestage ja sulgege fail kohe.

Faili tuleks nüüd järeltöötluseks kohandada:

cd rexsudo nano rex.config.xml

Neid seadeid saab kasutada siin:

"tiitel" {episood: 'episood' } 'subtiitrid' "kirjeldus"{\nTootmine: "Valmiskuupäev". }{\nKategooria: "Kategooria(,)". }{\nNäitleja: 'näitleja(, )'}{\nRežissöör: 'režissöör(, )'}{\nEsineja: 'esineja(, )'}   { hinne: 'hinne(,)'. }

Salvestage fail uuesti ja sulgege see.

EPG andmete indekseerimine ja töötlemine:

Olge ettevaatlik, andmete allalaadimine ja ettevalmistamine võib võtta kaua aega. Esmamulje saamiseks on kõige parem alustada ühest või kahest peatusest.

cd ~/.wg++./run.sh

Kaasake WebGrab++ vahekaardile crontab:

Lihtsalt skripti kutsumine ei tööta minu jaoks. Seega pidin ekraani kasutama.

30 0 * * 1,4 /usr/bin/screen -dmS webgrab /home//.wg++/run.sh

See protsess algab iga 3-4 päeva tagant ja loob ajakava järgmiseks nädalaks. Saadud faili saab seejärel edasi töödelda, kasutades varianti 2.

Variant 4 (RSS-i voog):

Veebisait texxas.de pakub jooksvaid telesaateid RSS-kanalina, mille tulemuseks on väga väike allalaadimiste arv. Veebisaidil on programmid jagatud mitmesse kategooriasse:

  • Põhikanalid (ARD, ZDF, RTL, ProSieben, Sat.1, Kabel1, VOX)
  • Erikanalid (Anixe HD, ARTE, Bibel TV, Comedy Central, DMAX, HGTV, Kabel Eins Classics, MTV, One)
  • piirkondlik kanal
  • dokument
  • ……

Looge RSS-kanali funktsioon:

Atribuut rfAllReadingsEvents tagab, et EPG värskendused käivitavad ka muudatuse / värskendamise sündmuse. Vaadake rssFeedi mooduli käsuviida.

defmod Dev_Multimedia_EPG_Spartensender rssFeed http://www.texxas.de/tv/spartensenderJetzt.xml 300attr Dev_Multimedia_EPG_Spartensender rfAllReadingsEvents 1

Seejärel tehakse iga saatja jaoks kaks mõõtmist:

LugemaVesi
n01_PealkiriARD Alpha: illustreeritud panoraam
n01_opis20 listopada 2022 r. 08:20 - 09:45
n02_PealkiriARTE: 27 – Euroopa ajakiri
n02_kirjeldus2022-11-20 09:30 - 10:15
Euroopas on eutanaasia seaduslik vaid neljas riigis: Hollandis, Belgias, Luksemburgis ja viimati Hispaanias. Aktiivselt eutanaasiat praktiseerides on Šveits valinud alternatiivse tee. Prantsusmaal tõstatas riiklik eetikanõukogu selle teema uuesti septembris, kutsudes üles kasutama eutanaasia "rangelt reguleeritud" vormi. Kuidas peaksite hoolitsema patsiendi eest, kes soovib surra? Millistel tingimustel see käitumine toimub...

näiteks

References

Top Articles
Latest Posts
Article information

Author: Domingo Moore

Last Updated: 09/10/2023

Views: 5860

Rating: 4.2 / 5 (73 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Domingo Moore

Birthday: 1997-05-20

Address: 6485 Kohler Route, Antonioton, VT 77375-0299

Phone: +3213869077934

Job: Sales Analyst

Hobby: Kayaking, Roller skating, Cabaret, Rugby, Homebrewing, Creative writing, amateur radio

Introduction: My name is Domingo Moore, I am a attractive, gorgeous, funny, jolly, spotless, nice, fantastic person who loves writing and wants to share my knowledge and understanding with you.