Zufälliger Ordner auslesen und an Squeezebox senden

Hallo zusammen,

folgendes Szenario ist gegeben:

Meine Liebste hört gerne zum Einschlafen ein Hörbuch / Hörspiel.
Da dies jedoch sehr mühselig ist, jeden Abend das Gerät einzuschalten, ein passendes Hörspiel auszusuchen,
dieses zu starten und den Sleeptimer einzustellen wollte ich dies nun über einen Taster am Bett erledigen lassen.

Nun kann man über CLI bei der Sqsueezebox keine Unterordner zufällig auslesen.
Somit lese ich diese per php aus und lasse einen zufälligen Titel ausgeben.
Leider hackt es an der Übergabe des Kommandos an die Squeezebox.

Könnt Ihr mir hier weiterhelfen?
Ich bin mir sicher, es ist nur eine Kleinigkeit, ich finde den Fehler aber nicht.

Vielen Dank für Eure Bemühungen.

Hier das Script:



<?

$sqc = 12345 /*[Client Socket SqueezeServer]*/ ;
$no1box = "xx:yy:zz:aa:bb:cc";   // Box 1 MAC-Adresse (Squeezebox-Schlafzimmer)

$ordner = "E:\Music\Die drei Fragezeichen"; //auszulesender Ordner

//******************************************************************************


$verz = opendir($ordner);                    		//Datei/Verzeichnisauflistung
$linkl = array();

while($file = readdir($verz)){
if($file != "." && $file != ".."){
array_push ($linkl, $file);
}
}
$zufall = array_rand($linkl, 1);


echo $linkl[$zufall];                      			//Ausgabe ggf. entsprechend anpassen



CSCK_SendText($sqc, $no1box.' power 1'.chr(13));
CSCK_SendText($sqc, $no1box.' playlist play '.rawurlencode('E:\Music\Die drei Fragezeichen\$linkl[$zufall]').chr(13) );   // Titel aus Musikbibliothek

?>


Hallo nochmal,

mit


$result = "E:\Music\Die drei Fragezeichen\($linkl[$zufall])";
$album = substr($result, 32, -1);

bekomme ich sowas als Antwort:

E:\Music\Die drei Fragezeichen((075) Die Spur des Raben)

Das Problem sind jetzt die Klammern.

Soweit so gut, also mache ich so weiter:


$result = "E:\Music\Die drei Fragezeichen\($linkl[$zufall])";
$album = substr($result, 32, -1);

Ergebnis:

(075) Die Spur des Raben

Hier ist also noch was falsch.
Es soll nicht alles abgeschnitten werden was vor dem 32.en Zeichen liegt.
Wie bekomme ich das hin?

Habe das schon mal gelesen, finde aber nichts mehr.

Hat mir jemand ein Suchwort?

Danke.

ist es nicht einfacher eine Playlist im Server anzulegen ? und diesen Playlist Eintrag zu starten ,
dabei zufällige Titel aktiviert.

Hallo Jens,

Nachteil wäre, ich muss die Playlist pflegen.
Also jedes neue Hörspiel hinzufügen.

Außerndem, so denke ich (ungetestet), würden dann auch die einzelnen Kapitel zufällig widergegeben.
Oder habe ich hier einen kompletten Denkfehler?

Gruß

Darklord

Ja die Playlist ist mit Arbeit verbunden.

Aber ich habe je folge ein MP3 ,also klappt das mit der zufälligen Wiedergabe.

und 100 Folgen in der Playlist reicht wirklich …. sehr lange …

Du hast je Folge EINE mp.3?

Keine einzelnen Kapitel?

ja ….

teils selber zusammen geschnitten und teil s von ………………

Hallo Jens,

und noch mehr Arbeit mit den Titeln zusammenfügen…
Das ist nicht wirklich „smart“.:stuck_out_tongue:

Neues Hörspiel in PC einlegen und auf die Festplatte kopieren sollte genügen.:rolleyes:
Achja, ist natülich alles legal, nicht das jemand was falsches dabei denkt.

Eigentlich reicht es die erste Klammer auszublenden, dann sollte es so funktionieren wie ich mir das vorstelle.

Gruß


Darklord

Hallo zusammen,

ich habe fertig. :smiley:
Fehler war unter anderem Hochkommas statt Gänsefüßchen. :stuck_out_tongue:

Hier das fertige Script, evtl. kann es ja jemand gebrauchen.

Frohe Ostern noch. :slight_smile:

Gruß

Darklord


<?

$sqc = 12345 /*[Client Socket SqueezeServer]*/ ;
$no1box = "xx:xx:xx:xx:xx:xx";   // Box 1 MAC-Adresse (Squeezebox-Schlafzimmer)
$no2box = "yy:yy:yy:yy:yy:yy";   // Box 2 MAC-Adresse (Squeezebox-Küche)
$no3box = "zz:zz:zz:zz:zz:zz";   // Box 3 MAC-Adresse (Squeezebox-Bad)

$ordner = "E:\Music\Hoerspiele"; //auszulesender Ordner


//***********************Ordner zufällig auslesen*****************************************


$verz = opendir($ordner);                    		//Datei/Verzeichnisauflistung
$linkl = array();

while($file = readdir($verz)){
if($file != "." && $file != ".."){
array_push ($linkl, $file);
}
}
$zufall = array_rand($linkl, 1);

$album = "$ordner\\$linkl[$zufall]";

//echo $linkl[$zufall];                      			
//echo $album;



//******************************************************************************


CSCK_SendText($sqc, $no2box.' sync -'.chr(13));                //Box2 aus Gruppe nehmen
CSCK_SendText($sqc, $no3box.' sync -'.chr(13));                //Box3 aus Gruppe nehmen

CSCK_SendText($sqc, $no1box.' power 1'.chr(13));               //Box1 einschalten
CSCK_SendText($sqc, $no2box.' power 0'.chr(13));               //Box2 ausschalten
CSCK_SendText($sqc, $no3box.' power 0'.chr(13));               //Box3 ausschalten

CSCK_SendText($sqc, $no1box.' mixer volume 24'.chr(13));			// Lautstärke einstellen
CSCK_SendText($sqc, $no1box.' playlist play '.rawurlencode("$album").chr(13) );   // Titel aus Musikbibliothek

CSCK_SendText($sqc, $no1box.' sleep 3000<LF>" '.chr(13));         //Ausschalten in x Sekunden

?>