Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. XML verarbeiten für EPG

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    XML verarbeiten für EPG

    This topic has been deleted. Only users with topic management privileges can see it.
    • David G.
      David G. last edited by David G.

      Hallo,

      ich habe ein Abo bei epg.best für meine Sat IP Anlage.

      Dort kann ich mir wunderbar m3u Listen generieren und das passende epg generieren.

      Das epg wird als xml bereitgestellt.

      Fürs erste würde ich gerne abfragen, was zur Zeit aif einem bestimmten Sender läuft.

      Das xml ist folgendermaßen aufgebaut.

      Erst werden alle Sender aufgelistet:

      <?xml version="1.0" encoding="UTF-8"?>
      <tv>
      <channel id="123TV.de"><display-name>1-2-3 TV DE</display-name><icon src="https://static.epg.best/de/123TV.de.png"/></channel>
      
      <channel id="3sat.de"><display-name>3sat DE</display-name><icon src="https://static.epg.best/de/3sat.de.png"/></channel>
      
      <channel id="ARD.de"><display-name>Das Erste DE</display-name><icon src="https://static.epg.best/de/ARD.de.png"/></channel>
      

      usw

      Dann kommt das TV Programm.
      Immer ein Programm für die Zeit das epg bereit gestellt wird.

      <programme start="20220421160000 +0200" stop="20220421162500 +0200" channel="Nickelodeon.de">
          <title lang="de">Die Brotpiloten</title>
          <sub-title lang="de">Eine Brotnachts-Geschichte</sub-title>
          <desc lang="de">Swaysway und Behdeuce bleiben die ganze Nacht auf und warten darauf, dass Santa Kruste ihre Geschenke bringt.Swaysway und Behdeuce bleiben die ganze Nacht auf und warten darauf, dass Santa Kruste ihnen ihre Geschenke bringt. Um die Wartezeit zu verkürzen, lesen sie sich gegenseitig die verrücktesten Feriengeschichten vor und singen Krustnachtslieder. Doch dann kommt ein riesiger Schneesturm auf, und Santa Kruste ist noch draussen unterwegs. Plötzlich ist das diesjährige Brotnachten in Gefahr</desc>
          <credits>
            <director>Brian Morante</director>
            <director>Dave Stone</director>
            <director>Casey Leonard</director>
            <director>Kelley Gardner</director>
            <actor>Eric Bauza</actor>
            <actor>Fred Tatasciore</actor>
            <actor>Robbie Daymond</actor>
            <actor>Imari Williams</actor>
            <actor>Michael-Leon Wooley</actor>
            <actor>Steve Borst</actor>
            <actor>Gary Doodles</actor>
            <actor>Lizbeth Velasco</actor>
          </credits>
          <date>2014</date>
          <category lang="de">Für Kinder</category>
          <icon src="https://mp-photos-cdn.azureedge.net/containerb2b0d3712a1148d1903554bf503d8c92/a59561fa841bea84dadf1a8d33ce1507c9a9d36f.jpg?w=210&amp;h=303&amp;mode=box"/>
          <episode-num system="xmltv_ns">1.18.</episode-num>
          <rating>
            <value>6</value>
          </rating>
        </programme>
      <programme start="20220421162500 +0200" stop="20220421165000 +0200" channel="Nickelodeon.de">
          <title lang="de">Rugrats</title>
          <sub-title lang="de">Die Hundehochzeit</sub-title>
          <desc lang="de">Tommy fühlt sich von Spike vernachlässigt, als der all seine Aufmerksamkeit der Hundedame Fifi zu schenken scheint.Eine Gruppe von Babys unter dem Anführer Tommy sieht die Welt durch ihre eigenen Augen. Sein bester Freund Chuckie ist sehr ängstlich, seine dreijährige Cousine Angelica ärgert gerne Babys. Tommy fühlt sich von Spike vernachlässigt, als der all seine Aufmerksamkeit der Hundedame Fifi zu schenken scheint. Bis der wahre Grund enthüllt wird: Fifi bekommt einen riesigen Wurf Hundebabys</desc>
          <credits>
            <director>Dean Criswell</director>
            <actor>Csupo Gabor</actor>
            <actor>Maureen Iser</actor>
            <actor>Arlene Klasky</actor>
            <actor>Monica Piper</actor>
          </credits>
          <date>2002</date>
          <category lang="de">Drama</category>
          <icon src="https://mp-photos-cdn.azureedge.net/containerb2b0d3712a1148d1903554bf503d8c92/d4791b83024266df76d498d40a84abe68fa77656.jpg?w=210&amp;h=303&amp;mode=box"/>
          <episode-num system="xmltv_ns">7.2.</episode-num>
          <rating>
            <value>6</value>
          </rating>
        </programme>
      <programme start="20220421165000 +0200" stop="20220421172000 +0200" channel="Nickelodeon.de">
          <title lang="de">SpongeBob Schwammkopf</title>
          <sub-title lang="de">SpongeBobs grosse Geburtstagssause</sub-title>
          <desc lang="de">Der gutmütige und enthusiastische Seeschwamm hat alberne Ideen und erlebt verrückte Geschichten.In der beschaulichen Unterwasserstadt Bikini Bottom lebt und arbeitet der Schwamm Spongebob Schwammkopf. Als geschickter Burger-Brater arbeitet er zusammen mit dem griesgrämigen Tintenfisch Thaddäus im Fast-Food-Laden "Krosse Krabbe" des geizigen Mr. Krabs. Seine besten Freunde sind Patrick, ein rosafarbener Seestern, und Sandy, ein an das Leben unter Wasser angepasstes Eichhörnchen</desc>
          <credits>
            <director>Jonas Morganstein</director>
            <director>Dave Cunningham</director>
            <director>Adam Paloian</director>
            <actor>Jennie Monica</actor>
            <actor>Sofia Iza</actor>
            <actor>Hema Mulchandani</actor>
            <actor>Jonas Morganstein</actor>
            <actor>Stephen Hillenburg</actor>
          </credits>
          <date>2019</date>
          <category lang="de">Für Kinder</category>
          <icon src="https://mp-photos-cdn.azureedge.net/containerb2b0d3712a1148d1903554bf503d8c92/568c812e80517f39df59bb0b1349afca6aec6c3f.jpg?w=210&amp;h=303&amp;mode=box"/>
          <episode-num system="xmltv_ns">11.13.</episode-num>
          <rating>
            <value>6</value>
          </rating>
        </programme>
      <programme start="20220421172000 +0200" stop="20220421174500 +0200" channel="Nickelodeon.de">
          <title lang="de">SpongeBob Schwammkopf</title>
          <sub-title lang="de">Verbrecher aus Mitgliedschaft / SpongeBob Kopiekopf</sub-title>
          <desc lang="de">"Die Haie" sind die schlimmsten Typen in Bikini Bottom, doch mit ihrer nächsten Konfrontation könnte SpongeBob überfordert sein.Spongebob lebt mit Hausschnecke Gary in der Unterwasserstadt Bikini Bottom und brät Burger in einem Fast-Food-Laden. "Die Haie" sind die schlimmsten Typen in Bikini Bottom, doch ihre nächste Konfrontation könnte zu viel für SpongeBob sein, damit noch umzugehen. / Plankton klont SpongeBob in einem Versuch, Mr. Krabs' Geheimformel zu stehlen, doch der echte SpongeBob könnte seine Pläne ruinieren</desc>
          <credits>
            <director>Tom Yasumi</director>
            <director>Dave Cunningham</director>
            <director>Vincent Waller</director>
            <director>Sherm Cohen</director>
            <actor>Stephen Hillenburg</actor>
            <actor>Jennie Monica</actor>
            <actor>Paul Tibbitt</actor>
          </credits>
          <date>2016</date>
          <category lang="de">Für Kinder</category>
          <icon src="https://mp-photos-cdn.azureedge.net/containerb2b0d3712a1148d1903554bf503d8c92/d4791b83024266df76d498d40a84abe68fa77656.jpg?w=210&amp;h=303&amp;mode=box"/>
          <episode-num system="xmltv_ns">8.19.</episode-num>
          <rating>
            <value>6</value>
          </rating>
        </programme>
      <programme start="20220421174500 +0200" stop="20220421181500 +0200" channel="Nickelodeon.de">
          <title lang="de">Cosmo &amp; Wanda</title>
          <sub-title lang="de">Viel Rauch um Nichts / Haufenweise Timmys</sub-title>
          <desc lang="de">Dad und Crocker machen einen Deal.Dad und Crocker machen einen Deal. Crocker soll den Nachbarn Dinkleberg vergraulen, und dafür soll er Timmys Fische erhalten. Doch als Ergebnis der Bemühungen werden Crocker und Dinkleberg beste Freunde. / Timmy wird vom Planeten der Väter eingeladen, den Job seines Dads gezeigt zu bekommen. Doch dann wollen ihm alle Dads ihren Job zeigen, und Timmy wünscht sich genauso viele Timmys wie Dads</desc>
          <credits>
            <director>Michelle Bryan</director>
            <director>Gary Conrad</director>
            <director>Kevin Petrilak</director>
            <director>Tuck Tucker</director>
            <actor>Susanne Blakeslee</actor>
            <actor>Daran Norris</actor>
            <actor>Tara Strong</actor>
            <actor>Butch Hartman</actor>
            <actor>Fred Seibert</actor>
          </credits>
          <date>2014</date>
          <category lang="de">Für Kinder</category>
          <icon src="https://mp-photos-cdn.azureedge.net/containerb2b0d3712a1148d1903554bf503d8c92/7afacba0bd7f3e721be0e1934bd14c024faa2c34.jpg?w=210&amp;h=303&amp;mode=box"/>
          <episode-num system="xmltv_ns">8.12.</episode-num>
          <rating>
            <value>6</value>
          </rating>
        </programme>
      

      Alles steht im <tv> vom Anfang. Das wird ganz am Ende wieder geschlossen.

      So geht es dann mit dem Sender immer weiter bis der nächste kommt. Zwischen <channel> und <programme> kommt noch einmal eine Zeile mit einer anderen Info.

      Nun würde ich gerne abfragen, was JETZT zB auf ZDF läuft.

      Kann man das machen?

      P.S.:
      Hab das xml nur auszugsweise gepostst, da ich nicht weiß, ob man es komplett online stellen darf. Ist ja käuflich erworben.
      Zudem ist es 12 MB groß.

      bahnuhr 1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @David G. last edited by

        @david-g

        Stell doch mal ein Auszug der Datei hier ein.
        Also die .xml mit 1-2 Sender zum Probieren.

        David G. 1 Reply Last reply Reply Quote 0
        • David G.
          David G. @bahnuhr last edited by David G.

          @bahnuhr

          Anbei das epg für 3sat und 123tv als xml

          epg.xml

          Hoffe hab beim entfernen der restlichen Zeilen übers Smartphone nichts zerschossen.

          F 1 Reply Last reply Reply Quote 0
          • F
            fastfoot @David G. last edited by

            @david-g hier was zum Rumspielen mit deinen Daten, erzeugt eine JSON Tabelle für die VIS und hat eine rudimentäre Filterfunktion auf Sender und Datum/Zeit

            /**
            * Zweck:   erstellt Tabelle(json) aus XML TV-Daten von epg.best
            * Datum:   19.04.2022
            * Autor:   @fastfoot
            * Forum:   https://forum.iobroker.net/post/792865
            */
            const fs = require('fs');
            const xml2js = require('xml2js');                                   // eintragen in Adapter-Instanz
            const parser = new xml2js.Parser();
            const Sender = '3sat.de';                                           // Senderfilter
            const now = new Date('2021-05-11 14:50:00 UTC+2');                  // Zeitfilter
            
            function parseAsync() {
               let data = fs.readFileSync('/opt/iobroker/Downloads/tv.xml');
               return new Promise((resolve, reject) => {
                   parser.parseString(data, function (err, result) {
                       if (err) {
                           log('Fehler ' + err);
                       }
                       resolve(result);
                   })
               });
            }
            async function main() {
               const uebersicht = [];
               let json = await parseAsync();
               fs.writeFile('/opt/iobroker/Downloads/tv.json', JSON.stringify(json), e => { })
               json.tv.programme.forEach(p => {
                   let start = p['$'].start.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\s(\+\d{2})/);
                   let stop = p['$'].stop.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\s(\+\d{2})/);
                   start = new Date(start[1] + '-' + start[2] + '-' + start[3] + ' ' + start[4] + ':' + start[5] + ':' + start[6] + ' UTC' + start[7])
                   stop = new Date(stop[1] + '-' + stop[2] + '-' + stop[3] + ' ' + stop[4] + ':' + stop[5] + ':' + stop[6] + ' UTC' + stop[7])
                   uebersicht.push({
                       "Sender": p['$'].channel,
                       "Start": start,
                       "Ende": stop,
                       "Titel": p.title[0]['_']
                   })
               })
            
               //als Tabelle für VIS speichern
               setState('0_userdata.0.TV.epg', JSON.stringify(uebersicht));
            
               //Filtern nach Sender und Zeit
               let jetzt = uebersicht.filter(p => {
                   return p.Sender === Sender && p.Start <= now && p.Ende > now;
               })
               log(jetzt[0])
            }
            
            main();
            

            David G. 1 Reply Last reply Reply Quote 1
            • David G.
              David G. @fastfoot last edited by David G.

              @fastfoot

              Vielen Dank,

              werde ich morgen am Rechner testen.
              Auch wenn ich nur Bahnhof verstehe. Aber probieren geht über studieren 😁

              Anpassen muss ich dann vermutlich in Zeile

              10 den gewünschten Sender
              11 die Zeit wo ich die Sendung suche
              14 den Pfad zur xml
              27 die json wird automatisch angelegt?
              42 den Pfad zum Datenpunkt für die Tabelle

              Mit JS hab ich noch nie wirklich gearbeitet. Schaue mir gelegentlich an was blockly mir im JS Modus anzeigt.

              EDIT
              Muss ich in der Javascript Instanz noch Module hinzufügen?

              Bisher mache ich es folgendermaßen.
              Nur bietet der tvspielfilm Adapter ziemlich wenig Sender.

              Screenshot_20220419-212715_Chrome.jpg

              Ich bekomme vom SONY bravia Adapter den aktuellen Sender der am TV läuft (Das ist der Trigger).
              Dort entferne ich das HD am Ende vom Sendern Fall vorhanden.
              Im epg gibt's die Sender nur ohne HD.

              Manche Sender nennen sich im Adapter des Fernsehers anders als im epg. Diese andere ich schnell manuell ab.
              Dann wird in der Schleife der entsprechende gesucht und das Programm ermittelt.

              F 1 Reply Last reply Reply Quote 0
              • F
                fastfoot @David G. last edited by

                @david-g in Blockly lässt sich das nur mühselig umsetzen. Das Json enthält alle Daten, mit dem Inventwo json widget kann man aber schön sortieren. damit das abspeichern mit setState() funktioniert musst du natürlich noch einen DP 0_userdata.0.TV.epg erstellen. Der Filter filtert dann aus diesen Daten nach den voreingestellten beiden Kriterien. Es wird auch noch eine json-Datei geschrieben, das kannst du auskommentieren. Als Daten sind in der json nur Sender, Titel, Start und Stop verfügbar, das kann man natürlich noch erweitern, sollte eher als Anregung zum Erweitern dienen 🙂

                David G. 1 Reply Last reply Reply Quote 0
                • David G.
                  David G. @fastfoot last edited by David G.

                  @fastfoot

                  Beim erweitern muss ich mal schauen ^^.

                  Eine Tabelle Brauche ich garnicht unbedingt.
                  Nutze kein VIS.
                  Hab meine Visu in Lovelace.
                  Das reine aktuelle Programm reicht eigentlich schon. Start und Ende waren nice to have.

                  Könnte folgendes klappen?
                  Das Skript als Funktion in Blockly einfügen und dann den Sender und Zeit aus einer Variablen holen die vorher in Blockly gesetzt werden.
                  Dann das gewünschte Ergebnisse in eine (bzw 2-3) Variablen schreiben.

                  So baue ich es ein:

                  Screenshot_20220419-213914_Fully Kiosk Browser.jpg

                  EDIT
                  Muss ich in der Javascript Instanz noch Module hinzufügen?

                  F 1 Reply Last reply Reply Quote 0
                  • F
                    fastfoot @David G. last edited by

                    @david-g ja, xml2js in der Instanz eintragen. Als JSFunktion geht natürlich, ich schau mal für morgen, viel Änderung ist da nicht notwendig, wenn überhaupt

                    David G. 1 Reply Last reply Reply Quote 0
                    • David G.
                      David G. @fastfoot last edited by

                      @fastfoot

                      Sehr cool, danke.
                      Wenn da was in Blockly geht (mit Funktion) bekomme ich bestimmt mein Skript 2 Posts weiter oben angepasst.

                      F 1 Reply Last reply Reply Quote 0
                      • F
                        fastfoot @David G. last edited by fastfoot

                        @david-g ich denke schon dass das leicht geht, hier als Blockly

                        <xml xmlns="https://developers.google.com/blockly/xml">
                         <variables>
                           <variable id="kbL5/)K1!N4cip+5_.1i">Sender</variable>
                           <variable id="=J@n/ITm;Kc+d4@zMh7!">Datum</variable>
                           <variable id="/_EVt8i8cL:*ALcrdhfG">ergebnis</variable>
                           <variable id="[8oE4,fROL+h=Hm^_kPd">titel</variable>
                         </variables>
                         <block type="procedures_defcustomreturn" id="Fdn;N_DDcOcQm^j|,Ft!" x="62" y="62">
                           <mutation statements="false">
                             <arg name="Sender" varid="kbL5/)K1!N4cip+5_.1i"></arg>
                             <arg name="Datum" varid="=J@n/ITm;Kc+d4@zMh7!"></arg>
                           </mutation>
                           <field name="NAME">parser</field>
                           <field name="SCRIPT">LyoqDQogKiBad2VjazogICBlcnN0ZWxsdCBUYWJlbGxlKGpzb24pIGF1cyBYTUwgVFYtRGF0ZW4gdm9uIGVwZy5iZXN0DQogKiBEYXR1bTogICAyMC4wNC4yMDIyDQogKiBBdXRvcjogICBAZmFzdGZvb3QNCiAqIEZvcnVtOiAgIGh0dHBzOi8vZm9ydW0uaW9icm9rZXIubmV0L3Bvc3QvNzkyODY1DQogKi8NCmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTsNCmNvbnN0IHhtbDJqcyA9IHJlcXVpcmUoJ3htbDJqcycpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWludHJhZ2VuIGluIEFkYXB0ZXItSW5zdGFueg0KY29uc3QgcGFyc2VyID0gbmV3IHhtbDJqcy5QYXJzZXIoKTsNCi8vY29uc3QgU2VuZGVyID0gJzNzYXQuZGUnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VuZGVyZmlsdGVyDQpjb25zdCBub3cgPSBEYXR1bTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFplaXRmaWx0ZXINCg0KZnVuY3Rpb24gcGFyc2VBc3luYygpIHsNCiAgICBsZXQgZGF0YSA9IGZzLnJlYWRGaWxlU3luYygnL29wdC9pb2Jyb2tlci9Eb3dubG9hZHMvdHYueG1sJyk7DQogICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsNCiAgICAgICAgcGFyc2VyLnBhcnNlU3RyaW5nKGRhdGEsIGZ1bmN0aW9uIChlcnIsIHJlc3VsdCkgew0KICAgICAgICAgICAgaWYgKGVycikgew0KICAgICAgICAgICAgICAgIGxvZygnRmVobGVyICcgKyBlcnIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOw0KICAgICAgICB9KQ0KICAgIH0pOw0KfQ0KDQpjb25zdCB1ZWJlcnNpY2h0ID0gW107DQpsZXQganNvbiA9IGF3YWl0IHBhcnNlQXN5bmMoKTsNCi8vZnMud3JpdGVGaWxlKCcvb3B0L2lvYnJva2VyL0Rvd25sb2Fkcy90di5qc29uJywgSlNPTi5zdHJpbmdpZnkoanNvbiksIGUgPT4geyB9KQ0KanNvbi50di5wcm9ncmFtbWUuZm9yRWFjaChwID0+IHsNCiAgICBsZXQgc3RhcnQgPSBwWyckJ10uc3RhcnQubWF0Y2goLyhcZHs0fSkoXGR7Mn0pKFxkezJ9KShcZHsyfSkoXGR7Mn0pKFxkezJ9KVxzKFwrXGR7Mn0pLyk7DQogICAgbGV0IHN0b3AgPSBwWyckJ10uc3RvcC5tYXRjaCgvKFxkezR9KShcZHsyfSkoXGR7Mn0pKFxkezJ9KShcZHsyfSkoXGR7Mn0pXHMoXCtcZHsyfSkvKTsNCiAgICBzdGFydCA9IG5ldyBEYXRlKHN0YXJ0WzFdICsgJy0nICsgc3RhcnRbMl0gKyAnLScgKyBzdGFydFszXSArICcgJyArIHN0YXJ0WzRdICsgJzonICsgc3RhcnRbNV0gKyAnOicgKyBzdGFydFs2XSArICcgVVRDJyArIHN0YXJ0WzddKQ0KICAgIHN0b3AgPSBuZXcgRGF0ZShzdG9wWzFdICsgJy0nICsgc3RvcFsyXSArICctJyArIHN0b3BbM10gKyAnICcgKyBzdG9wWzRdICsgJzonICsgc3RvcFs1XSArICc6JyArIHN0b3BbNl0gKyAnIFVUQycgKyBzdG9wWzddKQ0KICAgIHVlYmVyc2ljaHQucHVzaCh7DQogICAgICAgICJTZW5kZXIiOiBwWyckJ10uY2hhbm5lbC5yZXBsYWNlKCcuZGUnLCcnKSwNCiAgICAgICAgIlN0YXJ0Ijogc3RhcnQsDQogICAgICAgICJFbmRlIjogc3RvcCwNCiAgICAgICAgIlRpdGVsIjogcC50aXRsZVswXVsnXyddDQogICAgfSkNCn0pDQoNCi8vYWxzIFRhYmVsbGUgZsO8ciBWSVMgc3BlaWNoZXJuDQovL3NldFN0YXRlKCcwX3VzZXJkYXRhLjAuVFYuZXBnJywgSlNPTi5zdHJpbmdpZnkodWViZXJzaWNodCkpOw0KDQovL0ZpbHRlcm4gbmFjaCBTZW5kZXIgdW5kIFplaXQNCmxldCBqZXR6dCA9IHVlYmVyc2ljaHQuZmlsdGVyKHAgPT4gew0KICAgIHJldHVybiBwLlNlbmRlciA9PT0gU2VuZGVyLnJlcGxhY2UoJy5kZScsJycpICYmIHAuU3RhcnQgPD0gbm93ICYmIHAuRW5kZSA+IG5vdzsNCn0pDQppZiAoamV0enQubGVuZ3RoID4gMCkNCiAgICByZXR1cm4gamV0enRbMF07DQplbHNlDQogICAgcmV0dXJuIHsgIlNlbmRlciI6IG51bGwsICJTdGFydCI6IG51bGwsICJFbmRlIjogbnVsbCwgIlRpdGVsIjogIktlaW4gbGF1ZmVuZGVzIFByb2dyYW1tIGdlZnVuZGVuISIgfQ0KDQo=</field>
                           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                         </block>
                         <block type="variables_set" id="59ap+bGAs-]3IAUBo[6V" x="62" y="88">
                           <field name="VAR" id="kbL5/)K1!N4cip+5_.1i">Sender</field>
                           <value name="VALUE">
                             <block type="text" id="FCA|Qg{uJh}b/1:$Aypf">
                               <field name="TEXT">3sat.de</field>
                             </block>
                           </value>
                           <next>
                             <block type="variables_set" id="rjev,e$~wrSBYR_r]@vp">
                               <field name="VAR" id="=J@n/ITm;Kc+d4@zMh7!">Datum</field>
                               <value name="VALUE">
                                 <block type="convert_from_date" id="k.*$Mz2W+$s|jCE7zyCY">
                                   <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                   <field name="OPTION">object</field>
                                   <value name="VALUE">
                                     <block type="text" id="S=Up?Y:fyk@I;_cr@GdN">
                                       <field name="TEXT">2021-5-11 20:15</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <next>
                                 <block type="variables_set" id="VRvfLzS84=#:PDPbveDw">
                                   <field name="VAR" id="/_EVt8i8cL:*ALcrdhfG">ergebnis</field>
                                   <value name="VALUE">
                                     <block type="procedures_callcustomreturn" id="PQqreJ!}rt#BPi~E#k^F">
                                       <mutation name="parser">
                                         <arg name="Sender"></arg>
                                         <arg name="Datum"></arg>
                                       </mutation>
                                       <value name="ARG0">
                                         <block type="variables_get" id="ZFxvO-[rP|[!)#cUg$il">
                                           <field name="VAR" id="kbL5/)K1!N4cip+5_.1i">Sender</field>
                                         </block>
                                       </value>
                                       <value name="ARG1">
                                         <block type="variables_get" id="d3FHma#0qLvpY!-4N*EY">
                                           <field name="VAR" id="=J@n/ITm;Kc+d4@zMh7!">Datum</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="variables_set" id="x6bCg:y{sEHSCmn7}B]|">
                                       <field name="VAR" id="[8oE4,fROL+h=Hm^_kPd">titel</field>
                                       <value name="VALUE">
                                         <block type="get_attr" id="w_5c2A7T*}?Ba8lc=)Fr">
                                           <value name="PATH">
                                             <shadow type="text" id="*T-ot_9q`v)91_el,!Q{">
                                               <field name="TEXT">Titel</field>
                                             </shadow>
                                           </value>
                                           <value name="OBJECT">
                                             <block type="variables_get" id="0ZvG8cm/kK^0viy3rjf^">
                                               <field name="VAR" id="/_EVt8i8cL:*ALcrdhfG">ergebnis</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="debug" id="v*60KZc^%8TejL%5EOKD" inline="true">
                                           <field name="Severity">log</field>
                                           <value name="TEXT">
                                             <shadow type="text" id="O(hrX9Bzoa8jvS;*uDu`">
                                               <field name="TEXT">test</field>
                                             </shadow>
                                             <block type="variables_get" id="`1pVz-X:]EkXDcp{JJC,">
                                               <field name="VAR" id="[8oE4,fROL+h=Hm^_kPd">titel</field>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="debug" id="|^H{k(vCq(fppoQU5+ql" inline="true">
                                               <field name="Severity">log</field>
                                               <value name="TEXT">
                                                 <shadow type="text">
                                                   <field name="TEXT">test</field>
                                                 </shadow>
                                                 <block type="get_attr" id="5GTv3TS!D;R^U,bqPxUF">
                                                   <value name="PATH">
                                                     <shadow type="text" id=":_w+iMPxfmuqgjYDnt4F">
                                                       <field name="TEXT">Start</field>
                                                     </shadow>
                                                   </value>
                                                   <value name="OBJECT">
                                                     <block type="variables_get" id="J$F=MD*wg@ApV8X3/+|@">
                                                       <field name="VAR" id="/_EVt8i8cL:*ALcrdhfG">ergebnis</field>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                               <next>
                                                 <block type="debug" id="$kcjevz!_:y@l8t~6eOS" inline="true">
                                                   <field name="Severity">log</field>
                                                   <value name="TEXT">
                                                     <shadow type="text">
                                                       <field name="TEXT">test</field>
                                                     </shadow>
                                                     <block type="get_attr" id="y.k2dG[Z~!8dFAYW)b/A">
                                                       <value name="PATH">
                                                         <shadow type="text" id=";44m%L8t^O,WW]lO?9nh">
                                                           <field name="TEXT">Ende</field>
                                                         </shadow>
                                                       </value>
                                                       <value name="OBJECT">
                                                         <block type="variables_get" id=",6ocYSw|r@fvzTM!Q3[)">
                                                           <field name="VAR" id="/_EVt8i8cL:*ALcrdhfG">ergebnis</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </value>
                                                   <next>
                                                     <block type="debug" id="l35?J_G*ZxEnW1-nYp~_" inline="true">
                                                       <field name="Severity">log</field>
                                                       <value name="TEXT">
                                                         <shadow type="text">
                                                           <field name="TEXT">test</field>
                                                         </shadow>
                                                         <block type="get_attr" id="qsx%a{Gh{[Wl:2q8M6`j">
                                                           <value name="PATH">
                                                             <shadow type="text" id="uEmGg,;`Hvg.).H7r~2w">
                                                               <field name="TEXT">Sender</field>
                                                             </shadow>
                                                           </value>
                                                           <value name="OBJECT">
                                                             <block type="variables_get" id="Ey]wJHxbb9V:YeT(K*Zb">
                                                               <field name="VAR" id="/_EVt8i8cL:*ALcrdhfG">ergebnis</field>
                                                             </block>
                                                           </value>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </next>
                                                 </block>
                                               </next>
                                             </block>
                                           </next>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                        </xml>
                        

                        David G. 1 Reply Last reply Reply Quote 0
                        • David G.
                          David G. @fastfoot last edited by David G.

                          @fastfoot

                          Vielen Dank.

                          Hab es importiert und die Zeile zur xml angepasst.

                          Im Log erscheint jetzt

                          07:00:24.068	info	javascript.0 (27980) script.js.Eigene_Scripte.VIS.Status_TV: registered 0 subscriptions and 1 schedule
                          07:00:24.383	info	javascript.0 (27980) script.js.Eigene_Scripte.VIS.Status_TV: null
                          07:00:24.384	info	javascript.0 (27980) script.js.Eigene_Scripte.VIS.Status_TV: null
                          07:00:24.384	info	javascript.0 (27980) script.js.Eigene_Scripte.VIS.Status_TV: null
                          

                          Hat er ein Problem mit der großen xml?
                          Abarbeiten tut er es. Dauert so 2-3 sek bis er den Log ausgibt.
                          Komisch finde ich auch, dass er nur 3 Zeilen debug ausgibt, obwohl es 4 Bausteine gibt.

                          F 1 Reply Last reply Reply Quote 0
                          • F
                            fastfoot @David G. last edited by fastfoot

                            @david-g du hast die Datei verändert, das solltest du immer erst dann tun wenn das gepostete Beispiel läuft!
                            An den Daten liegt es nicht, jedoch dauert es hier ca. 10s bis die Daten eingelesen und aufbereitet sind. Das Filtern selbst dauert nur wenige ms.

                            javascript.1 2022-04-20 14:30:00.027	info	script.js.Forum.epgOrg: ARD
                            javascript.1 2022-04-20 14:30:00.027	info	script.js.Forum.epgOrg: Wed Apr 20 2022 15:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)
                            javascript.1 2022-04-20 14:30:00.026	info	script.js.Forum.epgOrg: Wed Apr 20 2022 14:10:00 GMT+0200 (Mitteleuropäische Sommerzeit)
                            javascript.1 2022-04-20 14:30:00.026	info	script.js.Forum.epgOrg: Rote Rosen
                            
                            David G. 1 Reply Last reply Reply Quote 0
                            • David G.
                              David G. @fastfoot last edited by David G.

                              @fastfoot

                              Hm,
                              komische Angelegenheit.
                              Hab jetzt EXAKT dein Blockly genommen. Sogar den Speicherpfad erstellt.

                              Die kleine xml mit den 2 Sendern klappt.
                              Bei der großen (aus der PN) kommt:

                              17:04:43.404	info	javascript.0 (27980) script.js.Eigene_Scripte.VIS.tv2: Kein laufendes Programm gefunden!
                              17:04:43.404	info	javascript.0 (27980) script.js.Eigene_Scripte.VIS.tv2: null
                              17:04:43.404	info	javascript.0 (27980) script.js.Eigene_Scripte.VIS.tv2: null
                              17:04:43.404	info	javascript.0 (27980) script.js.Eigene_Scripte.VIS.tv2: null
                              

                              Verschiedene Sender und Zeiten getestet.

                              EDIT:
                              Da habe ich uns ja eine gemeine Falle gestellt........
                              Du hast Sie scheinbar gesehen^^.
                              Die eine Datei ist aus ´21 die andere jetzt aktuell ......

                              Vielen Dank für deine Hilfe.
                              Ist ziemlich cool geworden und habe es auch schon integriert.
                              Jetzt stelle Ich Irgendwann mal meine EPG Tabelle auf die Daten um ^^.

                              F 1 Reply Last reply Reply Quote 0
                              • F
                                fastfoot @David G. last edited by

                                @david-g schön dass es jetzt klappt 🙂 Aber sag mal, braucht es wirklich nur 2-3 sec bis die Antwort kommt? Noch eine Frage, wie oft läuft dein Schedule, alle Minuten oder wie oft oder ist der Trigger ein Sender-Button in deiner VIS? Sobald ich das weiss kann ich später noch ein kleines Update posten

                                • Generieren der Daten nur zum Programmstart oder wenn zusätzlicher Parameter auf true
                                  • Der Filter benötigt dann nur wenige ms und das Ergebnis ist sofort sichtbar
                                • Neue Daten können dann per Zeitplan einmal am Tag gelesen und aufbereitet werden
                                  • Wie erhälst du neue Daten zur Zeit, automatisiert?
                                David G. 1 Reply Last reply Reply Quote 0
                                • David G.
                                  David G. @fastfoot last edited by David G.

                                  @fastfoot

                                  Jetzt eines klappt braucht er was länger.
                                  Hab mal einen debug am Start gesetzt.

                                  2022-04-20 19:07:25.070	error	script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: ARD
                                  
                                  javascript.0
                                  2022-04-20 19:07:25.070	error	script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: Wed Apr 20 2022 19:45:00 GMT+0200 (Mitteleuropäische Sommerzeit)
                                  
                                  javascript.0
                                  2022-04-20 19:07:25.070	error	script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: Wed Apr 20 2022 18:50:00 GMT+0200 (Mitteleuropäische Sommerzeit)
                                  
                                  javascript.0
                                  2022-04-20 19:07:25.069	error	script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: Hubert ohne Staller
                                  
                                  javascript.0
                                  2022-04-20 19:07:18.969	error	script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: Start
                                  

                                  Ungefähr 7sek auf einem Raspberry 4.

                                  Im Moment lade ich einmal pro Tag um 3 per wget die xml runter. So oft muss aber eigentlich nicht sein. Sind ja mehrere Tage drinnen.

                                  Ausgeführt wird das Skript im Moment nur, wenn ich den Sender am TV umschalte. Der TV gibt mir aicu den entsprechenden Sender. Muss das nur noch mappen, weil die schreibweisen was unterschiedlich sind.
                                  So ist es in der vis natürlich nur in dem Moment wo ich umschalte aktuell.
                                  Mal sehen, ob ich das dann noch alle 5sek laufen lasse.

                                  EDIT:
                                  Mir ist grad noch eine Idee für den Trigger gekommen.
                                  Werde vermutlich noch einen cron erstellen, der nach der Endzeit der Sendung +1min oder so das Script nochmal startet.
                                  Hab ich zwar noch nie gemacht, aber ist bestimmt machbar 😁

                                  EDIT 2:
                                  Hab jetzt noch einen Trigger der am Ende einer Sendung den Text für die Vis aktualisiert.
                                  Screenshot_20220420-214908_Chrome.jpg

                                  EDIT 3:
                                  Hab mir die js Funktion grad mal angeschaut und versucht das Bild der Sendung zu holen.
                                  Leider kapiere ich das ganze (-d{2}) Zeug nicht. Hatte jetzt überall wo zb die Startzeit alles abgeändert übernommen.
                                  Das aktuelle Senderlogo geht vermutlich nicht, da es ja in einem anderen "Bereich" steht?

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  815
                                  Online

                                  32.0k
                                  Users

                                  80.5k
                                  Topics

                                  1.3m
                                  Posts

                                  3
                                  15
                                  323
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo