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