本文整理汇总了Python中RecordTimer.RecordTimerEntry.extdesc方法的典型用法代码示例。如果您正苦于以下问题:Python RecordTimerEntry.extdesc方法的具体用法?Python RecordTimerEntry.extdesc怎么用?Python RecordTimerEntry.extdesc使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RecordTimer.RecordTimerEntry
的用法示例。
在下文中一共展示了RecordTimerEntry.extdesc方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: parseTimer
# 需要导入模块: from RecordTimer import RecordTimerEntry [as 别名]
# 或者: from RecordTimer.RecordTimerEntry import extdesc [as 别名]
def parseTimer(self, timer, epgcache, serviceHandler, recordHandler, checkEvtLimit, evtLimit, timers, conflicting, similars, skipped, timerdict, moviedict, simulateOnly=False):
new = 0
modified = 0
# Workaround to allow search for umlauts if we know the encoding
#match = timer.match
match = timer.match.replace('\xc2\x86', '').replace('\xc2\x87', '')
if timer.encoding != 'UTF-8':
try:
match = match.decode('UTF-8').encode(timer.encoding)
except UnicodeDecodeError:
pass
if timer.searchType == "description":
epgmatches = []
mask = (eServiceReference.isMarker | eServiceReference.isDirectory)
casesensitive = timer.searchCase == "sensitive"
if not casesensitive:
match = match.lower()
# Service filter defined
# Search only using the specified services
test = [(service, 0, -1, -1) for service in timer.services]
for bouquet in timer.bouquets:
services = serviceHandler.list(eServiceReference(bouquet))
if not services is None:
while True:
service = services.getNext()
if not service.valid(): #check end of list
break
if not (service.flags & mask):
test.append( (service.toString(), 0, -1, -1 ) )
if not test:
# No service filter defined
# Search within all services - could be very slow
# Get all bouquets
bouquetlist = []
if config.usage.multibouquet.value:
refstr = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.tv" ORDER BY bouquet'
bouquetroot = eServiceReference(refstr)
bouquets = serviceHandler.list(bouquetroot)
if bouquets:
while True:
s = bouquets.getNext()
if not s.valid():
break
if s.flags & eServiceReference.isDirectory and not s.flags & eServiceReference.isInvisible:
info = serviceHandler.info(s)
if info:
bouquetlist.append((info.getName(s), s))
mask = (eServiceReference.isMarker | eServiceReference.isDirectory)
for name, bouquet in bouquetlist:
if not bouquet.valid(): #check end of list
break
if bouquet.flags & eServiceReference.isDirectory:
services = serviceHandler.list(bouquet)
if not services is None:
while True:
service = services.getNext()
if not service.valid(): #check end of list
break
if not (service.flags & mask):
test.append( (service.toString(), 0, -1, -1 ) )
else:
service_types_tv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 22) || (type == 25) || (type == 31) || (type == 134) || (type == 195)'
refstr = '%s FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet'%(service_types_tv)
bouquetroot = eServiceReference(refstr)
info = serviceHandler.info(bouquetroot)
if info:
bouquetlist.append((info.getName(bouquetroot), bouquetroot))
mask = (eServiceReference.isMarker | eServiceReference.isDirectory)
for name, bouquet in bouquetlist:
if bouquet.flags & eServiceReference.isDirectory:
services = serviceHandler.list(bouquet)
if not services is None:
while True:
service = services.getNext()
if not service.valid(): #check end of list
break
if not (service.flags & mask):
test.append( (service.toString(), 0, -1, -1 ) )
if test:
# Get all events
# eEPGCache.lookupEvent( [ format of the returned tuples, ( service, 0 = event intersects given start_time, start_time -1 for now_time), ] )
test.insert(0, 'RITBDSE')
allevents = epgcache.lookupEvent(test) or []
# Filter events
for serviceref, eit, name, begin, duration, shortdesc, extdesc in allevents:
if match in (shortdesc if casesensitive else shortdesc.lower()) \
or match in (extdesc if casesensitive else extdesc.lower()):
epgmatches.append( (serviceref, eit, name, begin, duration, shortdesc, extdesc) )
else:
# Search EPG, default to empty list
#.........这里部分代码省略.........
示例2: parseTimer
# 需要导入模块: from RecordTimer import RecordTimerEntry [as 别名]
# 或者: from RecordTimer.RecordTimerEntry import extdesc [as 别名]
def parseTimer(self, timer, epgcache, serviceHandler, recordHandler, checkEvtLimit, evtLimit, timers, conflicting, similars, timerdict, moviedict, simulateOnly=False):
new = 0
modified = 0
skipped = 0
# Precompute timer destination dir
dest = timer.destination or config.usage.default_path.value
match = timer.match
if timer.searchType == "description":
epgmatches = []
mask = (eServiceReference.isMarker | eServiceReference.isDirectory)
casesensitive = timer.searchCase == "sensitive"
if not casesensitive:
match = match.lower()
# Service filter defined
# Search only using the specified services
test = [(service, 0, -1, -1) for service in timer.services]
for bouquet in timer.bouquets:
services = serviceHandler.list(eServiceReference(bouquet))
if not services is None:
while True:
service = services.getNext()
if not service.valid(): #check end of list
break
if not (service.flags & mask):
test.append( (service.toString(), 0, -1, -1 ) )
if not test:
# No service filter defined
# Search within all services - could be very slow
# Get all bouquets
bouquetlist = []
refstr = '1:134:1:0:0:0:0:0:0:0:FROM BOUQUET \"bouquets.tv\" ORDER BY bouquet'
bouquetroot = eServiceReference(refstr)
mask = eServiceReference.isDirectory
if config.usage.multibouquet.value:
bouquets = serviceHandler.list(bouquetroot)
if bouquets:
while True:
s = bouquets.getNext()
if not s.valid():
break
if s.flags & mask:
info = serviceHandler.info(s)
if info:
bouquetlist.append((info.getName(s), s))
else:
info = serviceHandler.info(bouquetroot)
if info:
bouquetlist.append((info.getName(bouquetroot), bouquetroot))
# Get all services
mask = (eServiceReference.isMarker | eServiceReference.isDirectory)
for name, bouquet in bouquetlist:
if not bouquet.valid(): #check end of list
break
if bouquet.flags & eServiceReference.isDirectory:
services = serviceHandler.list(bouquet)
if not services is None:
while True:
service = services.getNext()
if not service.valid(): #check end of list
break
if not (service.flags & mask):
test.append( (service.toString(), 0, -1, -1 ) )
if test:
# Get all events
# eEPGCache.lookupEvent( [ format of the returned tuples, ( service, 0 = event intersects given start_time, start_time -1 for now_time), ] )
test.insert(0, 'RITBDSE')
allevents = epgcache.lookupEvent(test) or []
# Filter events
for serviceref, eit, name, begin, duration, shortdesc, extdesc in allevents:
if match in (shortdesc if casesensitive else shortdesc.lower()) \
or match in (extdesc if casesensitive else extdesc.lower()):
epgmatches.append( (serviceref, eit, name, begin, duration, shortdesc, extdesc) )
else:
# Search EPG, default to empty list
epgmatches = epgcache.search( ('RITBDSE', 3000, typeMap[timer.searchType], match, caseMap[timer.searchCase]) ) or []
# Sort list of tuples by begin time 'B'
epgmatches.sort(key=itemgetter(3))
# Contains the the marked similar eits and the conflicting strings
similardict = defaultdict(list)
# Loop over all EPG matches
preveit = False
for idx, ( serviceref, eit, name, begin, duration, shortdesc, extdesc ) in enumerate( epgmatches ):
eserviceref = eServiceReference(serviceref)
evt = epgcache.lookupEventId(eserviceref, eit)
if not evt:
#.........这里部分代码省略.........
示例3: parseTimer
# 需要导入模块: from RecordTimer import RecordTimerEntry [as 别名]
# 或者: from RecordTimer.RecordTimerEntry import extdesc [as 别名]
def parseTimer(self, timer, epgcache, serviceHandler, recordHandler, checkEvtLimit, evtLimit, timers, conflicting, similars, skipped, timerdict, moviedict, simulateOnly=False):
new = 0
modified = 0
# Search EPG, default to empty list
epgmatches = epgcache.search( ('RITBDSE', 1000, typeMap[timer.searchType], timer.match, caseMap[timer.searchCase]) ) or []
# Sort list of tuples by begin time 'B'
epgmatches.sort(key=itemgetter(3))
# Contains the the marked similar eits and the conflicting strings
similardict = defaultdict(list)
# Loop over all EPG matches
for idx, ( serviceref, eit, name, begin, duration, shortdesc, extdesc ) in enumerate( epgmatches ):
startLog()
# timer destination dir
dest = timer.destination or config.usage.default_path.value
evtBegin = begin
evtEnd = end = begin + duration
doLog("possible epgmatch %s" % (name))
doLog("Serviceref %s" % (str(serviceref)))
eserviceref = eServiceReference(serviceref)
evt = epgcache.lookupEventId(eserviceref, eit)
if not evt:
doLog("Could not create Event!")
skipped.append((name, begin, end, str(serviceref), timer.name, getLog()))
continue
# Try to determine real service (we always choose the last one)
n = evt.getNumOfLinkageServices()
if n > 0:
i = evt.getLinkageService(eserviceref, n-1)
serviceref = i.toString()
doLog("Serviceref2 %s" % (str(serviceref)))
# If event starts in less than 60 seconds skip it
if begin < time() + 60:
doLog("Skipping an event because it starts in less than 60 seconds")
skipped.append((name, begin, end, serviceref, timer.name, getLog()))
continue
# Convert begin time
timestamp = localtime(begin)
# Update timer
timer.update(begin, timestamp)
# Check if eit is in similar matches list
# NOTE: ignore evtLimit for similar timers as I feel this makes the feature unintuitive
similarTimer = False
if eit in similardict:
similarTimer = True
dayofweek = None # NOTE: ignore day on similar timer
else:
# If maximum days in future is set then check time
if checkEvtLimit:
if begin > evtLimit:
doLog("Skipping an event because of maximum days in future is reached")
skipped.append((name, begin, end, serviceref, timer.name, getLog()))
continue
dayofweek = str(timestamp.tm_wday)
# Check timer conditions
# NOTE: similar matches do not care about the day/time they are on, so ignore them
if timer.checkServices(serviceref):
doLog("Skipping an event because of check services")
skipped.append((name, begin, end, serviceref, timer.name, getLog()))
continue
if timer.checkDuration(duration):
doLog("Skipping an event because of duration check")
skipped.append((name, begin, end, serviceref, timer.name, getLog()))
continue
if not similarTimer:
if timer.checkTimespan(timestamp):
doLog("Skipping an event because of timestamp check")
skipped.append((name, begin, end, serviceref, timer.name, getLog()))
continue
if timer.checkTimeframe(begin):
doLog("Skipping an event because of timeframe check")
skipped.append((name, begin, end, serviceref, timer.name, getLog()))
continue
# Initialize
newEntry = None
oldExists = False
allow_modify = True
# Eventually change service to alternative
if timer.overrideAlternatives:
serviceref = timer.getAlternative(serviceref)
if timer.series_labeling and sp_getSeasonEpisode is not None:
allow_modify = False
#doLog("Request name, desc, path %s %s %s" % (name,shortdesc,dest))
sp = sp_getSeasonEpisode(serviceref, name, evtBegin, evtEnd, shortdesc, dest)
if sp and type(sp) in (tuple, list) and len(sp) == 4:
#.........这里部分代码省略.........
示例4: parseEPG
# 需要导入模块: from RecordTimer import RecordTimerEntry [as 别名]
# 或者: from RecordTimer.RecordTimerEntry import extdesc [as 别名]
def parseEPG(self, simulateOnly = False):
if NavigationInstance.instance is None:
print("[AutoTimer] Navigation is not available, can't parse EPG")
return (0, 0, 0, [], [], [])
total = 0
new = 0
modified = 0
timers = []
conflicting = []
similar = defaultdict(list) # Contains the the marked similar eits and the conflicting strings
similars = [] # Contains the added similar timers
# NOTE: the config option specifies "the next X days" which means today (== 1) + X
delta = timedelta(days = config.plugins.autotimer.maxdaysinfuture.value + 1)
evtLimit = mktime((date.today() + delta).timetuple())
checkEvtLimit = delta.days > 1
del delta
# Read AutoTimer configuration
self.readXml()
# Get E2 instances
epgcache = eEPGCache.getInstance()
serviceHandler = eServiceCenter.getInstance()
recordHandler = NavigationInstance.instance.RecordTimer
# Save Recordings in a dict to speed things up a little
# We include processed timers as we might search for duplicate descriptions
# The recordict is always filled
#Question: It might be better to name it timerdict
#Question: Move to a separate function getTimerDict()
#Note: It is also possible to use RecordTimer isInTimer(), but we won't get the timer itself on a match
recorddict = defaultdict(list)
for timer in chain(recordHandler.timer_list, recordHandler.processed_timers):
if timer and timer.service_ref:
if timer.eit is not None:
event = epgcache.lookupEventId(timer.service_ref.ref, timer.eit)
extdesc = event and event.getExtendedDescription() or ''
timer.extdesc = extdesc
elif not hasattr(timer, 'extdesc'):
timer.extdesc = ''
recorddict[str(timer.service_ref)].append(timer)
# Create dict of all movies in all folders used by an autotimer to compare with recordings
# The moviedict will be filled only if one AutoTimer is configured to avoid duplicate description for any recordings
#Question: It might be better to name it recorddict
moviedict = defaultdict(list)
# Iterate Timer
for timer in self.getEnabledTimerList():
# Precompute timer destination dir
dest = timer.destination or config.usage.default_path.value
# Workaround to allow search for umlauts if we know the encoding
match = timer.match
if timer.encoding != 'UTF-8':
try:
match = match.decode('UTF-8').encode(timer.encoding)
except UnicodeDecodeError:
pass
if timer.searchType == "description":
test = []
epgmatches = []
casesensitive = timer.searchCase == "sensitive"
if not casesensitive:
match = match.lower()
#if timer.services or timer.bouquets:
# Service filter defined
# Search only using the specified services
for service in timer.services:
test.append( (service, 0, -1, -1 ) )
mask = (eServiceReference.isMarker | eServiceReference.isDirectory)
for bouquet in timer.bouquets:
services = serviceHandler.list(eServiceReference(bouquet))
if not services is None:
while True:
service = services.getNext()
if not service.valid(): #check end of list
break
if not (service.flags & mask):
test.append( (service.toString(), 0, -1, -1 ) )
if not test:
#else:
# No service filter defined
# Search within all services - could be very slow
# Get all bouquets
bouquetlist = []
refstr = '1:134:1:0:0:0:0:0:0:0:FROM BOUQUET \"bouquets.tv\" ORDER BY bouquet'
bouquetroot = eServiceReference(refstr)
mask = eServiceReference.isDirectory
if config.usage.multibouquet.value:
bouquets = serviceHandler.list(bouquetroot)
if bouquets:
while True:
#.........这里部分代码省略.........