Foobar über IPS steuern

Werden die Cover nicht auch angezeigt? Zumindest bei
https://bitbucket.org/oblikoamorale/foo_httpcontrol/wiki/Home
ist doch ein Cover abgebildet und das Theme sieht doch so aus wie das
Foobar über IPS steuern - Seite 2
was ich hier gepostet hatte oder?

Und das passende Template in der die Datei enthalten ist besitzt Du nicht?

:rolleyes: So wie es in der Anleitung steht

Also


<?  
// param1=volume level, 0...100
$volume = volume(50);  
 var_dump($volume);  
   
 function volume($vol)  
 {  
     $command = "Volume";  
    $payload = "http://192.168.178.20:8888/ajquery/?cmd=".$command."&param1=".$vol; // Command ergänzen  
    $volume = file_get_contents ($payload);  
    return $volume;  
 }  
?>

denk ich mal, probier es aus.

Und das passende Template in der die Datei enthalten ist besitzt Du nicht?

In dem Template „ajquery“ ist die Datei nicht dabei, im Gegensatz zu anderen Templates.

Werden die Cover nicht auch angezeigt?

Wenn ich in NEO das ganze als Webseitenelement darstelle, ist auch das Cover dabei. Ich dachte wenn ich in NEO einzelne Button etc. anlege, könnte ich auch eventuell das Cover anzeigen lassen. Im Prinzip dachte ich wie das anzeigen des Picons von Enigma2. Ist ja im Prinzip das gleiche, nur das die Cover in den einzelnen Ordner liegen.

Also in IP-Symcon legst Du einfach ein Dummy Modul an und darunter eine String Variable mit dem Profil ~HTMLBox.


Dann beschreibst Du die Variable mit dem Inhalt mit einem Skript.


<?

 $varidremote = 51931 /*[Geräte\Heimkino\Audio\Foobar\Foobar\Remote]*/; //Remote Var (String),Profile ~HTMLBox
 $content = '<iframe src="http://192.168.178.20:8888/ajquery/index.html" border="0" frameborder="0" style="top:0pt; bottom:0pt; left:0pt; right:0pt; width:100%; height:600px "/></iframe>';
 SetValue($varidremote, $content);

?>

Sieht dann im Webfront bzw. NEO oder IPS View so aus


Jetzt musst Du Dir halt nur noch ein Template auswählen was Dir gefällt. Die Befehle kannst Du ja anscheinend auch von IP-Symcon absetzten. An das Cover kommt man bestimmt auch wenn das das Javascript auslesen kann dann geht das auch mit PHP dazu müsstest Du Dir dann die Mühe machen und die den Javascript Code näher anschauen wie das Cover genau geladen wird.

Jetzt musst Du Dir halt nur noch ein Template auswählen was Dir gefällt. Die Befehle kannst Du ja anscheinend auch von IP-Symcon absetzten.

Das ist das Problem, es gefällt mir wirklich keins bzw. es werden nicht die Zusatz Tags übermittelt die ich benötige um z.B. die Alben auseinander zu halten.:smiley:

An das Cover kommt man bestimmt auch wenn das das Javascript auslesen kann dann geht das auch mit PHP dazu müsstest Du Dir dann die Mühe machen und die den Javascript Code näher anschauen wie das Cover genau geladen wird.

…machst du Witze mit mir?:D:confused::smiley:

Sieht dann im Webfront bzw. NEO oder IPS View so aus

Ich denke mal das ich das Webfront nicht benutzen werde und alles über NEO machen möchte.

Edit:

ajquery template configuration file
; 
; check readme.txt for usage details
;
[foo_httpcontrol]
url=/index.html
; defines formatting of a playlist row using foobar2000 titleformatting.
playlist_row={"a":"$fix_eol($replace(%artist%,\,\\,",\"))","b":"$fix_eol($replace(%album%,\,\\,",\"))","n":"$if(%queue_indexes%,'('%queue_indexes%') ',)$ifgreater(%totaldiscs%,1,D%discnumber%.,)%tracknumber%","t":"$fix_eol($replace(%title%,\,\\,",\"))","l":"%length%","ls":"%length_seconds%","d":"%date%"}
; defines formatting of a helper macros using foobar2000 titleformatting.
helper1=[%title% - ]
helper2=[%artist% - %title%]
helper3=[%codec% | %bitrate%kbps | %samplerate%Hz | %channels%]
; specifies wildcards where we should look for albumart files, separated by |. foobar2000 titleformatting is available there as well.
albumart=$directory_path(%path%)\folder.jpg|$directory_path(%path%)\*.jpg
; specifies path of a picture to show when albumart is not found.
albumart_not_found=ajquery/img/icon1rx.png
; specifies path of a picture to show when albumart is requested but not currently available (no playing track).
albumart_not_available=ajquery/img/icon1rx.png
; limits maximum albumart size to download, in bytes.
albumart_limit_size=0
; setting to 1 prefers embedded albumart over external.
albumart_prefer_embedded=0
; controls size of a playlist 'page'. setting to 0 completely disables playlist generation.
playlist_items_per_page=30

Nein kein Witz, ist nur so das Du eben entweder auf ein fertiges Template zurückgreifen musst oder aber Dir tatsächlich die Mühe machen musst Dir selber etwas zu basteln was Dir dann auch genügt. Ich persönlich würde mir die Arbeit nicht machen wollen.
Wenn die Sachen die Du benötigst sowieso nicht angezeigt werden sind wir wieder beim Thema warum nimmst Du nicht einfach Kodi oder Plex.

Das Cover liegt im Übrigen auch im Ordner die Frage wäre nur wie bekommt man den Namen raus dann kannst Du das auch in IP-Symcon laden

http://192.168.55.10:8888/ajquery/albumart_21054.jpg

Wenn die Sachen die Du benötigst sowieso nicht angezeigt werden sind wir wieder beim Thema warum nimmst Du nicht einfach Kodi oder Plex.

Das kann man einstellen welche Tags man gerne hätte, ist aber wiederum Template abhängig. Ich kann im ajquery Template in der config die Anzeige die unten steht „Playing 5 of 10…“ kann ich erweitern, was ich probiert habe. In meinem Fall habe ich den Tag %composer% hinzugefügt. Problem steht darin der Platz ist begrenzt.

Irgendwo hab ich hier noch ein Fehler drin. Es gibt ja 7 verschiedene Funktionen und er schaltet nach dem ausführen immer auf Default, also 0

<?   
// param1=param1=order number, from 0 to 7 
$playbackorder = playbackorder(3);   
 var_dump($playbackorder);   
    
 function playbackorder()   
 {   
     $command = "PlaybackOrder";   
    $payload = "http://192.168.178.20:8888/vairulez/?cmd=".$command."&param1="; // Command ergänzen   
    $playbackorder = file_get_contents ($payload);   
    return $playbackorder;   
 }   
?>

Das ist nicht weiter verwunderlich denn Du übergibst gar keinen Wert an die Funktion und hast auch auch keine Variable mit dem Wert in die Übergabe eingebaut.

Lies Dir mal den Grundsatz zu Funktionen durch
Eigene Funktionen in PHP
dann wirst Du auch den Fehler finden.

So sollte es wohl richtig aussehen

<?   
// Default (0), Repeat (Playlist), Repeat (Track), Random, Shuffle (tracks), Shuffle (Albums), Shuffle (Folders) (7). 
$playbackorder = playbackorder(3);   
 var_dump($playbackorder);   
    
 function playbackorder($order)   
 {   
     $command = "PlaybackOrder";   
    $payload = "http://192.168.178.20:8888/vairulez/?cmd=".$command."&param1=".$order; // Command ergänzen   
    $playbackorder = file_get_contents ($payload);   
    return $playbackorder;   
 }   
?>

ob das funktioniert kannst nur Du testen.

Hat funktioniert. Habe mir mal deinen Link zu Funktionen angeschaut und schaue mir gerade ein Lernvideo von V2B an.

Das ist jetzt schon mal ein Problem das ich habe. Ich kann das nicht „heraus“ lesen z.B. woher weiß ich das ich „order“ nehmen muss? Besagt das diese Zeile?

param1=order number, from 0 to 7

Dann wäre es bei dieser Zeile folgender Code?

param1=item indexes separated by any delitemeter

<?    
// Put active playlist items to playback queue.  
$queueitems = queueitems(1);    
 var_dump($queueitems);    
     
 function queueitems($item)    
 {    
     $command = "QueueItems";    
    $payload = "http://192.168.178.20:8888/vairulez/?cmd=".$command."&param1=".$item; // Command ergänzen    
    $queueitems = file_get_contents ($payload);    
    return $queueitems;    
 }    
?> 

Wie Du eine Variable benennst ist Dir überlassen Du musst nur darauf achten das dies dann konsistent ist ob Du die Variable also $item, $Item, $ITEM oder $Schurtzelpups nennst ist egal Du musst dann nur immer wieder die gleiche Bezeichnung für die Variable wählen, also Groß und Kleinschreibung beachten.
Keine Ahnung was ein „delitemeter“ sein soll wahrscheinlich ist delimiter gemeint das wäre ein Trennzeichen. Dann wäre das ganze aber ein Array
PHP Array
Array Manual
was ja auch Sinn macht da es ja eine Queue ist.
Also dann wäre


$item = array(1,2,3,4,7); // Titel 1,2,3,4,7

Da es sich ja um eine http URL handelt ist mir aber unklar wie jetzt dieser Array übergeben werden soll weil in der Doku steht ja nur separated by any delimiter. Das ist wie Rätselraten. Den Array kannst Du so zumindest nicht in der URL übergeben. Also kannst Du da wohl nur probieren was funktioniert z.B.


$item = "1.2.3.4.5";

so lange die Dokumentation da nicht eindeutig ist ist das heiteres Raten.

Da in der Doku ja nun gar nichst steht kannst Du das ausprobieren oder versuchen den Array als JSON zu übergeben oder aber urlencoded

$item = array(1,2,3,4,7);
 var_dump($item);
 $itemjson = json_encode($item);
 var_dump($itemjson);
 $itemurlencoded = urlencode($itemjson);
var_dump($itemurlencoded);

@Fonzo
gibt es mittlerweile eine andere Möglichkeit aus NEO/IPS eine externe App zu starten? Leider unterstützt die App nicht URL Schemes.

Mit Apps kenne ich mich nicht so gut aus und wenn dann nur mit IOS. Auf Android geht das vielleicht mit Tasker. Frage doch mal im Unterforum Mobile IOS Android ob da jemand weis wie man fremde Apps starten kann. Wie heisst die App denn die Du starten willst?

Danke, werde mal da nachfragen. Die App wäre FoobarCon Pro.

https://play.google.com/store/apps/details?id=com.wan.foobarconpro&hl=de

Die App
Monkeymote
lässt sich über ein URL Scheme starten eventuell ist da ja noch eine Alternative.

Danke für den Tipp. Hatte ich mir schon mal vor ein paar Jahren angeschaut.

Wie wird das den gehandhabt wenn ich von der App wieder in meine NEO Oberfläche zurück möchte?

Edit: Habe gerade gelesen das man speziell Android Apps mit dem Paketnamen aufrufen könnte, das wäre in meinem Fall bei der FoobarCon App: com.wan.foobarconpro&hl=de
Aber damit kann NEO bestimmt auch nichts anfangen. Werde mal im Mobile Forum schreiben.

Was hast Du denn Android oder iOS? Monkeymote würde z.B. mit mmotefoo:// gestartet werden. Zu NEO oder jeder anderen App kommt man bei iOS zurück wenn man oben in der durch das URL Scheme aufgerufene App zurück drückt.

Ich hätte beides IOS oder Android. Bei der FoobarCon App geht leider nur Android. Aber ich schau mir das mal an.

Habe mir mal MonkeyMote installiert, bekomme die App aber aus NEO nicht geöffnet.

HTTP Request senden -> mmotefoo://

Passiert denn was wenn Du in Safari mmotefoo:// eingibst? Ansonsten ist eventuell das URL Schema geändert worden.

nö „Seite kann nicht geöffnet werden“

Ich hab’s gefunden. Es muss mmotefoohd:// heißen.