mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[facebook] Fix support for untitled videos (Fixes #3757)
This commit is contained in:
		| @@ -40,6 +40,7 @@ from youtube_dl.utils import ( | |||||||
|     parse_iso8601, |     parse_iso8601, | ||||||
|     strip_jsonp, |     strip_jsonp, | ||||||
|     uppercase_escape, |     uppercase_escape, | ||||||
|  |     limit_length, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -286,5 +287,12 @@ class TestUtil(unittest.TestCase): | |||||||
|         self.assertEqual(uppercase_escape('aä'), 'aä') |         self.assertEqual(uppercase_escape('aä'), 'aä') | ||||||
|         self.assertEqual(uppercase_escape('\\U0001d550'), '𝕐') |         self.assertEqual(uppercase_escape('\\U0001d550'), '𝕐') | ||||||
|  |  | ||||||
|  |     def test_limit_length(self): | ||||||
|  |         self.assertEqual(limit_length(None, 12), None) | ||||||
|  |         self.assertEqual(limit_length('foo', 12), 'foo') | ||||||
|  |         self.assertTrue( | ||||||
|  |             limit_length('foo bar baz asd', 12).startswith('foo bar')) | ||||||
|  |         self.assertTrue('...' in limit_length('foo bar baz asd', 12)) | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     unittest.main() |     unittest.main() | ||||||
|   | |||||||
| @@ -12,8 +12,8 @@ from ..utils import ( | |||||||
|     compat_urllib_parse, |     compat_urllib_parse, | ||||||
|     compat_urllib_request, |     compat_urllib_request, | ||||||
|     urlencode_postdata, |     urlencode_postdata, | ||||||
|  |  | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|  |     limit_length, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -37,6 +37,14 @@ class FacebookIE(InfoExtractor): | |||||||
|             'duration': 38, |             'duration': 38, | ||||||
|             'title': 'Did you know Kei Nishikori is the first Asian man to ever reach a Grand Slam fin...', |             'title': 'Did you know Kei Nishikori is the first Asian man to ever reach a Grand Slam fin...', | ||||||
|         } |         } | ||||||
|  |     }, { | ||||||
|  |         'note': 'Video without discernible title', | ||||||
|  |         'url': 'https://www.facebook.com/video.php?v=274175099429670', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': '274175099429670', | ||||||
|  |             'ext': 'mp4', | ||||||
|  |             'title': 'Facebook video #274175099429670', | ||||||
|  |         } | ||||||
|     }, { |     }, { | ||||||
|         'url': 'https://www.facebook.com/video.php?v=10204634152394104', |         'url': 'https://www.facebook.com/video.php?v=10204634152394104', | ||||||
|         'only_matching': True, |         'only_matching': True, | ||||||
| @@ -131,8 +139,7 @@ class FacebookIE(InfoExtractor): | |||||||
|             video_title = self._html_search_regex( |             video_title = self._html_search_regex( | ||||||
|                 r'(?s)<span class="fbPhotosPhotoCaption".*?id="fbPhotoPageCaption"><span class="hasCaption">(.*?)</span>', |                 r'(?s)<span class="fbPhotosPhotoCaption".*?id="fbPhotoPageCaption"><span class="hasCaption">(.*?)</span>', | ||||||
|                 webpage, 'alternative title', default=None) |                 webpage, 'alternative title', default=None) | ||||||
|             if len(video_title) > 80 + 3: |             video_title = limit_length(video_title, 80) | ||||||
|                 video_title = video_title[:80] + '...' |  | ||||||
|         if not video_title: |         if not video_title: | ||||||
|             video_title = 'Facebook video #%s' % video_id |             video_title = 'Facebook video #%s' % video_id | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1571,3 +1571,13 @@ except AttributeError: | |||||||
|         if ret: |         if ret: | ||||||
|             raise subprocess.CalledProcessError(ret, p.args, output=output) |             raise subprocess.CalledProcessError(ret, p.args, output=output) | ||||||
|         return output |         return output | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def limit_length(s, length): | ||||||
|  |     """ Add ellipses to overly long strings """ | ||||||
|  |     if s is None: | ||||||
|  |         return None | ||||||
|  |     ELLIPSES = '...' | ||||||
|  |     if len(s) > length: | ||||||
|  |         return s[:length - len(ELLIPSES)] + ELLIPSES | ||||||
|  |     return s | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister