From 96e7bfab507faeed45a2c598578288e6e58fda08 Mon Sep 17 00:00:00 2001 From: Moritz Venn Date: Mon, 26 Oct 2009 18:09:37 +0000 Subject: [PATCH] allow to remove files from mp playlist, also fixes dl-link in playlist and actually displays a link to the playlist --- webinterface/src/WebComponents/Sources/MP.py | 26 ++++++++++++++++++++++ webinterface/src/WebScreens.py | 1 + webinterface/src/web-data/config.js | 5 +++-- webinterface/src/web-data/tools.js | 13 ++++++++--- .../src/web-data/tpl/default/tplMediaPlayer.htm | 11 ++++++--- 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/webinterface/src/WebComponents/Sources/MP.py b/webinterface/src/WebComponents/Sources/MP.py index 745447a..e500a2e 100644 --- a/webinterface/src/WebComponents/Sources/MP.py +++ b/webinterface/src/WebComponents/Sources/MP.py @@ -9,6 +9,7 @@ class MP(Source): COMMAND = 3 WRITEPLAYLIST = 4 ADD = 5 + REMOVE = 6 def __init__(self, session, func=LIST): Source.__init__(self) @@ -31,6 +32,8 @@ class MP(Source): self.result = self.command(cmd) elif func is self.WRITEPLAYLIST: self.result = self.writePlaylist(cmd) + elif func is self.REMOVE: + self.result = self.removeFile(cmd) elif func is self.ADD: self.result = self.addFile(cmd) @@ -133,6 +136,29 @@ class MP(Source): mp.playlist.updateList() return (True, "%s added to playlist and/or playback started" % (file)) + def removeFile(self, file): + # TODO: fix error handling + mp = self.tryOpenMP() + if mp is None: + return (False, "mediaplayer not installed") + + ref = eServiceReference(file) + if not ref.valid(): + if not os_path.isfile(file): + return (False, "%s is neither a valid reference nor a valid file" % file) + ref = eServiceReference(4097, 0, file) + + serviceRefList = mp.playlist.getServiceRefList() + i = 0 + for mpref in serviceRefList: + if mpref == ref: + mp.playlist.deleteFile(i) + mp.playlist.updateList() + return (True, "%s removed from playlist" % file) + i += 1 + + return (False, "%s not found in playlist" % file) + def writePlaylist(self, param): filename = "playlist/%s.e2pls" % param from Tools.Directories import resolveFilename, SCOPE_CONFIG diff --git a/webinterface/src/WebScreens.py b/webinterface/src/WebScreens.py index d14d824..7280b8d 100644 --- a/webinterface/src/WebScreens.py +++ b/webinterface/src/WebScreens.py @@ -185,6 +185,7 @@ class MediaPlayerWebScreen(WebScreen): self["FileList"] = MP(session, func=MP.LIST) self["PlayFile"] = MP(session, func=MP.PLAY) + self["RemoveFile"] = MP(session, func=MP.REMOVE) self["Command"] = MP(session, func=MP.COMMAND) self["WritePlaylist"] = MP(session, func=MP.WRITEPLAYLIST) diff --git a/webinterface/src/web-data/config.js b/webinterface/src/web-data/config.js index b8acfcf..da1c0ee 100644 --- a/webinterface/src/web-data/config.js +++ b/webinterface/src/web-data/config.js @@ -38,8 +38,9 @@ var url_moviedelete= "/web/moviedelete"; // plus serviceref var url_mediaplayerlist= "/web/mediaplayerlist?types=audio&path="; // plus full qualified path var url_mediaplayerplay= "/web/mediaplayerplay?file="; // plus file-serviceref +var url_mediaplayerremove= "/web/mediaplayerremove?file="; // plus file-serviceref var url_mediaplayercmd= "/web/mediaplayercmd?command="; // plus command -var url_mediaplayerwrite= "/web/mediaplayerwrite?filename="; // plus command +var url_mediaplayerwrite= "/web/mediaplayerwrite?filename="; // plus filename var url_filelist = "/web/mediaplayerlist?path="; // plus full qualified path @@ -71,4 +72,4 @@ var providerRadio ='1:7:2:0:0:0:0:0:0:0:(type == 2) FROM PROVIDERS ORDER BY name var satellitesTv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25) FROM SATELLITES ORDER BY name'; var satellitesRadio ='1:7:2:0:0:0:0:0:0:0:(type == 2) FROM SATELLITES ORDER BY name'; var allTv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25) ORDER BY name'; -var allRadio = '1:7:2:0:0:0:0:0:0:0:(type == 2) ORDER BY name'; \ No newline at end of file +var allRadio = '1:7:2:0:0:0:0:0:0:0:(type == 2) ORDER BY name'; diff --git a/webinterface/src/web-data/tools.js b/webinterface/src/web-data/tools.js index 945ae81..ec813b9 100644 --- a/webinterface/src/web-data/tools.js +++ b/webinterface/src/web-data/tools.js @@ -1239,7 +1239,7 @@ function restartTwisted() { //MediaPlayer function sendMediaPlayer(command) { - debug("[playFile] loading sendMediaPlayer"); + debug("[sendMediaPlayer] called"); doRequest( url_mediaplayercmd+command ); } @@ -1337,14 +1337,21 @@ function playFile(file,root) { } +function deleteFile(sref) { + debug("[deleteFile] called"); + mediaPlayerStarted = true; + doRequest( url_mediaplayerremove+sref ); +} + + function openMediaPlayerPlaylist() { - debug("[playFile] loading openMediaPlayerPlaylist"); + debug("[openMediaPlayerPlaylist] called"); doRequest(url_mediaplayerlist+"playlist", incomingMediaPlayer, false); } function writePlaylist() { - debug("[playFile] loading writePlaylist"); + debug("[writePlaylist] called"); var filename = ''; filename = prompt("Please enter a name for the playlist", ""); diff --git a/webinterface/src/web-data/tpl/default/tplMediaPlayer.htm b/webinterface/src/web-data/tpl/default/tplMediaPlayer.htm index 3d3892a..ed17da3 100644 --- a/webinterface/src/web-data/tpl/default/tplMediaPlayer.htm +++ b/webinterface/src/web-data/tpl/default/tplMediaPlayer.htm @@ -15,8 +15,7 @@ jump forward stop - +
@@ -32,7 +31,13 @@
${item.name}
- {if item.isdir == "false"} + {if item.root == "playlist"} +
+ + + +
+ {elseif item.isdir == "false"}
-- 2.7.4