Удаление слешей с --unsafe-path

This commit is contained in:
Lev Plyusnin 2024-11-17 20:56:31 +07:00
parent 0dde8d48b2
commit 73efe1596c
No known key found for this signature in database
GPG key ID: 21C6C2C9C0A4460D
3 changed files with 13 additions and 3 deletions

View file

@ -1,5 +1,11 @@
# Переход на новую версию
## -> v3.2.0b0
- При использовании аргумента `--unsafe-path` символы `/` и `\`
заменяются на `_`. Если у вас в коллекции есть альбомы/треки/исполнители
в названии которых есть данные символы, и вы используете флаг
`--skip-existing`, эти элементы будут загружены дважды.
## v2 -> v3
- Для авторизации используйте аргумент `--token`. Аргументы `--browser`,
`--user-agent`, `--cookies-path` больше не являются валидными,

View file

@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "yandex-music-downloader"
version = "3.1.0b0"
version = "3.2.0b0"
description = "Загрузчик музыки с сервиса Яндекс.Музыка"
requires-python = ">=3.9"
readme = "README.md"

View file

@ -27,7 +27,8 @@ from yandex_music import Client, DownloadInfo, Track, YandexMusicObject
from ymd.api import get_lossless_info
FILENAME_CLEAR_RE = re.compile(r"[^\w\-\'() ]+")
UNSAFE_PATH_CLEAR_RE = re.compile(r"[/\\]+")
SAFE_PATH_CLEAR_RE = re.compile(r"[^\w\-\'() ]+")
DEFAULT_PATH_PATTERN = Path("#album-artist", "#album", "#number - #title")
DEFAULT_COVER_RESOLUTION = 400
@ -82,7 +83,10 @@ def prepare_base_path(
for placeholder, replacement in repl_dict.items():
replacement = str(replacement)
if not unsafe_path:
replacement = FILENAME_CLEAR_RE.sub("_", replacement)
clear_re = SAFE_PATH_CLEAR_RE
else:
clear_re = UNSAFE_PATH_CLEAR_RE
replacement = clear_re.sub("_", replacement)
path_str = path_str.replace(placeholder, replacement)
return Path(path_str)