[facebook] add support for watch videos(closes #22795)
authorRemita Amine <remitamine@gmail.com>
Fri, 11 Dec 2020 12:54:03 +0000 (13:54 +0100)
committerRemita Amine <remitamine@gmail.com>
Fri, 11 Dec 2020 12:54:22 +0000 (13:54 +0100)
youtube_dl/extractor/facebook.py

index 6c360e29e96c93213461a543aa25565f0ecd655c..374b82704a953f76ec837a5bb58907d8a9ef236a 100644 (file)
@@ -41,7 +41,8 @@ class FacebookIE(InfoExtractor):
                                 photo\.php|
                                 video\.php|
                                 video/embed|
-                                story\.php
+                                story\.php|
+                                watch/?
                             )\?(?:.*?)(?:v|video_id|story_fbid)=|
                             [^/]+/videos/(?:[^/]+/)?|
                             [^/]+/posts/|
@@ -239,6 +240,20 @@ class FacebookIE(InfoExtractor):
             'id': '106560053808006',
         },
         'playlist_count': 2,
+    }, {
+        # data.video_home_www_feed.video_home_sections.edges[].node.feed_section_renderer.section.section_components.edges[].node.feed_unit.attachments
+        'url': 'https://www.facebook.com/watch/?v=125475412191640',
+        'md5': 'a38bed45dd1b2881ea230f3561c914b7',
+        'info_dict': {
+            'id': '373249263226147',
+            'ext': 'mp4',
+            'title': 'شوف بعينيك ماذا يحدث...ماناش نخوف فيكم رانا ننقل لكم مايحدث...',
+            'description': 'شوف بعينيك ماذا يحدث خويا العزيز...ماناش نخوف فيكم رانا ننقل لكم مايحدث...\nتذكروا جيدا ماكنا نقوله لكم منذ سنوات وماكنا نحذركم .',
+            'timestamp': 1550353963,
+            'upload_date': '20190216',
+            'uploader_id': '176917942440142',
+        },
+        'skip': 'Requires logging in',
     }]
 
     @staticmethod
@@ -425,6 +440,14 @@ class FacebookIE(InfoExtractor):
                     for edge in edges:
                         parse_attachment(edge, key='node')
 
+                    video_home_sections = try_get(data, lambda x: x['video_home_www_feed']['video_home_sections']['edges'], list) or []
+                    for video_home_section in video_home_sections:
+                        section_components = try_get(video_home_section, lambda x: x['node']['feed_section_renderer']['section']['section_components']['edges'], list) or []
+                        for section_component in section_components:
+                            attachments = try_get(section_component, lambda x: x['node']['feed_unit']['attachments'], list) or []
+                            for attachment in attachments:
+                                parse_attachment(attachment)
+
                     if not entries:
                         video = data.get('video') or {}
                         if video: