|
2 | 2 | # Name: renamer.py |
3 | 3 | # Description: This script will check for unmatched assets in your Plex library. |
4 | 4 | # It will output the results to a file in the logs folder. |
5 | | -# This is a modified version of the original script by Drazzilb, Version: 5.3.4 |
| 5 | +# This is a modified version of the original script by Drazzilb: |
| 6 | +# Version: 5.3.6 |
6 | 7 | # you can find the original script here: https://github.com/Drazzilb08/userScripts/blob/master/python-scripts/renamer.py |
7 | 8 | # =================================================================================================== |
8 | 9 |
|
@@ -179,7 +180,7 @@ def match_media(media, source_file_list, type): |
179 | 180 | if item['status'] == 'upcoming' or item['status'] == 'announced': |
180 | 181 | continue |
181 | 182 | else: |
182 | | - logger.warning(f"Unable to find year in path: {item['path']}") |
| 183 | + logger.warning(f"Unable to find year in {item['title']} path") |
183 | 184 | try: |
184 | 185 | if item['alternateTitles']: |
185 | 186 | for i in item['alternateTitles']: |
@@ -491,50 +492,46 @@ def sort_files(files, path, dict, basename): |
491 | 492 |
|
492 | 493 |
|
493 | 494 | def get_assets_files(assets_path, override_paths): |
494 | | - asset_files = {"series": [], "movies": [], "collections": []} |
495 | | - override_files = {"series": [], "movies": [], "collections": []} |
496 | | - asset_types = ['series', 'movies', 'collections'] |
| 495 | + asset_files = {asset_type: [] for asset_type in ['series', 'movies', 'collections']} |
| 496 | + override_files = {asset_type: [] for asset_type in ['series', 'movies', 'collections']} |
497 | 497 | if assets_path: |
498 | 498 | files = get_files(assets_path) |
499 | 499 | basename = os.path.basename(assets_path.rstrip('/')) |
500 | 500 | asset_files = sort_files(files, assets_path, asset_files, basename) |
501 | 501 | if isinstance(override_paths, str): |
502 | 502 | override_paths = [override_paths] |
503 | 503 | if override_paths: |
504 | | - for paths in override_paths: |
505 | | - files = get_files(paths) |
506 | | - basename = os.path.basename(paths.rstrip('/')) |
507 | | - override_files = sort_files(files, paths, override_files, basename) |
| 504 | + for path in tqdm(override_paths, desc="Processing override paths", total=len(override_paths)): |
| 505 | + files = get_files(path) |
| 506 | + basename = os.path.basename(path.rstrip('/')) |
| 507 | + override_files = sort_files(files, path, override_files, basename) |
508 | 508 | if override_files and asset_files: |
509 | | - asset_files = handle_override_files(asset_files, override_files, asset_types) |
510 | | - for asset_types in asset_files: |
511 | | - for asset in asset_files[asset_types]: |
| 509 | + asset_files = handle_override_files(asset_files, override_files, path, asset_types=['series', 'movies', 'collections']) |
| 510 | + for asset_type in asset_files: |
| 511 | + for asset in asset_files[asset_type]: |
512 | 512 | normalized_title = normalize_titles(asset['title']) |
513 | 513 | asset['normalized_title'] = normalized_title |
514 | | - for asset_types in asset_files: |
515 | | - for asset in asset_files[asset_types]: |
516 | 514 | asset['files'].sort() |
517 | 515 | logger.debug(json.dumps(asset_files, indent=4)) |
518 | 516 | return asset_files |
519 | 517 |
|
520 | 518 |
|
521 | | -def handle_override_files(asset_files, override_files, asset_types): |
| 519 | +def handle_override_files(asset_files, override_files, path, asset_types): |
522 | 520 | for type in asset_types: |
523 | 521 | for override_asset in override_files[type]: |
524 | | - found = False |
| 522 | + asset_found = False |
525 | 523 | for asset in asset_files[type]: |
526 | 524 | if override_asset['title'] == asset['title'] and override_asset['year'] == asset['year']: |
527 | | - found = True |
528 | | - seen_files = set() |
529 | | - logger.debug(f"Override asset: {override_asset['title']} {override_asset['year']} will be used instead of {asset['title']} {asset['year']}") |
| 525 | + asset_found = True |
530 | 526 | for override_file in override_asset['files']: |
531 | | - override_file_name = os.path.splitext(os.path.basename(override_file))[0] |
532 | | - if override_file_name not in seen_files: |
533 | | - seen_files.add(override_file_name) |
534 | | - asset['files'] = [f for f in asset['files'] if os.path.splitext(os.path.basename(f))[0] != override_file_name] |
535 | | - asset['files'].append(override_file) |
536 | | - if not found: |
| 527 | + over_ride_file_name = os.path.split(override_file)[1] |
| 528 | + asset['files'] = [f for f in asset['files'] if os.path.split(f)[1] != over_ride_file_name] |
| 529 | + asset['files'].append(override_file) |
| 530 | + logger.debug(f"Override: Added {override_file} to {asset['title']}") |
| 531 | + break |
| 532 | + if not asset_found: |
537 | 533 | asset_files[type].append(override_asset) |
| 534 | + logger.debug(f"Override: Added {override_asset['title']} to {type} from {path}") |
538 | 535 | return asset_files |
539 | 536 |
|
540 | 537 |
|
|
0 commit comments