From 43d323fa088153082a33966b19d81e9169cc7bf2 Mon Sep 17 00:00:00 2001
From: undisclosed
Date: Sat, 21 Jan 2023 16:25:28 +0000
Subject: [PATCH] Experimentell: m3u
---
src/de/uhilger/tango/api/MediaSteuerung.java | 46 +++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 41 insertions(+), 5 deletions(-)
diff --git a/src/de/uhilger/tango/api/MediaSteuerung.java b/src/de/uhilger/tango/api/MediaSteuerung.java
index e55be01..7c0c3bd 100644
--- a/src/de/uhilger/tango/api/MediaSteuerung.java
+++ b/src/de/uhilger/tango/api/MediaSteuerung.java
@@ -53,10 +53,20 @@
*
* HTTP GET /mz/api/strg/abspieler/pause
* HTTP GET /mz/api/strg/abspieler/stop
+ * HTTP GET /mz/api/strg/abspieler/seek/[sekunden]
*
* Faustregel: Anzahl Elemente eines URL plus 1 ist die Anzahl der Elemente des
* Ergebnisses von String.split.
*
+ * Mit der Funktion ende liefert die MediaSteuerung die Moeglichkeit, Titel aus
+ * einer Abspielliste gesteuert von Tango abzuspielen. Die Nutzung der Funktion wird
+ * ausgeloest vom Aufruf an abspieler/play/liste/[name]. Tango erwartet dann von einem
+ * Abspieler die Rueckmeldung, dass dieser den zuletzt von Tango an den
+ * Abspieler zum Abspielen uebermittelten Titel zuende abgespielt hat. Tango
+ * uebergibt dem Abspieler dann den naechsten Titel, bis die Abspielliste zuende ist.
+ *
+ * Diese Form unterscheidet sich vom Abspielen einer Abspielliste als einzelner
+ * Stream, wie es vom StreamHandler realisiert wird.
*
* @author Ulrich Hilger
* @version 1, 9.4.2021
@@ -66,26 +76,40 @@
private static final Logger logger = Logger.getLogger(MediaSteuerung.class.getName());
public static final String PL_CMD_PLAY = "play";
+ public static final String PL_CMD_SEEK = "seek";
public static final String PL_DEFAULT_PARAMS = "?titel=";
public static final String PL_PARAM_RUECK = "&r=";
public static final String PL_API_STRG = "api/strg/";
public static final String PL_CMD_ENDE = "ende";
public static final String PL_CMD_STOP = "stop";
+ public static final String PL_CMD_VOLDN = "voldn";
+ public static final String PL_CMD_VOLUP = "volup";
public static final String PL_CMD_PAUSE = "pause";
public static final String PL_CMD_PLAYON = "weiter";
public static final String PL_CMD_CALYPSO_STOP = "stop";
+ public static final String PL_CMD_CALYPSO_VOL_INC = "vol-inc";
+ public static final String PL_CMD_CALYPSO_VOL_DEC = "vol-dec";
public static final String PL_CMD_CALYPSO_PAUSE = "pause";
public static final String PL_CMD_CALYPSO_PLAYON = "playon";
public static final String DEFAULT_HOST = "http://localhost:9090";
+ public static final String RB_HOST = "host";
+ public static final String RB_PLAYERPARAMS = "playerparams";
+
private final Map spielt = new HashMap();
+
+ private String conf;
+
+ public MediaSteuerung(String conf) {
+ this.conf = conf;
+ }
@Override
protected String get(HttpExchange e) {
String response;
String path = e.getRequestURI().toString();
String[] elems = path.split(Server.SLASH);
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
logger.fine(path);
// Faustregel: Anzahl Elemente eines URL plus 1 ist die Anzahl der Elemente des
@@ -97,10 +121,22 @@
} else if(elems[5].equalsIgnoreCase(PL_CMD_STOP)) {
spielt.remove(elems[4]);
response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_STOP);
+ } else if(elems[5].equalsIgnoreCase(PL_CMD_VOLDN)) {
+ response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_VOL_DEC);
+ } else if(elems[5].equalsIgnoreCase(PL_CMD_VOLUP)) {
+ response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_VOL_INC);
} else if(elems[5].equalsIgnoreCase(PL_CMD_PAUSE)) {
response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_PAUSE);
//} else if(elems[5].equalsIgnoreCase(PL_CMD_PLAYON)) {
// response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_PLAYON);
+ } else {
+ response = meldung("Ungueltiges Kommando: " + elems[5], AbstractHandler.RTC_NOT_FOUND);
+ }
+ break;
+ case 7:
+ if (elems[5].equalsIgnoreCase(PL_CMD_SEEK)) {
+ // /calypso/seek?pos=[sekunden]
+ response = kommandoSenden(fs, elems[4], "seek?pos=" + elems[6]);
} else {
response = meldung("Ungueltiges Kommando: " + elems[5], AbstractHandler.RTC_NOT_FOUND);
}
@@ -139,7 +175,7 @@
private String urlAbspielen(HttpExchange e, String abspielerKmd) throws IOException {
String path = e.getRequestURI().toString();
String[] elems = path.split(Server.SLASH);
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
if(elems[6].equalsIgnoreCase("titel")) {
String titelJson = bodyLesen(e);
Gson gson = new Gson();
@@ -150,7 +186,7 @@
Entity entity = fs.read(FileStorage.ST_ABSPIELER, elems[4]);
if (entity instanceof Abspieler) {
Abspieler abspieler = (Abspieler) entity;
- String server = getEinstellung(fs, App.getRs(App.RB_HOST), DEFAULT_HOST);
+ String server = getEinstellung(fs, getResString(RB_HOST), DEFAULT_HOST);
String signal = abspielKommando(fs, abspieler, server, titelUrl, abspielerKmd).toString();
abspielerKommandoSenden(signal);
return signal + "gesendet.";
@@ -286,7 +322,7 @@
vorgang.setTitelNr(titelNr);
spielt.put(abspieler.getName(), vorgang);
- String server = getEinstellung(s, App.getRs(App.RB_HOST), DEFAULT_HOST);
+ String server = getEinstellung(s, getResString(RB_HOST), DEFAULT_HOST);
/*
@@ -320,7 +356,7 @@
//kmd.append(PL_CMD_PLAY);
kmd.append(abspielKmd);
// Parameter fuer den Abspieler holen
- kmd.append(getEinstellung(s, App.getRs(App.RB_PLAYERPARAMS), PL_DEFAULT_PARAMS));
+ kmd.append(getEinstellung(s, getResString(RB_PLAYERPARAMS), PL_DEFAULT_PARAMS));
kmd.append(server);
kmd.append(titelUrl);
--
Gitblit v1.9.3