RickDB / PlexAniSync

Sync Plex anime library to AniList
GNU General Public License v3.0
291 stars 45 forks source link

Similarly named shows won't work even with custom mapping #23

Closed Roshri closed 4 years ago

Roshri commented 4 years ago

Hello I'm having trouble with a few series I'm trying to scan, specifically Kaguya-sama S2 and the Digimon Adventure reboot

I have both set like this on my custom mapping file

Kaguya-sama wa Kokurasetai? Tensai-tachi no Ren'ai Zunousen^1^112641
Digimon Adventure:^1^114811

But then when I run it I get this, without using the custom mapping file

2020-04-12 03:10:06 [ANILIST] Found AniList entry for Plex title: Digimon Adventure
2020-04-12 03:10:06 [ANILIST] Series is already marked as completed on AniList so skipping update
2020-04-12 03:10:06 --------------------------------------------------
2020-04-12 03:10:06 [ANILIST] Found AniList entry for Plex title: Digimon Adventure
2020-04-12 03:10:06 [ANILIST] Series is already marked as completed on AniList so skipping update
2020-04-12 03:10:06 --------------------------------------------------
2020-04-12 03:10:10 [ANILIST] Found AniList entry for Plex title: Kaguya-sama wa Kokurasetai: Tensai-tachi no Ren'ai Zunousen
2020-04-12 03:10:10 [ANILIST] Series is already marked as completed on AniList so skipping update
2020-04-12 03:10:10 --------------------------------------------------
2020-04-12 03:10:10 [ANILIST] Found AniList entry for Plex title: Kaguya-sama wa Kokurasetai? Tensai-tachi no Ren'ai Zunousen
2020-04-12 03:10:10 [ANILIST] Series is already marked as completed on AniList so skipping update
kaiserbh commented 4 years ago

Hi Roshri, I am not sure what version you are running, but the new version should have or create a log file 1 for debug level and the other one is info level, if you have any of them can you attach them here?

If you don't have it I recommend installing the new version that creates a log for them.

Also let me get this straight, so you have 2 different shows instead of them being under the same show and multiple season? let me get some picture

  1. so your plex library has;

Kaguya-sama wa Kokurasetai? Tensai-tachi no Ren'ai Zunousen first season Kaguya-sama wa Kokurasetai? Tensai-tachi no Ren'ai Zunousen second season

  1. instead of ; Kaguya-sama wa Kokurasetai? Tensai-tachi no Ren'ai Zunousen series under them is Season 1, Season 2

if it's the 2nd one then you are doing it wrong. An example of a custom list with different season Kaguya-sama wa Kokurasetai? Tensai-tachi no Ren'ai Zunousen^1^101921 Kaguya-sama wa Kokurasetai? Tensai-tachi no Ren'ai Zunousen^2^112641

this is assuming you are using HAMA agent.

Roshri commented 4 years ago

Just updated to latest version. My library has both seasons as separated series and differently named, just like it's on anidb and anilist. I'm using Hama. The only difference between both shows names is a "?". The same goes to Digimon Adventure with a ":".

image image

I might have done something wrong while updating because it says it had a logging error for every entry. I downloaded latest release and installed requirements. I copied my settings.ini and custom_mappings.ini files from a previous installation tho.

--- Logging error ---
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1520.0_x64__qbz5n2kfra8p0\lib\logging\__init__.py", line 1028, in emit
    stream.write(msg + self.terminator)
UnicodeEncodeError: 'cp932' codec can't encode character '\xe9' in position 443: illegal multibyte sequence
Call stack:
  File "plexanisync.py", line 156, in <module>
    start()
  File "plexanisync.py", line 149, in start
    plex_series_watched)
  File "C:\Users\roshr\Documents\PlexAniSync-master\anilist.py", line 483, in match_to_plex
    guessit(plex_title)['title'].lower(),
  File "C:\Users\roshr\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\guessit\api.py", line 71, in guessit
    return default_api.guessit(string, options)
  File "C:\Users\roshr\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\guessit\api.py", line 210, in guessit
    matches = self.rebulk.matches(string, options)
  File "C:\Users\roshr\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\rebulk\rebulk.py", line 113, in matches
    self._matches_patterns(matches, context)
  File "C:\Users\roshr\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\rebulk\rebulk.py", line 190, in _matches_patterns
    log(pattern.log_level, "Pattern is disabled. (%s)", pattern)
Message: 'Pattern is disabled. (%s)'
Arguments: (<RePattern:['(?P<episodeMarker>episode|episodes|eps|ep|episodio|episodios|capitulo|capitulos)[\\ \\[\\]\\(\\)\\{\\}\\+\\*\\|=\\-_\\~\\#\\.,;:]?(?P<episode>(?:\\d{1,4}|(?=[MCDLXVI]+)M{0,4}(?:CM|CD|D?C{0,3})(?:XC|XL|L?X{0,3})(?:IX|IV|V?I{0,3})|(?:(?=\\w+)zero|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty|zéro|un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|dix[\\ \\[\\]\\(\\)\\{\\}\\+\\*\\|=\\-_\\~\\#\\.,;:]sept|dix[\\ \\[\\]\\(\\)\\{\\}\\+\\*\\|=\\-_\\~\\#\\.,;:]huit|dix[\\ \\[\\]\\(\\)\\{\\}\\+\\*\\|=\\-_\\~\\#\\.,;:]neuf|vingt|zero|une|deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|dixsept|dixhuit|dixneuf|vingt)))(?:v(?P<version>\\d+))?(?:[\\ \\[\\]\\(\\)\\{\\}\\+\\*\\|=\\-_\\~\\#\\.,;:]?(?:of|sur)[\\ \\[\\]\\(\\)\\{\\}\\+\\*\\|=\\-_\\~\\#\\.,;:]?(?P<count>\\d+))?']>,)

PlexAniSync.log PlexAniSync-DEBUG.log

krisvega commented 4 years ago

Having this same problem with Kaguya. The issue seems to be that while looping through my anime list, it finds the first season first, then checks if the cleansed title is in the potential names array after this line.

Since the two season names only differ by some symbols ("?" and ":") which are stripped in the cleansed titles, it matches the first season and breaks out of the anime list loop.

RickDB commented 4 years ago

For the logging errors would remove the Python version from the Windows App store and install official 3.8 version instead:

https://www.python.org/downloads/

Store version tend to do things a bit differently and while its good move on Microsoft's part to embrace open source further their implementation is not (yet).

For the matching issue that's a difficult one with similar named shows and like @krisvega mentioned we clean the names for easier matching because TVDB will often not include special chars or replace them with others. Will test some ideas and see what works best in these scenarios.

RickDB commented 4 years ago

Pushed fix for this and will now work correctly, tested against Kaguya Season 1 and 2 with and without custom mappings. Bit of logic improvement overall when it comes to custom mapping matching and series titles so should benefit other shows as well.

@Roshri

Would do a clean install via either git client pull or master zip download and just copy over the custom mappings and settings file, then rerun the pip install -r requirements.txt per readme :)

Docker build is running so should be there as well for those users in a few.

Roshri commented 4 years ago

Tested, now working correctly for both entries. Thanks!

Also confirmed it works with other titles such as K-on! and K-on!! image