expand_url: watch-ссылка с list= раскрывается в весь плейлист
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -18,9 +18,19 @@ _VIDEO_EXTS = {".mp4", ".mkv", ".webm", ".m4a", ".mp3", ".mov", ".opus", ".ogg",
|
|||||||
def expand_url(url: str) -> dict:
|
def expand_url(url: str) -> dict:
|
||||||
"""Определяет, видео это или плейлист, и возвращает список элементов.
|
"""Определяет, видео это или плейлист, и возвращает список элементов.
|
||||||
|
|
||||||
|
Ссылка вида watch?v=…&list=… (видео внутри плейлиста) трактуется как весь
|
||||||
|
плейлист — именно её люди копируют из адресной строки.
|
||||||
|
|
||||||
Returns: {"kind": "video"|"playlist", "title": str,
|
Returns: {"kind": "video"|"playlist", "title": str,
|
||||||
"entries": [{"url": str, "title": str}, ...]}
|
"entries": [{"url": str, "title": str}, ...]}
|
||||||
"""
|
"""
|
||||||
|
m = re.search(r"[?&]list=([A-Za-z0-9_\-]+)", url)
|
||||||
|
if m and "playlist?" not in url:
|
||||||
|
# RD… и LL/WL — авто-миксы и служебные списки, их не разворачиваем
|
||||||
|
list_id = m.group(1)
|
||||||
|
if not list_id.startswith(("RD", "LL", "WL")):
|
||||||
|
url = f"https://www.youtube.com/playlist?list={list_id}"
|
||||||
|
|
||||||
opts = {
|
opts = {
|
||||||
"extract_flat": "in_playlist",
|
"extract_flat": "in_playlist",
|
||||||
"quiet": True,
|
"quiet": True,
|
||||||
|
|||||||
Reference in New Issue
Block a user