aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--youtube_dl/extractor/__init__.py5
-rw-r--r--youtube_dl/extractor/facebook.py30
2 files changed, 34 insertions, 1 deletions
diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py
index 245e4d044..532be7e4c 100644
--- a/youtube_dl/extractor/__init__.py
+++ b/youtube_dl/extractor/__init__.py
@@ -196,7 +196,10 @@ from .everyonesmixtape import EveryonesMixtapeIE
from .exfm import ExfmIE
from .expotv import ExpoTVIE
from .extremetube import ExtremeTubeIE
-from .facebook import FacebookIE
+from .facebook import (
+ FacebookIE,
+ FacebookPostIE,
+)
from .faz import FazIE
from .fc2 import FC2IE
from .fczenit import FczenitIE
diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py
index f9fd8ed4e..cb5dd57fb 100644
--- a/youtube_dl/extractor/facebook.py
+++ b/youtube_dl/extractor/facebook.py
@@ -199,3 +199,33 @@ class FacebookIE(InfoExtractor):
'formats': formats,
'uploader': uploader,
}
+
+
+class FacebookPostIE(InfoExtractor):
+ IE_NAME = 'facebook:post'
+ _VALID_URL = r'https?://(?:\w+\.)?facebook\.com/[^/]+/posts/(?P<id>\d+)'
+ _TEST = {
+ 'url': 'https://www.facebook.com/maxlayn/posts/10153807558977570',
+ 'md5': '037b1fa7f3c2d02b7a0d7bc16031ecc6',
+ 'info_dict': {
+ 'id': '544765982287235',
+ 'ext': 'mp4',
+ 'title': '"What are you doing running in the snow?"',
+ 'uploader': 'FailArmy',
+ }
+ }
+
+ def _real_extract(self, url):
+ post_id = self._match_id(url)
+
+ webpage = self._download_webpage(url, post_id)
+
+ entries = [
+ self.url_result('facebook:%s' % video_id, FacebookIE.ie_key())
+ for video_id in self._parse_json(
+ self._search_regex(
+ r'(["\'])video_ids\1\s*:\s*(?P<ids>\[.+?\])',
+ webpage, 'video ids', group='ids'),
+ post_id)]
+
+ return self.playlist_result(entries, post_id)