mirror of
https://github.com/Horizontal42/Sort_YM.git
synced 2026-11-10 18:02:00 +03:00
accept lk.-prefixed playlist uuids in --source links
Personal playlist links (e.g. "liked tracks" shared via the web player) use a "lk.<uuid>" playlist_uuid, not a bare uuid - confirmed live via client.playlist(): the prefix is part of the id itself, not something to strip. Found by testing --source against a real link.
This commit is contained in:
parent
ff452b0162
commit
188fcc8b20
2 changed files with 14 additions and 1 deletions
|
|
@ -19,7 +19,10 @@ from . import fetch
|
||||||
from .ymclient import chunked, with_retries
|
from .ymclient import chunked, with_retries
|
||||||
|
|
||||||
HOST_RE = re.compile(r"^(?:www\.)?music\.yandex\.[a-z]{2,3}$", re.IGNORECASE)
|
HOST_RE = re.compile(r"^(?:www\.)?music\.yandex\.[a-z]{2,3}$", re.IGNORECASE)
|
||||||
UUID_RE = re.compile(r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", re.IGNORECASE)
|
# "lk." (личный кабинет) - префикс у ссылок на персональные плейлисты (например, "Мне нравится"),
|
||||||
|
# в отличие от чистого uuid у редакционных плейлистов - подтверждено вживую через client.playlist():
|
||||||
|
# без префикса API отвечает NotFoundError, префикс - часть самого uuid, а не что-то, что надо отрезать.
|
||||||
|
UUID_RE = re.compile(r"^(?:lk\.)?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", re.IGNORECASE)
|
||||||
|
|
||||||
_LINK_HINT = (
|
_LINK_HINT = (
|
||||||
"Ожидается ссылка вида https://music.yandex.ru/users/<логин>/playlists/<номер> - "
|
"Ожидается ссылка вида https://music.yandex.ru/users/<логин>/playlists/<номер> - "
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,16 @@ def test_parse_playlist_url_accepts_uuid_form():
|
||||||
assert ref.kind is None
|
assert ref.kind is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_parse_playlist_url_accepts_lk_prefixed_uuid_form():
|
||||||
|
# "lk." (личный кабинет) - реальный префикс у ссылок на персональные плейлисты вроде "Мне
|
||||||
|
# нравится" (подтверждено вживую через client.playlist()); префикс - часть самого uuid для
|
||||||
|
# API, а не что-то, что нужно отрезать при парсинге.
|
||||||
|
ref = source.parse_playlist_url(
|
||||||
|
"https://music.yandex.ru/playlists/lk.dff9b654-af53-4c65-ab4a-d4ed5a0ae72d?utm_source=desktop"
|
||||||
|
)
|
||||||
|
assert ref.uuid == "lk.dff9b654-af53-4c65-ab4a-d4ed5a0ae72d"
|
||||||
|
|
||||||
|
|
||||||
REJECTED_URLS = [
|
REJECTED_URLS = [
|
||||||
"",
|
"",
|
||||||
" ",
|
" ",
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue