Exemplo n.º 1
0
	def doEofInternal(self, playing):
		if self.execing and playing:
			ref = self.session.nav.getCurrentlyPlayingServiceOrGroup()
			if ref:
				delResumePoint(ref)
			self.session.nav.stopService()
			self.handleLeave(config.usage.on_movie_eof.value)
Exemplo n.º 2
0
	def doEofInternal(self, playing):
		if not self.execing:
			return
		if not playing :
			return
		ref = self.session.nav.getCurrentlyPlayingServiceOrGroup()
		if ref:
			delResumePoint(ref)
		self.handleLeave(config.usage.on_movie_eof.value)
Exemplo n.º 3
0
	def doEofInternal(self, playing):
		if not self.execing:
			return
		if not playing :
			return
		ref = self.session.nav.getCurrentlyPlayingServiceOrGroup()
		if ref:
			delResumePoint(ref)
		self.handleLeave(config.usage.on_movie_eof.getValue())
Exemplo n.º 4
0
	def __onClose(self):
		if self.MovieSelection:
			if self.last_mark and not [x for x in self.cut_list if x[1] == self.CUT_TYPE_LAST]:
				from Screens.InfoBarGenerics import delResumePoint
				delResumePoint(self.service)
				self.MovieSelection["list"].invalidateCurrentItem()
			if self.edited:
				self.MovieSelection.diskinfo.update()
		self.session.nav.playService(self.old_service, forceRestart=True)
Exemplo n.º 5
0
 def doEofInternal(self, playing):
     # To use eof when playback failed due to invalid file
     #if not self.execing:
     #return
     if not playing:
         return
     ref = self.session.nav.getCurrentlyPlayingServiceOrGroup()
     if ref:
         delResumePoint(ref)
     self.handleLeave(config.usage.on_movie_eof.value)
Exemplo n.º 6
0
	def doEofInternal(self, playing):
		# To use eof when playback failed due to invalid file
		#if not self.execing:
			#return
		if not playing:
			return
		ref = self.session.nav.getCurrentlyPlayingServiceOrGroup()
		if ref:
			delResumePoint(ref)
		self.handleLeave(config.usage.on_movie_eof.value)
Exemplo n.º 7
0
def resetMoviePlayState(cutsFileName, ref=None):
    try:
        if ref is not None:
            from Screens.InfoBarGenerics import delResumePoint
            delResumePoint(ref)
        f = open(cutsFileName, 'rb')
        cutlist = []
        while True:
            data = f.read(cutsParser.size)
            if len(data) < cutsParser.size:
                break
            cut, cutType = cutsParser.unpack(data)
            if cutType != 3:
                cutlist.append(data)
        f.close()
        open(cutsFileName, 'wb').write(''.join(cutlist))
    except:
        pass
Exemplo n.º 8
0
def resetMoviePlayState(cutsFileName, ref=None):
	try:
		if ref is not None:
			from Screens.InfoBarGenerics import delResumePoint
			delResumePoint(ref)
		f = open(cutsFileName, 'rb')
		cutlist = []
		while 1:
			data = f.read(cutsParser.size)
			if len(data) < cutsParser.size:
				break
			cut, cutType = cutsParser.unpack(data)
			if cutType != 3:
				cutlist.append(data)
		f.close()
		f = open(cutsFileName, 'wb')
		f.write(''.join(cutlist))
		f.close()
	except:
		pass
Exemplo n.º 9
0
    def work(self):
        mounts = []
        matches = []
        print "[Trashcan] probing folders"
        f = open('/proc/mounts', 'r')
        for line in f.readlines():
            parts = line.strip().split()
            if parts[1] == '/media/autofs':
                continue
            if config.usage.movielist_trashcan_network_clean.value and parts[
                    1].startswith('/media/net'):
                mounts.append(parts[1])
            elif config.usage.movielist_trashcan_network_clean.value and parts[
                    1].startswith('/media/autofs'):
                mounts.append(parts[1])
            elif not parts[1].startswith(
                    '/media/net') and not parts[1].startswith('/media/autofs'):
                mounts.append(parts[1])
        f.close()

        for mount in mounts:
            if os.path.isdir(os.path.join(mount, '.Trash')):
                matches.append(os.path.join(mount, '.Trash'))
            if os.path.isdir(os.path.join(mount, 'movie/.Trash')):
                matches.append(os.path.join(mount, 'movie/.Trash'))

        print "[Trashcan] found following trashcan's:", matches
        if len(matches):
            for trashfolder in matches:
                print "[Trashcan] looking in trashcan", trashfolder
                trashsize = get_size(trashfolder)
                diskstat = os.statvfs(trashfolder)
                free = diskstat.f_bfree * diskstat.f_bsize
                bytesToRemove = self.reserveBytes - free
                print "[Trashcan] " + str(trashfolder) + ": Size:", trashsize
                candidates = []
                size = 0
                for root, dirs, files in os.walk(trashfolder, topdown=False):
                    from Screens.InfoBarGenerics import delResumePoint
                    from Screens.MovieSelection import findMatchingServiceRefs
                    serviceRefMap = findMatchingServiceRefs(root, files)

                    for name in files:
                        try:
                            fn = os.path.join(root, name)
                            st = os.stat(fn)
                            if st.st_ctime < self.ctimeLimit:
                                enigma.eBackgroundFileEraser.getInstance(
                                ).erase(fn)
                                if fn in serviceRefMap:
                                    delResumePoint(serviceRefMap[fn])
                                bytesToRemove -= st.st_size
                            else:
                                candidates.append(
                                    (st.st_ctime, fn, st.st_size))
                                size += st.st_size
                        except Exception, e:
                            print "[Trashcan] Failed to stat %s:" % name, e
                    # Remove empty directories if possible
                    for name in dirs:
                        try:
                            os.rmdir(os.path.join(root, name))
                        except:
                            pass
                    candidates.sort()
                    # Now we have a list of ctime, candidates, size. Sorted by ctime (=deletion time)
                    for st_ctime, fn, st_size in candidates:
                        if bytesToRemove < 0:
                            break
                        try:
                            # somtimes the file does not exist, can happen if trashcan is on a network, the main box could also be emptying trash at same time.
                            enigma.eBackgroundFileEraser.getInstance().erase(
                                fn)
                            if fn in serviceRefMap:
                                delResumePoint(serviceRefMap[fn])
                        except:
                            pass
                        bytesToRemove -= st_size
                        size -= st_size
                    print "[Trashcan] " + str(
                        trashfolder) + ": Size now:", size