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)
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)
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())
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)
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)
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
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
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