diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py
index 2eb43fa65..3fc7bd563 100644
--- a/youtube_dl/extractor/facebook.py
+++ b/youtube_dl/extractor/facebook.py
@@ -438,22 +438,7 @@ class FacebookIE(InfoExtractor):
self._sort_formats(formats)
- video_title = self._html_search_regex(
- r'
]*class="uiHeaderTitle"[^>]*>([^<]*)
', webpage,
- 'title', default=None)
- if not video_title:
- video_title = self._html_search_regex(
- r'(?s)(.*?)',
- webpage, 'alternative title', default=None)
- if not video_title:
- video_title = self._og_search_title(webpage, default=None)
- if not video_title:
- video_title = self._html_search_meta(
- 'description', webpage, 'title', default=None)
- if video_title:
- video_title = limit_length(video_title, 80)
- else:
- video_title = 'Facebook video #%s' % video_id
+ video_title = self._extract_video_title(webpage, tahoe_data, video_id)
def _lowercase_escape(s):
if s:
@@ -607,6 +592,30 @@ class FacebookIE(InfoExtractor):
video_id, fatal_if_no_video=True)
return info_dict
+ def _extract_video_title(self, webpage, tahoe_data, video_id):
+ video_title = self._html_search_regex(
+ r']*class="uiHeaderTitle"[^>]*>([^<]*)
', webpage,
+ 'title', default=None)
+ if not video_title:
+ video_title = self._html_search_regex(
+ r'(?s)(.*?)',
+ webpage, 'alternative title', default=None)
+ if not video_title:
+ video_title = self._og_search_title(webpage, default=None)
+ if not video_title:
+ video_title = self._html_search_meta(
+ 'description', webpage, 'title', default=None)
+ if not video_title:
+ values = re.findall(r'videoTitle"\s*:\s*"(.*?)"', tahoe_data.secondary)
+ if values:
+ video_title = values[-1]
+ if video_title:
+ video_title = limit_length(video_title, 80)
+ else:
+ video_title = 'Facebook video #%s' % video_id
+ return video_title
+
+
class FacebookTahoeData:
def __init__(self, extractor, page, video_id):
self._page = page