Skip to content

Commit

Permalink
[facebook] evaluate 'directory' per photo (#6874)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikf committed Jan 24, 2025
1 parent 4904186 commit acaae40
Showing 1 changed file with 14 additions and 21 deletions.
35 changes: 14 additions & 21 deletions gallery_dl/extractor/facebook.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,8 +238,9 @@ def photo_page_request_wrapper(self, url, **kwargs):

return res

def extract_set(self, first_photo_id, set_id):
all_photo_ids = [first_photo_id]
def extract_set(self, set_data):
set_id = set_data["set_id"]
all_photo_ids = [set_data["first_photo_id"]]

retries = 0
i = 0
Expand All @@ -252,7 +253,6 @@ def extract_set(self, first_photo_id, set_id):
photo_page = self.photo_page_request_wrapper(photo_url).text

photo = self.parse_photo_page(photo_page)
photo["set_id"] = set_id
photo["num"] = i + 1

if self.author_followups:
Expand Down Expand Up @@ -281,9 +281,11 @@ def extract_set(self, first_photo_id, set_id):
retries = 0
else:
retries = 0
photo.update(set_data)
yield Message.Directory, photo
yield Message.Url, photo["url"], photo

if photo["next_photo_id"] == "":
if not photo["next_photo_id"]:
self.log.debug(
"Can't find next image in the set. "
"Extraction is over."
Expand Down Expand Up @@ -322,15 +324,11 @@ def items(self):

set_url = self.set_url_fmt.format(set_id=set_id)
set_page = self.request(set_url).text
set_data = self.parse_set_page(set_page)
if self.groups[2]:
set_data["first_photo_id"] = self.groups[2]

directory = self.parse_set_page(set_page)

yield Message.Directory, directory

yield from self.extract_set(
self.groups[2] or directory["first_photo_id"],
directory["set_id"]
)
return self.extract_set(set_data)


class FacebookPhotoExtractor(FacebookExtractor):
Expand Down Expand Up @@ -436,13 +434,8 @@ def items(self):
if set_id:
set_url = self.set_url_fmt.format(set_id=set_id)
set_page = self.request(set_url).text
set_data = self.parse_set_page(set_page)
return self.extract_set(set_data)

directory = self.parse_set_page(set_page)

yield Message.Directory, directory

yield from self.extract_set(
directory["first_photo_id"], directory["set_id"]
)
else:
self.log.debug("Profile photos set ID not found.")
self.log.debug("Profile photos set ID not found.")
return iter(())

0 comments on commit acaae40

Please sign in to comment.