diff --git a/plugin/controllers/models/movies.py b/plugin/controllers/models/movies.py index c72d175de..1d695c4cc 100644 --- a/plugin/controllers/models/movies.py +++ b/plugin/controllers/models/movies.py @@ -15,13 +15,16 @@ from Tools.FuzzyDate import FuzzyTime from os import stat as os_stat from Components.MovieList import MovieList +from Tools.Directories import fileExists +from time import strftime, localtime - -def getMovieList(self,directory=resolveFilename(SCOPE_HDD)): - +def getMovieList(self,directory=None, tag=None): movieliste = [] bookmarklist = [] + if directory == None: + directory = resolveFilename(SCOPE_HDD) + self.root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + directory) for bookmark in config.movielist.videodirs.value: @@ -30,7 +33,8 @@ def getMovieList(self,directory=resolveFilename(SCOPE_HDD)): self.tagfilter = [] self.movielist = MovieList(self.root) -# self.movielist.reload(root=self.root, filter_tags=self.tagfilter) + if tag != None: + self.movielist.reload(root=self.root, filter_tags=[tag]) loadLength = True for (serviceref, info, begin, unknown) in self.movielist.list: @@ -66,6 +70,7 @@ def getMovieList(self,directory=resolveFilename(SCOPE_HDD)): movie = {} filename = '/'+filename movie['filename'] = filename + movie['filename_stripped'] = filename.split("/")[-1] movie['eventname'] = servicename movie['description'] = info.getInfoString(serviceref, iServiceInformation.sDescription) movie['begintime'] = begin_string @@ -78,7 +83,7 @@ def getMovieList(self,directory=resolveFilename(SCOPE_HDD)): except: movie['filesize'] = 0 movie['fullname'] = serviceref.toString() - movie['DescriptionExtended'] = ext + movie['descriptionExtended'] = ext movie['servicename'] = sourceRef.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '') movie['recordingtime'] = rtime @@ -114,3 +119,14 @@ def removeMovie(session, sRef): "message": "The movie '%s' has been deleted successfully" % name } +def getMovieTags(): + tags = [] + if fileExists("/etc/enigma2/movietags"): + for tag in open("/etc/enigma2/movietags").read().split("\n"): + if len(tag.strip()) > 0: + tags.append(tag.strip()) + + return { + "result": True, + "tags": tags + } \ No newline at end of file diff --git a/plugin/controllers/views/web/movielist.tmpl b/plugin/controllers/views/web/movielist.tmpl index bda9cd685..aa0d62f4e 100644 --- a/plugin/controllers/views/web/movielist.tmpl +++ b/plugin/controllers/views/web/movielist.tmpl @@ -6,7 +6,7 @@ $movie.fullname $movie.eventname $movie.description - $movie.DescriptionExtended + $movie.descriptionExtended $movie.servicename $movie.recordingtime $movie.length diff --git a/plugin/controllers/views/web/movielisthtml.tmpl b/plugin/controllers/views/web/movielisthtml.tmpl new file mode 100644 index 000000000..6e28d4a8f --- /dev/null +++ b/plugin/controllers/views/web/movielisthtml.tmpl @@ -0,0 +1,44 @@ +#filter WebSafe + + + + + Enigma2 Movielist + + + + + + #for $movie in $movies + + + + + + + + + + #end for +
+ Description: + $movie.description +
+ Extended: + $movie.descriptionExtended +
+ Recording Time: + $movie.begintime +
+ Tags: + $movie.tags +
+ Channel: + $movie.servicename +
+
+ + +#end filter \ No newline at end of file diff --git a/plugin/controllers/views/web/movielistm3u.tmpl b/plugin/controllers/views/web/movielistm3u.tmpl new file mode 100644 index 000000000..d8663474e --- /dev/null +++ b/plugin/controllers/views/web/movielistm3u.tmpl @@ -0,0 +1,7 @@ +#from urllib import quote +#EXTM3U +#EXTVLCOPT--http-reconnect=true +#for $movie in $movies +#EXTINF:-1,: $movie.filename_stripped +http://$host/file?file=$quote($movie.filename) +#end for diff --git a/plugin/controllers/views/web/movielistrss.tmpl b/plugin/controllers/views/web/movielistrss.tmpl new file mode 100644 index 000000000..0e7674a2c --- /dev/null +++ b/plugin/controllers/views/web/movielistrss.tmpl @@ -0,0 +1,30 @@ +#filter WebSafe +#from urllib import quote + + + + Enigma2 Movielist + http:// + A list of all recordings + OpenWebif + #for $movie in $movies + + $movie.eventname + + Service: $movie.servicename
+ $movie.description
+ $movie.descriptionExtended
+ $movie.filename
+ $movie.tags
+ $movie.fullname +
+ http://$host/file?file=$quote($movie.filename) + + $movie.begintime + $movie.servicename + Dreambox Enigma2 +
+ #end for +
+
+#end filter \ No newline at end of file diff --git a/plugin/controllers/views/web/movietags.tmpl b/plugin/controllers/views/web/movietags.tmpl new file mode 100644 index 000000000..e38c75244 --- /dev/null +++ b/plugin/controllers/views/web/movietags.tmpl @@ -0,0 +1,8 @@ +#filter WebSafe + + + #for $tag in $tags + $tag + #end for + +#end filter \ No newline at end of file diff --git a/plugin/controllers/web.py b/plugin/controllers/web.py index c563462ce..9826425ff 100644 --- a/plugin/controllers/web.py +++ b/plugin/controllers/web.py @@ -7,6 +7,8 @@ # # ############################################################################## +from Components.config import config + from models.info import getInfo, getCurrentTime , getStatusInfo, getFrontendStatus from models.services import getCurrentService, getBouquets, getServices, getSubServices, getChannels, getSatellites, getBouquetEpg, getBouquetNowNextEpg, getSearchEpg, getChannelEpg, getNowNextEpg, getSearchSimilarEpg from models.volume import getVolumeStatus, setVolumeUp, setVolumeDown, setVolumeMute, setVolume @@ -15,7 +17,7 @@ from models.locations import getLocations, getCurrentLocation, addLocation, removeLocation from models.timers import getTimers, addTimer, addTimerByEventId, editTimer, removeTimer, toggleTimerStatus, cleanupTimer, writeTimerList, recordNow, tvbrowser from models.message import sendMessage -from models.movies import getMovieList, removeMovie +from models.movies import getMovieList, removeMovie, getMovieTags from models.config import addCollapsedMenu, removeCollapsedMenu, setRemoteGrabScreenshot, setZapStream, saveConfig, getZapStream from models.stream import getStream, getTS, getStreamSubservices from models.servicelist import reloadServicesLists @@ -184,11 +186,54 @@ def P_message(self, request): return sendMessage(self, request) def P_movielist(self, request): + tag = None + if "tag" in request.args.keys(): + tag = request.args["tag"][0] + + dirname = None if "dirname" in request.args.keys(): - movies = getMovieList(self,request.args["dirname"][0]) - else: - movies = getMovieList(self) - return movies + dirname = request.args["dirname"][0] + + return getMovieList(self, dirname, tag) + + def P_movielisthtml(self, request): + tag = None + if "tag" in request.args.keys(): + tag = request.args["tag"][0] + + dirname = None + if "dirname" in request.args.keys(): + dirname = request.args["dirname"][0] + + request.setHeader("content-type", "text/html") + return getMovieList(self, dirname, tag) + + def P_movielistm3u(self, request): + tag = None + if "tag" in request.args.keys(): + tag = request.args["tag"][0] + + dirname = None + if "dirname" in request.args.keys(): + dirname = request.args["dirname"][0] + + request.setHeader('Content-Type', 'application/text') + movielist = getMovieList(self, dirname, tag) + movielist["host"] = "%s:%s" % (request.getRequestHostname(), config.OpenWebif.port.value) + return movielist + + def P_movielistrss(self, request): + tag = None + if "tag" in request.args.keys(): + tag = request.args["tag"][0] + + dirname = None + if "dirname" in request.args.keys(): + dirname = request.args["dirname"][0] + + movielist = getMovieList(self, dirname, tag) + movielist["host"] = "%s:%s" % (request.getRequestHostname(), config.OpenWebif.port.value) + return movielist def P_moviedelete(self, request): res = self.testMandatoryArguments(request, ["sRef"]) @@ -197,6 +242,9 @@ def P_moviedelete(self, request): return removeMovie(self.session, request.args["sRef"][0]) + def P_movietags(self, request): + return getMovieTags() + def P_timerlist(self, request): return getTimers(self.session)