Autor Thema: Fernsehprogramm DOIF (aktuell und primetime | non blocking | minimaler traffic)  (Gelesen 14415 mal)

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7449
Bei mir 1 zu 1 aus deinem ersten Beitrag kopiert.
Das verzeichnis /opt/fhem/www/images/tv  gab es bei mir nicht.
Da habe ich die logos von AVM hinkopiert.
Gruß

Carlos


Bitte ein "list" vom DOIF, damit man was sehen kann! "Bei mir 1 zu 1 aus deinem ersten Beitrag kopiert." bedeutet nicht, dass alles funktioniert wie gedacht. Man muss mindestens die Readings sehen.

Ich habe da noch eine Zusatzfrage: Wo finde ich denn die Schreibweise des Senders, wenn ich das DOIF um Tele5 erweitern möchte?

HIer: http://epg.vuplus-community.net/rytec.channels.xml, bzw. in der entpackte .xml Datei (/opt/fhem/rytecDE_Basic) aus der .xz Datei in deinem Fhem Verzeichnis



« Letzte Änderung: 14 Juni 2020, 13:12:44 von amenomade »
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
Bitte schön:
Internals:
   .AttrList  disable:0,1 loglevel:0,1,2,3,4,5,6 notexist checkReadingEvent:0,1 addStateEvent:1,0 weekdays setList:textField-long readingList DOIF_Readings:textField-long event_Readings:textField-long uiTable:textField-long event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading
   DEF        subs
{
  use utf8;
  use Date::Parse;
  # sudo apt-get install libxml-bare-perl
  use XML::Bare 0.53 qw(forcearray);
  use Blocking;
 
  ### CONFIG AREA ###
  $_channelFilter = qr/^(?:ARD\.|ZDF\.|Sat1\.|RTL2?\.|Pro(?:7|SiebenMaxx)\.|DMax\.|Vox\.|Kabel(?:EinsClassic|EinsDoku)?\.|ntv\.|Sixx\.|TLC\.|N24Doku\.|SonyEntertainmentTV\.|AandE\.|TNT(?:Serie|Film)\.|AnimalPlanet\.|History\.|Kinowelt\.|NatGeoHD\.|PLANET\.|Silverline\.|13thStreet\.|AXN\.|SciFi\.)/;
  # telnet port must not be password protected (open)
  $_telnetPort = 7072;
  $_timeAdjust = 0;
  $_path = '/opt/fhem/';
  $_dataFile = $_path.'rytecDE_Basic';
  # enable/disable unused channel filtering on filemerge (enabled = small file = faster)
  $_filterChannels = 1;
  # enable/disable updates based on starttimes (enabled = update channels only if needed = faster)
  $_updateBasedOnStarttimes = 1;
 
  # internal variables
  $_startTimes;
 
  sub filterText($)
  {
    my $text = shift;

    $text =~ s/["`;'\r]//g;
    $text =~ s/[\n]/
/g;

    return $text;
  }
 
  sub xmltv2epoch($)
  {
    my $t = shift;

    return Time::Piece->strptime($t, '%Y%m%d%H%M%S %z')->epoch;
  }

  sub FmtDateTime($)
  {
    my @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 tvParse($$)
  {
    my ($device, $mode) = @_;
    my $obj;
    my $xml;
    my $lastChannel = '';
    my $reading = '';
    my $i = 999;
    my $n = 999;
    my $k = 0;
    my $primeTime = substr(FmtDateTime(time() + $_timeAdjust), 0, 11).'20:14:00';
    my $sendTelnet = '';
   
    $obj = XML::Bare->new(file => $_dataFile);
    $xml = $obj->parse();

    if (!$@)
    {
      my $old = time() + $_timeAdjust;

      foreach (@{forcearray($xml->{'tv'}{'programme'})})
      {
        if ((0 != $_filterChannels) ||
            ($_->{'channel'}{'value'} =~ $_channelFilter))
        {
          my $stop = xmltv2epoch($_->{'stop'}{'value'});

          # filter old stuff
          if ($stop > $old)
          {
            if ($lastChannel ne $_->{'channel'}{'value'})
            {
              $lastChannel = $_->{'channel'}{'value'};
              $reading = $_->{'channel'}{'value'};
              $reading =~ s/[\.\s]//g;
              $reading =~ s/de$//;
              $n = 0;
             
              if ((0 == $_updateBasedOnStarttimes) || !exists($_startTimes{$reading}) || ($_startTimes{$reading} <= $old))
              {
                $i = 0;

                if (0 != $_updateBasedOnStarttimes)
                {
                  $_startTimes{$reading} = $stop;
                }
              }
            }

            if ($i < 3 && 'next' eq $mode)
            {
              my $fi = sprintf("%03d", $i);
              my $start = xmltv2epoch($_->{'start'}{'value'});
              my $readingName;
              my $readingValue;

              $readingName = 'next_'.$reading.'_'.$fi.'_bdate';
              $readingValue = substr(FmtDateTime($start), 0, 10);
              $sendTelnet .= ";setreading $device $readingName $readingValue";

              $readingName = 'next_'.$reading.'_'.$fi.'_btime';
              $readingValue = substr(FmtDateTime($start), 11, 8);
              $sendTelnet .= ";setreading $device $readingName $readingValue";

              $readingName = 'next_'.$reading.'_'.$fi.'_title';
              $readingValue = filterText(@{forcearray($_->{'title'})}[0]->{'value'});
              $sendTelnet .= ";setreading $device $readingName $readingValue";

              $readingName = 'next_'.$reading.'_'.$fi.'_stitle';
              if (exists($_->{'sub-title'}{'value'}))
              {
                $readingValue = filterText($_->{'sub-title'}{'value'});
              }
              else
              {
                $readingValue = 'na';
              }
              $sendTelnet .= ";setreading $device $readingName $readingValue";

              $readingName = 'next_'.$reading.'_'.$fi.'_desc';
              if (exists($_->{'desc'}{'value'}))
              {
                $readingValue = filterText($_->{'desc'}{'value'});
              }
              else
              {
                $readingValue = 'na';
              }
              $sendTelnet .= ";setreading $device $readingName $readingValue";

              $k++;
              $i++;
            }

            if ($n < 3 && 'prime' eq $mode)
            {
              my $start = xmltv2epoch($_->{'start'}{'value'});
              my $fmtStart = FmtDateTime($start);
              my $bdate = substr($fmtStart, 0, 10);
              my $btime = substr($fmtStart, 11, 8);

              if ($bdate.' '.$btime gt $primeTime)
              {
                my $fn = sprintf("%03d", $n);
                my $readingName;
                my $readingValue;

                $readingName = 'prime_'.$reading.'_'.$fn.'_bdate';
                $readingValue = substr(FmtDateTime($start), 0, 10);
                $sendTelnet .= ";setreading $device $readingName $readingValue";

                $readingName = 'prime_'.$reading.'_'.$fn.'_btime';
                $readingValue = substr(FmtDateTime($start), 11, 8);
                $sendTelnet .= ";setreading $device $readingName $readingValue";

                $readingName = 'prime_'.$reading.'_'.$fn.'_title';
                $readingValue = filterText(@{forcearray($_->{'title'})}[0]->{'value'});
                $sendTelnet .= ";setreading $device $readingName $readingValue";

                $readingName = 'prime_'.$reading.'_'.$fn.'_stitle';
                if (exists($_->{'sub-title'}{'value'}))
                {
                  $readingValue = filterText($_->{'sub-title'}{'value'});
                }
                else
                {
                  $readingValue = 'na';
                }
                $sendTelnet .= ";setreading $device $readingName $readingValue";

                $readingName = 'prime_'.$reading.'_'.$fn.'_desc';
                if (exists($_->{'desc'}{'value'}))
                {
                  $readingValue = filterText($_->{'desc'}{'value'});
                }
                else
                {
                  $readingValue = 'na';
                }
                $sendTelnet .= ";setreading $device $readingName $readingValue";

                $k++;
                $n++;
              }
            }

            if ($k >= 10)
            {
              `perl /opt/fhem/fhem.pl $_telnetPort "$sendTelnet"`;

              $k = 0;
              $sendTelnet = '';
            }
          }
        }
      }

      if ('' ne $sendTelnet)
      {
        `perl /opt/fhem/fhem.pl $_telnetPort "$sendTelnet"`;
      }
    }
   
    return %{$_startTimes};
  }
 
  sub tvMerge($;$)
  {
    my ($dstName, $srcName) = @_;
    my $fh;
    my $dst;
    my $src;
    my $start = '';
    my $channels1 = '';
    my $channels1_flt = '';
    my $channels2 = '';
    my $channels2_flt = '';
    my $programms1 = '';
    my $programms1_flt = '';
    my $programms2 = '';
    my $programms2_flt = '';
    my $end = '';
    my $pos;

    open($fh, '<', $dstName) or die "Can't open file $!";
    read($fh, $dst, -s $fh);
    close($fh);

    if (defined($srcName))
    {
      open($fh, '<', $srcName) or die "Can't open file $!";
      read($fh, $src, -s $fh);
      close($fh);
    }

    if (-1 != ($pos = index($dst, '
    {
      $start = substr($dst, 0, $pos);
    }

    if (-1 != ($pos = rindex($dst, '')))
    {
      $end = substr($dst, $pos + 12);
    }

    while ($dst =~ /(\s*)/sg)
    {
      if (0 != $_filterChannels)
      {
        $_ = $1;

        if ($2 =~ $_channelFilter)
        {
          $channels1_flt .= $_;
        }
      }
      else
      {
        $channels1 .= $1;
      }
    }

    while ($dst =~ /(\s*)/sg)
    {
      if (0 != $_filterChannels)
      {
        $_ = $1;

        if ($2 =~ $_channelFilter)
        {
          $programms1_flt .= $_;
        }
      }
      else
      {
        $programms1 .= $1;
      }
    }

    if (defined($srcName))
    {
      while ($src =~ /(\s*)/sg)
      {
        if (0 != $_filterChannels)
        {
          $_ = $1;

          if ($2 =~ $_channelFilter)
          {
            $channels2_flt .= $_;
          }
        }
        else
        {
          $channels2 .= $1;
        }
      }

      while ($src =~ /(\s*)/sg)
      {
        if (0 != $_filterChannels)
        {
          $_ = $1;

          if ($2 =~ $_channelFilter)
          {
            $programms2_flt .= $_;
          }
        }
        else
        {
          $programms2 .= $1;
        }
      }
    }

    if (0 != $_filterChannels)
    {
      open($fh, '>', $dstName) or die "Can't open file $!";

      if (defined($srcName))
      {
        print $fh $start.$channels1_flt.$channels2_flt.$programms1_flt.$programms2_flt.$end;
      }
      else
      {
        print $fh $start.$channels1_flt.$programms1_flt.$end;
      }

      close($fh);
    }
    else
    {
      open($fh, '>', $dstName) or die "Can't open file $!";

      if (defined($srcName))
      {
        print $fh $start.$channels1.$channels2.$programms1.$programms2.$end;
      }
      else
      {
        print $fh $start.$channels1.$programms1.$end;
      }

      close($fh);
    }
  }

  sub tvDownload()
  {
    my $output = '';
   
    # other server
    # http://www.xmltvepg.nl/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
    $output .= qx(wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xz -O /opt/fhem/rytecDE_Basic.xz 2>&1);
    $output .= qx(xz -df /opt/fhem/rytecDE_Basic.xz 2>&1);

    if (0 != $_filterChannels)
    {
      tvMerge($_dataFile);
    }
   
    return $output;
  }

  sub tvDownloadMerge()
  {
    my $output = '';
   
    # other server
    # http://www.xmltvepg.nl/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
    $output .= qx(wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xz -O /opt/fhem/rytecDE_Basic.xz 2>&1);
    $output .= qx(xz -df /opt/fhem/rytecDE_Basic.xz 2>&1);
    $output .= qx(wget http://www.vuplus-community.net/rytec/rytecDE_Common.xz -O /opt/fhem/rytecDE_Common.xz 2>&1);
    $output .= qx(xz -df /opt/fhem/rytecDE_Common.xz 2>&1);
   
    tvMerge($_dataFile, $_path.'rytecDE_Common');

    # download and merge other files here if needed
   
    return $output;
  }
 
 
  sub startDownload($)
  {
    my $name = shift;
   
    if (defined($_blockingcalls{PID_DOWNLOAD}))
    {
      ::Log3 $name, 3, $name.': Blocking call already running (download).';

      ::BlockingKill($_blockingcalls{PID_DOWNLOAD});
    }

    $_blockingcalls{PID_DOWNLOAD} = ::BlockingCall('DOIF::doDownload', $name, 'DOIF::endDownload', 300, 'DOIF::abortDownload', $name);
  }
 
  sub DOIF::doDownload($)
  {
    my $name = shift;
    my $output = '';
   
    $output = tvDownloadMerge();
   
    return $name.'|'.$output;
  }
 
  sub DOIF::endDownload($)
  {
    my ($name, $output) = split("\\|", shift);
   
    ::Log3 $name, 5, $name.': Blocking call finished to download tv data.';
   
    delete($_blockingcalls{PID_DOWNLOAD});
  }
 
  sub DOIF::abortDownload($)
  {
    my $name = shift;
   
    delete($_blockingcalls{PID_DOWNLOAD});
   
    ::Log3 $name, 1, $name.': Blocking call aborted (download).';
  }
 
  sub startParse($$)
  {
    my ($name, $mode) = @_;
   
    if (defined($_blockingcalls{PID_PARSE}))
    {
      ::Log3 $name, 3, $name.': Blocking call already running (parse).';

      ::BlockingKill($_blockingcalls{PID_PARSE});
    }
   
    $_blockingcalls{PID_PARSE} = ::BlockingCall('DOIF::doParse', $name.'|'.$mode, 'DOIF::endParse', 300, 'DOIF::abortParse', $name);
  }
 
  sub DOIF::doParse($)
  {
    my ($name, $mode) = split("\\|", shift);
    my $ret = $name;
    my %startTimes = tvParse($name, $mode);
   
    foreach (keys(%startTimes))
    {
      $ret .= '|'.$_.'|'.$startTimes{$_};
    }
   
    return $ret;
  }
 
  sub DOIF::endParse($)
  {
    my ($name, @startTimes) = split("\\|", shift);
       
    for (my $i = 0; $i < (scalar(@startTimes) / 2); $i += 2)
    {
      $_startTimes{$startTimes[$i]} = $startTimes[$i + 1];
    }
   
    ::Log3 $name, 5, $name.': Blocking call finished to parse tv data.';
   
    delete($_blockingcalls{PID_PARSE});
  }
 
  sub DOIF::abortParse($)
  {
    my $name = shift;
   
    delete($_blockingcalls{PID_PARSE});
   
    ::Log3 $name, 1, $name.': Blocking call aborted (parse).';
  }
}
init
{
  startDownload("$SELF");
}
{
  if ([00:05|Mo Do])
  {
    startDownload("$SELF");
  }
 
  if ([+00:15])
  {
    startParse("$SELF", 'next');
  }
 
  if ([00:30])
  {
    startParse("$SELF", 'prime');
  }
}
   FUUID      5ee4d44e-f33f-1bd0-959b-382f89c29093bb99
   MODEL      Perl
   NAME       doif_TEST
   NOTIFYDEV  doif_TEST,global
   NR         1507
   NTFY_ORDER 50-doif_TEST
   STATE      ???
   TYPE       DOIF
   VERSION    22161 2020-06-11 12:49:48
   .attraggr:
   .attrminint:
   READINGS:
     2020-06-14 13:05:46   block_02        executed
     2020-06-14 11:12:28   block_init      executed
     2020-06-13 23:28:00   mode            enabled
     2020-06-14 13:07:52   next_13thStreet_000_bdate 2020-06-14
     2020-06-14 13:07:52   next_13thStreet_000_btime 13:05:00
     2020-06-14 13:07:52   next_13thStreet_000_desc Gibbs und Ducky sehen in einer Fernsehshow eine antike Kriegswaffe einen Knüppel mit Dornen. Sie sind überzeugt dass es sich dabei um die Mordwaffe in einem 16 Jahre alten ungelösten Fall handelt. Ducky kehrt mit seiner Assistentin Kasie zurück in die Stadt um den Fall aufzuklären. Das Team versucht mit der Hilfe des Trödelsammlers Mike Wolfe den früheren Besitzer der Waffe aufzuspüren.
Michael Zinberg
Mark Harmon
David L. McCallum
Pauley Perrette
Sean Murray
Brian Dietzen
Emily Wickersham
Maria Bello
Wilmer Valderrama
Duane Henry
Rocky Carroll
Diona Reasonover
Mike Wolfe
Kamal Angelo Bolden
Alyson Reed
Clark Freeman
Leonard Kelly-Young
Shireen Crutchfield
Ana Rey
Jorga Caye
     2020-06-14 13:07:52   next_13thStreet_000_stitle (NCIS: Naval Criminal Investigative Service)Das Museum der Morde (2018) [12+]
     2020-06-14 13:07:52   next_13thStreet_000_title Navy CIS
     2020-06-14 13:07:52   next_13thStreet_001_bdate 2020-06-14
     2020-06-14 13:07:52   next_13thStreet_001_btime 13:50:00
     2020-06-14 13:07:52   next_13thStreet_001_desc Auf das NCIS-Team werden Anschläge verübt. Gibbs entkommt im Iran nur knapp einem Attentat DiNozzo gerät in Lebensgefahr und Ziva muss in Israel untertauchen wo sie ein neues Leben beginnen will. Als sich auf einem Militärstützpunkt mehr als dreissig Kinder mit einer rätselhaften Krankheit infizieren arbeiten Abby und Jimmy fieberhaft daran den Erreger zu identifizieren und den Fall zu lösen.
Rocky Carroll
Mark Harmon
David McCallum
Pauley Perrette
Sean Murray
Brian Dietzen
Emily Wickersham
Wilmer Valderrama
Maria Bello
Duane Henry
Rocky Carroll
Robert Wagner
Ty Olsson
Gwendoline Yeo
Ian Verdun
Nalini Sharma
     2020-06-14 13:07:52   next_13thStreet_001_stitle (NCIS: Naval Criminal Investigative Service)Die Leiche auf dem Dach (2018) [12+]
     2020-06-14 13:07:52   next_13thStreet_001_title Navy CIS
     2020-06-14 13:07:52   next_13thStreet_002_bdate 2020-06-14
     2020-06-14 13:07:52   next_13thStreet_002_btime 14:35:00
     2020-06-14 13:07:52   next_13thStreet_002_desc Nachdem die Leichen zweier Männer gefunden wurden von denen einer zuvor einen falschen Ausweis für einen Marine Sergeant ausgestellt hatte nimmt das NCIS-Team die Ermittlungen auf. Die Spur führt zu einer Gruppe von Flüchtlingskindern die vorübergehend in einer Militärbasis untergebracht wurden. Gibbs nimmt ein zehnjähriges Mädchen in seine Obhut das offenbar im Visier einer Bande ist.
Leslie Libman
Mark Harmon
David McCallum
Pauley Perrette
Sean Murray
Brian Dietzen
Emily Wickersham
Wilmer Valderrama
Duane Henry
Maria Bello
Rocky Carroll
Daniel Steven Gonzalez
Luis Jose Lopez
Alexis Carra
Lily Rose Silver
Matty Cardarople
R.M. Armas
Hans Marrero
Jessen Noviello
     2020-06-14 13:07:52   next_13thStreet_002_stitle (NCIS: Naval Criminal Investigative Service)Eiskalte Waffen (2018) [16+]
     2020-06-14 13:07:52   next_13thStreet_002_title Navy CIS
     2020-06-14 12:47:03   next_ARD_000_bdate 2020-06-14
     2020-06-14 12:47:03   next_ARD_000_btime 12:45:00
     2020-06-14 12:47:03   next_ARD_000_desc Das wöchentliche Magazin will schwierige politische Prozesse und komplexe Probleme Europas erklären aber auch fremde Mentalitäten und Perspektiven zeigen
     2020-06-14 12:47:03   next_ARD_000_stitle [Auslandsmagazin, Europa] Bericht aus Brüssel (2020)
     2020-06-14 12:47:03   next_ARD_000_title Europamagazin
     2020-06-14 12:47:03   next_ARD_001_bdate 2020-06-14
     2020-06-14 12:47:03   next_ARD_001_btime 13:15:00
     2020-06-14 12:47:03   next_ARD_001_desc Im Norden Europas ist der Seeadler heimisch der Gegenden mit Wäldern Seen und Sümpfe bevorzugt. In Deutschland kann man Seeadler im wasserreichen Nordosten beobachten. Der Film zeigt die Vögel auf einer von Kormoranen besiedelten Insel wo sie einen günstigen Lebensraum vorfinden. Ideal wäre allerdings eine Wildnis in der die Adler vom Jagdglück der Wölfe und Bären profitieren könnten.
Alastair Fothergill
     2020-06-14 12:47:03   next_ARD_001_stitle [Tierdokumentation, Tiere]  (2014)
     2020-06-14 12:47:03   next_ARD_001_title Seeadler - Der Vogel Phönix
     2020-06-14 12:47:03   next_ARD_002_bdate 2020-06-14
     2020-06-14 12:47:03   next_ARD_002_btime 14:00:00
     2020-06-14 12:47:03   next_ARD_002_desc Aktuelle Themen aus Politik Wirtschaft Kultur Sport Gesellschaft und Wissenschaft aus dem In- und Ausland werden in ausführlichen Hintergrundberichten beleuchtet. In Stellungnahmen und Meinungsäusserungen wird auch unterschiedlichne Standpunkten Raum gegeben
     2020-06-14 12:47:03   next_ARD_002_stitle Mit Wetter
     2020-06-14 12:47:03   next_ARD_002_title Tagesschau
     2020-06-14 13:07:52   next_AXN_000_bdate 2020-06-14
     2020-06-14 13:07:52   next_AXN_000_btime 12:45:00
     2020-06-14 13:07:52   next_AXN_000_desc Als Jack Dwyer von seiner Firma die Leitung einer Wasseraufbereitungsanlage in Südostasien angeboten bekommt ergreift er die Gelegenheit und zieht mit seiner Familie um. Schon bei ihrer Ankunft bemerken die Dwyers dass etwas nicht stimmt. Als Jack in einen Aufstand von Rebellen gerät die es auf Ausländer abgesehen haben flüchtet er zurück ins Hotel um seine Familien in Sicherheit zu bringen.
John Erick Dowdle
Owen Wilson
Lake Bell
Pierce Brosnan
Sterling Jerins
Claire Geare
Sahajak Boonthanakit
Thanawut Ketsaro
Chatchawai Kamonsakpitak
Tanapol Chuksrida
Nophand Boonyai
Kanarpat Phintiang
Jon Goldney
Duang Maidork
Suphornnaphat Jenselius
Barthélemy Son
Mikayla Friend
Stacy Chbosky
Thanawat Kaewarkorn
Spencer Garrett
     2020-06-14 13:07:52   next_AXN_000_stitle [Actionthriller]  (2015) [16+]
     2020-06-14 13:07:52   next_AXN_000_title No Escape
     2020-06-14 13:07:52   next_AXN_001_bdate 2020-06-14
     2020-06-14 13:07:52   next_AXN_001_btime 14:30:00
     2020-06-14 13:07:52   next_AXN_001_desc Der junge Bauarbeiter Dennis Nash arbeitet hart um für seine Mutter und seinen Sohn Connor zu sorgen. Nach einer versäumten Zahlung kommt es jedoch zur Zwangsräumung und von einem auf den anderen Tag steht Dennis mit seiner Familie auf der Strasse. Um sein Zuhause zurückzugewinnen ist Dennis zu allem bereit und nimmt ein dubioses Jobangebot des skrupellosen Immobilienmaklers Rick Carver an.
Ramin Bahrani
Andrew Garfield
Michael Shannon
Laura Dern
Tim Guinee
Noah Lomax
Clancy Brown
Randy Austin
Cullen Moss
Doug Griffin
Carl Palmer
James Brown
Luke Sexton
Alex Aristidis
Jonathan Tabler
Garrett Kruithof
Richard Holden
Deneen Tyler
Albert C. Bates
Jayson Warner Smith
     2020-06-14 13:07:52   next_AXN_001_stitle (2014) [12+]
     2020-06-14 13:07:52   next_AXN_001_title 99 Homes
     2020-06-14 13:07:52   next_AXN_002_bdate 2020-06-14
     2020-06-14 13:07:52   next_AXN_002_btime 16:30:00
     2020-06-14 13:07:52   next_AXN_002_desc Atlanta ist schwer vom Verbrechen gebeutelt Strassenschlachten öffentlichen Hinrichtung und brutaler Folter mit denen die übermächtige Russenmafia ihre Vorherrschaft deutlich macht. Für viele Cops bieten sich verführerische Möglichkeiten - Zu den korrupten Polizisten gehört auch Marcus Atwood der gar nicht begeistert ist als man ihm als Partner den Frischling Chris zur Seite stellt…
John Hillcoat
Casey Affleck
Chiwetel Ejiofor
Anthony Mackie
Aaron Paul
Norman Reedus
Kate Winslet
Woody Harrelson
Clifton Collins Jr.
Gal Gadot
Teresa Palmer
Michelle Ang
Luis Da Silva Jr.
E. Roger Mitchell
Carlos Aviles
Michael Harding
Susanne Marie Danger
Natalie Shaheen
Valiant Michael
Mary Rachel Quinn
     2020-06-14 13:07:52   next_AXN_002_stitle [Krimidrama]  (Triple Nine) (2016) [16+]
     2020-06-14 13:07:52   next_AXN_002_title Triple 9
     2020-06-14 13:06:22   next_AandE_000_bdate 2020-06-14
     2020-06-14 13:06:22   next_AandE_000_btime 12:35:00
     2020-06-14 13:06:22   next_AandE_000_desc Die Doku-Reihe Evil Twins taucht ein in echte schockierende Zwillings-Kriminalfälle wie jener eines weiblichen Zwillings der den Ehemann ihrer Schwester verführte und ein Mordkomplott ausheckte oder jener Fall bei dem der eine Zwilling die Identität des anderen annahm.
Jen Ayer Drake
Tony Barber
Matt Gulbranson
Andrew Patrick LaHaise
Robert Olausen
Janae Palmer
Chaz Riddle
Meg Scanlon
Arthur Titus
Brannon Titus
Daniel Wagner.
     2020-06-14 13:06:22   next_AandE_000_stitle [Doku-Serie, Recht + Kriminalität]  (Evil Twins)William und Christopher Cormier (2017) [16+]
     2020-06-14 13:06:22   next_AandE_000_title Evil Twins - Böse Zwillinge
     2020-06-14 13:06:22   next_AandE_001_bdate 2020-06-14
     2020-06-14 13:06:22   next_AandE_001_btime 13:25:00
     2020-06-14 13:06:22   next_AandE_001_desc Der Serienmörder Ted Bundy tötete in den 1970er-Jahren mindestens 30 Frauen und Mädchen. Die Morde hatten ihren Ursprung in seiner persönlichen Geschichte einer Kindheit ohne Vater und einer Mutter die sich als Teds Schwester ausgab. Bundy beging seine Verbrechen stets bei Nacht und an den meisten Tatorten wurde ein Mann gesichtet der einen Gips oder eine Schlinge trug und einen Käfer fuhr.
     2020-06-14 13:06:22   next_AandE_001_stitle [Recht + Kriminalität]  (Ted Bundy: Serial Monster)Wurzeln des Bösen (2018) [16+]
     2020-06-14 13:06:22   next_AandE_001_title Ted Bundy - Ein Wolf im Schafspelz
     2020-06-14 13:06:22   next_AandE_002_bdate 2020-06-14
     2020-06-14 13:06:22   next_AandE_002_btime 14:15:00
     2020-06-14 13:06:22   next_AandE_002_desc Kurz nach Teds Umzug nach Salt Lake City beginnt in der Gegend eine neue Mordserie.
     2020-06-14 13:06:22   next_AandE_002_stitle [Recht + Kriminalität]  (Ted Bundy: Serial Monster)Perfide Masche (2018) [16+]
     2020-06-14 13:06:22   next_AandE_002_title Ted Bundy - Ein Wolf im Schafspelz
     2020-06-14 12:47:04   next_AnimalPlanet_000_bdate 2020-06-14
     2020-06-14 12:47:04   next_AnimalPlanet_000_btime 12:40:00
     2020-06-14 12:47:04   next_AnimalPlanet_000_desc Groß, größer, am größten! Handelsübliche Zimmer-Aquarien sind auch nett, doch mit 10-Liter-Becken haben Wayde King und sein Partner Brett Raymer wenig am Hut. Ihr Spezialgebiet sind atemberaubende Unterwasserwelten! Vom achteckigen Ökosystem mit Muränen und Stachelrochen über das Telefonzellen-Aquarium bis zum Haifisch-Tank für die Arztpraxis: Es gibt fast keine Idee, an die sich die Jungs nicht herantrauen. Dementsprechend lautet das Motto der beiden New Yorker: Wovon andere träumen, setzen wir in die Tat um! Und ihre Super-Aquarien gefallen nicht nur den Unterwasserbewohnern ausgesprochen gut, sondern auch dem Publikum. Wo immer Brett und Wayde ihre beeindruckenden Spezialanfertigungen der Öffentlichkeit präsentieren, kommen die Leute aus dem Staunen nicht heraus
     2020-06-14 12:47:04   next_AnimalPlanet_000_stitle Reality-Soap
     2020-06-14 12:47:04   next_AnimalPlanet_000_title Die Aquarium-Profis: Episode 2
     2020-06-14 12:47:04   next_AnimalPlanet_001_bdate 2020-06-14
     2020-06-14 12:47:04   next_AnimalPlanet_001_btime 13:25:00
     2020-06-14 12:47:04   next_AnimalPlanet_001_desc Groß, größer, am größten! Handelsübliche Zimmer-Aquarien sind auch nett, doch mit 10-Liter-Becken haben Wayde King und sein Partner Brett Raymer wenig am Hut. Ihr Spezialgebiet sind atemberaubende Unterwasserwelten! Vom achteckigen Ökosystem mit Muränen und Stachelrochen über das Telefonzellen-Aquarium bis zum Haifisch-Tank für die Arztpraxis: Es gibt fast keine Idee, an die sich die Jungs nicht herantrauen. Dementsprechend lautet das Motto der beiden New Yorker: Wovon andere träumen, setzen wir in die Tat um! Und ihre Super-Aquarien gefallen nicht nur den Unterwasserbewohnern ausgesprochen gut, sondern auch dem Publikum. Wo immer Brett und Wayde ihre beeindruckenden Spezialanfertigungen der Öffentlichkeit präsentieren, kommen die Leute aus dem Staunen nicht heraus
     2020-06-14 12:47:04   next_AnimalPlanet_001_stitle Reality-Soap
     2020-06-14 12:47:04   next_AnimalPlanet_001_title Die Aquarium-Profis: Episode 3
     2020-06-14 12:47:07   next_AnimalPlanet_002_bdate 2020-06-14
     2020-06-14 12:47:07   next_AnimalPlanet_002_btime 14:10:00
     2020-06-14 12:47:08   next_AnimalPlanet_002_desc Tansania, Ostafrika: Rund 30 Kilometer vom Festland entfernt befindet sich ein tropisches Inselparadies mit traumhaften Stränden, üppigem Regenwald und einer lebendigen afrikanischen Kultur. Die Rede ist von Sansibar! Einst lebte hier ein geschickter Räuber, dem sogar mystische Kräfte nachgesagt werden - der Sansibar-Leopard oder Panthera pardus adersi. Doch seit 25 Jahren gilt diese außergewöhnliche Raubkatze als ausgestorben. Dank akribischer Recherche vor Ort und mit der Hilfe einheimischer Nationalpark-Ranger gelingt Wildtierbiologe Forrest Galante eine doppelte Sensation: Er findet heraus, dass der Sansibar-Leopard noch lebt und liefert den einzigartigen Videobeweis gleich dazu.
     2020-06-14 12:47:08   next_AnimalPlanet_002_stitle Dokumentation
     2020-06-14 12:47:08   next_AnimalPlanet_002_title Extinct Or Alive - Ausgestorben oder nicht?: Der Sansibar-Leopard
     2020-06-14 13:06:10   next_DMax_000_bdate 2020-06-14
     2020-06-14 13:06:10   next_DMax_000_btime 12:50:00
     2020-06-14 13:06:11   next_DMax_000_desc Baustoffe, Heizmaterial, Lebensmittel: Pro Jahr werden in Shoreham am Ärmelkanal zwei Millionen Tonnen Fracht umgeschlagen. Aber so etwas wie Alltag gibt es im Hafen nicht. Jeder Auftrag ist anders und unvorhergesehene Zwischenfälle gehören zum Geschäft. Heute sollen 5.000 Tonnen zerhäckseltes Holz nach Schweden verschifft werden. Dort verfeuern Heizkraftwerke den Biomassebrennstoff später zu Wärme und Strom. Bevor die Ware an Bord kann, muss allerdings erst der 95 Meter lange Schüttgutfrachter Kamelia durch die schmale Schleuse von Shoreham. Lotsen und Lademeister sind bereits zur Stelle. Doch plötzlich bringt eine Staubwolke aus Sägespänen die Arbeiter und ihre Maschinen in Gefahr
     2020-06-14 13:06:10   next_DMax_000_stitle Dokumentation
     2020-06-14 13:06:10   next_DMax_000_title Mega Shippers - Die Profis vom Frachthafen: Episode 15
     2020-06-14 13:06:11   next_DMax_001_bdate 2020-06-14
     2020-06-14 13:06:11   next_DMax_001_btime 13:45:00
     2020-06-14 13:06:11   next_DMax_001_desc Die Saison neigt sich dem Ende entgegen und Kelly Tishler setzt in Australien alles auf eine Karte. Ihre Geldreserven sind vollkommen aufgebraucht, deshalb muss die Schatzsucherin einen umgebauten Betonmischer verkaufen, um in Lightning Ridge eine weitere Probebohrung zu finanzieren. Dabei hat es die Edelstein-Expertin auf Schwarze Opale abgesehen, die pro Gramm bis zu 175 000 Dollar einbringen können. Die Boulder Boys geben auf der Zielgeraden ebenfalls Vollgas. Und die harte Plackerei auf dem Dragonfly-Claim zahlt sich für die Glücksritter aus
     2020-06-14 13:06:11   next_DMax_001_stitle Reality-Soap
     2020-06-14 13:06:11   next_DMax_001_title Outback Opal Hunters - Edelsteinjagd in Australien: Ende gut, alles gut
     2020-06-14 13:06:11   next_DMax_002_bdate 2020-06-14
     2020-06-14 13:06:11   next_DMax_002_btime 14:40:00
     2020-06-14 13:06:11   next_DMax_002_desc Unter der Erdoberfläche des australischen Kontinents verbirgt sich ein kostbarer Schatz: Opale. Die funkelnden Juwelen können Schatzsucher über Nacht zu Millionären machen. Aber die Jagd nach den Edelsteinen ist im Outback mit großen Risiken und Gefahren verbunden. In der kargen Wüstenlandschaft bekommen es die Abenteurer mit extremer Hitze und ungebetenen Eindringlingen zu tun. Rod Manning und Les Walsh verfolgen zum Auftakt der neuen Staffel mit ihrem Jeep in der Dunkelheit dreiste Claim-Räuber, die sich auf Kosten anderer bereichern wollen
     2020-06-14 13:06:11   next_DMax_002_stitle Reality-Soap
     2020-06-14 13:06:11   next_DMax_002_title Outback Opal Hunters - Edelsteinjagd in Australien: Angriff auf den Claim
     2020-06-14 12:47:08   next_History_000_bdate 2020-06-14
     2020-06-14 12:47:08   next_History_000_btime 12:35:00
     2020-06-14 12:47:08   next_History_000_desc Etwas unaussprechlich Böses quält die jungen Mädchen in Reverend Samuel Parris Haushalt und verbreitet sich wie eine Seuche rasend schnell in der Stadt Salem. Es sieht so aus als sei die fromme Gemeinde vom Teufel persönlich heimgesucht worden.
Chayla Day
Kyla Despres
Kayla Jo Farris
Adam Jenner
Lisa Kovack
Quinton Neufeldt
Kasey Nugent
David Parisian
Aundreya Thompson
James J. Wilson
Sylvain Plasse
     2020-06-14 12:47:08   next_History_000_stitle [Doku-Serie]  (Witches Of Salem)Gottlos (2019) [12+]
     2020-06-14 12:47:08   next_History_000_title Witches of Salem
     2020-06-14 12:47:08   next_History_001_bdate 2020-06-14
     2020-06-14 12:47:08   next_History_001_btime 13:30:00
     2020-06-14 12:47:08   next_History_001_desc Die Paranoia erreicht ihren Höhepunkt und die dämonische Verschwörungstherorie die Salem terrorisiert verschont niemanden. Das Gefängnis von Boston füllt sich mit Frauen und Mädchen die unter Verdacht stehen Hexen zu sein und den Angeklagten steht die Hinrichtung bevor wenn sie für schuldig befunden werden.
Chayla Day
Kyla Despres
Kayla Jo Farris
David Parisian
Sylvain Plasse
     2020-06-14 12:47:08   next_History_001_stitle [Doku-Serie]  (Witches Of Salem)Paranoia (2019) [12+]
     2020-06-14 12:47:08   next_History_001_title Witches of Salem
     2020-06-14 12:47:08   next_History_002_bdate 2020-06-14
     2020-06-14 12:47:08   next_History_002_btime 14:25:00
     2020-06-14 12:47:08   next_History_002_desc Wer ist der bessere Fussballer Cristiano Ronaldo oder Lionel Messi? Ein Expertengremium wird entscheiden
     2020-06-14 12:47:08   next_History_002_stitle [Fussball, Sonstige]  (Historys Greatest Players - Head to Head)Cristiano Ronaldo vs. Lionel Messi (2018) [12+]
     2020-06-14 12:47:08   next_History_002_title Superstars des Fussballs - Rivalen auf dem Rasen
     2020-06-14 12:47:00   next_KabelEinsClassic_000_bdate 2020-06-14
     2020-06-14 12:47:00   next_KabelEinsClassic_000_btime 12:35:00
     2020-06-14 12:47:00   next_KabelEinsClassic_000_desc Anfang des 20. Jahrhunderts teilen in Italien politische Differenzen die Bevölkerung in rivalisierende Klassen. Neben den Sozialisten entwickeln sich faschistische Tendenzen. In diesem Klima werden zeitgleich zwei Jungen geboren: Alfredo und Olmo. Beide stammen aus Familien, die unterschiedlicher nicht sein könnten - trotzdem werden sie Freunde. Sie teilen ihre Jugend miteinander, doch der Ausbruch des Ersten Weltkrieges stellt ihre Freundschaft auf die Probe
     2020-06-14 12:47:00   next_KabelEinsClassic_000_stitle Drama
     2020-06-14 12:47:00   next_KabelEinsClassic_000_title 1900 - Gewalt, Macht, Leidenschaft (1)
     2020-06-14 12:47:00   next_KabelEinsClassic_001_bdate 2020-06-14
     2020-06-14 12:47:00   next_KabelEinsClassic_001_btime 15:15:00
     2020-06-14 12:47:01   next_KabelEinsClassic_001_desc Fortsetzung von Bernardo Bertoluccis monumentalem Historiendrama 1900: Die faschistischen Schwarzhemden gewinnen die politische Obermacht in Italien. Die beiden Freunde Alfredo und Olmo finden sich auf der Seite zweier politischer Fronten wieder. Beide durchleben die Jahre bis zu den Befreiungsfeiern im Jahr 1945. Der eine als politisch aktiver Sozialist, der andere als politisch konservativer Lebemann
     2020-06-14 12:47:01   next_KabelEinsClassic_001_stitle Drama
     2020-06-14 12:47:00   next_KabelEinsClassic_001_title 1900 - Kampf, Liebe, Hoffnung (2)
     2020-06-14 12:47:01   next_KabelEinsClassic_002_bdate 2020-06-14
     2020-06-14 12:47:01   next_KabelEinsClassic_002_btime 17:45:00
     2020-06-14 12:47:01   next_KabelEinsClassic_002_desc Während sich John Blackthorne und Fürst Soranaga weiter annähern, planen die Jesuiten, den Seemann zu töten. Schon kurz darauf wird er von einem Unbekannten angegriffen. Doch auch Soranaga schmiedet Pläne: Er will von Schloss Osaka fliehen .
     2020-06-14 12:47:01   next_KabelEinsClassic_002_stitle Abenteuerserie
     2020-06-14 12:47:01   next_KabelEinsClassic_002_title Shogun
     2020-06-14 13:06:11   next_KabelEinsDoku_000_bdate 2020-06-14
     2020-06-14 13:06:11   next_KabelEinsDoku_000_btime 13:00:00
     2020-06-14 13:06:11   next_KabelEinsDoku_000_desc Seit mehr als 10.000 Jahren errichtet der Mensch Bauwerke. Doch dabei wurde manchmal auch gepfuscht: Baukatastrophen weltweit enthüllt die größten Fehler und Missgeschicke der Ingenieurskünste auf der ganzen Welt. Dabei wird außerdem analysiert, was genau falsch lief, warum so manch schwerwiegender Fauxpas bislang unentdeckt blieb und natürlich, wie verheerende Folgen vermieden werden können
     2020-06-14 13:06:11   next_KabelEinsDoku_000_stitle Dokumentation
     2020-06-14 13:06:11   next_KabelEinsDoku_000_title Baukatastrophen weltweit: Gefährliches Baseballspiel
     2020-06-14 13:06:11   next_KabelEinsDoku_001_bdate 2020-06-14
     2020-06-14 13:06:11   next_KabelEinsDoku_001_btime 13:50:00
     2020-06-14 13:06:11   next_KabelEinsDoku_001_desc Seit mehr als 10.000 Jahren errichtet der Mensch Bauwerke. Doch dabei wurde manchmal auch gepfuscht: Baukatastrophen weltweit enthüllt die größten Fehler und Missgeschicke der Ingenieurskünste auf der ganzen Welt. Dabei wird außerdem analysiert, was genau falsch lief, warum so manch schwerwiegender Fauxpas bislang unentdeckt blieb und natürlich, wie verheerende Folgen vermieden werden können
     2020-06-14 13:06:11   next_KabelEinsDoku_001_stitle Dokumentation
     2020-06-14 13:06:11   next_KabelEinsDoku_001_title Baukatastrophen weltweit: Ein Stadtarchiv geht unter
     2020-06-14 13:06:11   next_KabelEinsDoku_002_bdate 2020-06-14
     2020-06-14 13:06:11   next_KabelEinsDoku_002_btime 14:40:00
     2020-06-14 13:06:11   next_KabelEinsDoku_002_desc Seit mehr als 10.000 Jahren errichtet der Mensch Bauwerke. Doch dabei wurde manchmal auch gepfuscht: Baukatastrophen weltweit enthüllt die größten Fehler und Missgeschicke der Ingenieurskünste auf der ganzen Welt. Dabei wird außerdem analysiert, was genau falsch lief, warum so manch schwerwiegender Fauxpas bislang unentdeckt blieb und natürlich, wie verheerende Folgen vermieden werden können
     2020-06-14 13:06:11   next_KabelEinsDoku_002_stitle Dokumentation
     2020-06-14 13:06:11   next_KabelEinsDoku_002_title Baukatastrophen weltweit: Flammeninferno im Tankdepot
     2020-06-14 11:27:28   next_Kabel_000_bdate 2020-06-14
     2020-06-14 11:27:28   next_Kabel_000_btime 11:20:00
     2020-06-14 11:27:28   next_Kabel_000_desc Zum Winteranfang fährt Tamme Hanken mit seiner Gattin Carmen nach Österreich. Bei seinem Weg in die Alpen stattet er einem Wolfsrudel im niedersächsischen Springe einen Besuch ab und schaut auf einer außergewöhnlichen Rentieralm an der Nahe vorbei. In Österreich angekommen, erlebt er auf dem Hintertuxer Gletscher in knapp 3.000 Metern Höhe einen Sammeltermin mit fünf Hunden. Außerdem bringt Tamme zwei edle Lipizzaner wieder auf Trab .
     2020-06-14 11:27:28   next_Kabel_000_stitle Dokumentation
     2020-06-14 11:27:28   next_Kabel_000_title Tamme Hanken - Der Knochenbrecher on tour: Österreich
     2020-06-14 11:27:28   next_Kabel_001_bdate 2020-06-14
     2020-06-14 11:27:28   next_Kabel_001_btime 13:15:00
     2020-06-14 11:27:28   next_Kabel_001_desc Abenteuer Leben Spezial begibt sich diesmal auf die Suche nach den verrücktesten Meisterschaften weltweit. Dafür geht es unter anderem nach Luxemburg zur Koch-WM, zur Barbecue-Weltmeisterschaft in die USA und zur Bodypainting-Weltmeisterschaft 2018 in Klagenfurt
     2020-06-14 11:27:28   next_Kabel_001_stitle Infomagazin
     2020-06-14 11:27:28   next_Kabel_001_title Abenteuer Leben Spezial - Die verrücktesten Meisterschaften weltweit
     2020-06-14 11:27:28   next_Kabel_002_bdate 2020-06-14
     2020-06-14 11:27:28   next_Kabel_002_btime 15:10:00
     2020-06-14 11:27:28   next_Kabel_002_desc Auf der Suche nach neuen Geschmackserlebnissen begibt sich Spitzenkoch Mike Süsser diese Woche nach Düsseldorf. Er startet im Stadtteil Unterbilk. Hier befindet sich das Robs Kitchen. Gastgeber Robert Rob Op den Kamp (41) verwöhnt seine Gäste mit innovativen Speisen in einer international ausgerichteten Kreativküche. Wird er mit seinem Know-how auch den Profi und seine Mitstreiter überzeugen können
     2020-06-14 11:27:28   next_Kabel_002_stitle Kochshow
     2020-06-14 11:27:28   next_Kabel_002_title Mein Lokal, Dein Lokal - Der Profi kommt: Restaurant Robs Kitchen, Düsseldorf
     2020-06-14 13:06:22   next_Kinowelt_000_bdate 2020-06-14
     2020-06-14 13:06:22   next_Kinowelt_000_btime 13:05:00
     2020-06-14 13:06:22   next_Kinowelt_000_desc Goldener Löwe, Venedig Nach 30 Jahren kehrt der kolumbianische Schriftsteller Fernando Vallejo in seine Heimatstadt Medellín zurück. Ein Ort des Schreckens erwartet ihn: die Drogenmafia und mordende Jugendliche beherrschen die einst friedliche Stadt. Inmitten von Horror, Chaos und Hass begegnet Fernando dem 16jährigen Alexis, der seinen Lebensunterhalt als Auftragskiller verdient. Eine tiefe Liebe entwickelt sich zwischen den Beiden, eine hoffnungslose Liebe, überschattet von der wachsenden Mordlust Alexis. Eines Tages wird Alexis getötet. Doch dann trifft Fernando auf Wílmar, der Alexis verblüffend ähnlich ist. Es scheint, als ob die Stadt lebende Repliken der Toten erschaffen hat. Barbet Schroeders (Die Affäre der Sunny von B., Weiblich, ledig, jung sucht...) schonungsloses Porträt einer von Drogenhandel und Bandengewalt geprägten kolumbianischen Gesellschaft
     2020-06-14 13:06:22   next_Kinowelt_000_stitle Drama
     2020-06-14 13:06:22   next_Kinowelt_000_title Die Madonna der Mörder
     2020-06-14 13:06:22   next_Kinowelt_001_bdate 2020-06-14
     2020-06-14 13:06:22   next_Kinowelt_001_btime 14:50:00
     2020-06-14 13:06:23   next_Kinowelt_001_desc David Hudson ist also sein Name! Viel mehr hat der smarte Typ nicht über seine Herkunft herausfinden können, seit er in den Hügeln von Hollywood neben einem toten Cop aufgewacht ist - ohne jegliche Erinnerung. Aber eins ist schnell klar - besonders beliebt scheint er nicht zu sein. Offenbar will ihn so ziemlich jeder um die Ecke bringen und selbst die Frauen, die bereitwillig mit ihm schlafen, sind ihm alles andere als wohl gesonnen. Und dann ist da noch dieser Privatdetektiv Sam Ruben, der ihm die ganze Zeit hinterher schnüffelt. Leichen, Drogen und schneller Sex begleiten Davids Suche nach der eigenen Identität. Er ist offensichtlich der Bad Guy in diesem Spiel. Oder etwa nicht? Der elegant gezeichnete Großstadtkrimi schwelgt in atmosphärischen Schwarzweißbildern mit akzentuierten Farbeinsätzen und untermalt seine fesselnde Story mit großartigen Jazzklängen. Spannend, brutal und sexy - ein Animationsfilm ausschließlich für Erwachsene
     2020-06-14 13:06:23   next_Kinowelt_001_stitle Animationsfilm
     2020-06-14 13:06:23   next_Kinowelt_001_title Film Noir
     2020-06-14 13:06:23   next_Kinowelt_002_bdate 2020-06-14
     2020-06-14 13:06:23   next_Kinowelt_002_btime 16:30:00
     2020-06-14 13:06:23   next_Kinowelt_002_desc 1 Silberner Bär, Berlin 1 Europäischer Filmpreis Nominiert für 2 Oscars® England in den 30er Jahren: Der hässliche und missgebildete Richard, Duke of Gloucester, will nach dem Tod seines Vaters, König Henry VI, unbedingt auf den Thron. Doch sein älterer Bruder Edward steht in der Thronfolge vor ihm und wird zum König von England gekrönt. Der machtbesessene Richard lässt daraufhin keine Intrige, keine Verschwörung oder Putschversuch aus, um seinen Bruder auszustechen. Doch als er endlich als Richard III. den Thron bestiegen hat, wenden sich seine bisherigen Verbündeten gegen ihn und sein Niedergang ist besiegelt. Regisseur Richard Loncraine verlegt die Handlung von William Shakespeares Drama Richard III. in eine Alternativrealität eines faschistischen Englands in den 1930er Jahren
     2020-06-14 13:06:23   next_Kinowelt_002_stitle Drama
     2020-06-14 13:06:23   next_Kinowelt_002_title Richard III
     2020-06-14 12:47:01   next_N24Doku_000_bdate 2020-06-14
     2020-06-14 12:47:02   next_N24Doku_000_btime 12:15:00
     2020-06-14 12:47:02   next_N24Doku_000_desc Am Flughafen München hebt ein Airbus A350 ab. Das Langstrecken-Grossraumflugzeug des europäischen Flugzeugherstellers soll seinem grössten Konkurrenten der US-amerikanischen Boeing 787 Dreamliner den Kampf ansagen. Unter allen Verkehrsflugzeugen weist der A350 den höchsten Anteil an Kohlefaserstoffen in Rumpf und Tragflächen auf und setzt somit neue Stabilitätsmassstäbe bei hohem Komfort
     2020-06-14 12:47:02   next_N24Doku_000_stitle [Dokumentation]  (2017)
     2020-06-14 12:47:02   next_N24Doku_000_title Die Super-Airliner - Flugzeuge für das neue Jahrtausend
     2020-06-14 12:47:03   next_N24Doku_001_bdate 2020-06-14
     2020-06-14 12:47:03   next_N24Doku_001_btime 13:15:00
     2020-06-14 12:47:03   next_N24Doku_001_desc Seit fast 3000 Jahren sind Hebemaschinen ein wichtiger Bestandteil der Bauindustrie. Inzwischen wurden die einst einfachen Vorrichtungen zu komplexen Konstruktionen weiterentwickelt. In dieser Sendung werden Kräne vorgestellt die in ihrer Kategorie zu den besten gehören der Brückenkran Taisun der Kroll 10.000 der Mammoet PTC200 DS der Mobilkran Liebherr LTR 11200 und die Londoner Kaikräne
     2020-06-14 12:47:03   next_N24Doku_001_stitle [Doku-Serie]  (Worlds Top 5)Riesenkräne (2013)
     2020-06-14 12:47:03   next_N24Doku_001_title Die fünf Besten
     2020-06-14 12:47:03   next_N24Doku_002_bdate 2020-06-14
     2020-06-14 12:47:03   next_N24Doku_002_btime 14:10:00
     2020-06-14 12:47:03   next_N24Doku_002_desc Seit 2017 hält Strom aus Windkraft den zweitgrössten Anteil der Energieversorgung in Deutschland - und hat damit Atom- und Kohlekraft überholt. Fast 30.000 On- und Off-Shore-Windenergieanlagen gibt es momentan in Deutschland die etwa 19 Prozent unseres Energieverbrauchs abdecken. Die Reportage verfolgt die Konstruktion eines neuen Windkraftwerks im brandenburgischen Falkenthal
     2020-06-14 12:47:03   next_N24Doku_002_stitle [Dokumentation]  (2018)
     2020-06-14 12:47:03   next_N24Doku_002_title Strom aus Sturm - Ein Windrad entsteht
     2020-06-14 12:30:34   next_NatGeoHD_000_bdate 2020-06-14
     2020-06-14 12:30:34   next_NatGeoHD_000_btime 12:25:00
     2020-06-14 12:30:34   next_NatGeoHD_000_desc Der Mars-Rover Curiosity hat Geschichte geschrieben: Seit dem 6. August 2012 ist der Mini-Roboter auf der Marsoberfläche unterwegs und sammelt wertvolle Forschungsdaten
     2020-06-14 12:30:34   next_NatGeoHD_000_stitle Astronomie
     2020-06-14 12:30:34   next_NatGeoHD_000_title Mars-Rover: Erforschung des Roten Planeten
     2020-06-14 12:30:34   next_NatGeoHD_001_bdate 2020-06-14
     2020-06-14 12:30:34   next_NatGeoHD_001_btime 13:15:00
     2020-06-14 12:30:34   next_NatGeoHD_001_desc na
     2020-06-14 12:30:34   next_NatGeoHD_001_stitle Archäologie
     2020-06-14 12:30:34   next_NatGeoHD_001_title Petra - Geheimnisse antiker Baukunst
     2020-06-14 12:30:34   next_NatGeoHD_002_bdate 2020-06-14
     2020-06-14 12:30:34   next_NatGeoHD_002_btime 14:05:00
     2020-06-14 12:30:34   next_NatGeoHD_002_desc Eine Forschungsexpedition in Jordanien fördert neue Kenntnisse zum Schatz der Könige zutage: den Minen des für seine Weisheit ebenso wie für seinen Reichtum berühmten biblischen Königs Salomon
     2020-06-14 12:30:34   next_NatGeoHD_002_stitle Dokumentation
     2020-06-14 12:30:34   next_NatGeoHD_002_title Die Suche nach den Schätzen König Salomos
     2020-06-14 13:07:51   next_PLANET_000_bdate 2020-06-14
     2020-06-14 13:07:51   next_PLANET_000_btime 12:40:00
     2020-06-14 13:07:52   next_PLANET_000_desc In Tromsø ist es spät abends und die Tourleiter sind zum letzten Mal in der Saison auf der Jagd nach dem Nordlicht. Hans-Olavs Familie packt, um am Nachmittag nach Edinburgh zu fliegen. Dort wird er seinen Whiskey vorstellen. Aber bevor er selbst packen kann, muss er einen Vortrag über Qualitätssicherung in der Tourismusbranche halten
     2020-06-14 13:07:51   next_PLANET_000_stitle Land und Leute
     2020-06-14 13:07:51   next_PLANET_000_title Magische Nächte - Auf der Suche nach dem Nordlicht: Erfolg und Abschied
     2020-06-14 13:07:52   next_PLANET_001_bdate 2020-06-14
     2020-06-14 13:07:52   next_PLANET_001_btime 13:30:00
     2020-06-14 13:07:52   next_PLANET_001_desc Zurück auf Sumatra ändert Lei Jona seinen Reisestil. Er parkt das Zebra an der Ostküste Sumatras und fliegt nach Nepal. Hier stößt er auf eine ganz andere Welt. Kathmandu, die chaotische und volle Stadt, umgeben von 8000ern. Lama Ole Nydahl, buddhistischer Lama und Tom Andreas, NLP Coach und Ethnologe schildern einfühlsam die Veränderungen und den persönlichen Gewinn durch die innere Reise
     2020-06-14 13:07:52   next_PLANET_001_stitle Tourismus
     2020-06-14 13:07:52   next_PLANET_001_title GlobalTrek - Die Kunst der inneren Reise: Teil 4
     2020-06-14 13:07:52   next_PLANET_002_bdate 2020-06-14
     2020-06-14 13:07:52   next_PLANET_002_btime 14:30:00
     2020-06-14 13:07:52   next_PLANET_002_desc Raul Gomez, der Marathon Man, liebt es zu reisen und mit den Einheimischen verschiedener Länder an lokalen Marathons teilzunehmen. Mit viel Witz begegnet er den Menschen und kommt so den Kulturen sehr nah. In dieser Folge reist er nach Kalifornien
     2020-06-14 13:07:52   next_PLANET_002_stitle Dokumentation
     2020-06-14 13:07:52   next_PLANET_002_title Marathon Man: Kalifornien L.A
     2020-06-14 1
« Letzte Änderung: 14 Juni 2020, 13:18:21 von carlos »
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7449
Es fehlt eine gute Hälfte der Definition, insb die uiTable Parameter

Die Readings sind anscheinend da. Dann poste mal bitte ein "list -r" vom DOIF, ohne die "setstate" am Ende
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
define doif_TEST DOIF subs\
{\
  use utf8;;\
  use Date::Parse;;\
  # sudo apt-get install libxml-bare-perl\
  use XML::Bare 0.53 qw(forcearray);;\
  use Blocking;;\
  \
  ### CONFIG AREA ###\
  $_channelFilter = qr/^(?:ARD\.|ZDF\.|Sat1\.|RTL2?\.|Pro(?:7|SiebenMaxx)\.|DMax\.|Vox\.|Kabel(?:EinsClassic|EinsDoku)?\.|ntv\.|Sixx\.|TLC\.|N24Doku\.|SonyEntertainmentTV\.|AandE\.|TNT(?:Serie|Film)\.|AnimalPlanet\.|History\.|Kinowelt\.|NatGeoHD\.|PLANET\.|Silverline\.|13thStreet\.|AXN\.|SciFi\.)/;;\
  # telnet port must not be password protected (open)\
  $_telnetPort = 7072;;\
  $_timeAdjust = 0;;\
  $_path = '/opt/fhem/';;\
  $_dataFile = $_path.'rytecDE_Basic';;\
  # enable/disable unused channel filtering on filemerge (enabled = small file = faster)\
  $_filterChannels = 1;;\
  # enable/disable updates based on starttimes (enabled = update channels only if needed = faster)\
  $_updateBasedOnStarttimes = 1;;\
  \
  # internal variables\
  $_startTimes;;\
  \
  sub filterText($)\
  {\
    my $text = shift;;\
\
    $text =~ s/["`;;'\r]//g;;\
    $text =~ s/[\n]/
/g;;\
\
    return $text;;\
  }\
  \
  sub xmltv2epoch($)\
  {\
    my $t = shift;;\
\
    return Time::Piece->strptime($t, '%Y%m%d%H%M%S %z')->epoch;;\
  }\
\
  sub FmtDateTime($)\
  {\
    my @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 tvParse($$)\
  {\
    my ($device, $mode) = @_;;\
    my $obj;;\
    my $xml;;\
    my $lastChannel = '';;\
    my $reading = '';;\
    my $i = 999;;\
    my $n = 999;;\
    my $k = 0;;\
    my $primeTime = substr(FmtDateTime(time() + $_timeAdjust), 0, 11).'20:14:00';;\
    my $sendTelnet = '';;\
    \
    $obj = XML::Bare->new(file => $_dataFile);;\
    $xml = $obj->parse();;\
\
    if (!$@)\
    {\
      my $old = time() + $_timeAdjust;;\
\
      foreach (@{forcearray($xml->{'tv'}{'programme'})})\
      {\
        if ((0 != $_filterChannels) ||\
            ($_->{'channel'}{'value'} =~ $_channelFilter))\
        {\
          my $stop = xmltv2epoch($_->{'stop'}{'value'});;\
\
          # filter old stuff\
          if ($stop > $old)\
          {\
            if ($lastChannel ne $_->{'channel'}{'value'})\
            {\
              $lastChannel = $_->{'channel'}{'value'};;\
              $reading = $_->{'channel'}{'value'};;\
              $reading =~ s/[\.\s]//g;;\
              $reading =~ s/de$//;;\
              $n = 0;;\
              \
              if ((0 == $_updateBasedOnStarttimes) || !exists($_startTimes{$reading}) || ($_startTimes{$reading} <= $old))\
              {\
                $i = 0;;\
\
                if (0 != $_updateBasedOnStarttimes)\
                {\
                  $_startTimes{$reading} = $stop;;\
                }\
              }\
            }\
\
            if ($i < 3 && 'next' eq $mode)\
            {\
              my $fi = sprintf("%03d", $i);;\
              my $start = xmltv2epoch($_->{'start'}{'value'});;\
              my $readingName;;\
              my $readingValue;;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_bdate';;\
              $readingValue = substr(FmtDateTime($start), 0, 10);;\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_btime';;\
              $readingValue = substr(FmtDateTime($start), 11, 8);;\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_title';;\
              $readingValue = filterText(@{forcearray($_->{'title'})}[0]->{'value'});;\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_stitle';;\
              if (exists($_->{'sub-title'}{'value'}))\
              {\
                $readingValue = filterText($_->{'sub-title'}{'value'});;\
              }\
              else\
              {\
                $readingValue = 'na';;\
              }\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_desc';;\
              if (exists($_->{'desc'}{'value'}))\
              {\
                $readingValue = filterText($_->{'desc'}{'value'});;\
              }\
              else\
              {\
                $readingValue = 'na';;\
              }\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $k++;;\
              $i++;;\
            }\
\
            if ($n < 3 && 'prime' eq $mode)\
            {\
              my $start = xmltv2epoch($_->{'start'}{'value'});;\
              my $fmtStart = FmtDateTime($start);;\
              my $bdate = substr($fmtStart, 0, 10);;\
              my $btime = substr($fmtStart, 11, 8);;\
\
              if ($bdate.' '.$btime gt $primeTime)\
              {\
                my $fn = sprintf("%03d", $n);;\
                my $readingName;;\
                my $readingValue;;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_bdate';;\
                $readingValue = substr(FmtDateTime($start), 0, 10);;\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_btime';;\
                $readingValue = substr(FmtDateTime($start), 11, 8);;\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_title';;\
                $readingValue = filterText(@{forcearray($_->{'title'})}[0]->{'value'});;\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_stitle';;\
                if (exists($_->{'sub-title'}{'value'}))\
                {\
                  $readingValue = filterText($_->{'sub-title'}{'value'});;\
                }\
                else\
                {\
                  $readingValue = 'na';;\
                }\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_desc';;\
                if (exists($_->{'desc'}{'value'}))\
                {\
                  $readingValue = filterText($_->{'desc'}{'value'});;\
                }\
                else\
                {\
                  $readingValue = 'na';;\
                }\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $k++;;\
                $n++;;\
              }\
            }\
\
            if ($k >= 10)\
            {\
              `perl /opt/fhem/fhem.pl $_telnetPort "$sendTelnet"`;;\
\
              $k = 0;;\
              $sendTelnet = '';;\
            }\
          }\
        }\
      }\
\
      if ('' ne $sendTelnet)\
      {\
        `perl /opt/fhem/fhem.pl $_telnetPort "$sendTelnet"`;;\
      }\
    }\
    \
    return %{$_startTimes};;\
  }\
  \
  sub tvMerge($;;$)\
  {\
    my ($dstName, $srcName) = @_;;\
    my $fh;;\
    my $dst;;\
    my $src;;\
    my $start = '';;\
    my $channels1 = '';;\
    my $channels1_flt = '';;\
    my $channels2 = '';;\
    my $channels2_flt = '';;\
    my $programms1 = '';;\
    my $programms1_flt = '';;\
    my $programms2 = '';;\
    my $programms2_flt = '';;\
    my $end = '';;\
    my $pos;;\
\
    open($fh, '<', $dstName) or die "Can't open file $!";;\
    read($fh, $dst, -s $fh);;\
    close($fh);;\
\
    if (defined($srcName))\
    {\
      open($fh, '<', $srcName) or die "Can't open file $!";;\
      read($fh, $src, -s $fh);;\
      close($fh);;\
    }\
\
    if (-1 != ($pos = index($dst, '
    {\
      $start = substr($dst, 0, $pos);;\
    }\
\
    if (-1 != ($pos = rindex($dst, '')))\
    {\
      $end = substr($dst, $pos + 12);;\
    }\
\
    while ($dst =~ /(\s*)/sg)\
    {\
      if (0 != $_filterChannels)\
      {\
        $_ = $1;;\
\
        if ($2 =~ $_channelFilter)\
        {\
          $channels1_flt .= $_;;\
        }\
      }\
      else\
      {\
        $channels1 .= $1;;\
      }\
    }\
\
    while ($dst =~ /(\s*)/sg)\
    {\
      if (0 != $_filterChannels)\
      {\
        $_ = $1;;\
\
        if ($2 =~ $_channelFilter)\
        {\
          $programms1_flt .= $_;;\
        }\
      }\
      else\
      {\
        $programms1 .= $1;;\
      }\
    }\
\
    if (defined($srcName))\
    {\
      while ($src =~ /(\s*)/sg)\
      {\
        if (0 != $_filterChannels)\
        {\
          $_ = $1;;\
\
          if ($2 =~ $_channelFilter)\
          {\
            $channels2_flt .= $_;;\
          }\
        }\
        else\
        {\
          $channels2 .= $1;;\
        }\
      }\
\
      while ($src =~ /(\s*)/sg)\
      {\
        if (0 != $_filterChannels)\
        {\
          $_ = $1;;\
\
          if ($2 =~ $_channelFilter)\
          {\
            $programms2_flt .= $_;;\
          }\
        }\
        else\
        {\
          $programms2 .= $1;;\
        }\
      }\
    }\
\
    if (0 != $_filterChannels)\
    {\
      open($fh, '>', $dstName) or die "Can't open file $!";;\
\
      if (defined($srcName))\
      {\
        print $fh $start.$channels1_flt.$channels2_flt.$programms1_flt.$programms2_flt.$end;;\
      }\
      else\
      {\
        print $fh $start.$channels1_flt.$programms1_flt.$end;;\
      }\
\
      close($fh);;\
    }\
    else\
    {\
      open($fh, '>', $dstName) or die "Can't open file $!";;\
\
      if (defined($srcName))\
      {\
        print $fh $start.$channels1.$channels2.$programms1.$programms2.$end;;\
      }\
      else\
      {\
        print $fh $start.$channels1.$programms1.$end;;\
      }\
\
      close($fh);;\
    }\
  }\
\
  sub tvDownload()\
  {\
    my $output = '';; \
    \
    # other server\
    # http://www.xmltvepg.nl/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\
    $output .= qx(wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xz -O /opt/fhem/rytecDE_Basic.xz 2>&1);;\
    $output .= qx(xz -df /opt/fhem/rytecDE_Basic.xz 2>&1);;\
\
    if (0 != $_filterChannels)\
    {\
      tvMerge($_dataFile);;\
    }\
    \
    return $output;;\
  }\
\
  sub tvDownloadMerge()\
  {\
    my $output = '';; \
    \
    # other server\
    # http://www.xmltvepg.nl/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\
    $output .= qx(wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xz -O /opt/fhem/rytecDE_Basic.xz 2>&1);;\
    $output .= qx(xz -df /opt/fhem/rytecDE_Basic.xz 2>&1);;\
    $output .= qx(wget http://www.vuplus-community.net/rytec/rytecDE_Common.xz -O /opt/fhem/rytecDE_Common.xz 2>&1);;\
    $output .= qx(xz -df /opt/fhem/rytecDE_Common.xz 2>&1);;\
    \
    tvMerge($_dataFile, $_path.'rytecDE_Common');;\
\
    # download and merge other files here if needed\
    \
    return $output;;\
  }\
  \
  \
  sub startDownload($)\
  {\
    my $name = shift;;\
    \
    if (defined($_blockingcalls{PID_DOWNLOAD}))\
    {\
      ::Log3 $name, 3, $name.': Blocking call already running (download).';;\
\
      ::BlockingKill($_blockingcalls{PID_DOWNLOAD});;\
    }\
\
    $_blockingcalls{PID_DOWNLOAD} = ::BlockingCall('DOIF::doDownload', $name, 'DOIF::endDownload', 300, 'DOIF::abortDownload', $name);;\
  }\
  \
  sub DOIF::doDownload($)\
  {\
    my $name = shift;;\
    my $output = '';;\
    \
    $output = tvDownloadMerge();;\
    \
    return $name.'|'.$output;;\
  }\
  \
  sub DOIF::endDownload($)\
  {\
    my ($name, $output) = split("\\|", shift);;\
    \
    ::Log3 $name, 5, $name.': Blocking call finished to download tv data.';;\
    \
    delete($_blockingcalls{PID_DOWNLOAD});;\
  }\
  \
  sub DOIF::abortDownload($)\
  {\
    my $name = shift;;\
    \
    delete($_blockingcalls{PID_DOWNLOAD});;\
    \
    ::Log3 $name, 1, $name.': Blocking call aborted (download).';;\
  }\
  \
  sub startParse($$)\
  {\
    my ($name, $mode) = @_;;\
    \
    if (defined($_blockingcalls{PID_PARSE}))\
    {\
      ::Log3 $name, 3, $name.': Blocking call already running (parse).';;\
\
      ::BlockingKill($_blockingcalls{PID_PARSE});;\
    }\
    \
    $_blockingcalls{PID_PARSE} = ::BlockingCall('DOIF::doParse', $name.'|'.$mode, 'DOIF::endParse', 300, 'DOIF::abortParse', $name);;\
  }\
  \
  sub DOIF::doParse($)\
  {\
    my ($name, $mode) = split("\\|", shift);;\
    my $ret = $name;;\
    my %startTimes = tvParse($name, $mode);;\
    \
    foreach (keys(%startTimes))\
    {\
      $ret .= '|'.$_.'|'.$startTimes{$_};;\
    }\
    \
    return $ret;;\
  }\
  \
  sub DOIF::endParse($)\
  {\
    my ($name, @startTimes) = split("\\|", shift);;\
        \
    for (my $i = 0;; $i < (scalar(@startTimes) / 2);; $i += 2)\
    {\
      $_startTimes{$startTimes[$i]} = $startTimes[$i + 1];;\
    }\
    \
    ::Log3 $name, 5, $name.': Blocking call finished to parse tv data.';;\
    \
    delete($_blockingcalls{PID_PARSE});;\
  }\
  \
  sub DOIF::abortParse($)\
  {\
    my $name = shift;;\
    \
    delete($_blockingcalls{PID_PARSE});;\
    \
    ::Log3 $name, 1, $name.': Blocking call aborted (parse).';;\
  }\
}\
init\
{\
  startDownload("$SELF");;\
}\
{\
  if ([00:05|Mo Do])\
  {\
    startDownload("$SELF");;\
  }\
  \
  if ([+00:15]) \
  {\
    startParse("$SELF", 'next');;\
  }\
  \
  if ([00:30])\
  {\
    startParse("$SELF", 'prime');;\
  }\
}
attr doif_TEST alias Aktuelles TV-Programm
attr doif_TEST room 1_test
attr doif_TEST uiTable {\
  package ui_Table;;\
\
  $SHOWNOSTATE=1;;\
\
  $TR{0,31} = "style='color:yellow;;text-align:center;;font-weight:bold;;font-size:18px'";;\
  $TD{0..29,31..60}{2,4} = "style='font-size:16px;;border-right-style:solid;;border-color:#CCCCCC;;border-right-width:1px;;'";;\
  $TD{0..29,31..60}{0} = "align='center' style='border-right-style:solid;;border-color:#CCCCCC;;border-right-width:1px;;'";;\
  $TD{0..60}{1,3,5,6} = "style='font-size:16px;;'";;\
  $TD{30}{1..6} = "border-top-style:solid;;border-bottom-style:solid;;border-color:#CCCCCC;;border-top-width:1px;;border-bottom-width:1px;;'";;\
\
  sub rgUnfold\
  {\
    my ($title, $desc) = @_;;\
    $title = 'na' if (!defined($title));;\
    $desc = 'na'."\n\n".'na' if (!defined($desc));;\
\
    $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;;\
    return "".$title."";;\
  }\
}\
\
DEF TPL_TV(ICON("tv/$4")|substr([$1:$2_$3_000_btime],0,5)|rgUnfold([$1:$2_$3_000_title],[$1:$2_$3_000_stitle]."\n\n".[$1:$2_$3_000_desc])|substr([$1:$2_$3_001_btime],0,5)|rgUnfold([$1:$2_$3_001_title],[$1:$2_$3_001_stitle]."\n\n".[$1:$2_$3_001_desc])|substr([$1:$2_$3_002_btime],0,5)|rgUnfold([$1:$2_$3_002_title],[$1:$2_$3_002_stitle]."\n\n".[$1:$2_$3_002_desc]))\
\
"Sender"|"ab"|"Aktuelle Sendung"|"ab"|"Nächste Sendung"|"ab"|"Sendung"\
TPL_TV($SELF,next,ARD,ard)\
TPL_TV($SELF,next,ZDF,zdf)\
TPL_TV($SELF,next,Sat1,sat1)\
TPL_TV($SELF,next,RTL,rtl)\
TPL_TV($SELF,next,RTL2,rtl2)\
TPL_TV($SELF,next,Pro7,pro7)\
TPL_TV($SELF,next,DMax,dmax)\
TPL_TV($SELF,next,Vox,vox)\
TPL_TV($SELF,next,Kabel,kabel1)\
TPL_TV($SELF,next,KabelEinsClassic,kabel1classic)\
TPL_TV($SELF,next,13thStreet,13thstreet)\
TPL_TV($SELF,next,Silverline,silverline)\
TPL_TV($SELF,next,TNTFilm,tntfilm)\
TPL_TV($SELF,next,AXN,axn)\
TPL_TV($SELF,next,SonyEntertainmentTV,sonytv)\
TPL_TV($SELF,next,Kinowelt,kinowelt)\
TPL_TV($SELF,next,ProSiebenMaxx,pro7maxx)\
TPL_TV($SELF,next,Sixx,sixx)\
TPL_TV($SELF,next,TNTSerie,tntserie)\
TPL_TV($SELF,next,SciFi,syfy)\
TPL_TV($SELF,next,ntv,ntv)\
TPL_TV($SELF,next,N24Doku,n24)\
TPL_TV($SELF,next,History,history)\
TPL_TV($SELF,next,PLANET,planet)\
TPL_TV($SELF,next,KabelEinsDoku,kabel1doku)\
TPL_TV($SELF,next,AnimalPlanet,animalplanet)\
TPL_TV($SELF,next,NatGeoHD,natgeo)\
TPL_TV($SELF,next,TLC,tlc)\
TPL_TV($SELF,next,AandE,ae)\
" ;"|" ;"|" ;"|" ;"|" ;"|" ;"|" ;"\
"Sender"|"ab"|"Sendung"|"ab"|"Sendung"|"ab"|"Sendung"\
TPL_TV($SELF,prime,ARD,ard)\
TPL_TV($SELF,prime,ZDF,zdf)\
TPL_TV($SELF,prime,Sat1,sat1)\
TPL_TV($SELF,prime,RTL,rtl)\
TPL_TV($SELF,prime,RTL2,rtl2)\
TPL_TV($SELF,prime,Pro7,pro7)\
TPL_TV($SELF,prime,DMax,dmax)\
TPL_TV($SELF,prime,Vox,vox)\
TPL_TV($SELF,prime,Kabel,kabel1)\
TPL_TV($SELF,prime,KabelEinsClassic,kabel1classic)\
TPL_TV($SELF,prime,13thStreet,13thstreet)\
TPL_TV($SELF,prime,Silverline,silverline)\
TPL_TV($SELF,prime,TNTFilm,tntfilm)\
TPL_TV($SELF,prime,AXN,axn)\
TPL_TV($SELF,prime,SonyEntertainmentTV,sonytv)\
TPL_TV($SELF,prime,Kinowelt,kinowelt)\
TPL_TV($SELF,prime,ProSiebenMaxx,pro7maxx)\
TPL_TV($SELF,prime,Sixx,sixx)\
TPL_TV($SELF,prime,TNTSerie,tntserie)\
TPL_TV($SELF,prime,SciFi,syfy)\
TPL_TV($SELF,prime,ntv,ntv)\
TPL_TV($SELF,prime,N24Doku,n24)\
TPL_TV($SELF,prime,History,history)\
TPL_TV($SELF,prime,PLANET,planet)\
TPL_TV($SELF,prime,KabelEinsDoku,kabel1doku)\
TPL_TV($SELF,prime,AnimalPlanet,animalplanet)\
TPL_TV($SELF,prime,NatGeoHD,natgeo)\
TPL_TV($SELF,prime,TLC,tlc)\
TPL_TV($SELF,prime,AandE,ae)
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7449
Ok, sieht gut aus. Dann fehlt nur noch das Ergebnis von
ls -la /opt/fhem/www/images/tv
bzw unter windoof:
dir <path-to-fhem>\www\images\tv
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
Noch mal, das gab es nicht. Jetzt sind die Logos von Avm drin.
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Offline Invers

  • Hero Member
  • *****
  • Beiträge: 2084
Und die haben wahrscheinlich falsche Dateinamen. Oder das Format stimmt nicht.
« Letzte Änderung: 14 Juni 2020, 13:35:56 von Invers »
Pi3B Buster | F.-Box 7490 | CUL433 | CUL868 | SDuino + Siro | HM-LAN | 12 x Dect200  | 3 x Heizung FHT + FKont. | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x TKont. TFK-TI | HM-Bew.-Melder aussen + innen | 3 x Smoked. HM-SEC-SD-2

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7449
DEF TPL_TV(ICON("tv/$4")|sDas heisst, im Verzeichnis tv müssen die Logos von den Kanäle stehen. Dass Du die aus AVM kopiert hast, sollte kein Pb sein. Die müssen nur die Namen wie im DOIF haben:
Zitat
TPL_TV($SELF,next,ARD,ard)\
TPL_TV($SELF,next,ZDF,zdf)\
TPL_TV($SELF,next,Sat1,sat1)\
TPL_TV($SELF,next,RTL,rtl)\
TPL_TV($SELF,next,RTL2,rtl2)\
TPL_TV($SELF,next,Pro7,pro7)\

also z.B. ard.png, zdf.png, sat1.png usw

Quelle: https://download.avm.de/tv/logos/

EDIT: und die müssen natürlich die richtige Berechtigungen habe. Deswegen bitte das Ergebnis von
ls -la /opt/fhem/www/images/tv, was Du, warum auch immer, noch nicht geliefert hast. Ohne das, kann man nicht weiter analysieren.
« Letzte Änderung: 14 Juni 2020, 13:40:16 von amenomade »
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline Invers

  • Hero Member
  • *****
  • Beiträge: 2084
Hab noch nicht alle umbenannt, aber es werden gar keine angezeigt.

Zitat
pi@fhem3:~ $ sudo ls -la /opt/fhem/www/images/tv
insgesamt 1176
drwxrwxrwx 2 fhem dialout  4096 Jun 14 13:22 .
drwxrwxrwx 8 fhem dialout  4096 Jun 14 13:21 ..
-rwxrwxrwx 1 fhem dialout  9261 Jun 14 11:38 3sat_hd.png
-rwxrwxrwx 1 fhem dialout 10139 Jun 14 11:35 3sat.png
-rwxrwxrwx 1 fhem dialout  8201 Jun 14 11:38 alex.png
-rwxrwxrwx 1 fhem dialout 23520 Jun 14 11:38 aljazeera.png
-rwxrwxrwx 1 fhem dialout  9897 Jun 14 11:38 anixe_hd.png
-rwxrwxrwx 1 fhem dialout  6885 Jun 14 11:38 anixe_sd.png
-rwxrwxrwx 1 fhem dialout 15500 Jun 14 11:38 ard_alpha.png
-rwxrwxrwx 1 fhem dialout  4004 Jun 14 11:39 ard_one_hd.png
-rwxrwxrwx 1 fhem dialout  8178 Jun 14 11:39 arte_hd.png
-rwxrwxrwx 1 fhem dialout  6532 Jun 14 11:39 arte.png
-rwxrwxrwx 1 fhem dialout  9444 Jun 14 11:39 astro_tv.png
-rwxrwxrwx 1 fhem dialout 13555 Jun 14 11:39 bbc_world.png
-rwxrwxrwx 1 fhem dialout  9922 Jun 14 11:39 bibel_tv.png
-rwxrwxrwx 1 fhem dialout 12284 Jun 14 11:39 bloomberg.png
-rwxrwxrwx 1 fhem dialout     0 Jun 14 11:39 br_alpha.png
-rwxrwxrwx 1 fhem dialout 10252 Jun 14 11:39 br_hd.png
-rwxrwxrwx 1 fhem dialout 12603 Jun 14 11:39 br.png
-rwxrwxrwx 1 fhem dialout 16714 Jun 14 11:39 channel21.png
-rwxrwxrwx 1 fhem dialout 10721 Jun 14 11:40 cnn.png
-rwxrwxrwx 1 fhem dialout  8865 Jun 14 11:40 das_erste_hd.png
-rwxrwxrwx 1 fhem dialout  9660 Jun 14 11:40 das_erste.png
-rwxrwxrwx 1 fhem dialout 18260 Jun 14 11:40 das_vierte.png
-rwxrwxrwx 1 fhem dialout  7063 Jun 14 12:44 deutsche_welle.png
-rwxrwxrwx 1 fhem dialout 52861 Jun 14 12:44 disney_channel.png
-rwxrwxrwx 1 fhem dialout  6815 Jun 14 12:44 dmax.png
-rwxrwxrwx 1 fhem dialout 24451 Jun 14 12:44 dmf.png
-rwxrwxrwx 1 fhem dialout  6224 Jun 14 12:45 einsfestival_hd.png
-rwxrwxrwx 1 fhem dialout     0 Jun 14 12:45 eins_festival.png
-rwxrwxrwx 1 fhem dialout  8724 Jun 14 12:44 einsPlus_hd.png
-rwxrwxrwx 1 fhem dialout  9790 Jun 14 12:45 eins_plus.png
-rwxrwxrwx 1 fhem dialout  4228 Jun 14 12:46 einszweidrei_tv.png
-rwxrwxrwx 1 fhem dialout 48120 Jun 14 12:46 erf.png
-rwxrwxrwx 1 fhem dialout  6360 Jun 14 12:46 euronews.png
-rwxrwxrwx 1 fhem dialout     0 Jun 14 12:46 eurosport.png
-rwxrwxrwx 1 fhem dialout  6054 Jun 14 12:46 hr_hd.png
-rwxrwxrwx 1 fhem dialout  9043 Jun 14 12:46 hr.png
-rwxrwxrwx 1 fhem dialout  4563 Jun 14 12:46 hse24_extra.png
-rwxrwxrwx 1 fhem dialout  7724 Jun 14 12:46 hse24.png
-rwxrwxrwx 1 fhem dialout  2881 Jun 14 12:47 joiz.png
-rwxrwxrwx 1 fhem dialout 32035 Jun 14 12:47 juwelo.png
-rwxrwxrwx 1 fhem dialout 11593 Jun 14 12:47 kabel1_doku.png
-rwxrwxrwx 1 fhem dialout 11041 Jun 14 12:47 kabel1.png
-rwxrwxrwx 1 fhem dialout 26057 Jun 14 12:47 kabel_deutschland.png
-rwxrwxrwx 1 fhem dialout 14311 Jun 14 12:47 kika_hd.png
-rwxrwxrwx 1 fhem dialout  9024 Jun 14 12:47 kika.png
-rwxrwxrwx 1 fhem dialout  6856 Jun 14 12:47 mdr_hd.png
-rwxrwxrwx 1 fhem dialout  3980 Jun 14 12:47 mdr.png
-rwxrwxrwx 1 fhem dialout  5822 Jun 14 12:47 n24.png
-rwxrwxrwx 1 fhem dialout  9225 Jun 14 12:47 ndr_hd.png
-rwxrwxrwx 1 fhem dialout  9046 Jun 14 12:47 ndr.png
-rwxrwxrwx 1 fhem dialout  8828 Jun 14 12:48 nickelodeon.png
-rwxrwxrwx 1 fhem dialout 10189 Jun 14 12:48 nitro.png
-rwxrwxrwx 1 fhem dialout     0 Jun 14 12:48 ntv.png
-rwxrwxrwx 1 fhem dialout  4764 Jun 14 12:48 one_tv.png
-rwxrwxrwx 1 fhem dialout 16325 Jun 14 12:48 parlament.png
-rwxrwxrwx 1 fhem dialout  9056 Jun 14 12:48 phoenix_hd.png
-rwxrwxrwx 1 fhem dialout  5157 Jun 14 12:48 phoenix.png
-rwxrwxrwx 1 fhem dialout  4919 Jun 14 12:48 pro7maxx.png
-rwxrwxrwx 1 fhem dialout  4628 Jun 14 12:48 pro7.png
-rwxrwxrwx 1 fhem dialout  6863 Jun 14 12:49 qvc_plus.png
-rwxrwxrwx 1 fhem dialout 14339 Jun 14 12:49 qvc.png
-rwxrwxrwx 1 fhem dialout  6998 Jun 14 12:49 radio_bremen.png
-rwxrwxrwx 1 fhem dialout  9208 Jun 14 12:49 rbb_hd.png
-rwxrwxrwx 1 fhem dialout  3658 Jun 14 12:49 rbb.png
-rwxrwxrwx 1 fhem dialout 11041 Jun 14 12:49 rtl2.png
-rwxrwxrwx 1 fhem dialout  8122 Jun 14 12:49 rtlnitro.png
-rwxrwxrwx 1 fhem dialout  7271 Jun 14 12:49 rtlplus.png
-rwxrwxrwx 1 fhem dialout  8489 Jun 14 12:49 rtl.png
-rwxrwxrwx 1 fhem dialout     0 Jun 14 12:49 sat1gold.png
-rwxrwxrwx 1 fhem dialout 39089 Jun 14 12:49 sat1.png
-rwxrwxrwx 1 fhem dialout  2455 Jun 14 12:49 servus.png
-rwxrwxrwx 1 fhem dialout  7863 Jun 14 12:50 servus_tv.png
-rwxrwxrwx 1 fhem dialout 10620 Jun 14 12:50 sixx.png
-rwxrwxrwx 1 fhem dialout  4212 Jun 14 12:50 skyselect.png
-rwxrwxrwx 1 fhem dialout  6780 Jun 14 12:50 sonlife.png
-rwxrwxrwx 1 fhem dialout  6146 Jun 14 12:50 sonnenklar.png
-rwxrwxrwx 1 fhem dialout 10131 Jun 14 12:50 sport1.png
-rwxrwxrwx 1 fhem dialout 17073 Jun 14 12:50 sr_hd.png
-rwxrwxrwx 1 fhem dialout  9688 Jun 14 12:50 sr.png
-rwxrwxrwx 1 fhem dialout  7311 Jun 14 12:50 superrtl.png
-rwxrwxrwx 1 fhem dialout  5917 Jun 14 12:50 swr_hd.png
-rwxrwxrwx 1 fhem dialout  5666 Jun 14 12:50 swr.png
-rwxrwxrwx 1 fhem dialout  9382 Jun 14 12:50 tagesschau24_hd.png
-rwxrwxrwx 1 fhem dialout  5382 Jun 14 12:50 tagesschau24.png
-rwxrwxrwx 1 fhem dialout  8560 Jun 14 12:51 tele5.png
-rwxrwxrwx 1 fhem dialout  7797 Jun 14 12:51 tlc.png
-rwxrwxrwx 1 fhem dialout 35165 Jun 14 12:51 toggo_plus.png
-rwxrwxrwx 1 fhem dialout  6482 Jun 14 12:51 tv5_monde.png
-rwxrwxrwx 1 fhem dialout  4800 Jun 14 12:51 viva.png
-rwxrwxrwx 1 fhem dialout 16688 Jun 14 12:51 vox.png
-rwxrwxrwx 1 fhem dialout  8817 Jun 14 12:51 wdr_hd.png
-rwxrwxrwx 1 fhem dialout  9893 Jun 14 12:51 wdr.png
-rwxrwxrwx 1 fhem dialout  3798 Jun 14 12:52 zdf_hd.png
-rwxrwxrwx 1 fhem dialout  7159 Jun 14 12:52 zdf_info_hd.png
-rwxrwxrwx 1 fhem dialout  3339 Jun 14 12:52 zdf_info.png
-rwxrwxrwx 1 fhem dialout  6316 Jun 14 12:53 zdf_kultur_hd.png
-rwxrwxrwx 1 fhem dialout  2886 Jun 14 12:52 zdf_kultur.png
-rwxrwxrwx 1 fhem dialout  7280 Jun 14 12:53 zdf_neo_hd.png
-rwxrwxrwx 1 fhem dialout  3011 Jun 14 12:53 zdf_neo.png
-rwxrwxrwx 1 fhem dialout  7723 Jun 14 12:51 zdf.png
Pi3B Buster | F.-Box 7490 | CUL433 | CUL868 | SDuino + Siro | HM-LAN | 12 x Dect200  | 3 x Heizung FHT + FKont. | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x TKont. TFK-TI | HM-Bew.-Melder aussen + innen | 3 x Smoked. HM-SEC-SD-2

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
Kann ich jetzt gerade nicht, da im Moment nicht am Rechner.
Aber ich kann dir versichern dass die Dateinamen zum Beispiel pro7 stimmen und auch der owner und Gruppe.

Die Frage ist doch eher wo die Anfang herkommen sollen,wenn
 man sie nicht manuell kopiert.

Oder sag uns doch einfach mal wo du sie her hast und ob du du sie auch manuell kopiert hast.
« Letzte Änderung: 14 Juni 2020, 14:25:37 von carlos »
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
Heir noch mal ls -la /opt/fhem/www/images/tv:
drwxr-xr-x  3 fhem dialout  4096 Jun 14 10:55 .
drwxrwxrwx 17 fhem dialout  4096 Jun 14 10:54 ..
-rw-r--r--  1 fhem dialout  9261 Aug 15  2017 3sat_hd.png
-rw-r--r--  1 fhem dialout 10139 Aug 15  2017 3sat.png
-rw-r--r--  1 fhem dialout  8201 Aug 15  2017 alex.png
-rw-r--r--  1 fhem dialout 23520 Aug 15  2017 aljazeera.png
-rw-r--r--  1 fhem dialout  9897 Aug 15  2017 anixe_hd.png
-rw-r--r--  1 fhem dialout  6885 Aug 15  2017 anixe_sd.png
-rw-r--r--  1 fhem dialout 15500 Aug 15  2017 ard_alpha.png
-rw-r--r--  1 fhem dialout  4004 Aug 15  2017 ard_one_hd.png
-rw-r--r--  1 fhem dialout  8178 Aug 15  2017 arte_hd.png
-rw-r--r--  1 fhem dialout  6532 Aug 15  2017 arte.png
-rw-r--r--  1 fhem dialout  9444 Aug 15  2017 astro_tv.png
-rw-r--r--  1 fhem dialout 13555 Aug 15  2017 bbc_world.png
-rw-r--r--  1 fhem dialout  9922 Aug 15  2017 bibel_tv.png
-rw-r--r--  1 fhem dialout 12284 Aug 15  2017 bloomberg.png
-rw-r--r--  1 fhem dialout  4833 Aug 15  2017 br_alpha.png
-rw-r--r--  1 fhem dialout 10252 Aug 15  2017 br_hd.png
-rw-r--r--  1 fhem dialout 12603 Aug 15  2017 br.png
-rw-r--r--  1 fhem dialout 16714 Aug 15  2017 channel21.png
-rw-r--r--  1 fhem dialout 10721 Aug 15  2017 cnn.png
-rw-r--r--  1 fhem dialout  8865 Aug 15  2017 das_erste_hd.png
-rw-r--r--  1 fhem dialout  9660 Aug 15  2017 das_erste.png
-rw-r--r--  1 fhem dialout 18260 Aug 15  2017 das_vierte.png
-rw-r--r--  1 fhem dialout  7063 Aug 15  2017 deutsche_welle.png
-rw-r--r--  1 fhem dialout 52861 Aug 15  2017 disney_channel.png
-rw-r--r--  1 fhem dialout  6815 Aug 15  2017 dmax.png
-rw-r--r--  1 fhem dialout 24451 Aug 15  2017 dmf.png
-rw-r--r--  1 fhem dialout  6224 Aug 15  2017 einsfestival_hd.png
-rw-r--r--  1 fhem dialout  5045 Aug 15  2017 eins_festival.png
-rw-r--r--  1 fhem dialout  8724 Aug 15  2017 einsPlus_hd.png
-rw-r--r--  1 fhem dialout  9790 Aug 15  2017 eins_plus.png
-rw-r--r--  1 fhem dialout  4228 Aug 15  2017 einszweidrei_tv.png
-rw-r--r--  1 fhem dialout 48120 Aug 15  2017 erf.png
-rw-r--r--  1 fhem dialout  6360 Aug 15  2017 euronews.png
-rw-r--r--  1 fhem dialout 22771 Aug 15  2017 eurosport.png
-rw-r--r--  1 fhem dialout   272 Aug 15  2017 filelist.txt
-rw-r--r--  1 fhem dialout  6054 Aug 15  2017 hr_hd.png
-rw-r--r--  1 fhem dialout  9043 Aug 15  2017 hr.png
-rw-r--r--  1 fhem dialout  4563 Aug 15  2017 hse24_extra.png
-rw-r--r--  1 fhem dialout  7724 Aug 15  2017 hse24.png
-rw-r--r--  1 fhem dialout  2881 Aug 15  2017 joiz.png
-rw-r--r--  1 fhem dialout 32035 Aug 15  2017 juwelo.png
-rw-r--r--  1 fhem dialout 11593 Aug 15  2017 kabel1_doku.png
-rw-r--r--  1 fhem dialout 11041 Aug 15  2017 kabel1.png
-rw-r--r--  1 fhem dialout 26057 Aug 15  2017 kabel_deutschland.png
-rw-r--r--  1 fhem dialout 14311 Aug 15  2017 kika_hd.png
-rw-r--r--  1 fhem dialout  9024 Aug 15  2017 kika.png
drwxr-xr-x  2 fhem dialout  4096 Jun 14 10:53 logos
-rw-r--r--  1 fhem dialout  6856 Aug 15  2017 mdr_hd.png
-rw-r--r--  1 fhem dialout  3980 Aug 15  2017 mdr.png
-rw-r--r--  1 fhem dialout  5822 Aug 15  2017 n24.png
-rw-r--r--  1 fhem dialout  9225 Aug 15  2017 ndr_hd.png
-rw-r--r--  1 fhem dialout  9046 Aug 15  2017 ndr.png
-rw-r--r--  1 fhem dialout  8828 Aug 15  2017 nickelodeon.png
-rw-r--r--  1 fhem dialout 10189 Aug 15  2017 nitro.png
-rw-r--r--  1 fhem dialout 17126 Aug 15  2017 ntv.png
-rw-r--r--  1 fhem dialout  4764 Aug 15  2017 one_tv.png
-rw-r--r--  1 fhem dialout 16325 Aug 15  2017 parlament.png
-rw-r--r--  1 fhem dialout  9056 Aug 15  2017 phoenix_hd.png
-rw-r--r--  1 fhem dialout  5157 Aug 15  2017 phoenix.png
-rw-r--r--  1 fhem dialout  4919 Aug 15  2017 pro7maxx.png
-rw-r--r--  1 fhem dialout  4628 Aug 15  2017 pro7.png
-rw-r--r--  1 fhem dialout  6863 Aug 15  2017 qvc_plus.png
-rw-r--r--  1 fhem dialout 14339 Aug 15  2017 qvc.png
-rw-r--r--  1 fhem dialout  6998 Aug 15  2017 radio_bremen.png
-rw-r--r--  1 fhem dialout  9208 Aug 15  2017 rbb_hd.png
-rw-r--r--  1 fhem dialout  3658 Aug 15  2017 rbb.png
-rw-r--r--  1 fhem dialout 11041 Aug 15  2017 rtl2.png
-rw-r--r--  1 fhem dialout  8122 Aug 15  2017 rtlnitro.png
-rw-r--r--  1 fhem dialout  7271 Aug 15  2017 rtlplus.png
-rw-r--r--  1 fhem dialout  8489 Aug 15  2017 rtl.png
-rw-r--r--  1 fhem dialout 11658 Aug 15  2017 sat1gold.png
-rw-r--r--  1 fhem dialout 39089 Aug 15  2017 sat1.png
-rw-r--r--  1 fhem dialout  2455 Aug 15  2017 servus.png
-rw-r--r--  1 fhem dialout  7863 Aug 15  2017 servus_tv.png
-rw-r--r--  1 fhem dialout 10620 Aug 15  2017 sixx.png
-rw-r--r--  1 fhem dialout  4212 Aug 15  2017 skyselect.png
-rw-r--r--  1 fhem dialout  6780 Aug 15  2017 sonlife.png
-rw-r--r--  1 fhem dialout  6146 Aug 15  2017 sonnenklar.png
-rw-r--r--  1 fhem dialout 10131 Aug 15  2017 sport1.png
-rw-r--r--  1 fhem dialout 17073 Aug 15  2017 sr_hd.png
-rw-r--r--  1 fhem dialout  9688 Aug 15  2017 sr.png
-rw-r--r--  1 fhem dialout  7311 Aug 15  2017 superrtl.png
-rw-r--r--  1 fhem dialout  5917 Aug 15  2017 swr_hd.png
-rw-r--r--  1 fhem dialout  5666 Aug 15  2017 swr.png
-rw-r--r--  1 fhem dialout  9382 Aug 15  2017 tagesschau24_hd.png
-rw-r--r--  1 fhem dialout  5382 Aug 15  2017 tagesschau24.png
-rw-r--r--  1 fhem dialout  8560 Aug 15  2017 tele5.png
-rw-r--r--  1 fhem dialout  7797 Aug 15  2017 tlc.png
-rw-r--r--  1 fhem dialout 35165 Aug 16  2017 toggo_plus.png
-rw-r--r--  1 fhem dialout  6482 Aug 15  2017 tv5_monde.png
-rw-r--r--  1 fhem dialout  4800 Aug 15  2017 viva.png
-rw-r--r--  1 fhem dialout 16688 Aug 15  2017 vox.png
-rw-r--r--  1 fhem dialout  8817 Aug 15  2017 wdr_hd.png
-rw-r--r--  1 fhem dialout  9893 Aug 15  2017 wdr.png
-rw-r--r--  1 fhem dialout  3798 Aug 15  2017 zdf_hd.png
-rw-r--r--  1 fhem dialout  7159 Aug 15  2017 zdf_info_hd.png
-rw-r--r--  1 fhem dialout  3339 Aug 15  2017 zdf_info.png
-rw-r--r--  1 fhem dialout  6316 Aug 15  2017 zdf_kultur_hd.png
-rw-r--r--  1 fhem dialout  2886 Aug 15  2017 zdf_kultur.png
-rw-r--r--  1 fhem dialout  7280 Aug 15  2017 zdf_neo_hd.png
-rw-r--r--  1 fhem dialout  3011 Aug 15  2017 zdf_neo.png
-rw-r--r--  1 fhem dialout  7723 Aug 15  2017 zdf.png

Bei mir ist sogar das tv verzeichnis noch im iconPath meiner web instanz.
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Offline mumpitzstuff

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1974
Die Icons habe ich nicht mit abgelegt, die muss sich jeder selbst kopieren. Der Pfad ist ja inzwischen bekannt und die Rechte müssen richtig gesetzt sein. Wenn das alles passiert ist, muss fhem neu gestartet werden, sonst werden die Icons nicht geladen. Es muss auch darauf geachtet werden, dass die Bilder die richtigen Namen haben. Die sehr ihr direkt im doif als Text, wenn noch kein entsprechendes Bild hinterlegt wurde.

Wenn es euch zu lange dauert bis etwas passiert, kann folgendes gemacht werden:

set doif_TEST cmd_2
set doif_TEST cmd_3

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
So jetzt habe ich das Problem gelöst.
Wenn man den tv ordner nach /opt/fhem/images/default kopiert dann funktionierts mit der Anzeige der Logos.
Also noch mal genau im folder:

/opt/fhem/images/default/tv
müssen die logos liegen.
Zumindest funktionierts bei mir so.


Gruß

Carlos
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Offline Invers

  • Hero Member
  • *****
  • Beiträge: 2084
Bei mir /opt/fhem/www/images/default/tv
Aber läuft nun auch.
Vielen Dank für die Hilfe.

Nochmal kurz zu meiner Zusatzfrage von vorhin:
Wo finde ich die Namen der TV-Sender, z.B. für Tele 5?
Kann ja tele5, TELE5, Tele_5 usw. sein.

Bin dankbar für einen Tipp.
Pi3B Buster | F.-Box 7490 | CUL433 | CUL868 | SDuino + Siro | HM-LAN | 12 x Dect200  | 3 x Heizung FHT + FKont. | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x TKont. TFK-TI | HM-Bew.-Melder aussen + innen | 3 x Smoked. HM-SEC-SD-2

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
Sorry, natürlich www muss noch mit dazu.
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

 

decade-submarginal