Hauptmenü

RegEx eines Pfades

Begonnen von projectsun, 07 Januar 2018, 22:39:02

Vorheriges Thema - Nächstes Thema

projectsun

Hallo zusammen,

ich bastele grad eine Steuerung von Kodi zusammen

define Film1 dummy
attr Film1 alias Trickfilm
attr Film1 genericDeviceType switch
attr Film1 room Alexa
attr Film1 setList on off
attr Film1 webCmd on:off
define n_Film1_on notify Film1:on {fhem ("set wz_KODI open " . ReadingsVal("Film1","currentMedia:","0"))}
define n_Film1_off notify Film1:off set wz_KODI stop
define wzKodi_in_dummy_kopieren notify wz_KODI:currentMedia.* {  fhem("setreading Film1 $EVENT")}\


Das blöde ist nur, dass nur der letzte aufgerufene Film wiedergegeben wird und dann nichts mehr.
Jetzt wollte ich das Verzeichnis des zuletzt aufgerufenen Films mit opendir öffnen, aber da scheitert es bei mir an der Verwendung von RegEx.

Film1:on {fhem (my $test = ReadingsVal("Film1","currentMedia:","0");;$test=~ s!^.+?(?=[^/]+$)!!;;ret $test;; "set wz_KODI opendir " . $test;;)}
bringt irgendwie gar nichts. Kann mir bitte jemand auf die Sprünge helfen?
Zentrale Ubuntu, Rpi B+ mit Busware 868 CUL ser2net, Rpi 2 an Aquarium mit DS18B20, und S0Counter, Rpi 3 mit nanoCUL 433 und 868 ser2net, 7x Revolt NC-5462, 1x miniCUL WLAN, 3x IT-1000, 6x ELRO AB440, KS300, EM1000-HSM, EM1000-WZ, FHT80B, 5x FHT8v2, 20x Nodemcu mit Sensoren, 6x Echo, Sonos

KernSani

Du weisst dass es ein Modul für KODI/XBMC gibt?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

MadMax-FHEM

#2
So wie ich das sehe benutzt er das schon...

Er will wohl über Alexa per Dummy eben Kodi steuern...

Irgendwie verstehe ich noch nicht so ganz was genau passieren soll...

EDIT: also schon aber warum die ganze Kopiererei... Also wenn Kodi läuft wird das aktuell laufende in den Dummy kopiert. Und bei Start durch Alexa/Dummy dann wieder zurück... Würde nicht Pause und Play das Kopieren (sich merken) unnötig machen?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

projectsun

Ja ich benutze das Modul

Ich möchte aus dem Reading "currentmedia: smb://192.168.2.90/Freigabe/Trickfilme/Film.mkv" im Dummy Film1 den Dateinamen entfernen.
Quasi "currentmedia: smb://192.168.2.90/Freigabe/Trickfilme/" soll da nur noch stehen.

EDIT: Das Aufrufen des gespeicherten letzten Filmes funktioniert ja auch, nur will ich dessen Directory öffnen.
Zentrale Ubuntu, Rpi B+ mit Busware 868 CUL ser2net, Rpi 2 an Aquarium mit DS18B20, und S0Counter, Rpi 3 mit nanoCUL 433 und 868 ser2net, 7x Revolt NC-5462, 1x miniCUL WLAN, 3x IT-1000, 6x ELRO AB440, KS300, EM1000-HSM, EM1000-WZ, FHT80B, 5x FHT8v2, 20x Nodemcu mit Sensoren, 6x Echo, Sonos

MadMax-FHEM

Schon klar bzw. verstanden...

Nur: wozu?

Also was willst du erreichen?

Ansonsten mal bei perl Stringmanipulationsfunktionen suchen...

Grad nur Handy, daher kurz...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

projectsun

ja ich hab eine Stringmanipulation gefunden, aber ich weiss nicht um den korrekten Syntax.
Wozu? Hab ich doch erklärt. Wenn ich nur die einzelne Datei aufrufe, ist nach dem Abspielen dieser Datei Schluss.
Mit opendir kann ich ein Shuffle durch den Ordner machen.... Kinderbespaßung ist hier das Ziel.
Zentrale Ubuntu, Rpi B+ mit Busware 868 CUL ser2net, Rpi 2 an Aquarium mit DS18B20, und S0Counter, Rpi 3 mit nanoCUL 433 und 868 ser2net, 7x Revolt NC-5462, 1x miniCUL WLAN, 3x IT-1000, 6x ELRO AB440, KS300, EM1000-HSM, EM1000-WZ, FHT80B, 5x FHT8v2, 20x Nodemcu mit Sensoren, 6x Echo, Sonos

MadMax-FHEM

Du kannst aber doch in Kodi einstellen, dass der nächste Film etc. automatisch gestartet wird...

Sollte doch so auch gehen?

Was meinst du mit Syntax?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

KernSani

wer lesen kann ist im Vorteil... sorry, hatte mir das Coding nicht im Detail angesehen...


Dein Coding ist etwas seltsam, das sollte eher so aussehen:

{mach was in perl;fhem("set ...;}


Sind die Dateien immer .mkv (oder in mehreren definierbaren Formaten)? Dann könnte man ganz doof rangehen und die Regex irgendwie so aufbauen:
(.*)/.*.mkv (. und / natürlich escapen - wollte nur das Prinzip klar machen)

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

projectsun

Leider macht er nach einer einzelnen Datei in dem Ordner nicht weiter. Bei opendir schon.

Wenn ich so schreibe
Film1:on {my $test = ReadingsVal("Film1","currentMedia:","0");;$test=~ s!^.+?(?=[^/]+$)!!;;ret $test;; fhem ("set wz_KODI opendir " . $test;;)}

bekomme ich

2018.01.07 23:35:37 1: ERROR evaluating my $TYPE='dummy';my $NAME='Film1';my $EVENT='on';my $SELF='n_Film1_on';my $EVTPART0='on';{my $test = ReadingsVal("Film1","currentMedia:","0");;$test=~ s!^.+?(?=[^/]+$)!!;;ret $test;; fhem ("set wz_KODI opendir " . $test;;)}: syntax error at (eval 1331391) line 1, at EOF

2018.01.07 23:35:37 3: n_Film1_on return value: syntax error at (eval 1331391) line 1, at EOF


nein, sind auch AVIs.
Zentrale Ubuntu, Rpi B+ mit Busware 868 CUL ser2net, Rpi 2 an Aquarium mit DS18B20, und S0Counter, Rpi 3 mit nanoCUL 433 und 868 ser2net, 7x Revolt NC-5462, 1x miniCUL WLAN, 3x IT-1000, 6x ELRO AB440, KS300, EM1000-HSM, EM1000-WZ, FHT80B, 5x FHT8v2, 20x Nodemcu mit Sensoren, 6x Echo, Sonos

betateilchen

Warum mit regexp rumschlagen, wenn es dafür schöne perl Funktionen gibt?


sub filetest {
use File::Basename;
my $full = "smb://192.168.2.90/Freigabe/Trickfilme/Film.mkv";
my($filename, $directories, $suffix) = fileparse($full);
Debug $filename;
Debug $directories;
Debug $suffix;
}


liefert als Ergebnis:


2018.01.07 23:55:08.930 1: DEBUG>Film.mkv
2018.01.07 23:55:08.937 1: DEBUG>smb://192.168.2.90/Freigabe/Trickfilme/
2018.01.07 23:55:08.937 1: DEBUG>
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

projectsun

#10
Läuft damit so wie ichs will!
Bissl umständlich, aber der Weg ist das Ziel.

Vielen Dank!

sub filetest {
my $full = shift;
my $filename = shift;
my $directories = shift;
my $suffix = shift;
use File::Basename;
my $full = ReadingsVal('Film1','currentMedia:','0');
my($filename, $directories, $suffix) = fileparse($full);
fhem "setreading Film1 directory " . $directories;


und notify
Film1:on {fhem("set wz_KODI shuffle on");;fhem ("set wz_KODI opendir " . ReadingsVal("Film1","directory","0"))}


und eventdummy
wz_KODI:currentMedia.* {  fhem("setreading Film1 $EVENT");;filetest();;}
Zentrale Ubuntu, Rpi B+ mit Busware 868 CUL ser2net, Rpi 2 an Aquarium mit DS18B20, und S0Counter, Rpi 3 mit nanoCUL 433 und 868 ser2net, 7x Revolt NC-5462, 1x miniCUL WLAN, 3x IT-1000, 6x ELRO AB440, KS300, EM1000-HSM, EM1000-WZ, FHT80B, 5x FHT8v2, 20x Nodemcu mit Sensoren, 6x Echo, Sonos