Пример #1
0
class MC_VideoPlayer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		self["key_red"] = Button(_("Favorites"))
		self["key_yellow"] = Button("")
		self["key_blue"] = Button(_("Settings"))
		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.showiframe = Showiframe()
		self.mvion = False
		self.curfavfolder = -1
		os.system("touch /tmp/bmcmovie")
		self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions",
			{
				"ok": (self.KeyOk, "Play selected file"),
				"cancel": (self.Exit, "Exit Video Player"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"menu": (self.KeyMenu, "File / Folder Options"),
				"info": (self.showFileInfo, "Show File Info"),
				"nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
				"prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
#				"red": (self.FavoriteFolders, "Favorite Folders"),
				"blue": (self.KeySettings, "Settings"),
			}, -2)

		currDir = config.plugins.mc_vp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"
		self["currentfolder"].setText(str(currDir))
		sort = config.plugins.mc_vp_sortmode.enabled.value
		self.filelist = []
		self["filelist"] = []
		inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib", "/proc", "/ram", "/root", "/sbin", "/sys", "/tmp", "/usr", "/var"]
		self.filelist = FileList(currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern="(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)", additionalExtensions=None, sort=sort)
		self["filelist"] = self.filelist
		self["filelist"].show()

	def up(self):
		self["filelist"].up()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			return
		else:
			self.cover()

	def down(self):
		self["filelist"].down()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			return
		else:
			self.cover()

	def leftUp(self):
		self["filelist"].pageUp()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			return
		else:
			if self.mvion == True:
				self.showiframe.finishStillPicture()
			self.cover()

	def rightDown(self):
		self["filelist"].pageDown()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			if self.mvion == True:
				self.showiframe.finishStillPicture()
		else:
			self.cover()

	def NextFavFolder(self):
		return

	def PrevFavFolder(self):
		return

	def showFileInfo(self):
		if self["filelist"].canDescent():
			return
		else:
			self.session.open(MC_VideoInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename(), self["filelist"].getFilename(), self["filelist"].getServiceRef())

	def KeyOk(self):
		self.filename = self.filelist.getFilename()
		print(self.filename)
		try:
			if self.filename.endswith('.img') or self.filename.endswith('.iso') or self.filename.endswith('VIDEO_TS/') and config.plugins.mc_vp.dvd.value == "dvd":
				self.showiframe.finishStillPicture()
				from Screens import DVD
				if self.filename.endswith('VIDEO_TS/'):
					path = os.path.split(self.filename.rstrip('/'))[0]
				else:
					path = self.filename
				self.session.open(DVD.DVDPlayer, dvd_filelist=[path])
				return
		except Exception as e:
			print("DVD Player error:", e)
		if self.filelist.canDescent():
			self.filelist.descent()
		else:
			self.showiframe.finishStillPicture()
			self.session.open(MoviePlayer, self["filelist"].getServiceRef(), slist=None, lastservice=None)

	def cover(self):
		filename = self["filelist"].getName()
		short = shortname(filename)
		newshort = short.lower()
		newshort = newshort.replace(" ", "")
		movienameserie = re.sub("e[0-9]{2}", "", newshort.lower())
		covername = "/hdd/bmcover/" + str(movienameserie) + "/backcover.mvi"
		if fileExists(covername):
			self.showiframe.showStillpicture(covername)
			self.mvion = True
		else:
			if self.mvion == True:
				self.showiframe.showStillpicture("/usr/share/enigma2/black.mvi")
				self.mvion = False

	def KeyMenu(self):
#		if self["filelist"].canDescent():
#			if self.filelist.getCurrent()[0][1]:
#				self.currentDirectory = self.filelist.getCurrent()[0][0]
#				if self.currentDirectory is not None:
#					foldername = self.currentDirectory.split('/')
#					foldername = foldername[-2]
#					self.session.open(MC_FolderOptions,self.currentDirectory, foldername)
		return

	def updd(self):
		sort = config.plugins.mc_vp_sortmode.enabled.value
		self.filelist.refresh(sort)

	def KeySettings(self):
		self.session.openWithCallback(self.updd, VideoPlayerSettings)

	def Exit(self):
		if self.filelist.getCurrentDirectory() is None:
			config.plugins.mc_vp.lastDir.value = "/"
		else:
			config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory()
		config.plugins.mc_vp.save()
		try:
			os.remove("/tmp/bmcmovie")
		except:
			pass
		self.showiframe.finishStillPicture()
		self.close()
class MC_VideoPlayer(Screen, HelpableScreen):

    def __init__(self, session):
        global currDir
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)
        self['key_red'] = Button(_('Delete Movie'))
        self['key_yellow'] = Button('')
        self['key_blue'] = Button(_('Settings'))
        self['currentfolder'] = Label('')
        self['currentfavname'] = Label('')
        self.showiframe = Showiframe()
        self.mvion = False
        self.curfavfolder = -1
        os.system('touch /tmp/bmcmovie')
        self['actions'] = HelpableActionMap(self, 'MC_VideoPlayerActions', {'ok': (self.KeyOk, 'Play selected file'),
         'cancel': (self.Exit, 'Exit Video Player'),
         'left': (self.leftUp, 'List Top'),
         'right': (self.rightDown, 'List Bottom'),
         'up': (self.up, 'List up'),
         'down': (self.down, 'List down'),
         'menu': (self.KeyMenu, 'File / Folder Options'),
         'info': (self.showFileInfo, 'Show File Info'),
         'nextBouquet': (self.NextFavFolder, 'Next Favorite Folder'),
         'prevBouquet': (self.PrevFavFolder, 'Previous Favorite Folder'),
         'red': (self.SelDelete, 'Delete Movie'),
         'blue': (self.KeySettings, 'Settings')}, -2)
        currDir = config.plugins.mc_vp.lastDir.value
        if not pathExists(currDir):
            currDir = '/'
        self['currentfolder'].setText(str(currDir))
        sort = config.plugins.mc_vp_sortmode.enabled.value
        self.filelist = []
        self['filelist'] = []
        inhibitDirs = ['/bin',
         '/boot',
         '/dev',
         '/dev.static',
         '/etc',
         '/lib',
         '/proc',
         '/ram',
         '/root',
         '/sbin',
         '/sys',
         '/tmp',
         '/usr',
         '/var']
        self.filelist = FileList(currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern='(?i)^.*\\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)', additionalExtensions=None, sort=sort)
        self['filelist'] = self.filelist
        self['filelist'].show()
        return

    def up(self):
        self['filelist'].up()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self['filelist'].canDescent():
            return
        self.cover()

    def down(self):
        self['filelist'].down()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self['filelist'].canDescent():
            return
        self.cover()

    def leftUp(self):
        self['filelist'].pageUp()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self['filelist'].canDescent():
            return
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        self.cover()

    def rightDown(self):
        self['filelist'].pageDown()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self['filelist'].canDescent():
            if self.mvion == True:
                self.showiframe.finishStillPicture()
        else:
            self.cover()

    def NextFavFolder(self):
        pass

    def SelDelete(self):
        self.filename = self.filelist.getFilename()
        path = self.filename
        self.session.openWithCallback(self.selremove, MessageBox, _('Do you really want to delete\n%s ?') % path, MessageBox.TYPE_YESNO)

    def selremove(self, ret):
        if ret is True:
            self.filename = self.filelist.getFilename()
            if self.filename.endswith('.ts'):
                path = self.filename.replace('.ts', '')
                for fdelete in glob(path + '.*'):
                    os.remove(fdelete)

            elif self.filename.endswith('.vob'):
                path = self.filename.replace('.vob', '')
                print 'path:', path
                for fdelete in glob(path + '.*'):
                    print 'fdelete:', fdelete
                    os.remove(fdelete)

            else:
                path = self.filename
                os.remove(path)
            self.updd()

    def PrevFavFolder(self):
        pass

    def showFileInfo(self):
        if self['filelist'].canDescent():
            return
        self.session.open(MC_VideoInfoView, self['filelist'].getCurrentDirectory() + self['filelist'].getFilename(), self['filelist'].getFilename(), self['filelist'].getServiceRef())

    def KeyOk(self):
        self.filename = self.filelist.getFilename()
        print self.filename
        try:
            if self.filename.endswith('.img') or self.filename.endswith('.iso') or self.filename.endswith('VIDEO_TS/') and config.plugins.mc_vp.dvd.value == 'dvd':
                self.showiframe.finishStillPicture()
                from Screens import DVD
                if self.filename.endswith('VIDEO_TS/'):
                    path = os.path.split(self.filename.rstrip('/'))[0]
                else:
                    path = self.filename
                self.session.open(DVD.DVDPlayer, dvd_filelist=[path])
                return
        except Exception as e:
            print 'DVD Player error:', e

        if self.filelist.canDescent():
            self.filelist.descent()
        else:
            self.showiframe.finishStillPicture()
            self.session.open(MoviePlayer, self['filelist'].getServiceRef(), slist=None, lastservice=None)
        return

    def cover(self):
        filename = self['filelist'].getName()
        short = shortname(filename)
        newshort = short.lower()
        newshort = newshort.replace(' ', '')
        movienameserie = re.sub('e[0-9]{2}', '', newshort.lower())
        covername = '/hdd/bmcover/' + str(movienameserie) + '/backcover.mvi'
        if fileExists(covername):
            self.showiframe.showStillpicture(covername)
            self.mvion = True
        elif self.mvion == True:
            self.showiframe.showStillpicture('/usr/share/enigma2/black.mvi')
            self.mvion = False

    def KeyMenu(self):
        pass

    def updd(self):
        sort = config.plugins.mc_vp_sortmode.enabled.value
        self.filelist.refresh(sort)

    def KeySettings(self):
        self.session.openWithCallback(self.updd, VideoPlayerSettings)

    def Exit(self):
        if self.filelist.getCurrentDirectory() is None:
            config.plugins.mc_vp.lastDir.value = '/'
        else:
            config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory()
        config.plugins.mc_vp.save()
        try:
            os.remove('/tmp/bmcmovie')
        except:
            pass

        self.showiframe.finishStillPicture()
        self.close()
        return