return timer.end - begin
return 0
+typeMap = {
+ "exact": eEPGCache.EXAKT_TITLE_SEARCH,
+ "partial": eEPGCache.PARTIAL_TITLE_SEARCH
+}
+
+caseMap = {
+ "sensitive": eEPGCache.CASE_CHECK,
+ "insensitive": eEPGCache.NO_CASE_CHECK
+}
+
class AutoTimerIgnoreTimerException(Exception):
def __init__(self, cause):
self.cause = cause
pass
# Search EPG, default to empty list
- ret = self.epgcache.search(('RI', 100, eEPGCache.PARTIAL_TITLE_SEARCH, match, eEPGCache.NO_CASE_CHECK)) or []
+ ret = self.epgcache.search(('RI', 100, typeMap[timer.searchType], match, caseMap[timer.searchCase])) or []
for serviceref, eit in ret:
eserviceref = eServiceReference(serviceref)
afterevent = [], exclude = None, maxduration = None, destination = None, \
include = None, matchCount = 0, matchLeft = 0, matchLimit = '', matchFormatString = '', \
lastBegin = 0, justplay = False, avoidDuplicateDescription = 0, bouquets = None, \
- tags = None, encoding = 'UTF-8'):
+ tags = None, encoding = 'UTF-8', searchType = "partial", searchCase = "insensitive"):
self.name = name
self.match = match
self.enabled = enabled
self.bouquets = bouquets
self.tags = tags or []
self.encoding = encoding
+ self.searchType = searchType
+ self.searchCase = searchCase
### Attributes / Properties
match = property(lambda self: self._match, setMatch)
+ def setSearchCase(self, case):
+ assert case in ("sensitive", "insensitive"), "search case must be sensitive or insensitive"
+ self._searchCase = case
+
+ searchCase = property(lambda self: self._searchCase, setSearchCase)
+
+ def setSearchType(self, type):
+ assert type in ("exact", "partial"), "search type must be exact or partial"
+ self._searchType = type
+
+ searchType = property(lambda self: self._searchType, setSearchType)
+
def setServices(self, services):
if services:
self._services = services
# Read out encoding (won't change if no value is set)
baseTimer.encoding = element.get("encoding")
+ # ...
+ baseTimer.searchType = element.get("searchType", "partial")
+ baseTimer.searchCase = element.get("searchCase", "insensitive")
+
# Read out timespan
start = element.get("from")
end = element.get("to")
if defaultTimer.encoding != 'UTF-8':
list.extend([' encoding="', str(defaultTimer.encoding), '"'])
+ # Only display searchType if exact
+ if defaultTimer.searchType == "exact":
+ list.extend([' searchType="', str(defaultTimer.searchType), '"'])
+
+ # Only display searchCase if sensitive
+ if defaultTimer.searchCase == "sensitive":
+ list.extend([' searchCase="', str(defaultTimer.searchCase), '"'])
+
# Close still opened defaults tag
list.append('>\n')
if timer.encoding != 'UTF-8':
list.extend([' encoding="', str(timer.encoding), '"'])
+ # Only display searchType if exact
+ if timer.searchType == "exact":
+ list.extend([' searchType="', str(timer.searchType), '"'])
+
+ # Only display searchCase if sensitive
+ if timer.searchCase == "sensitive":
+ list.extend([' searchCase="', str(timer.searchCase), '"'])
+
# Close still opened timer tag
list.append('>\n')
selection.append(default)
self.encoding = ConfigSelection(choices = selection, default = default)
+ # ...
+ self.searchType = ConfigSelection(choices = [("partial", _("partial match")), ("exact", _("exact match"))], default = timer.searchType)
+ self.searchCase = ConfigSelection(choices = [("sensitive", _("case-sensitive search")), ("insensitive", _("case-insensitive search"))], default = timer.searchCase)
+
# Justplay
self.justplay = ConfigSelection(choices = [("zap", _("zap")), ("record", _("record"))], default = {0: "record", 1: "zap"}[int(timer.justplay)])
self.list.extend([
getConfigListEntry(_("EPG Encoding"), self.encoding),
+ getConfigListEntry(_("Search Type"), self.searchType),
+ getConfigListEntry(_("Search strictness"), self.searchCase),
getConfigListEntry(_("Timer Type"), self.justplay),
getConfigListEntry(_("Only match during Timespan"), self.timespan)
])
# Encoding
self.timer.encoding = self.encoding.value
+ # ...
+ self.timer.searchType = self.searchType.value
+ self.timer.searchCase = self.searchCase.value
+
# Enabled
self.timer.enabled = self.enabled.value