Skip to content

Commit

Permalink
Add movielist.html, movielist.m3u, movielist.rss, movietags apis and …
Browse files Browse the repository at this point in the history
…add tag support in movielist
  • Loading branch information
skaman committed Jan 8, 2012
1 parent afe8275 commit a668cf3
Show file tree
Hide file tree
Showing 7 changed files with 164 additions and 11 deletions.
26 changes: 21 additions & 5 deletions plugin/controllers/models/movies.py
Expand Up @@ -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:
Expand All @@ -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:
Expand Down Expand Up @@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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
}
2 changes: 1 addition & 1 deletion plugin/controllers/views/web/movielist.tmpl
Expand Up @@ -6,7 +6,7 @@
<e2servicereference>$movie.fullname</e2servicereference>
<e2title>$movie.eventname</e2title>
<e2description>$movie.description</e2description>
<e2descriptionextended>$movie.DescriptionExtended</e2descriptionextended>
<e2descriptionextended>$movie.descriptionExtended</e2descriptionextended>
<e2servicename>$movie.servicename</e2servicename>
<e2time>$movie.recordingtime</e2time>
<e2length>$movie.length</e2length>
Expand Down
44 changes: 44 additions & 0 deletions plugin/controllers/views/web/movielisthtml.tmpl
@@ -0,0 +1,44 @@
#filter WebSafe
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title>
Enigma2 Movielist
</title>
<link/>
</head>
<body>
<table>
#for $movie in $movies
<tr>
<td class="pageHeader">
$movie.eventname
</td>
</tr>
<tr>
<td>
<b>Description:</b>
$movie.description
<br/>
<b>Extended:</b>
$movie.descriptionExtended
<br/>
<b>Recording Time:</b>
$movie.begintime
<br/>
<b>Tags:</b>
$movie.tags
<br/>
<b>Channel:</b>
$movie.servicename
</td>
</tr>
<tr height="20">
<td>
</td>
</tr>
#end for
</table>
</body>
</html>
#end filter
7 changes: 7 additions & 0 deletions 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
30 changes: 30 additions & 0 deletions plugin/controllers/views/web/movielistrss.tmpl
@@ -0,0 +1,30 @@
#filter WebSafe
#from urllib import quote
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Enigma2 Movielist</title>
<link>http://</link>
<description>A list of all recordings</description>
<generator>OpenWebif</generator>
#for $movie in $movies
<item>
<title>$movie.eventname</title>
<description>
Service: $movie.servicename<br />
$movie.description<br />
$movie.descriptionExtended<br />
$movie.filename<br />
$movie.tags<br />
$movie.fullname
</description>
<link>http://$host/file?file=$quote($movie.filename)</link>
<enclosure type="video/mpeg" url="http://$host/file?file=$quote($movie.filename)"/>
<pubDate>$movie.begintime</pubDate>
<category>$movie.servicename</category>
<author>Dreambox Enigma2</author>
</item>
#end for
</channel>
</rss>
#end filter
8 changes: 8 additions & 0 deletions plugin/controllers/views/web/movietags.tmpl
@@ -0,0 +1,8 @@
#filter WebSafe
<?xml version="1.0" encoding="UTF-8"?>
<e2tags>
#for $tag in $tags
<e2tag>$tag</e2tag>
#end for
</e2tags>
#end filter
58 changes: 53 additions & 5 deletions plugin/controllers/web.py
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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"])
Expand All @@ -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)

Expand Down

0 comments on commit a668cf3

Please sign in to comment.