From 0e74ac32d6223f5a05e73d9e468e0bceea682886 Mon Sep 17 00:00:00 2001 From: "E.J. Talevi" Date: Tue, 25 Nov 2025 23:56:56 -0300 Subject: Added clarity and grammar fixes to documentation and to some strings on the program itself. --- tidal_dl_ng/cli.py | 10 +++++----- tidal_dl_ng/config.py | 1 - tidal_dl_ng/dialog.py | 4 ++-- tidal_dl_ng/download.py | 6 +++--- tidal_dl_ng/model/cfg.py | 8 ++++---- 5 files changed, 14 insertions(+), 15 deletions(-) (limited to 'tidal_dl_ng') diff --git a/tidal_dl_ng/cli.py b/tidal_dl_ng/cli.py index c2b51fa..b1e607c 100644 --- a/tidal_dl_ng/cli.py +++ b/tidal_dl_ng/cli.py @@ -171,7 +171,7 @@ def _process_url( return False if "http" not in url: - print(f"It seems like that you have supplied an invalid URL: {url}") + print(f"It seems like you have supplied an invalid URL: {url}") return True url_clean: str = url_ending_clean(url) @@ -286,7 +286,7 @@ def settings_management( Args: names (list[str] | None, optional): None (list all options), one (list the value only for this option) or two arguments (set the value for the option). Defaults to None. - editor (bool, optional): If set, your favorite system editor will be opened. Defaults to False. + editor (bool, optional): If set, your default system editor will be opened. Defaults to False. """ if editor: config_path: Path = Path(path_file_settings()) @@ -333,7 +333,7 @@ def login(ctx: typer.Context) -> bool: Returns: bool: True if login was successful, False otherwise. """ - print("Let us check, if you are already logged in... ", end="") + print("Let us check if you are already logged in... ", end="") settings = Settings() tidal = Tidal(settings) @@ -375,7 +375,7 @@ def download( writable=False, readable=True, resolve_path=True, - help="List with URLs to download. One per line", + help="File with URLs to download. One URL per line.", ), ] = None, ) -> bool: @@ -395,7 +395,7 @@ def download( text: str = file_urls.read_text() urls = text.splitlines() else: - print("Provide either URLs, IDs or a file containing URLs (one per line).") + print("Provide either URLs or a file containing URLs (one per line).") raise typer.Abort() diff --git a/tidal_dl_ng/config.py b/tidal_dl_ng/config.py index 8be4459..aa36cf6 100644 --- a/tidal_dl_ng/config.py +++ b/tidal_dl_ng/config.py @@ -71,7 +71,6 @@ class BaseConfig: # Move the invalid config file to the backup location. shutil.move(path, path_bak) - # TODO: Implement better global logger. print( "Something is wrong with your config. Maybe it is not compatible anymore due to a new app version." f" You can find a backup of your old config here: '{path_bak}'. A new default config was created." diff --git a/tidal_dl_ng/dialog.py b/tidal_dl_ng/dialog.py index 8cb93f6..336b88b 100644 --- a/tidal_dl_ng/dialog.py +++ b/tidal_dl_ng/dialog.py @@ -203,7 +203,7 @@ class DialogPreferences(QtWidgets.QDialog): ): # If a path is set, use it otherwise the users home directory. path_settings: str = os.path.expanduser(obj_line_edit.text()) if obj_line_edit.text() else "" - # Check if obj_line_edit is empty but path_default can be usd instead + # Check if obj_line_edit is empty but path_default can be used instead path_settings = ( path_settings if path_settings else os.path.expanduser(path_default) if path_default else path_settings ) @@ -223,7 +223,7 @@ class DialogPreferences(QtWidgets.QDialog): dialog.setDirectory(dir_current) - # Execute dialog and set path is something is choosen. + # Execute dialog and set path if something is chosen. if dialog.exec(): dir_name: str = dialog.selectedFiles()[0] path: Path = Path(dir_name) diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index 33a23aa..a95f351 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -406,7 +406,7 @@ class Download: with path_file.open("wb") as f_target: for dl_segment_result in dl_segment_results: with dl_segment_result.path_segment.open("rb") as f_segment: - # Read and write junks, which gives better HDD write performance + # Read and write chunks, which gives better HDD write performance while segment := f_segment.read(CHUNK_SIZE): f_target.write(segment) @@ -1244,7 +1244,7 @@ class Download: response: requests.Response = requests.get(url, timeout=REQUESTS_TIMEOUT_SEC) result = response.content except Exception as e: - # TODO: Implement propper logging. + # TODO: Implement proper logging. print(e) finally: response.close() @@ -1253,7 +1253,7 @@ class Download: with open(path_file, "rb") as f: result = f.read() except OSError as e: - # TODO: Implement propper logging. + # TODO: Implement proper logging. print(e) return result diff --git a/tidal_dl_ng/model/cfg.py b/tidal_dl_ng/model/cfg.py index b43acc1..bfca708 100644 --- a/tidal_dl_ng/model/cfg.py +++ b/tidal_dl_ng/model/cfg.py @@ -69,7 +69,7 @@ class Settings: @dataclass class HelpSettings: skip_existing: str = "Skip download if file already exists." - album_cover_save: str = "Safe cover to album folder." + album_cover_save: str = "Save cover to album folder." lyrics_embed: str = "Embed lyrics in audio file, if lyrics are available." use_primary_album_artist: str = "Use only the primary album artist for folder paths instead of track artists." lyrics_file: str = "Save lyrics to separate *.lrc file, if lyrics are available." @@ -97,11 +97,11 @@ class HelpSettings: "will be converted to MP4. FFmpeg must be installed." ) path_binary_ffmpeg: str = ( - "Path to FFmpeg binary file (executable). Only necessary if FFmpeg not set in $PATH. Mandatory for Windows: " - "The directory of `ffmpeg.exe`must be set in %PATH%." + "Path to FFmpeg binary file (executable). Only necessary if FFmpeg is not set in $PATH. Mandatory for Windows: " + "The directory of `ffmpeg.exe` must be set in %PATH%." ) metadata_cover_dimension: str = ( - "The dimensions of the cover image embedded into the track. Possible values: 320x320, 640x640x 1280x1280." + "The dimensions of the cover image embedded into the track. Possible values: 320x320, 640x640, 1280x1280." ) metadata_cover_embed: str = "Embed album cover into file." mark_explicit: str = "Mark explicit tracks with '🅴' in track title (only applies to metadata)." -- cgit v1.3.1 From adfa0c6bb32ecdcd4eccaefaad2cd55676260d2d Mon Sep 17 00:00:00 2001 From: "E.J. Talevi" Date: Wed, 26 Nov 2025 04:42:29 -0300 Subject: fix(ffmpeg): prevent terminal window flash on Windows during media conversion --- .gitignore | 1 + tidal_dl_ng/download.py | 4 ++++ tidal_dl_ng/model/cfg.py | 4 ++-- 3 files changed, 7 insertions(+), 2 deletions(-) (limited to 'tidal_dl_ng') diff --git a/.gitignore b/.gitignore index 7b44eb7..b7c80af 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ docs/source +vs_code/ # From https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index 33a23aa..d9d0866 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -1692,6 +1692,8 @@ class Download: ffmpeg = ( FFmpeg(executable=self.settings.data.path_binary_ffmpeg) .option("y") + .option("hide_banner") + .option("nostdin") .input(url=path_file) .output(url=path_file_out, codec="copy", map=0, loglevel="quiet") ) @@ -1712,6 +1714,8 @@ class Download: path_media_out = path_media_src.with_suffix(AudioExtensions.FLAC) ffmpeg = ( FFmpeg(executable=self.settings.data.path_binary_ffmpeg) + .option("hide_banner") + .option("nostdin") .input(url=path_media_src) .output( url=path_media_out, diff --git a/tidal_dl_ng/model/cfg.py b/tidal_dl_ng/model/cfg.py index b43acc1..f687cd3 100644 --- a/tidal_dl_ng/model/cfg.py +++ b/tidal_dl_ng/model/cfg.py @@ -43,8 +43,8 @@ class Settings: cover_album_file: bool = True extract_flac: bool = True downloads_simultaneous_per_track_max: int = 20 - download_delay_sec_min: float = 3.0 - download_delay_sec_max: float = 5.0 + download_delay_sec_min: float = 1.0 + download_delay_sec_max: float = 3.0 album_track_num_pad_min: int = 1 downloads_concurrent_max: int = 3 symlink_to_track: bool = False -- cgit v1.3.1 From 4b9a4062d2e40c79c9c4d2892ce77602811052f5 Mon Sep 17 00:00:00 2001 From: "E.J. Talevi" Date: Wed, 26 Nov 2025 04:48:30 -0300 Subject: fix(ffmpeg): prevent terminal window flash on Windows during media conversion --- tidal_dl_ng/download.py | 10 ++++++++++ tidal_dl_ng/model/cfg.py | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'tidal_dl_ng') diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index d9d0866..6b04724 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -1689,6 +1689,9 @@ class Download: pathlib.Path: Path to the converted MP4 file. """ path_file_out: pathlib.Path = path_file.with_suffix(AudioExtensions.MP4) + + self.fn_logger.debug(f"Converting video: {path_file.name} -> {path_file_out.name}") + ffmpeg = ( FFmpeg(executable=self.settings.data.path_binary_ffmpeg) .option("y") @@ -1699,6 +1702,8 @@ class Download: ) ffmpeg.execute() + + self.fn_logger.debug(f"Video conversion complete: {path_file_out.name}") return path_file_out @@ -1712,6 +1717,9 @@ class Download: pathlib.Path: Path to the extracted FLAC file. """ path_media_out = path_media_src.with_suffix(AudioExtensions.FLAC) + + self.fn_logger.debug(f"Extracting FLAC: {path_media_src.name} -> {path_media_out.name}") + ffmpeg = ( FFmpeg(executable=self.settings.data.path_binary_ffmpeg) .option("hide_banner") @@ -1728,6 +1736,8 @@ class Download: ) ffmpeg.execute() + + self.fn_logger.debug(f"FLAC extraction complete: {path_media_out.name}") return path_media_out diff --git a/tidal_dl_ng/model/cfg.py b/tidal_dl_ng/model/cfg.py index f687cd3..b43acc1 100644 --- a/tidal_dl_ng/model/cfg.py +++ b/tidal_dl_ng/model/cfg.py @@ -43,8 +43,8 @@ class Settings: cover_album_file: bool = True extract_flac: bool = True downloads_simultaneous_per_track_max: int = 20 - download_delay_sec_min: float = 1.0 - download_delay_sec_max: float = 3.0 + download_delay_sec_min: float = 3.0 + download_delay_sec_max: float = 5.0 album_track_num_pad_min: int = 1 downloads_concurrent_max: int = 3 symlink_to_track: bool = False -- cgit v1.3.1