nextEpisode = 0
		else:	
			nextEpisode = entry["Episode"] + 1
		
		found = True
		while found is True:
			found = False
			for episode in library:
				episodeDict = episode[1]
				if episodeDict["Episode"] == nextEpisode:
					playbackList.append( (episodeDict["Path"], episodeDict["Title"], episodeDict, ))
					nextEpisode += 1
					found = True
					break
		
		return playbackList

	def buildInfoPlaybackArgs(self, entry):
		args = {}
		args["id"] 	= entry["Id"]
		args["title"]   = entry["Title"]
		args["year"]    = entry["Year"]
		args["thetvdb"] = entry["TheTvDbId"]
		args["season"]  = entry["Season"]
		args["episode"] = entry["Episode"]
		args["type"]    = "tvshow"
		return args

if gAvailable is True:
	registerPlugin(Plugin(id="tvshows", name=_("TV Shows"), start=DMC_TvShowLibrary, where=Plugin.MENU_VIDEOS, weight=4))
Esempio n. 2
0
	global gmy
	gmy = MyEpisodesAPI()

def info_playback(d, flags):
	if flags.has_key("DO_NOT_TRACK") and flags["DO_NOT_TRACK"] is True:
		return
	
	if d.has_key("title"):
		gmy.setName(d["title"])
	if d.has_key("season") and d.has_key("episode"):
		gmy.setSeasonAndEpisode(d["season"], d["episode"])
	if d.has_key("type"):
		if d["type"] == "tvshow":
			gmy.setType(MyEpisodesAPI.TYPE_TVSHOW)
		else:
			gmy.setType(-1)
	if d.has_key("progress"):
		gmy.setProgress(d["progress"])
	
	if config.plugins.pvmc.plugins.myepisodes.enabled.value is True:
		gmy.setUsernameAndPassword(config.plugins.pvmc.plugins.myepisodes.username.value, config.plugins.pvmc.plugins.myepisodes.password.value)
		if gmy.getType() == MyEpisodesAPI.TYPE_TVSHOW:
			if d.has_key("status"):
				if d["status"] == "stopped":
					if gmy.getProgress() >= 70:
						gmy.send()

if gAvailable is True:
	registerPlugin(Plugin(id="myepisodes", name=_("myepisodes"), fnc=settings, where=Plugin.SETTINGS))
	registerPlugin(Plugin(id="myepisodes", name=_("myepisodes"), fnc=autostart, where=Plugin.AUTOSTART))
	registerPlugin(Plugin(id="myepisodes", name=_("myepisodes"), fnc=info_playback, where=Plugin.INFO_PLAYBACK))
		else:
			config.plugins.pvmc.plugins.sqlitecheck.nextcheck.value = -1
			config.plugins.pvmc.plugins.sqlitecheck.nextcheck.save()

	def checkSqlite(self):
		try:
			import sqlite3
			return True
		except:
			pass
		return False

	def installSqlite(self):
		os.system("opkg update")
		os.system("opkg install python-sqlite3")

def sqliteCheck(session):
	if config.plugins.pvmc.plugins.sqlitecheck.nextcheck.value == 0:
		config.plugins.pvmc.plugins.sqlitecheck.nextcheck.value = 100
		config.plugins.pvmc.plugins.sqlitecheck.nextcheck.save()
		thread = SqliteCheck()
		thread.start()
	elif config.plugins.pvmc.plugins.sqlitecheck.nextcheck.value != -1:
		config.plugins.pvmc.plugins.sqlitecheck.nextcheck.value = config.plugins.pvmc.plugins.sqlitecheck.nextcheck.value - 1
		config.plugins.pvmc.plugins.sqlitecheck.nextcheck.save()

if gAvailable is True:
	p = []
	p.append(Plugin(id="sqlitecheck", name=_("Sqlite Check"), fnc=sqliteCheck, where=Plugin.AUTOSTART))
	registerPlugin(p)
				for zip_entry in files:
					if os.path.splitext( zip_entry )[1] in exts:
						subtitle_file, file_path = self.create_name(zip_entry,sub_filename,subtitle_lang)
						shutil.copy(subtitle_file, file_path)
						#subtitle_set,file_path  = self.copy_files( subtitle_file, file_path )            
		
		try:
			shutil.rmtree(str(self.tmp_sub_dir))
		except Exception, ex:
			printl("Exception: " + str(ex), __name__, "E")

	def create_name(self,zip_entry,sub_filename,subtitle_lang):
		sub_ext  = os.path.splitext( zip_entry )[1]
		sub_name = os.path.splitext( sub_filename )[0]
		#Workaroudn the problem that default e2 can not parse movie.eng.srt 
		#file_name = "%s.%s%s" % ( sub_name, subtitle_lang, sub_ext )
		file_name = "%s%s" % ( sub_name, sub_ext )
		file_path = os.path.join(self.sub_folder, file_name)
		subtitle_file = os.path.join(self.tmp_sub_dir, zip_entry)
		return subtitle_file, file_path


gsubdown = None

def autostart(session):
	global gsubdown

if gAvailable is True:
	registerPlugin(Plugin(id="subdown", name=_("SubtitleDownloader"), fnc=settings, where=Plugin.SETTINGS))
	#registerPlugin(Plugin(name=_("SubtitleDownloader"), fnc=autostart, where=Plugin.AUTOSTART))
	registerPlugin(Plugin(id="subdown", name=_("Download subtitles"), start=DMC_SubtitleDownloader, where=Plugin.MENU_MOVIES_PLUGINS))
			
			if len(tmpGenres) > 0:
				tmpGenres.sort()
				filter.append(("Genre", ("Genres", True), tmpGenres))
				
			if len(tmpAbc) > 0:
				tmpAbc.sort()
				filter.append(("Abc", ("Title", False, 1), tmpAbc))
			
			return (parsedLibrary, ("ViewMode", "Id", ), None, None, sort, filter)
		
		elif params["ViewMode"] == "Tree":
			pass
		
		elif params["ViewMode"]=="ShowGroup":
			pass
	
		return None

	def buildInfoPlaybackArgs(self, entry):
		args = {}
		args["id"] 	= entry["Id"]
		args["title"]   = entry["Title"]
		args["year"]    = entry["Year"]
		args["imdbid"]  = entry["ImdbId"]
		args["type"]    = "movie"
		return args

if gAvailable is True:
	registerPlugin(Plugin(id="movies", name=_("Movies"), start=DMC_MovieLibrary, where=Plugin.MENU_VIDEOS, weight=1))
Esempio n. 6
0
#------------------------------------------------------------------------------------------

config.plugins.pvmc.plugins.sync = ConfigSubsection()
config.plugins.pvmc.plugins.sync.fastsynconautostart = ConfigYesNo(default=False)

def settings():
	s = []
	s.append((_("Fast Sync on autostart"), config.plugins.pvmc.plugins.sync.fastsynconautostart, ))
	return s

def autostartPlugin(session):
	if isInetAvailable():
		from Plugins.Extensions.PVMC.DMC_Plugins.DMC_SyncExtras.plugin import autostart
		autostart(session)
	else:
		printl("Can not sync as no internet connection available!", __name__, "W")

def startPlugin(session):
	if isInetAvailable():
		from Plugins.Extensions.PVMC.DMC_Plugins.DMC_SyncExtras.plugin import PVMCSync
		session.open(PVMCSync)
	else:
		from Screens.MessageBox import MessageBox
		session.open(MessageBox,_("No internet connection available!"), MessageBox.TYPE_INFO, timeout=10)

registerPlugin(Plugin(id="sync", name=_("Synchronize"), fnc=settings, where=Plugin.SETTINGS))
registerPlugin(Plugin(id="sync", name=_("Synchronize"), fnc=startPlugin, where=Plugin.MENU_SYSTEM, supportStillPicture=True, weight=10))
if config.plugins.pvmc.plugins.sync.fastsynconautostart.value is True:
	registerPlugin(Plugin(id="sync", name=_("Synchronize"), fnc=autostartPlugin, where=Plugin.AUTOSTART))
	def run(self):
		printl("run->", self, "S")
		
		if config.plugins.pvmc.plugins.internettime.autosync.value is False:
			return
		
		if haveRTC() is False:
			date = getUTC()
			if date is not None:
				setUTC(date)
		
		printl("run<-", self, "S")


def autostart(session):
	printl("autostart->")
	try:
		thread = InternetTime(session)
		thread.start()
	except Exception, ex:
		printl("Exception(Can be ignored): " + str(ex), __name__, "W")

def settings():
	s = []
	s.append((_("Sync time on start"), config.plugins.pvmc.plugins.internettime.autosync, ))
	return s

if gAvailable is True:
	registerPlugin(Plugin(id="internettime", name=_("InternetTime"), fnc=settings, where=Plugin.SETTINGS))
	registerPlugin(Plugin(id="internettime", name=_("InternetTime"), fnc=autostart, where=Plugin.AUTOSTART))
Esempio n. 8
0
		planedTimestamp += 60*60*24
	
	printl("currentTime: " + str(localtime(currentTimestamp)), "DMC_AutoSync::getPlanedTime", "I")
	printl("planedTime: " + str(localtime(planedTimestamp)), "DMC_AutoSync::getPlanedTime", "I")
	
	return (currentTimestamp, planedTimestamp, )

def callback():
	printl("->", "DMC_AutoSync::callback", "I")
	global gSession
	from Plugins.Extensions.PVMC.DMC_Global import PowerManagement
	PowerManagement(gSession).standby()

def wakeup():
	if config.plugins.pvmc.plugins.autosync.onstart.value is False:
		return -1
	
	return getPlanedTime()[1]

def settings():
	s = []
	s.append((_("Autosync Database on start"), config.plugins.pvmc.plugins.autosync.onstart, ))
	s.append((_("Autosync time"), config.plugins.pvmc.plugins.autosync.time, ))
	return s

if gAvailable is True:
	registerPlugin(Plugin(id="autosync", name=_("AutoSync"), fnc=settings, where=Plugin.SETTINGS))
	from Plugins.Extensions.PVMC.DMC_Plugins.DMC_SyncExtras.plugin import PVMCSync
	registerPlugin(Plugin(id="autosync", name=_("AutoSync"), fnc=autostart, where=Plugin.AUTOSTART_DELAYED, weight=10000))
	registerPlugin(Plugin(id="autosync", name=_("AutoSync"), fnc=wakeup, where=Plugin.WAKEUP))
		#Folder Lists
		root.putChild("vlog", File(config.plugins.pvmc.tmpfolderpath.value + 'log', defaultType="text/plain"))
		root.putChild("elog", File('/hdd/', defaultType="text/plain"))
		root.putChild("media", File(config.plugins.pvmc.configfolderpath.value + '/media', defaultType="text/plain"))
		root.putChild("dumps", File(config.plugins.pvmc.tmpfolderpath.value + 'dumps', defaultType="text/plain"))
		
		#Action pages without MainMenu-Entry => WebSubActions
		root.putChild("action", WebSubActions.MediaActions())
		root.putChild("mediaForm", WebSubActions.MediaForm())
		root.putChild("addRecord", WebSubActions.AddRecord())
		root.putChild("alternatives", WebSubActions.Alternatives())	
		root.putChild("function", WebSubActions.WebFunctions())
		root.putChild("syncronize", WebSubActions.SyncFunctions())		
		
		site = Site(root)
		port = config.plugins.pvmc.plugins.webinterface.port.value
		reactor.listenTCP(port, site, interface="0.0.0.0")
	except Exception, ex:
		printl("Exception(Can be ignored): " + str(ex), __name__, "W")

def settings():
	s = []
	s.append((_("Port"), config.plugins.pvmc.plugins.webinterface.port, ))
	#s.append((_("Use Pagination"), config.plugins.pvmc.plugins.webinterface.usepagination, ))
	s.append((_("Entry"), config.plugins.pvmc.plugins.webinterface.entrycount, ))
	return s

if gAvailable is True:
	registerPlugin(Plugin(id="webif", name=_("WebInterface"), fnc=settings, where=Plugin.SETTINGS))
	registerPlugin(Plugin(id="webif", name=_("WebInterface"), fnc=autostart, where=Plugin.AUTOSTART_E2))
        args = {}
        args["id"] = entry["Id"]
        args["title"] = entry["Title"]
        args["year"] = entry["Year"]
        args["thetvdb"] = entry["TheTvDbId"]
        args["season"] = entry["Season"]
        args["episode"] = entry["Episode"]
        args["type"] = "tvshow"
        return args


def settings():
    s = []
    s.append((_("Enabled"), config.plugins.pvmc.plugins.latestepisodes.enabled))
    s.append((_("days back"), config.plugins.pvmc.plugins.latestepisodes.daysback))
    return s


if gAvailable is True:
    registerPlugin(Plugin(id="newestepisodes", name=_("Newest Episodes"), fnc=settings, where=Plugin.SETTINGS))
    if config.plugins.pvmc.plugins.latestepisodes.enabled.value:
        registerPlugin(
            Plugin(
                id="newestepisodes",
                name=_("Newest Episodes"),
                start=DMC_NewestEpisodes,
                where=Plugin.MENU_VIDEOS,
                weight=6,
            )
        )
Esempio n. 11
0
	lang = language.getLanguage()
	os.environ["LANGUAGE"] = lang[:2]
	gettext.bindtextdomain("enigma2", resolveFilename(SCOPE_LANGUAGE))
	gettext.textdomain("enigma2")
	gettext.bindtextdomain("PVMC", "%s%s" % (resolveFilename(SCOPE_PLUGINS), "Extensions/PVMC/locale/"))

def _(txt):
	t = gettext.dgettext("PVMC", txt)
	if t == txt:
		t = gettext.gettext(txt)
	return t

localeInit()
language.addCallback(localeInit)

gAvailable = False
try:
	from Plugins.Extensions.YTTrailer.plugin import YTTrailer
	gAvailable = True
except Exception, ex:
	printl("YTTrailer not found", "I")
	gAvailable = False

def start(session, args):
	if args.has_key("Title"):
		ytTrailer = YTTrailer(session)
		ytTrailer.showTrailer(args["Title"])

if gAvailable is True:
	registerPlugin(Plugin(id="yttrailer", name=_("YTTrailer"), desc=_("View Trailer (YTTrailer by Dr. Best)"), fnc=start, where=Plugin.MENU_MOVIES_PLUGINS))
Esempio n. 12
0
	s.append((_("Check for updates of type"), config.plugins.pvmc.updatetype, ))
	s.append((_("Skin"), config.plugins.pvmc.skin, ))
	s.append((_("On Power press"), config.plugins.pvmc.onpowerpress, ))
	s.append((_("Show Movie and TVShow in main menu"), config.plugins.pvmc.showmovieandtvinmainmenu, ))
	s.append((_("Seen / Unseen User ID"), config.plugins.pvmc.seenuserid, ))
	s.append((_("Show Seen / Unseen for Shows"), config.plugins.pvmc.showseenforshow, ))
	s.append((_("Show Seen / Unseen for Seasons"), config.plugins.pvmc.showseenforseason, ))
	return s

def settings_expert():
	s = []
	s.append((_("Valerie Config folder (Database, ...)"), config.plugins.pvmc.configfolderpath, ))
	s.append((_("Valerie media folder (Poster, Backdrops)"), config.plugins.pvmc.mediafolderpath, ))
	s.append((_("Valerie tmp folder (Logs, Cache)"), config.plugins.pvmc.tmpfolderpath, ))
	s.append((_("Valerie debug mode"), config.plugins.pvmc.debugMode, ))
	return s

def stop_e2(session):
	printl("->", __name__, "S")
	try:
		import os
		os.system("chmod 777 " + config.plugins.pvmc.configfolderpath.value + "stop.sh")
		os.system("/bin/sh " + config.plugins.pvmc.configfolderpath.value + "stop.sh")
	except Exception, e:
		printl("Exception(" + str(type(ex)) + "): " + str(ex), self, "W")

registerPlugin(Plugin(id="stop",         name="Excecute stop.sh on e2 shutdown", fnc=stop_e2, where=Plugin.STOP_E2))
registerPlugin(Plugin(id="settings", name="", fnc=settings, where=Plugin.SETTINGS, weight=10))
registerPlugin(Plugin(id="expert",   name=_("Expert"), fnc=settings_expert, where=Plugin.SETTINGS, weight=1000))
registerPlugin(Plugin(id="settings",     name=_("Settings"), start=PVMC_Settings, where=Plugin.MENU_SYSTEM, supportStillPicture=True, weight=20))
registerPlugin(Plugin(id="update",       name=_("Update"), start=PVMC_Update, where=Plugin.MENU_SYSTEM, supportStillPicture=True, weight=30))
Esempio n. 13
0
		setSeen(args["Id"], True)
	
def markUnSeen(session, args):
	if args.has_key("Id"):
		setSeen(args["Id"], False)
	
def info_playback(d, flags):
	global progress
	global status
	global id
	if flags.has_key("DO_NOT_TRACK") and flags["DO_NOT_TRACK"] is True:
		return
	
	status = ""
	if d.has_key("progress"):
		progress = d["progress"]
	if d.has_key("status"):
		status = d["status"]
	if d.has_key("id"):
		id = d["id"]

	if status == "stopped":
		if progress >= 70:
			setSeen(id, True)

if gAvailable is True:
	registerPlugin(Plugin(id="seen", name=_("Seen"), fnc=autostart, where=Plugin.AUTOSTART))
	registerPlugin(Plugin(id="seen", name=_("Seen"), fnc=info_playback, where=Plugin.INFO_PLAYBACK))
	#registerPlugin(Plugin(name=_("Seen"), fnc=is_Seen, where=Plugin.INFO_SEEN))
	registerPlugin(Plugin(id="seen", name=_("Mark as Seen"), fnc=markSeen, where=Plugin.MENU_MOVIES_PLUGINS))
	registerPlugin(Plugin(id="unseen", name=_("Mark as Unseen"), fnc=markUnSeen, where=Plugin.MENU_MOVIES_PLUGINS))
class BackgroundDbLoader(Thread):
	def __init__ (self, session):
		Thread.__init__(self)
		printl("init->", self, "S")
		self.session = session
		#self.mm = self.session.open(MessageBox, (_("\nLoading data.... \n\nPlease wait... ")), MessageBox.TYPE_INFO)
		#self.mm = self.session.open(Msg)		

	def run(self):
		printl("run->")
		from Plugins.Extensions.PVMC.DMC_Plugins.DMC_SyncExtras.Manager import Manager
		m = Manager("BackgroundDbLoader", self.session)
		#self.mm.close(False, self.session)

def autostart(session):
	printl("autostart->")
	try:
		thread = BackgroundDbLoader(session)
		thread.start()
	except Exception, ex:
		printl("Exception(Can be ignored): " + str(ex), __name__, "W")

def settings():
	s = []
	s.append((_("Autoload Database on start"), config.plugins.pvmc.plugins.backgrounddbloader.autoload, ))
	return s

if gAvailable is True:
	registerPlugin(Plugin(id="backgrounddbloader", name=_("BackgroundDbLoader"), fnc=settings, where=Plugin.SETTINGS))
	registerPlugin(Plugin(id="backgrounddbloader", name=_("BackgroundDbLoader"), fnc=autostart, where=Plugin.AUTOSTART))