diff options
author | c-basalt <117849907+c-basalt@users.noreply.github.com> | 2023-09-16 16:53:57 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-16 20:53:57 +0000 |
commit | 5336bf57a7061e0955a37f0542fc8ebf50d55b17 (patch) | |
tree | aaee8940661ac37767716f1e10860c3f041f5dfe | |
parent | 9bf14be775289bd88cc1f5c89fd761ae51879484 (diff) |
[ie/bilibili] Extract `format_id` (#7555)
Authored by: c-basalt
-rw-r--r-- | yt_dlp/extractor/bilibili.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/yt_dlp/extractor/bilibili.py b/yt_dlp/extractor/bilibili.py index cb7ab2a17..290340078 100644 --- a/yt_dlp/extractor/bilibili.py +++ b/yt_dlp/extractor/bilibili.py @@ -3,6 +3,7 @@ import functools import hashlib import itertools import math +import re import time import urllib.parse @@ -38,6 +39,8 @@ from ..utils import ( class BilibiliBaseIE(InfoExtractor): + _FORMAT_ID_RE = re.compile(r'-(\d+)\.m4s\?') + def extract_formats(self, play_info): format_names = { r['quality']: traverse_obj(r, 'new_description', 'display_desc') @@ -54,7 +57,8 @@ class BilibiliBaseIE(InfoExtractor): 'acodec': audio.get('codecs'), 'vcodec': 'none', 'tbr': float_or_none(audio.get('bandwidth'), scale=1000), - 'filesize': int_or_none(audio.get('size')) + 'filesize': int_or_none(audio.get('size')), + 'format_id': str_or_none(audio.get('id')), } for audio in audios] formats.extend({ @@ -68,6 +72,9 @@ class BilibiliBaseIE(InfoExtractor): 'tbr': float_or_none(video.get('bandwidth'), scale=1000), 'filesize': int_or_none(video.get('size')), 'quality': int_or_none(video.get('id')), + 'format_id': traverse_obj( + video, (('baseUrl', 'base_url'), {self._FORMAT_ID_RE.search}, 1), + ('id', {str_or_none}), get_all=False), 'format': format_names.get(video.get('id')), } for video in traverse_obj(play_info, ('dash', 'video', ...))) |