Commit 9b7ead09 authored by David Trattnig's avatar David Trattnig
Browse files

Multi-channel aware methods.

parent b456f9fb
......@@ -22,6 +22,7 @@
# along with engine. If not, see <http://www.gnu.org/licenses/>.
#
from libraries.enum.auraenumerations import Channel, ChannelType
from modules.communication.liquidsoap.client import LiquidSoapClient
......@@ -65,19 +66,55 @@ class LiquidSoapPlayerClient(LiquidSoapClient):
return "LiquidSoapPlayerClient does not understand http." + command + str(args)
# ------------------------------------------------------------------------------------------ #
def fs(self, command, *args):
if command == "push":
return self.fs_push(*args)
if command == "seek":
return self.fs_seek(*args)
def playlist_push(self, channel, uri):
"""
Pushs the passed file URI to the playlist channel.
Args:
channel (String): Liquidsoap Channel ID
"""
self.command(channel, 'push', uri)
return self.message
if command == "clear":
return self.fs_clear(*args)
return "LiquidSoapPlayerClient does not understand fs." + command + str(args)
def playlist_seek(self, channel, duration):
"""
Forward the playing track/playlist of the given channel.
# ------------------------------------------------------------------------------------------ #
Args:
channel (String): Liquidsoap Channel ID
duration (Integer): Seek duration ins seconds
Returns:
Liquidsoap server response
"""
self.command(channel, 'seek', str(duration))
return self.message
def playlist_clear(self, channel):
"""
Clears all playlist entries of the given channel.
Args:
channel (String): Liquidsoap Channel ID
duration (Integer): Seek duration ins seconds
Returns:
Liquidsoap server response
"""
if channel == Channel.FILESYSTEM_A.value:
self.command(channel.value, 'clear_filesystem_0')
elif channel == Channel.FILESYSTEM_B.value:
self.command(channel.value, 'clear_filesystem_1')
else:
return "Invalid filesystem channel '%s'" % channel
return self.message
# ------------------------------------------------------------------------------------------ #
def uptime(self, command=""): # no command will come
return self.command("uptime", "")
......@@ -93,22 +130,6 @@ class LiquidSoapPlayerClient(LiquidSoapClient):
self.command('auraengine', 'state')
return self.message
# ------------------------------------------------------------------------------------------ #
def fs_push(self, uri):
self.command('fs', 'push', uri)
return self.message
# ------------------------------------------------------------------------------------------ #
def fs_clear(self):
self.command('fs', 'clear')
return self.message
def fs_seek(self, uri):
self.command('fs', 'seek', uri)
return self.message
# ------------------------------------------------------------------------------------------ #
def set_http_url(self, uri):
self.command('http', 'url', uri)
......@@ -160,193 +181,179 @@ class LiquidSoapPlayerClient(LiquidSoapClient):
return self.message
# ------------------------------------------------------------------------------------------ #
def recorderstatus(self, num):
"""
get status of a recorder
:return:
"""
self.command("recorder_" + str(num), "status")
return self.message
# ------------------------------------------------------------------------------------------ #
def recorderstart(self, num):
"""
get status of a recorder
:return:
"""
self.command("recorder_" + str(num), "start")
return self.message
# ------------------------------------------------------------------------------------------ #
def recorderstop(self, num):
"""
get status of a recorder
:return:
"""
self.command("recorder_" + str(num), "stop")
return self.message
# ------------------------------------------------------------------------------------------ #
def skip(self, namespace="playlist", pos=""):
"""
Source skippen
@type namespace: string
@param namespace: Namespace der Source
@type pos: string
@param pos: Die Position - optional - Position des Channels vom Mixer benötigt
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('skip', namespace, pos)
return self.message
# ------------------------------------------------------------------------------------------ #
def remove(self, pos, namespace="playlist"):
"""
Track aus der secondary_queue oder der Playlist entfernen
@type pos: string
@param pos: Die Position
@type namespace: string
@param namespace: Namespace der Source
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('remove', namespace, str(pos))
return self.message
# ------------------------------------------------------------------------------------------ #
def insert(self, uri, pos='0', namespace="playlist"):
"""
Track einfügen
@type uri: string
@param uri: Uri einer Audiodatei
@type pos: string
@param pos: Die Position
@type namespace: string
@param namespace: Namespace der Source
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('insert', namespace, str(pos) + ' ' + uri)
return self.message
# ------------------------------------------------------------------------------------------ #
def move(self, fromPos, toPos, namespace="playlist"):
"""
Track von Position fromPos nach Position toPos verschieben
@type fromPos: string/int
@param fromPos: Position des zu verschiebenden Tracks
@type toPos: string
@param toPos: Die Position zu der verschoben werden soll
@type namespace: string
@param namespace: Namespace der Source
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('move', namespace, str(fromPos) + ' ' + str(toPos))
return self.message
# ------------------------------------------------------------------------------------------ #
def play(self, namespace="playlist"):
"""
Source abspielen - funktioniert nur bei Playlist
@type namespace: string
@param namespace: Namespace der Source
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('play', namespace)
return self.message
# ------------------------------------------------------------------------------------------ #
def pause(self, namespace="playlist"):
"""
Source pausieren/stoppen - funktioniert nur bei Playlist
@type namespace: string
@param namespace: Namespace der Source
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('pause', namespace)
return self.message
# ------------------------------------------------------------------------------------------ #
def flush(self, namespace="playlist"):
"""
Playlist leeren
@type namespace: string
@param namespace: Namespace der Source
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('flush', namespace)
return self.message
# ------------------------------------------------------------------------------------------ #
def playlistData(self):
"""
Metadaten der Playlist ausgeben
@rtype: string
@return: Ein Json-String
"""
self.command('data', 'playlist')
return self.message
# ------------------------------------------------------------------------------------------ #
def seek(self, duration, namespace="playlist"):
"""
Aktuell laufenen Track des Kanals vorspulen
@type duration: string/int
@param duration: Dauer in Sekunden
@type namespace: string
@param namespace: Namespace der Source
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('seek', namespace, str(duration))
return self.message
# ------------------------------------------------------------------------------------------ #
def get_queue(self, namespace="ch1", queue='queue'):
"""
Queue eines Kanals ausgeben
@type namespace: string
@param namespace: Namespace der Source
@type queue: string
@param queue: Name des queues (queue, primary_queue, secondary_queue)
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command(queue, namespace)
return self.message
# ------------------------------------------------------------------------------------------ #
def loadPlaylist(self, uri, params="", namespace="playlist"):
"""
Playlist laden
@type uri: string
@param uri: Uri einer Playlist im XSPF-Format
@type params: string
@param params: obsolete
@type namespace: string
@param namespace: Namespace der Source - hier nur playlist
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('load', namespace, uri + params)
return self.message
# ------------------------------------------------------------------------------------------ #
def currentTrack(self, namespace="request"):
"""
Das oder die ID(s) der gerade abgespielten requests erhalten
@type namespace: string
@param namespace: Namespace der Source
@rtype: string
@return: Die Antwort des Liquidsoap-Servers (als String)
"""
self.command('on_air', namespace)
return self.message
# def recorderstatus(self, num):
# """
# get status of a recorder
# :return:
# """
# self.command("recorder_" + str(num), "status")
# return self.message
# # ------------------------------------------------------------------------------------------ #
# def recorderstart(self, num):
# """
# get status of a recorder
# :return:
# """
# self.command("recorder_" + str(num), "start")
# return self.message
# # ------------------------------------------------------------------------------------------ #
# def recorderstop(self, num):
# """
# get status of a recorder
# :return:
# """
# self.command("recorder_" + str(num), "stop")
# return self.message
# ------------------------------------------------------------------------------------------ #
# def skip(self, namespace="playlist", pos=""):
# """
# Source skippen
# @type namespace: string
# @param namespace: Namespace der Source
# @type pos: string
# @param pos: Die Position - optional - Position des Channels vom Mixer benötigt
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command('skip', namespace, pos)
# return self.message
# # ------------------------------------------------------------------------------------------ #
# def remove(self, pos, namespace="playlist"):
# """
# Track aus der secondary_queue oder der Playlist entfernen
# @type pos: string
# @param pos: Die Position
# @type namespace: string
# @param namespace: Namespace der Source
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command('remove', namespace, str(pos))
# return self.message
# # ------------------------------------------------------------------------------------------ #
# def insert(self, uri, pos='0', namespace="playlist"):
# """
# Track einfügen
# @type uri: string
# @param uri: Uri einer Audiodatei
# @type pos: string
# @param pos: Die Position
# @type namespace: string
# @param namespace: Namespace der Source
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command('insert', namespace, str(pos) + ' ' + uri)
# return self.message
# # ------------------------------------------------------------------------------------------ #
# def move(self, fromPos, toPos, namespace="playlist"):
# """
# Track von Position fromPos nach Position toPos verschieben
# @type fromPos: string/int
# @param fromPos: Position des zu verschiebenden Tracks
# @type toPos: string
# @param toPos: Die Position zu der verschoben werden soll
# @type namespace: string
# @param namespace: Namespace der Source
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command('move', namespace, str(fromPos) + ' ' + str(toPos))
# return self.message
# ------------------------------------------------------------------------------------------ #
# def play(self, namespace="playlist"):
# """
# Source abspielen - funktioniert nur bei Playlist
# @type namespace: string
# @param namespace: Namespace der Source
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command('play', namespace)
# return self.message
# # ------------------------------------------------------------------------------------------ #
# def pause(self, namespace="playlist"):
# """
# Source pausieren/stoppen - funktioniert nur bei Playlist
# @type namespace: string
# @param namespace: Namespace der Source
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command('pause', namespace)
# return self.message
# # ------------------------------------------------------------------------------------------ #
# def flush(self, namespace="playlist"):
# """
# Playlist leeren
# @type namespace: string
# @param namespace: Namespace der Source
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command('flush', namespace)
# return self.message
# # ------------------------------------------------------------------------------------------ #
# def playlistData(self):
# """
# Metadaten der Playlist ausgeben
# @rtype: string
# @return: Ein Json-String
# """
# self.command('data', 'playlist')
# return self.message
# # ------------------------------------------------------------------------------------------ #
# def get_queue(self, namespace="ch1", queue='queue'):
# """
# Queue eines Kanals ausgeben
# @type namespace: string
# @param namespace: Namespace der Source
# @type queue: string
# @param queue: Name des queues (queue, primary_queue, secondary_queue)
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command(queue, namespace)
# return self.message
# ------------------------------------------------------------------------------------------ #
# def loadPlaylist(self, uri, params="", namespace="playlist"):
# """
# Playlist laden
# @type uri: string
# @param uri: Uri einer Playlist im XSPF-Format
# @type params: string
# @param params: obsolete
# @type namespace: string
# @param namespace: Namespace der Source - hier nur playlist
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command('load', namespace, uri + params)
# return self.message
# ------------------------------------------------------------------------------------------ #
# def currentTrack(self, namespace="request"):
# """
# Das oder die ID(s) der gerade abgespielten requests erhalten
# @type namespace: string
# @param namespace: Namespace der Source
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers (als String)
# """
# self.command('on_air', namespace)
# return self.message
# ------------------------------------------------------------------------------------------ #
def volume(self, pos, volume, namespace="mixer"):
......@@ -365,29 +372,29 @@ class LiquidSoapPlayerClient(LiquidSoapClient):
return self.message
# ------------------------------------------------------------------------------------------ #
def playlist_remaining(self):
"""
Wie lange läuft der aktuelle Track der Playlist noch
@rtype: string
@return: Die Antwort des Liquidsoap-Servers
"""
self.command('remaining', 'playlist')
return self.message
# def playlist_remaining(self):
# """
# Wie lange läuft der aktuelle Track der Playlist noch
# @rtype: string
# @return: Die Antwort des Liquidsoap-Servers
# """
# self.command('remaining', 'playlist')
# return self.message
# ------------------------------------------------------------------------------------------ #
def list_channels(self):
"""
Channels auflisten (Simple JSON)
"""
# Liquidsoap Kommando
# def list_channels(self):
# """
# Channels auflisten (Simple JSON)
# """
# # Liquidsoap Kommando
channels = self.sendLqcCommand(self.lqc, 'mixer', 'inputs')
# channels = self.sendLqcCommand(self.lqc, 'mixer', 'inputs')
if not isinstance(channels, list):
self.error('02')
elif len(channels) < 1:
self.warning('01')
else:
self.success('00', channels)
# if not isinstance(channels, list):
# self.error('02')
# elif len(channels) < 1:
# self.warning('01')
# else:
# self.success('00', channels)
self.notifyClient()
\ No newline at end of file
# self.notifyClient()
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment