mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-20 13:57:25 +01:00
[PlVideo (Платформа)] Add extractor
This commit is contained in:
parent
919540a964
commit
a85e77a058
@ -1601,6 +1601,7 @@
|
||||
)
|
||||
from .puls4 import Puls4IE
|
||||
from .pyvideo import PyvideoIE
|
||||
from .plvideo import PlVideoVideoIE
|
||||
from .qdance import QDanceIE
|
||||
from .qingting import QingTingIE
|
||||
from .qqmusic import (
|
||||
|
55
yt_dlp/extractor/plvideo.py
Normal file
55
yt_dlp/extractor/plvideo.py
Normal file
@ -0,0 +1,55 @@
|
||||
|
||||
from pprint import pprint
|
||||
from yt_dlp.extractor.common import InfoExtractor
|
||||
|
||||
|
||||
class PlVideoVideoIE(InfoExtractor):
|
||||
_VALID_URL = r'https?://(?:www\.)?plvideo\.ru/watch\?v=(?P<id>\w+)&?(.+)?' # type: ignore
|
||||
_TESTS = [
|
||||
{
|
||||
'url': 'https://plvideo.ru/watch?v=lYmu2gcUKOa9',
|
||||
'info_dict': {
|
||||
'id': 'lYmu2gcUKOa9',
|
||||
'ext': 'mp4',
|
||||
'title': 'test',
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
def _real_extract(self, url):
|
||||
video_id = self._match_id(url)
|
||||
api_url = f"https://api.g1.plvideo.ru/v1/videos/{video_id}?Aud=18"
|
||||
|
||||
result = self._download_json(api_url, video_id, "Downloading video JSON")
|
||||
assert result["code"] == 200, "Failed to download video JSON"
|
||||
|
||||
item = result["item"]
|
||||
assert item is not None, "Bad API response"
|
||||
|
||||
thumbnail = item["cover"]["paths"]["original"]["src"]
|
||||
|
||||
formats = []
|
||||
|
||||
for key, value in item["profiles"].items():
|
||||
hlsurl = value["hls"]
|
||||
fmt = {
|
||||
'url': hlsurl,
|
||||
'ext': 'mp4',
|
||||
'quality': 0 if len(formats) == 0 else 0 - len(formats),
|
||||
'thumbnail': thumbnail,
|
||||
'format_id': key,
|
||||
'protocol': 'm3u8_native'
|
||||
}
|
||||
|
||||
formats.append(fmt)
|
||||
|
||||
|
||||
return {
|
||||
'id': video_id,
|
||||
'title': item["title"],
|
||||
'formats': formats,
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user