"Linkgenerierung" zum aktuellen Tagesschau 100 Sekunden Video

Begonnen von jojoja, 08 Dezember 2015, 22:22:42

Vorheriges Thema - Nächstes Thema

jojoja

Guten Abend!

Habe eine kleine Funktion geschrieben, die den Link zum aktuellen Tagesschau 100 Sekunden Video zurückgibt. Der optionale Übergabeparameter steht für die Auflösung:
m: 512x288
l: 960x544
xl: 1280x720
Standard ist m.

Hier der Code für die myUtils:
sub getTagesschau100Sek(;$){

fhem("set rss_Tagesschau100Sek update");
my ($aufloesung) = @_;
$aufloesung //= "m";
use Time::Local;
        my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
my $zeit = ReadingsVal("rss_Tagesschau100Sek", "n00_description", "error");
my $stunde = substr($zeit, 44,2);
my $minuten = substr($zeit,47,2);

return "http://media.tagesschau.de/video/100s/".($year+1900)."/".sprintf("%02d%02d", $month+1, $mday)."/TV-100s-".sprintf("%02d%02d", $stunde, $minuten).".web".$aufloesung.".h264.mp4";
}

der ein rssFeed Modul ausliest:
define rss_Tagesschau100Sek rssFeed http://www.tagesschau.de/export/video-podcast/webm/tagesschau-in-100-sekunden/ 300
attr rss_Tagesschau100Sek rfReadings title,description


Nun zu meinem Anliegen :D
Ich hätte vom jeweiligen Video gern die mp3-Spur, die per Sonos wiedergegeben kann. Einen Audiopodcast habe ich bei der ARD nicht gefunden. Am liebsten würde ich online konvertieren, zb. auf http://www.online-convert.com, die stellen auch eine API bereit, nur leider habe ich von diesem Thema wenig bis keine Ahnung. Falls mir jemand einen Tipp geben kann, in was ich mich einlesen sollte, wäre ich sehr dankbar! Speziell die Frage, lässt sich soetwas zb. über POST oder wget realisieren?

Viele Grüße, Johannes
FHEM 6.0 @ IntelNUC6CAYH;  Unifi USG, Switch, AP AC Pro; HM-MOD-UART;  Sonos Play 1 & 3, One, Beam; Philips Hue

Rince

Hab wenig Zeit, muss in die Arbeit.
Aber wenn deine Link generierung klappt, hast du mal versucht das Video einfach mit wget runterzuladen?
Vielleicht dabei noch den Namen ändern, tagesschau100.mp4
Dann das runtergeladene Video demuxen, dann ggfs. das demuxte Audio konvertieten und Sonos bereit stellen?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

jojoja

Der Codeschnipsel funktioniert.
Wie gesagt, ich wollte die Konvertierung online ablaufen lassen (auch aus "Fortbildungsgründen"), aber ich werde ersteinmal die Offline-Variante probieren. Dafür möchte ich vorher ein paar Umstellungen machen, das dauert wahrscheinlich eine Weile... Wenn ich zu etwas komme werde ich es hier wieder posten, damit andere auch was davon haben  ;D
FHEM 6.0 @ IntelNUC6CAYH;  Unifi USG, Switch, AP AC Pro; HM-MOD-UART;  Sonos Play 1 & 3, One, Beam; Philips Hue

Grinsekatze

Weil ich gerade vor selbiger Aufgabe stehe aus Neugier: Hast Du schon Zeit gehabt hier weiter zu arbeiten?

hartenthaler

Habe das eben mal ausprobiert. Klappte aber nicht, da der generierte Link http://media.tagesschau.de/video/100s/2016/1004/TV-100s-2106.webm.h264.mp4 so im Moment nicht passt. Es muss ...2016/1003/... statt ...2016/1004/... heißen, da es nun am frühen Morgen noch keine Tagesschau gibt und die vom Vortag die aktuelle ist.

Ansonsten nett! Wie verwendet ihr den Link auf das Video? Als iframe auf einem Floorplan?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

jojoja

#5
Ich habe inzwischen auf HTTPMOD umgestellt, weil das mir fehlersicherer vorkommt. Die oben genannte Funktion ist dafür nicht notwendig.
define rss_tagesschau100 HTTPMOD http://www.tagesschau.de/export/video-podcast/webm/tagesschau-in-100-sekunden/ 60
attr rss_tagesschau100 event-on-change-reading Link
attr rss_tagesschau100 readingsName_Link Link
attr rss_tagesschau100 readingsRegex_Link <enclosure url="(.*)" length
attr rss_tagesschau100 room hidden
attr rss_tagesschau100 stateFormat Link
attr rss_tagesschau100 userattr event-on-change-reading readingsName_Link readingsRegex_Link stateFormat


da ich das Video in wav konvertiere um es auf Sonos zu wiedergeben starte ich mit diesem Notify:
define Sonos_TagesschauDownloadStart notify rss_tagesschau100:Link:.* {
system("/opt/fhem/tagesschau/tagesschau.sh ".ReadingsVal("rss_tagesschau100", "Link", ""));
}


dieses Skript:
#echo Tagesschau in 100 Sekunden:
#echo Video mit dem Link $1 wird heruntergeladen...
wget $1 --output-document=tagesschau100sek.mp4  --quiet

#echo Wird in .wav konvertiert...
ffmpeg -loglevel quiet -y -i /opt/fhem/tagesschau100sek.mp4 /media/SynologySonos/tagesschau100sek.wav


Die Pfade sollten natürlich angepasst werden. So wird minütlich kontrolliert ob ein neues Video vorhanden, falls dies der Fall ist wird es heruntergeladen und konvertiert.

Edit: Sorry, das mit der Onlinekonvertierung habe ich ganz vergessen. Da habe ich nichts mehr gemacht, da die Offline-Variante für mich gut funktioniert.

Gruß Johannes
FHEM 6.0 @ IntelNUC6CAYH;  Unifi USG, Switch, AP AC Pro; HM-MOD-UART;  Sonos Play 1 & 3, One, Beam; Philips Hue

hartenthaler

Dazu ist dann die Installation von ffmpeg nötig. Ich habe dazu eine Anleitung gefunden: http://www.jeffreythompson.org/blog/2014/11/13/installing-ffmpeg-for-raspberry-pi/
Scheint aber etwas langwierig zu sein. Wieso gibst Du das File als wav und nicht als mp3 aus?

Bevor ich mich daran mache, würde ich gerne noch das Nutzungsszenario festlegen.
@jojoja wie verwendest Du das Sonos-File? Gibst Du es sofort nach der Konvertierung auf einem Sonos-Lautsprecher wieder? Oder nur adhoc bei Bedarf? Oder zu festen Zeiten?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

jojoja

Hallo hartenthaler,

man kann natürlich auch avconv verwenden, die Syntax sollte ähnlich sein. ffmpeg ist wohl (wie ich im Nachhinein erfahren habe) eh veraltet: https://wiki.ubuntuusers.de/avconv/

Warum ich wav verwende hat keinen driftigen Grund, habe das gefühl dass es etwas schneller geht als mp3 - Speicherplatz spielt für mich keine Rolle, da es ja eh überschrieben wird. Ich verwende das Ganze für meinen Wecker, da soll Datei einfach gleich vorhanden sein, also auf Bedarf.

Gruß Johannes
FHEM 6.0 @ IntelNUC6CAYH;  Unifi USG, Switch, AP AC Pro; HM-MOD-UART;  Sonos Play 1 & 3, One, Beam; Philips Hue

hartenthaler

Ich habe nun avconv auf meinem RaspberryPi installiert.

sudo apt-get install libav-tools
sudo apt-get install libavcodec-extra


Der Aufruf erfolgt dann bei mir im Shell-Script mit

wget $1 --output-document=tagesschau100sek.mp4  --quiet
avconv -i tagesschau100sek.mp4 -vn -y /mnt/SonosSpeak/tagesschau100sek.mp3


Die Sprache ist gut verständlich, aber ab und an gibt es Rauschen und einige Nebengeräusche im mp3-File.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Ellert

Zitat von: hartenthaler am 06 Oktober 2016, 18:32:46
Ich habe nun avconv auf meinem RaspberryPi installiert.

sudo apt-get install libav-tools
sudo apt-get install libavcodec-extra


Der Aufruf erfolgt dann bei mir im Shell-Script mit

wget $1 --output-document=tagesschau100sek.mp4  --quiet
avconv -i tagesschau100sek.mp4 -vn -y /mnt/SonosSpeak/tagesschau100sek.mp3


Die Sprache ist gut verständlich, aber ab und an gibt es Rauschen und einige Nebengeräusche im mp3-File.

Es geht auch
avconv -i $1 -vn -y /mnt/SonosSpeak/tagesschau100sek.mp3
wenn man das Video nicht benötigt.

jojoja

Zitat von: Ellert am 06 Oktober 2016, 20:27:03
Es geht auch
avconv -i $1 -vn -y /mnt/SonosSpeak/tagesschau100sek.mp3
wenn man das Video nicht benötigt.


Wunderbar, funktioniert. Ich hab noch -loglevel quiet hinzugefügt, damit der fhem-log nicht vollgemüllt wird :D

Dass manchmal komische Geräusche dabei sind kann auch ganz einfach daran liegen, dass die ARD ihr Videomaterial nicht stummschält und so im Hintergrund zu hören ist...
FHEM 6.0 @ IntelNUC6CAYH;  Unifi USG, Switch, AP AC Pro; HM-MOD-UART;  Sonos Play 1 & 3, One, Beam; Philips Hue

accessburn

Funktioniert :-)
Mich würde mich für eine Implementierung in FTUI interessieren.

<li data-row="1" data-col="1" data-sizex="3" data-sizey="3">
<header>Tagesschau</header>
<video width="320" height="240" controls>
<source src="http://media.tagesschau.de/video/100s/2016/1007/TV-100s-1135.webm.h264.mp4" type="video/mp4">
</video>
<div data-type="label" data-device="rss_tagesschau100" data-get="Link" class="inline"></div>
</li>


Wie bekomme ich den Link dynamisch in das src-Tag?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Ellert

Zitat von: jojoja am 07 Oktober 2016, 11:56:10
Wunderbar, funktioniert. Ich hab noch -loglevel quiet hinzugefügt, damit der fhem-log nicht vollgemüllt wird :D

Dass manchmal komische Geräusche dabei sind kann auch ganz einfach daran liegen, dass die ARD ihr Videomaterial nicht stummschält und so im Hintergrund zu hören ist...

Man braucht eigentlich auch kein Shell-Script, ein notify sollte reichen

rss_tagesschau100:Link:.* "avconv -v quiet -y -i $EVTPART1 /mnt/SonosSpeak/tagesschau100sek.mp3"

accessburn

Zitat von: accessburn am 07 Oktober 2016, 12:16:22
Mich würde mich für eine Implementierung in FTUI interessieren.
Wie bekomme ich den Link dynamisch in das src-Tag?

Scheint nicht zu gehen. Kenne keinen Lösungsweg dazu.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

hartenthaler

#14
Ich weiß nicht, ob Dir das hilft:
define tagesschau100_Weblink weblink htmlCode { '<table><tr><td><iframe src="'.ReadingsVal("tagesschau100","Link", 0).'" width="512" height="288">iframes disabled</iframe></td></tr></table>' }

Das habe ich verwendet um den dynamischen Link in einen Frame zu bekommen, den ich auf einem Floorplan anzeigen kann. Mit FTUI kenne ich mich nicht aus, aber es sollte dort wohl ähnlich gehen.

PS: es gibt übrigens noch einen Thread zum Anzeigen der Tagesschau-Schlagzeilen: https://forum.fhem.de/index.php/topic,33813.0.html
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...