bramwalet / Subliminal.bundle

Plex Metadata agent plugin based on Subliminal
MIT License
150 stars 143 forks source link

Error in libary guessit matcher.py therefore most found subtitles cannot be saved #23

Open source-knights opened 9 years ago

source-knights commented 9 years ago

The used version of guessit have a bug around 174 and 179 that prevents found subtitles to be saved This is fixed in guessit > 0.10.3 Could you please upgrade to this version?

Otherwise I get this error with circa 80% of subtitles 2015-08-06 21:26:42,457 (10af4a000) : CRITICAL (agentkit:1057) - Exception in the update function of agent named 'Subliminal Movie Subtitles', called with guid 'com.plexapp.agents.imdb://tt2555736?lang=en' (most recent call last): File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/api/agentkit.py", line 1055, in update agent.update(obj, media, lang, _kwargs) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Code/_init.py", line 131, in update subtitles = downloadBestSubtitles(videos.keys()) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Code/init.py", line 81, in downloadBestSubtitles return subliminal.api.download_best_subtitles(videos, getLangList(), getProviders(), getProviderSettings(), min_score, hearing_impaired) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/subliminal/api.py", line 88, in download_best_subtitles for subtitle, score in sorted([(s, s.compute_score(video)) for s in video_subtitles], File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/subliminal/subtitle.py", line 131, in compute_score initial_matches = self.compute_matches(video) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/subliminal/providers/podnapisi.py", line 61, in compute_matches matches |= compute_guess_matches(video, guessit.guess_movie_info(release + '.mkv')) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/init.py", line 355, in guess_movie_info return guess_file_info(filename, info=info, options=options, type='movie', kwargs) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/init.py", line 291, in guess_file_info result.append(_guess_filename(filename, options, kwargs)) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/init.py", line 111, in guess_filename mtree = build_filename_mtree(filename, options=options, _kwargs) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/init.py", line 118, in build_filename_mtree mtree = IterativeMatcher(filename, options=options, **kwargs) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/matcher.py", line 120, in init_ self._process(transformer, False) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/matcher.py", line 138, in _process transformer.process(self.match_tree, self.options) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/transfo/guess_movie_title_from_position.py", line 170, in process found_property(next(basename_leftover), 'title', confidence=0.4) File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/matcher.py", line 193, in found_property caller_frame = inspect.stack()[1][0] File "/Users/myuser/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/matcher.py", line 175, in build_guess if if clean_value[0] == node.value[i]: IndexError: string index out of range

joezorry commented 9 years ago

I'm pretty sure I have the same problem, here is a more formatted log:


2015-10-10 11:22:36,402 (7f9a717fa700) :  DEBUG (services:438) - No shared code to load
"com.plexapp.agents.subliminal.log" [readonly] 7762L, 651383C                                                                                                                                1,1           Top
    subtitles = downloadBestSubtitles(videos.keys())
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Code/__init__.py", line 81, in downloadBestSubtitles
    return subliminal.api.download_best_subtitles(videos, getLangList(), getProviders(), getProviderSettings(), min_score, hearing_impaired)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/subliminal/api.py", line 88, in download_best_subtitles
    for subtitle, score in sorted([(s, s.compute_score(video)) for s in video_subtitles],
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/subliminal/subtitle.py", line 131, in compute_score
    initial_matches = self.compute_matches(video)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/subliminal/providers/podnapisi.py", line 61, in compute_matches
    matches |= compute_guess_matches(video, guessit.guess_movie_info(release + '.mkv'))
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/__init__.py", line 355, in guess_movie_info
    return guess_file_info(filename, info=info, options=options, type='movie', **kwargs)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/__init__.py", line 291, in guess_file_info
    result.append(_guess_filename(filename, options, **kwargs))
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/__init__.py", line 111, in _guess_filename
    mtree = _build_filename_mtree(filename, options=options, **kwargs)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/__init__.py", line 118, in _build_filename_mtree
    mtree = IterativeMatcher(filename, options=options, **kwargs)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/matcher.py", line 120, in __init__
    self._process(transformer, False)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/matcher.py", line 138, in _process
    transformer.process(self.match_tree, self.options)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/transfo/guess_movie_title_from_position.py", line 170, in process
    found_property(next(basename_leftover), 'title', confidence=0.4)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/matcher.py", line 193, in found_property
    guess = build_guess(node, name, value, confidence)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Subliminal.bundle/Contents/Libraries/Shared/guessit/matcher.py", line 175, in build_guess
    if clean_value[0] == node.value[i]:
IndexError: string index out of range
bramwalet commented 9 years ago

Check out branch https://github.com/bramwalet/Subliminal.bundle/tree/guessit-0.11 if this works for you. Let me know and I will integrate it in master.

joezorry commented 9 years ago

@bramwalet the update guessit-0.11 branch works for me.

joezorry commented 9 years ago

Was close on doing a PR myself on this one, but did not get the time.

dny238 commented 8 years ago

I'm getting this error from the guessit-0.11 branch. Any suggestions?

/mnt/videos/Movies/Pride and Prejudice and Zombies ()/Pride and Prejudice and Zombies .___ yyyy yyyy ccc /mnt/videos/Movies/Pride and Prejudice and Zombies (2016)/Pride and Prejudice and Zombies 2016.mkv 2016-06-08 00:22:02,663 (7f5a58ff9700) : DEBUG (logger:21) - guessit.guess: Updating matching property 'year' with confidence 0.66 2016-06-08 00:22:02,663 (7f5a58ff9700) : DEBUG (logger:21) - guessit.guess: Updating matching property 'container' with confidence 1.00 2016-06-08 00:22:02,663 (7f5a58ff9700) : DEBUG (logger:21) - guessit.matchtree: Final result: { [1.00] "type": "movie", [1.00] "container": "mkv", [0.66] "year": 2016 } 2016-06-08 00:22:02,664 (7f5a58ff9700) : WARNING (init:75) - File could not be guessed by subliminal 2016-06-08 00:22:02,664 (7f5a58ff9700) : DEBUG (init:80) - Download best subtitles using settings: min_score: 20, hearing_impaired: True