aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-01-02 02:17:24 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-01-02 02:41:47 +0530
commitb8e976a44515b7a64f4f6d904025dffe742e21fa (patch)
tree90287e5f53a59fd5c7136692468d8093493dab43
parenta9f5f5d6eb99ff48b718cfeed1e98f9f343318ef (diff)
downloadhypervideo-pre-b8e976a44515b7a64f4f6d904025dffe742e21fa.tar.lz
hypervideo-pre-b8e976a44515b7a64f4f6d904025dffe742e21fa.tar.xz
hypervideo-pre-b8e976a44515b7a64f4f6d904025dffe742e21fa.zip
[facebook] Parse dash manifests
-rw-r--r--yt_dlp/extractor/facebook.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/yt_dlp/extractor/facebook.py b/yt_dlp/extractor/facebook.py
index 6dbcd690d..52f1d0d6a 100644
--- a/yt_dlp/extractor/facebook.py
+++ b/yt_dlp/extractor/facebook.py
@@ -13,6 +13,7 @@ from ..compat import (
)
from ..utils import (
clean_html,
+ determine_ext,
error_to_compat_str,
ExtractorError,
float_or_none,
@@ -510,15 +511,19 @@ class FacebookIE(InfoExtractor):
def parse_graphql_video(video):
formats = []
q = qualities(['sd', 'hd'])
- for (suffix, format_id) in [('', 'sd'), ('_quality_hd', 'hd')]:
- playable_url = video.get('playable_url' + suffix)
+ for key, format_id in (('playable_url', 'sd'), ('playable_url_quality_hd', 'hd'),
+ ('playable_url_dash', '')):
+ playable_url = video.get(key)
if not playable_url:
continue
- formats.append({
- 'format_id': format_id,
- 'quality': q(format_id),
- 'url': playable_url,
- })
+ if determine_ext(playable_url) == 'mpd':
+ formats.extend(self._extract_mpd_formats(playable_url, video_id))
+ else:
+ formats.append({
+ 'format_id': format_id,
+ 'quality': q(format_id),
+ 'url': playable_url,
+ })
extract_dash_manifest(video, formats)
process_formats(formats)
v_id = video.get('videoId') or video.get('id') or video_id