Plex-scripts icon indicating copy to clipboard operation
Plex-scripts copied to clipboard

plex_library_sync.py: Media items not found in other library

Open spicerackk opened this issue 3 years ago • 12 comments

In which file is the bug? plex_library_sync.py

Describe the setup (arguments and their values, how it was run, etc.): running -s SOURCELIBRARYNAME -t TARGETLIBRARYNAME -S collections

Describe what the bug is: When the script gets to a collection that doesn't have any poster, it errors out and cancels.

Describe what should be happening: I would expect it to skip that collection and move on to the next.

spicerackk avatar May 21 '22 15:05 spicerackk

Could you share the error that you get (copy paste or screenshot). I've looked at the script and I see a check in there that makes sure to only upload a poster when there is a poster. And yet you report that the script errors when the collection doesn't have a poster. But I have a check in my script to ensure that we don't upload posters when the source doesn't have a poster.

That means that something else is going on so could you share the error that you got so I can take a look? Thanks

Casvt avatar May 21 '22 16:05 Casvt

Traceback (most recent call last): File "D:\Plex-scripts\plex_library_sync.py", line 142, in <module> response = plex_library_sync(ssn=ssn, source_library_name=args.SourceLibraryName, target_library_name=args.TargetLibraryName, sync=args.Sync) File "D:\Plex-scripts\plex_library_sync.py", line 91, in plex_library_sync col_content = ssn.get(f'{base_url}{col["key"]}', params={'includeGuids': '1'}).json()['MediaContainer']['Metadata'] KeyError: 'Metadata' PS D:\Plex-scripts>

spicerackk avatar May 21 '22 16:05 spicerackk

Ah see! Different error. It isn't a problem with the posters. The problem is that I didn't account for empty collections!

Casvt avatar May 21 '22 16:05 Casvt

Ah fair enough! I wish I was good with code, I had an idea for a Discord bot and started working on it, but got stuck and haven't looked at it again since starting my new job.

spicerackk avatar May 21 '22 16:05 spicerackk

Bug fixed. Redownload the script to have the fix.

P.S. If you're indirectly letting me know that you want a discord bot, I don't have any experience with them so no I won't make one for you haha

Casvt avatar May 21 '22 16:05 Casvt

Thanks for that!

I mean look, it is always worth throwing out there, that's perfectly fine for you to not want to :) Hopefully one day I can get back to it myself!

spicerackk avatar May 21 '22 16:05 spicerackk

Is there a possibility of having the option to sync posters across libraries that aren't in a collection too?

spicerackk avatar May 21 '22 16:05 spicerackk

The script already does that. It should sync the posters of all media in the library. Not only collections. Add -S posters to the list of arguments.

Casvt avatar May 21 '22 16:05 Casvt

it doesn't seem to be actually changing the posters in Kid Movies when I run that argument, but it does print the list of movies in the source library after running it

spicerackk avatar May 22 '22 05:05 spicerackk

That means that it can't find the "match" of a movie/show in the other library. Aka you have movie1 in the source lib but movie1 wasn't found in the target lib.

I've made an update to the script to better show this. Can you re-download the script, run the new version and tell me what the output is?

Casvt avatar May 22 '22 05:05 Casvt

Ok so I downloaded the new code, the output remains the same, just prints the list of all the movies in the source library.

I know that the movies exist in both libraries, as they both use the same directory structure.

"L:\Movies" and "L:\Kids Movies" both exist in the Movies library, whereas "L:\Kids Movies" only exists in the Kids Movies library.

spicerackk avatar May 22 '22 14:05 spicerackk

That's strange. Please contact me on the discord server (https://discord.gg/QvWKGJ86XR) for easier support.

Casvt avatar May 22 '22 15:05 Casvt