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, | ||||
|     strip_jsonp, | ||||
|     uppercase_escape, | ||||
|     limit_length, | ||||
| ) | ||||
|  | ||||
|  | ||||
| @@ -286,5 +287,12 @@ class TestUtil(unittest.TestCase): | ||||
|         self.assertEqual(uppercase_escape('aä'), 'aä') | ||||
|         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__': | ||||
|     unittest.main() | ||||
|   | ||||
| @@ -12,8 +12,8 @@ from ..utils import ( | ||||
|     compat_urllib_parse, | ||||
|     compat_urllib_request, | ||||
|     urlencode_postdata, | ||||
|  | ||||
|     ExtractorError, | ||||
|     limit_length, | ||||
| ) | ||||
|  | ||||
|  | ||||
| @@ -37,6 +37,14 @@ class FacebookIE(InfoExtractor): | ||||
|             'duration': 38, | ||||
|             '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', | ||||
|         'only_matching': True, | ||||
| @@ -131,8 +139,7 @@ class FacebookIE(InfoExtractor): | ||||
|             video_title = self._html_search_regex( | ||||
|                 r'(?s)<span class="fbPhotosPhotoCaption".*?id="fbPhotoPageCaption"><span class="hasCaption">(.*?)</span>', | ||||
|                 webpage, 'alternative title', default=None) | ||||
|             if len(video_title) > 80 + 3: | ||||
|                 video_title = video_title[:80] + '...' | ||||
|             video_title = limit_length(video_title, 80) | ||||
|         if not video_title: | ||||
|             video_title = 'Facebook video #%s' % video_id | ||||
|  | ||||
|   | ||||
| @@ -1571,3 +1571,13 @@ except AttributeError: | ||||
|         if ret: | ||||
|             raise subprocess.CalledProcessError(ret, p.args, output=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