From 215fbff462ba29ee7f4ba6c9ec0d17fcf3879361 Mon Sep 17 00:00:00 2001 From: Audionut Date: Thu, 6 Feb 2025 22:03:11 +1000 Subject: [PATCH 1/8] Handle all prompts in -ua fixes https://github.com/Audionut/Upload-Assistant/issues/317 --- src/trackers/MTV.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/trackers/MTV.py b/src/trackers/MTV.py index f1e50b6f9..44e84dc2f 100644 --- a/src/trackers/MTV.py +++ b/src/trackers/MTV.py @@ -419,7 +419,10 @@ async def validate_credentials(self, meta): vcookie = await self.validate_cookies(meta, cookiefile) if vcookie is not True: console.print('[red]Failed to validate cookies. Please confirm that the site is up and your username and password is valid.') - recreate = cli_ui.ask_yes_no("Log in again and create new session?") + if not meta['unattended'] or (meta['unattended'] and meta.get('unattended-confirm', False)): + recreate = cli_ui.ask_yes_no("Log in again and create new session?") + else: + recreate = True if recreate is True: if os.path.exists(cookiefile): os.remove(cookiefile) From a39116c8e42b5ad54b9a7c781c761f931d53ef77 Mon Sep 17 00:00:00 2001 From: Audionut Date: Thu, 6 Feb 2025 22:11:38 +1000 Subject: [PATCH 2/8] HUNO - ua handling --- src/trackers/HUNO.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/trackers/HUNO.py b/src/trackers/HUNO.py index 3ae5577ee..8f5a67865 100644 --- a/src/trackers/HUNO.py +++ b/src/trackers/HUNO.py @@ -31,6 +31,10 @@ def __init__(self, config): async def upload(self, meta, disctype): common = COMMON(config=self.config) + huno_name = await self.get_name(meta) + if huno_name == "SKIPPED": + console.print("[bold red]Skipping upload to HUNO due to missing audio language") + return await common.unit3d_edit_desc(meta, self.tracker, self.signature) await common.edit_torrent(meta, self.tracker, self.source_flag) cat_id = await self.get_cat_id(meta['category']) @@ -51,7 +55,7 @@ async def upload(self, meta, disctype): open_torrent = open(f"{meta['base_dir']}/tmp/{meta['uuid']}/[HUNO]{meta['clean_name']}.torrent", 'rb') files = {'torrent': open_torrent} data = { - 'name': await self.get_name(meta), + 'name': huno_name, 'description': desc, 'mediainfo': mi_dump, 'bdinfo': bd_dump, @@ -120,9 +124,12 @@ def get_audio(self, meta): languages = {track.get("language", "") for track in audio_tracks if "language" in track} if len(languages) > 1: - cli_ui.info(f"Multiple audio languages detected: {', '.join(languages)}") - if cli_ui.ask_yes_no("Is this a dual audio release?", default=True): - language = "Dual" + if not meta['unattended'] or (meta['unattended'] and meta.get('unattended-confirm', False)): + cli_ui.info(f"Multiple audio languages detected: {', '.join(languages)}") + if cli_ui.ask_yes_no("Is this a dual audio release?", default=True): + language = "Dual" + else: + language = "SKIPPED" elif languages: language = languages @@ -171,7 +178,10 @@ def get_audio(self, meta): if language == "zxx": language = "Silent" elif not language: - language = cli_ui.ask_string('No audio language present, you must enter one:') + if not meta['unattended'] or (meta['unattended'] and meta.get('unattended-confirm', False)): + language = cli_ui.ask_string('No audio language present, you must enter one:') + else: + language = "SKIPPED" return f'{codec} {channels} {language}' @@ -191,6 +201,8 @@ async def get_name(self, meta): year = meta.get('year', "") resolution = meta.get('resolution', "") audio = self.get_audio(meta) + if "SKIPPED" in audio: + return "SKIPPED" service = meta.get('service', "") season = meta.get('season', "") episode = meta.get('episode', "") From 449b41ca4cdc938864d85f67bd301d11c45a0931 Mon Sep 17 00:00:00 2001 From: Audionut Date: Thu, 6 Feb 2025 23:56:00 +1000 Subject: [PATCH 3/8] OE - ua handling --- src/trackers/OE.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/trackers/OE.py b/src/trackers/OE.py index 3275646da..b137b43f9 100644 --- a/src/trackers/OE.py +++ b/src/trackers/OE.py @@ -48,7 +48,9 @@ def __init__(self, config): async def upload(self, meta, disctype): common = COMMON(config=self.config) await common.edit_torrent(meta, self.tracker, self.source_flag) - await self.edit_desc(meta, self.tracker, self.signature) + desc = await self.edit_desc(meta, self.tracker, self.signature) + if "SKIPPING" in desc: + return cat_id = await self.get_cat_id(meta['category']) if meta.get('type') == "DVDRIP": meta['type'] = "ENCODE" @@ -250,19 +252,25 @@ def process_languages(tracks): if track.get('@type') == 'Audio': language = track.get('Language') if not language or language is None: - audio_lang = cli_ui.ask_string('No audio language present, you must enter one:') - if audio_lang: - audio_languages.append(audio_lang) + if not meta['unattended'] or (meta['unattended'] and meta.get('unattended-confirm', False)): + audio_lang = cli_ui.ask_string('No audio language present, you must enter one:') + if audio_lang: + audio_languages.append(audio_lang) + else: + audio_languages.append("") else: - audio_languages.append("") + return "SKIPPING" if track.get('@type') == 'Text': language = track.get('Language') if not language or language is None: - subtitle_lang = cli_ui.ask_string('No subtitle language present, you must enter one:') - if subtitle_lang: - subtitle_languages.append(subtitle_lang) + if not meta['unattended'] or (meta['unattended'] and meta.get('unattended-confirm', False)): + subtitle_lang = cli_ui.ask_string('No subtitle language present, you must enter one:') + if subtitle_lang: + subtitle_languages.append(subtitle_lang) + else: + subtitle_languages.append("") else: - subtitle_languages.append("") + return "SKIPPING" return audio_languages, subtitle_languages From 479045c72e6c252015b2320477e4c3c7352a06e5 Mon Sep 17 00:00:00 2001 From: Audionut Date: Fri, 7 Feb 2025 08:05:47 +1000 Subject: [PATCH 4/8] HDB - ua handling --- src/trackermeta.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/trackermeta.py b/src/trackermeta.py index bdff042a1..17cd68c1e 100644 --- a/src/trackermeta.py +++ b/src/trackermeta.py @@ -312,6 +312,7 @@ async def update_metadata_from_tracker(tracker_name, tracker_instance, meta, sea # Use get_info_from_torrent_id function if ID is found in meta imdb, tvdb_id, hdb_name, meta['ext_torrenthash'] = await tracker_instance.get_info_from_torrent_id(meta[tracker_key]) + meta['imdb'] = str(imdb_id).zfill(7) if imdb else None meta['tvdb_id'] = str(tvdb_id) if tvdb_id else meta.get('tvdb_id') meta['hdb_name'] = hdb_name found_match = True @@ -324,6 +325,7 @@ async def update_metadata_from_tracker(tracker_name, tracker_instance, meta, sea # Use search_filename function if ID is not found in meta imdb, tvdb_id, hdb_name, meta['ext_torrenthash'], tracker_id = await tracker_instance.search_filename(search_term, search_file_folder, meta) + meta['imdb'] = str(imdb_id).zfill(7) if imdb else None meta['tvdb_id'] = str(tvdb_id) if tvdb_id else meta.get('tvdb_id') meta['hdb_name'] = hdb_name if tracker_id: @@ -332,15 +334,17 @@ async def update_metadata_from_tracker(tracker_name, tracker_instance, meta, sea if found_match: if imdb or tvdb_id or hdb_name: - console.print(f"[green]{tracker_name} data found: IMDb ID: {imdb}, TVDb ID: {meta['tvdb_id']}, HDB Name: {meta['hdb_name']}[/green]") - if await prompt_user_for_confirmation(f"Do you want to use the ID's found on {tracker_name}?"): - console.print(f"[green]{tracker_name} data retained.[/green]") - else: - console.print(f"[yellow]{tracker_name} data discarded.[/yellow]") - meta[tracker_key] = None - meta['tvdb_id'] = None - meta['hdb_name'] = None - found_match = False + if meta['unattended']: + console.print(f"[green]{tracker_name} data found: IMDb ID: {imdb}, TVDb ID: {meta['tvdb_id']}, HDB Name: {meta['hdb_name']}[/green]") + if await prompt_user_for_confirmation(f"Do you want to use the ID's found on {tracker_name}?"): + console.print(f"[green]{tracker_name} data retained.[/green]") + else: + console.print(f"[yellow]{tracker_name} data discarded.[/yellow]") + meta[tracker_key] = None + meta['tvdb_id'] = None + meta['imdb'] = None + meta['hdb_name'] = None + found_match = False else: found_match = False From 9cd0776f670f28b04c0da20dee47a8ee082472dd Mon Sep 17 00:00:00 2001 From: Audionut Date: Fri, 7 Feb 2025 08:07:47 +1000 Subject: [PATCH 5/8] if not, not if --- src/trackermeta.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/trackermeta.py b/src/trackermeta.py index 17cd68c1e..de69c664e 100644 --- a/src/trackermeta.py +++ b/src/trackermeta.py @@ -334,7 +334,7 @@ async def update_metadata_from_tracker(tracker_name, tracker_instance, meta, sea if found_match: if imdb or tvdb_id or hdb_name: - if meta['unattended']: + if not meta['unattended']: console.print(f"[green]{tracker_name} data found: IMDb ID: {imdb}, TVDb ID: {meta['tvdb_id']}, HDB Name: {meta['hdb_name']}[/green]") if await prompt_user_for_confirmation(f"Do you want to use the ID's found on {tracker_name}?"): console.print(f"[green]{tracker_name} data retained.[/green]") From f5c739ad469ea5b3624b118f0abc190c0eee2703 Mon Sep 17 00:00:00 2001 From: Audionut Date: Fri, 7 Feb 2025 08:28:32 +1000 Subject: [PATCH 6/8] cleanup hdb meta processing --- src/trackermeta.py | 48 ++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/src/trackermeta.py b/src/trackermeta.py index de69c664e..cbc16a68d 100644 --- a/src/trackermeta.py +++ b/src/trackermeta.py @@ -312,13 +312,14 @@ async def update_metadata_from_tracker(tracker_name, tracker_instance, meta, sea # Use get_info_from_torrent_id function if ID is found in meta imdb, tvdb_id, hdb_name, meta['ext_torrenthash'] = await tracker_instance.get_info_from_torrent_id(meta[tracker_key]) - meta['imdb'] = str(imdb_id).zfill(7) if imdb else None - meta['tvdb_id'] = str(tvdb_id) if tvdb_id else meta.get('tvdb_id') - meta['hdb_name'] = hdb_name - found_match = True - - # Skip user confirmation if searching by ID - console.print(f"[green]{tracker_name} data found: IMDb ID: {imdb}, TVDb ID: {meta['tvdb_id']}, HDB Name: {meta['hdb_name']}[/green]") + if imdb or tvdb_id: + meta['imdb'] = str(imdb_id).zfill(7) if imdb else None + meta['tvdb_id'] = str(tvdb_id) if tvdb_id else meta.get('tvdb_id') + found_match = True + console.print(f"[green]{tracker_name} data found: IMDb ID: {imdb}, TVDb ID: {meta['tvdb_id']}, HDB Name: {meta['hdb_name']}[/green]") + else: + console.print(f"[yellow]{tracker_name} data not found for ID: {meta[tracker_key]}[/yellow]") + found_match = False else: console.print("[yellow]No ID found in meta for HDB, searching by file name[/yellow]") @@ -327,26 +328,27 @@ async def update_metadata_from_tracker(tracker_name, tracker_instance, meta, sea meta['imdb'] = str(imdb_id).zfill(7) if imdb else None meta['tvdb_id'] = str(tvdb_id) if tvdb_id else meta.get('tvdb_id') - meta['hdb_name'] = hdb_name if tracker_id: meta[tracker_key] = tracker_id - found_match = True - if found_match: - if imdb or tvdb_id or hdb_name: - if not meta['unattended']: - console.print(f"[green]{tracker_name} data found: IMDb ID: {imdb}, TVDb ID: {meta['tvdb_id']}, HDB Name: {meta['hdb_name']}[/green]") - if await prompt_user_for_confirmation(f"Do you want to use the ID's found on {tracker_name}?"): - console.print(f"[green]{tracker_name} data retained.[/green]") - else: - console.print(f"[yellow]{tracker_name} data discarded.[/yellow]") - meta[tracker_key] = None - meta['tvdb_id'] = None - meta['imdb'] = None - meta['hdb_name'] = None - found_match = False + if imdb or tvdb_id: + if not meta['unattended']: + console.print(f"[green]{tracker_name} data found: IMDb ID: {imdb}, TVDb ID: {meta['tvdb_id']}, HDB Name: {meta['hdb_name']}[/green]") + if await prompt_user_for_confirmation(f"Do you want to use the ID's found on {tracker_name}?"): + console.print(f"[green]{tracker_name} data retained.[/green]") + found_match = True + else: + console.print(f"[yellow]{tracker_name} data discarded.[/yellow]") + meta[tracker_key] = None + meta['tvdb_id'] = None + meta['imdb'] = None + meta['hdb_name'] = None + found_match = False else: - found_match = False + console.print(f"[green]{tracker_name} data found: IMDb ID: {imdb}, TVDb ID: {meta['tvdb_id']}, HDB Name: {hdb_name}[/green]") + found_match = True + else: + found_match = False return meta, found_match From 22e4c1c33155788ad4c1a0b9707857ae875c4883 Mon Sep 17 00:00:00 2001 From: Audionut Date: Fri, 7 Feb 2025 15:34:25 +1000 Subject: [PATCH 7/8] correct OE ua handling --- src/trackers/OE.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/trackers/OE.py b/src/trackers/OE.py index b137b43f9..459a3f3c9 100644 --- a/src/trackers/OE.py +++ b/src/trackers/OE.py @@ -48,8 +48,9 @@ def __init__(self, config): async def upload(self, meta, disctype): common = COMMON(config=self.config) await common.edit_torrent(meta, self.tracker, self.source_flag) - desc = await self.edit_desc(meta, self.tracker, self.signature) - if "SKIPPING" in desc: + await self.edit_desc(meta, self.tracker, self.signature) + if "oe_no_language" in meta: + console.print("[red]No language detected in MEDIAINFO.txt[/red]") return cat_id = await self.get_cat_id(meta['category']) if meta.get('type') == "DVDRIP": @@ -259,7 +260,7 @@ def process_languages(tracks): else: audio_languages.append("") else: - return "SKIPPING" + meta['oe_no_language'] = True if track.get('@type') == 'Text': language = track.get('Language') if not language or language is None: @@ -270,7 +271,7 @@ def process_languages(tracks): else: subtitle_languages.append("") else: - return "SKIPPING" + meta['oe_no_language'] = True return audio_languages, subtitle_languages From 9a17d67883753b90b08d4481e89960559880e9ec Mon Sep 17 00:00:00 2001 From: Audionut Date: Mon, 10 Feb 2025 07:54:55 +1000 Subject: [PATCH 8/8] correct hdb meta handling --- src/trackermeta.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/trackermeta.py b/src/trackermeta.py index cbc16a68d..b46f032f3 100644 --- a/src/trackermeta.py +++ b/src/trackermeta.py @@ -313,8 +313,9 @@ async def update_metadata_from_tracker(tracker_name, tracker_instance, meta, sea imdb, tvdb_id, hdb_name, meta['ext_torrenthash'] = await tracker_instance.get_info_from_torrent_id(meta[tracker_key]) if imdb or tvdb_id: - meta['imdb'] = str(imdb_id).zfill(7) if imdb else None + meta['imdb'] = str(imdb).zfill(7) if imdb else None meta['tvdb_id'] = str(tvdb_id) if tvdb_id else meta.get('tvdb_id') + meta['hdb_name'] = hdb_name found_match = True console.print(f"[green]{tracker_name} data found: IMDb ID: {imdb}, TVDb ID: {meta['tvdb_id']}, HDB Name: {meta['hdb_name']}[/green]") else: @@ -326,8 +327,9 @@ async def update_metadata_from_tracker(tracker_name, tracker_instance, meta, sea # Use search_filename function if ID is not found in meta imdb, tvdb_id, hdb_name, meta['ext_torrenthash'], tracker_id = await tracker_instance.search_filename(search_term, search_file_folder, meta) - meta['imdb'] = str(imdb_id).zfill(7) if imdb else None + meta['imdb'] = str(imdb).zfill(7) if imdb else None meta['tvdb_id'] = str(tvdb_id) if tvdb_id else meta.get('tvdb_id') + meta['hdb_name'] = hdb_name if tracker_id: meta[tracker_key] = tracker_id