From 294557fc576dddf477de722586bd44900c94d7af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sun, 10 Aug 2025 20:08:44 +0200 Subject: [PATCH] [tests/results] support testing 'post' metadata --- test/results/facebook.py | 42 ++++++++++++++++++++++++++++++++++++++-- test/test_results.py | 32 +++++++++++++++++++++--------- 2 files changed, 63 insertions(+), 11 deletions(-) diff --git a/test/results/facebook.py b/test/results/facebook.py index c54fa753..5e791574 100644 --- a/test/results/facebook.py +++ b/test/results/facebook.py @@ -260,7 +260,7 @@ __tests__ = ( "#url" : "https://www.facebook.com/facebook/photos_albums", "#class" : facebook.FacebookAlbumsExtractor, "#pattern" : facebook.FacebookSetExtractor.pattern, - "#results" : [ + "#results" : ( "https://www.facebook.com/media/set/?set=a.736550598516963&type=3", "https://www.facebook.com/media/set/?set=a.736550611850295&type=3", "https://www.facebook.com/media/set/?set=a.1198986285606723&type=3", @@ -269,7 +269,7 @@ __tests__ = ( "https://www.facebook.com/media/set/?set=a.1152503723588313&type=3", "https://www.facebook.com/media/set/?set=a.912647394240615&type=3", "https://www.facebook.com/media/set/?set=a.862611645910857&type=3", - ], + ), "id" : r"re:\d+", "thumbnail": {str, None}, @@ -293,6 +293,44 @@ __tests__ = ( { "#url" : "https://www.facebook.com/brando.cha.3/info", "#class" : facebook.FacebookInfoExtractor, + "#metadata": "post", + + "id" : "100046356937542", + "name" : "Throwaway Idk", + "username" : "brando.cha.3", + "url" : "https://www.facebook.com/brando.cha.3", + "alternate_name": "", + "profile_video" : None, + "set_id" : "", + "user_pfbid" : r"re:pfbid\w{64}", + "profilePhoto" : { + "id" : "104622291093002", + "url" : "https://www.facebook.com/photo/?fbid=104622291093002&set=a.104622317759666", + "viewer_image": { + "height": 1947, + "width" : 1928, + }, + }, + "profile_tabs" : [ + { + "id" : "YXBwX3NlY3Rpb246MTAwMDQ2MzU2OTM3NTQyOjIzNTYzMTgzNDk=", + "name" : "Friends", + "tracking": "friends", + "url" : "https://www.facebook.com/brando.cha.3/friends", + }, + { + "id" : "YXBwX3NlY3Rpb246MTAwMDQ2MzU2OTM3NTQyOjIzMDUyNzI3MzI=", + "name" : "Photos", + "tracking": "photos", + "url" : "https://www.facebook.com/brando.cha.3/photos", + }, + { + "id" : "YXBwX3NlY3Rpb246MTAwMDQ2MzU2OTM3NTQyOjE1NjA2NTMzMDQxNzQ1MTQ=", + "name" : "Videos", + "tracking": "user_videos", + "url" : "https://www.facebook.com/brando.cha.3/videos", + }, + ], }, ) diff --git a/test/test_results.py b/test/test_results.py index cd777619..cbcf0142 100644 --- a/test/test_results.py +++ b/test/test_results.py @@ -156,7 +156,9 @@ class TestExtractorResults(unittest.TestCase): config.set((), "image-range" , result["#range"]) config.set((), "chapter-range", result["#range"]) - tjob = ResultJob(extr, content=("#sha1_content" in result)) + tjob = ResultJob(extr, + content=("#sha1_content" in result), + format=(result.get("#metadata") != "post")) if "#exception" in result: with self.assertRaises(result["#exception"], msg="#exception"), \ @@ -261,7 +263,11 @@ class TestExtractorResults(unittest.TestCase): metadata = {k: v for k, v in result.items() if k[0] != "#"} if metadata: - for kwdict in tjob.kwdict_list: + if result.get("#metadata") == "post": + kwdicts = tjob.kwdict_post + else: + kwdicts = tjob.kwdict_list + for kwdict in kwdicts: self._test_kwdict(kwdict, metadata) def _test_kwdict(self, kwdict, tests, parent=None): @@ -345,7 +351,7 @@ class TestExtractorResults(unittest.TestCase): class ResultJob(job.DownloadJob): """Generate test-results for extractor runs""" - def __init__(self, url, parent=None, content=False): + def __init__(self, url, parent=None, content=False, format=True): job.DownloadJob.__init__(self, url, parent) self.queue = False self.content = content @@ -353,6 +359,7 @@ class ResultJob(job.DownloadJob): self.url_list = [] self.url_hash = hashlib.sha1() self.kwdict_list = [] + self.kwdict_post = [] self.kwdict_hash = hashlib.sha1() self.archive_list = [] self.archive_hash = hashlib.sha1() @@ -363,12 +370,17 @@ class ResultJob(job.DownloadJob): else: self._update_content = lambda url, kwdict: None - self.format_directory = TestFormatter( - "".join(self.extractor.directory_fmt)).format_map - self.format_filename = TestFormatter( - self.extractor.filename_fmt).format_map - self.format_archive = TestFormatter( - self.extractor.archive_fmt).format_map + if format: + self.format_directory = TestFormatter( + "".join(self.extractor.directory_fmt)).format_map + self.format_filename = TestFormatter( + self.extractor.filename_fmt).format_map + self.format_archive = TestFormatter( + self.extractor.archive_fmt).format_map + else: + self.format_directory = \ + self.format_filename = \ + self.format_archive = lambda kwdict: "" def run(self): self._init() @@ -401,6 +413,8 @@ class ResultJob(job.DownloadJob): def _update_kwdict(self, kwdict, to_list=True): if to_list: self.kwdict_list.append(kwdict.copy()) + else: + self.kwdict_post.append(kwdict.copy()) kwdict = util.filter_dict(kwdict) self.kwdict_hash.update( json.dumps(kwdict, sort_keys=True, default=str).encode())