From 824ae6a20f5fe01d5b3866e0d59bbb9f42223e57 Mon Sep 17 00:00:00 2001 From: Robert Honz Date: Mon, 16 Dec 2024 16:40:21 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Fixed=20wrong=20symlink?= =?UTF-8?q?=20creation.=20Hot=20fixed=20extension=20detection=20of=20`tida?= =?UTF-8?q?lapi`.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- poetry.lock | 40 ++++++++++++++++++++++------------------ pyproject.toml | 2 +- tidal_dl_ng/download.py | 12 ++++++++++-- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/poetry.lock b/poetry.lock index 22ac07f..d8de7f9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -178,13 +178,13 @@ files = [ [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] @@ -971,13 +971,13 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-material" -version = "9.5.48" +version = "9.5.49" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.48-py3-none-any.whl", hash = "sha256:b695c998f4b939ce748adbc0d3bff73fa886a670ece948cf27818fa115dc16f8"}, - {file = "mkdocs_material-9.5.48.tar.gz", hash = "sha256:a582531e8b34f4c7ed38c29d5c44763053832cf2a32f7409567e0c74749a47db"}, + {file = "mkdocs_material-9.5.49-py3-none-any.whl", hash = "sha256:c3c2d8176b18198435d3a3e119011922f3e11424074645c24019c2dcf08a360e"}, + {file = "mkdocs_material-9.5.49.tar.gz", hash = "sha256:3671bb282b4f53a1c72e08adbe04d2481a98f85fed392530051f80ff94a9621d"}, ] [package.dependencies] @@ -2024,19 +2024,23 @@ name = "tidalapi" version = "0.8.2" description = "Unofficial API for TIDAL music streaming service." optional = false -python-versions = "<4.0,>=3.8" -files = [ - {file = "tidalapi-0.8.2-py3-none-any.whl", hash = "sha256:46998ecb9103aee6d1346ad2974df05fe9bc03a429a89d5a701571fe4d9c4525"}, - {file = "tidalapi-0.8.2.tar.gz", hash = "sha256:9eab07291f92f506694b6d326dd1e6651349eaa71597cef634a62915312db38c"}, -] +python-versions = "^3.8" +files = [] +develop = false [package.dependencies] -isodate = ">=0.7.2,<0.8.0" -mpegdash = ">=0.4.0,<0.5.0" -python-dateutil = ">=2.8.2,<3.0.0" -ratelimit = ">=2.2.1,<3.0.0" -requests = ">=2.32.3,<3.0.0" -typing-extensions = ">=4.12.2,<5.0.0" +isodate = "^0.7.2" +mpegdash = "^0.4.0" +python-dateutil = "^2.8.2" +ratelimit = "^2.2.1" +requests = "^2.32.3" +typing-extensions = "^4.12.2" + +[package.source] +type = "git" +url = "git@github.com:exislow/python-tidal.git" +reference = "309-file-extension" +resolved_reference = "2f4a0dcc93fe40748c1ff0fd4773c9a6eeb6cc36" [[package]] name = "tokenize-rt" @@ -2267,4 +2271,4 @@ gui = ["pyqtdarktheme-fork", "pyside6"] [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.13" -content-hash = "dce4c40a6d0552a6d21c5801e7fecbcb8254f3abc4fbc5a39c31c8ac14aec2c4" +content-hash = "fbac1f69d010fa9495b26a3e4ee83dda2c61a4c1116d88e1d75bcd1d5c99ae98" diff --git a/pyproject.toml b/pyproject.toml index 96d91f1..28d5429 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ rich = "^13.9.4" toml = "^0.10.2" typer = "^0.15.1" ffmpeg-python = "^0.2.0" -tidalapi = "^0.8.2" +tidalapi = { git = "git@github.com:exislow/python-tidal.git", branch = "309-file-extension" } [tool.poetry.extras] gui = ["pyside6", "pyqtdarktheme-fork"] diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index 6679371..ceec5c5 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -468,14 +468,20 @@ class Download: # Move item and symlink it if path_media_dst != path_media_src: if self.skip_existing: - skip_file: bool = check_file_exists(path_media_dst, extension_ignore=True) + skip_file: bool = check_file_exists(path_media_dst, extension_ignore=False) + skip_symlink: bool = path_media_src.is_symlink() else: skip_file: bool = False + skip_symlink: bool = False if not skip_file: + self.fn_logger.debug(f"Move: {path_media_src} -> {path_media_dst}") shutil.move(path_media_src, path_media_dst) - os.symlink(path_media_dst, path_media_src) + if not skip_symlink: + self.fn_logger.debug(f"Symlink: {path_media_src} -> {path_media_dst}") + path_media_src.unlink(missing_ok=True) + path_media_src.symlink_to(path_media_dst) return path_media_dst @@ -712,6 +718,8 @@ class Download: path_playlist = dir_scoped / (PLAYLIST_PREFIX + name_list + PLAYLIST_EXTENSION) path_playlist = pathlib.Path(path_file_sanitize(path_playlist, adapt=True)) + self.fn_logger.debug(f"Playlist: Creating {path_playlist}") + # Get all tracks in the directory path_tracks: [pathlib.Path] = []