diff --git a/guessit/date.py b/guessit/date.py index ed38d1ba..0eb612fa 100644 --- a/guessit/date.py +++ b/guessit/date.py @@ -31,8 +31,8 @@ _dsep_bis = r'[-/ \.x]' date_regexps = [ - re.compile('[^\d](\d{8})[^\d]', re.IGNORECASE), - re.compile('[^\d](\d{6})[^\d]', re.IGNORECASE), + re.compile('%s(\d{8})%s' % (_dsep, _dsep), re.IGNORECASE), + re.compile('%s(\d{6})%s' % (_dsep, _dsep), re.IGNORECASE), re.compile('[^\d](\d{2})%s(\d{1,2})%s(\d{1,2})[^\d]' % (_dsep, _dsep), re.IGNORECASE), re.compile('[^\d](\d{1,2})%s(\d{1,2})%s(\d{2})[^\d]' % (_dsep, _dsep), re.IGNORECASE), re.compile('[^\d](\d{4})%s(\d{1,2})%s(\d{1,2})[^\d]' % (_dsep_bis, _dsep), re.IGNORECASE), diff --git a/guessit/language.py b/guessit/language.py index 7e32af3c..a3098023 100644 --- a/guessit/language.py +++ b/guessit/language.py @@ -169,7 +169,7 @@ def reverse(self, name): 'no', 'non', 'war', 'min', 'new', 'car', 'day', 'bad', 'bat', 'fan', 'fry', 'cop', 'zen', 'gay', 'fat', 'one', 'cherokee', 'got', 'an', 'as', 'cat', 'her', 'be', 'hat', 'sun', 'may', 'my', 'mr', 'rum', 'pi', 'bb', 'bt', - 'tv', 'aw', 'by', 'md', 'mp', 'cd', 'lt', 'gt', 'in', 'ad', 'ice', 'ay', + 'tv', 'aw', 'by', 'md', 'mp', 'cd', 'lt', 'gt', 'in', 'ad', 'ice', 'ay', 'at', # french words 'bas', 'de', 'le', 'son', 'ne', 'ca', 'ce', 'et', 'que', 'mal', 'est', 'vol', 'or', 'mon', 'se', 'je', 'tu', 'me', diff --git a/guessit/matcher.py b/guessit/matcher.py index 2e3bc2af..cd31d7f2 100644 --- a/guessit/matcher.py +++ b/guessit/matcher.py @@ -171,15 +171,16 @@ def build_guess(node, name, value=None, confidence=1.0): clean_value = node.clean_value - for i in range(0, len(node.value)): - if clean_value[0] == node.value[i]: - break - left_offset += 1 - - for i in reversed(range(0, len(node.value))): - if clean_value[-1] == node.value[i]: - break - right_offset += 1 + if clean_value: + for i in range(0, len(node.value)): + if clean_value[0] == node.value[i]: + break + left_offset += 1 + + for i in reversed(range(0, len(node.value))): + if clean_value[-1] == node.value[i]: + break + right_offset += 1 guess.metadata().span = (node.span[0] - node.offset + left_offset, node.span[1] - node.offset - right_offset) return guess diff --git a/guessit/test/autodetect.yaml b/guessit/test/autodetect.yaml index 2c14ed0d..7e2730af 100644 --- a/guessit/test/autodetect.yaml +++ b/guessit/test/autodetect.yaml @@ -498,3 +498,10 @@ episodeNumber: 82 videoCodec: h264 +? "[Figmentos] Monster 34 - At the End of Darkness [781219F1].mkv" +: type: episode + releaseGroup: Figmentos + series: Monster + episodeNumber: 34 + title: At the End of Darkness + crc32: 781219F1 diff --git a/guessit/transfo/guess_bonus_features.py b/guessit/transfo/guess_bonus_features.py index c70b31e5..7249b5db 100644 --- a/guessit/transfo/guess_bonus_features.py +++ b/guessit/transfo/guess_bonus_features.py @@ -55,10 +55,12 @@ def same_group(g1, g2): if 'filmNumber' in node.guess] if film_number: film_series = previous_group(film_number[0]) - found_property(film_series, 'filmSeries', confidence=0.9) + if film_series: + found_property(film_series, 'filmSeries', confidence=0.9) title = next_group(film_number[0]) - found_property(title, 'title', confidence=0.9) + if title: + found_property(title, 'title', confidence=0.9) season = [node for node in mtree.leaves() if 'season' in node.guess] if season and 'bonusNumber' in mtree.info: