def checkDuplicates(self, timer, name1, name2, shortdesc1, shortdesc2, extdesc1, extdesc2, force=False): if name1 and name2: sequenceMatcher = SequenceMatcher(" ".__eq__, name1, name2) else: return False ratio = sequenceMatcher.ratio() ratio_value = force and 0.8 or timer.ratioThresholdDuplicate doDebug("[AutoTimer] names ratio %f - %s - %d - %s - %d" % (ratio, name1, len(name1), name2, len(name2))) if name1 in name2 or (0.8 < ratio): # this is probably a match foundShort = True if (force or timer.searchForDuplicateDescription > 0) and shortdesc1 and shortdesc2: sequenceMatcher.set_seqs(shortdesc1, shortdesc2) ratio = sequenceMatcher.ratio() doDebug("[AutoTimer] shortdesc ratio %f - %s - %d - %s - %d" % (ratio, shortdesc1, len(shortdesc1), shortdesc2, len(shortdesc2))) foundShort = shortdesc1 in shortdesc2 or ((ratio_value < ratio) or (ratio_value == 1.0 and ratio_value == ratio)) if foundShort: doLog("[AutoTimer] shortdesc ratio %f - %s - %d - %s - %d" % (ratio, shortdesc1, len(shortdesc1), shortdesc2, len(shortdesc2))) elif not force and timer.descShortExtEmpty and not shortdesc1 and not shortdesc2 and name1 != name2: foundShort = False foundExt = True # NOTE: only check extended if short description already is a match because otherwise # it won't evaluate to True anyway if foundShort and (force or timer.searchForDuplicateDescription > 1) and extdesc1 and extdesc2: sequenceMatcher.set_seqs(extdesc1, extdesc2) ratio = sequenceMatcher.ratio() doDebug("[AutoTimer] extdesc ratio %f - %s - %d - %s - %d" % (ratio, extdesc1, len(extdesc1), extdesc2, len(extdesc2))) foundExt = (ratio_value < ratio) or (ratio_value == 1.0 and ratio_value == ratio) if foundExt: doLog("[AutoTimer] extdesc ratio %f - %s - %d - %s - %d" % (ratio, extdesc1, len(extdesc1), extdesc2, len(extdesc2))) elif not force and timer.descShortExtEmpty and not extdesc1 and not extdesc2 and name1 != name2: foundExt = False return foundShort and foundExt return False
def checkDuplicates(self, timer, name1, name2, shortdesc1, shortdesc2, extdesc1, extdesc2, force=False): if name1 and name2: sequenceMatcher = SequenceMatcher(" ".__eq__, name1, name2) else: return False ratio = sequenceMatcher.ratio() doDebug("names ratio %f - %s - %d - %s - %d" % (ratio, name1, len(name1), name2, len(name2))) if name1 in name2 or (0.8 < ratio): # this is probably a match foundShort = True if (force or timer.searchForDuplicateDescription > 0) and shortdesc1 and shortdesc2: sequenceMatcher.set_seqs(shortdesc1, shortdesc2) ratio = sequenceMatcher.ratio() doDebug("shortdesc ratio %f - %s - %d - %s - %d" % (ratio, shortdesc1, len(shortdesc1), shortdesc2, len(shortdesc2))) foundShort = shortdesc1 in shortdesc2 or (0.8 < ratio) if foundShort: doLog("shortdesc ratio %f - %s - %d - %s - %d" % (ratio, shortdesc1, len(shortdesc1), shortdesc2, len(shortdesc2))) foundExt = True # NOTE: only check extended if short description already is a match because otherwise # it won't evaluate to True anyway if foundShort and (force or timer.searchForDuplicateDescription > 1) and extdesc1 and extdesc2: sequenceMatcher.set_seqs(extdesc1, extdesc2) ratio = sequenceMatcher.ratio() doDebug("extdesc ratio %f - %s - %d - %s - %d" % (ratio, extdesc1, len(extdesc1), extdesc2, len(extdesc2))) foundExt = (0.8 < ratio) if foundExt: doLog("extdesc ratio %f - %s - %d - %s - %d" % (ratio, extdesc1, len(extdesc1), extdesc2, len(extdesc2))) return foundShort and foundExt
def checkDuplicates(self, timer, name1, name2, shortdesc1, shortdesc2, extdesc1, extdesc2, force=False): if name1 and name2: sequenceMatcher = SequenceMatcher(" ".__eq__, name1, name2) else: return False title_ratio = int(config.plugins.autotimer.title_match_ratio.value) / float(100) shortdesc_ratio = int(config.plugins.autotimer.shortdesc_match_ratio.value) / float(100) extdesc_ratio = int(config.plugins.autotimer.extdesc_match_ratio.value) / float(100) ratio = sequenceMatcher.ratio() doDebug("names ratio %f - %s - %d - %s - %d" % (ratio, name1, len(name1), name2, len(name2))) if name1 in name2 or (title_ratio < ratio): # this is probably a match foundShort = True if (force or timer.searchForDuplicateDescription > 0) and shortdesc1 and shortdesc2: sequenceMatcher.set_seqs(shortdesc1, shortdesc2) ratio = sequenceMatcher.ratio() doDebug("shortdesc ratio %f - %s - %d - %s - %d" % (ratio, shortdesc1, len(shortdesc1), shortdesc2, len(shortdesc2))) foundShort = shortdesc1 in shortdesc2 or (shortdesc_ratio < ratio) if foundShort: doLog("shortdesc ratio %f - %s - %d - %s - %d" % (ratio, shortdesc1, len(shortdesc1), shortdesc2, len(shortdesc2))) foundExt = True # NOTE: only check extended if short description already is a match because otherwise # it won't evaluate to True anyway if foundShort and (force or timer.searchForDuplicateDescription > 1) and extdesc1 and extdesc2: sequenceMatcher.set_seqs(extdesc1, extdesc2) ratio = sequenceMatcher.ratio() doDebug("extdesc ratio %f - %s - %d - %s - %d" % (ratio, extdesc1, len(extdesc1), extdesc2, len(extdesc2))) foundExt = (extdesc_ratio < ratio) if foundExt: doLog("extdesc ratio %f - %s - %d - %s - %d" % (ratio, extdesc1, len(extdesc1), extdesc2, len(extdesc2))) return foundShort and foundExt
def checkSimilarity(self, timer, name1, name2, shortdesc1, shortdesc2, extdesc1, extdesc2, force=False, isMovie=False): if name1 and name2: sequenceMatcher = SequenceMatcher(" ".__eq__, name1, name2) else: return False retValue = False ratio = sequenceMatcher.ratio() ratio_value = force and 0.8 or timer.ratioThresholdDuplicate doDebug("[AutoTimer] names ratio %f - %s - %d - %s - %d" % (ratio, name1, len(name1), name2, len(name2))) if name1 in name2 or (0.8 < ratio): # this is probably a match if not force and timer.descShortExtEmpty and (((isMovie and shortdesc1 and not shortdesc2) or (not isMovie and not shortdesc1 and not shortdesc2 and name1 != name2)) or ((isMovie and extdesc1 and not extdesc2) or (not isMovie and not extdesc1 and not extdesc2 and name1 != name2))): doDebug("[AutoTimer] Configuration caused this sortdesc/extdesc match to be ignored!") return False if force or timer.searchForDuplicateDescription > 0: if shortdesc1 and shortdesc2: sequenceMatcher.set_seqs(shortdesc1, shortdesc2) ratio = sequenceMatcher.ratio() doDebug("[AutoTimer] shortdesc ratio %f - %s - %d - %s - %d" % (ratio, shortdesc1, len(shortdesc1), shortdesc2, len(shortdesc2))) foundShort = shortdesc1 in shortdesc2 or ((ratio_value < ratio) or (ratio_value == 1.0 and ratio_value == ratio)) doDebug("[AutoTimer] Final result for found shortdesc: %s" % foundShort) if foundShort: doLog("[AutoTimer] shortdesc match: ratio %f - %s - %d - %s - %d" % (ratio, shortdesc1, len(shortdesc1), shortdesc2, len(shortdesc2))) if force or timer.searchForDuplicateDescription > 1: if extdesc1 and extdesc2: sequenceMatcher.set_seqs(extdesc1, extdesc2) ratio = sequenceMatcher.ratio() doDebug("[AutoTimer] extdesc ratio %f - %s - %d - %s - %d" % (ratio, extdesc1, len(extdesc1), extdesc2, len(extdesc2))) retValue = (ratio_value < ratio) or (ratio_value == 1.0 and ratio_value == ratio) doDebug("[AutoTimer] Final result for found extdesc: %s" % retValue) if retValue: doLog("[AutoTimer] extdesc match: ratio %f - %s - %d - %s - %d" % (ratio, extdesc1, len(extdesc1), extdesc2, len(extdesc2))) else: retValue = True else: retValue = True return retValue