diff --git a/src/trackermeta.py b/src/trackermeta.py index ea999d8b..f3fb7e51 100644 --- a/src/trackermeta.py +++ b/src/trackermeta.py @@ -291,37 +291,45 @@ 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['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).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: + 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]") # 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).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 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 diff --git a/src/trackers/HUNO.py b/src/trackers/HUNO.py index 3ae5577e..8f5a6786 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', "") diff --git a/src/trackers/MTV.py b/src/trackers/MTV.py index 4b2a29a1..22f4922c 100644 --- a/src/trackers/MTV.py +++ b/src/trackers/MTV.py @@ -420,7 +420,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) diff --git a/src/trackers/OE.py b/src/trackers/OE.py index 3275646d..459a3f3c 100644 --- a/src/trackers/OE.py +++ b/src/trackers/OE.py @@ -49,6 +49,9 @@ 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) + 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": meta['type'] = "ENCODE" @@ -250,19 +253,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("") + meta['oe_no_language'] = True 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("") + meta['oe_no_language'] = True return audio_languages, subtitle_languages