Verwende normalerweise andere Sprachen zum scripten, und kenn mich daher nicht so mit Python aus.
Ich habe folgendes Script:
from mpd import MPDClient
client = MPDClient() # create client object
client.timeout = 10 # network timeout in seconds (floats allowed), default: None
client.idletimeout = None # timeout for fetching the result of the idle command is handled seperately, default: None
client.connect("xxx.xxx.x.x", 6600) # connect to localhost:6600
client.password("xxxxxxx")
client.play() # send command
client.close() # send the close command
client.disconnect() # disconnect from the server
Womit ich vom Desktop aus meinen MPD Server steuern möchte, da dies auch unter Windows funktionieren soll hab ich Python gewählt (mache einfache Sachen unter Linux sonst eher mit Bashscripten)
Das Script funktioniert auch einwandfrei.
Nun möchte ich jedoch anstatt für jedes Kommando ein eigenes Script zu haben den Befehl an das Script übergeben.
Nach langen Google-Sessions bin bis jetzt soweit gekommen:
import sys
from mpd import MPDClient # python-mpd2 is needed
EINGABE = sys.argv[1:]
client = MPDClient() # create client object
client.timeout = 10 # network timeout in seconds (floats allowed), default: None
client.idletimeout = None # timeout for fetching the result of the idle command is handled seperately, default: None
client.connect("xxx.xxx.x.x", 6600) # connect to localhost:6600
client.password("xxxxxxxxx")
print(EINGABE)
if EINGABE[1:] == "['play']":
def CMD():
client.play();
elif EINGABE == "['stop']":
def CMD():
client.stop();
elif EINGABE == "['pause']":
def CMD():
client.pause();
elif EINGABE == "['next']":
def CMD():
client.next();
elif EINGABE == "['previous']":
def CMD():
client.previous();
else:
def CMD():
print(client.status());
#client.command_list_ok_begin()
CMD()
#client.command_list_end()
client.close()
client.disconnect()
Verbindungsaufbau und Trennung funktioniert, jedoch wird nur die in "else" angebene Funktion ausgeführt.
Was mach ich falsch?
Wenn ich zum Beispiel "python Scriptname.py stop" eingebe steht der "print(EINGABE)" Ausgabe
['stop']
, womit das dann natürlich in den if Abfragen eingetragen hab.
War das falsch? Ist das überhaupt normal das "sys.argv" (hab nix anderes brauchbares gefunden) noch zusätzlich den Scriptnamen etc mit ausgibt?