diff options
| author | 2021-02-16 21:35:52 -0500 | |
|---|---|---|
| committer | 2021-02-16 21:35:52 -0500 | |
| commit | fc83315c164afd74734adf27e0f7fec2011904aa (patch) | |
| tree | d5976be93924dc4cd76c41e5e3f13bb44b6516b3 /gallery_dl/extractor/deviantart.py | |
| parent | 2e29d2158d56879e5578dfabf9e8c0fa2e855ccf (diff) | |
New upstream version 1.16.5.upstream/1.16.5
Diffstat (limited to 'gallery_dl/extractor/deviantart.py')
| -rw-r--r-- | gallery_dl/extractor/deviantart.py | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/gallery_dl/extractor/deviantart.py b/gallery_dl/extractor/deviantart.py index a58401e..2eb3b28 100644 --- a/gallery_dl/extractor/deviantart.py +++ b/gallery_dl/extractor/deviantart.py @@ -176,10 +176,11 @@ class DeviantartExtractor(Extractor): @staticmethod def commit(deviation, target): url = target["src"] + name = target.get("filename") or url target = target.copy() target["filename"] = deviation["filename"] deviation["target"] = target - deviation["extension"] = target["extension"] = text.ext_from_url(url) + deviation["extension"] = target["extension"] = text.ext_from_url(name) return Message.Url, url, deviation def _commit_journal_html(self, deviation, journal): @@ -722,7 +723,7 @@ class DeviantartPopularExtractor(DeviantartExtractor): def deviations(self): return self.api.browse_popular( - self.search_term, self.time_range, self.category_path, self.offset) + self.search_term, self.time_range, self.offset) def prepare(self, deviation): DeviantartExtractor.prepare(self, deviation) @@ -917,13 +918,16 @@ class DeviantartOAuthAPI(): self.client_id, ) - def browse_popular(self, query=None, timerange=None, - category_path=None, offset=0): + def browse_popular(self, query=None, timerange=None, offset=0): """Yield popular deviations""" endpoint = "browse/popular" - params = {"q": query, "offset": offset, "limit": 120, - "timerange": timerange, "category_path": category_path, - "mature_content": self.mature} + params = { + "q" : query, + "limit" : 50 if self.metadata else 120, + "timerange" : timerange, + "offset" : offset, + "mature_content": self.mature, + } return self._pagination(endpoint, params) def browse_user_journals(self, username, offset=0): @@ -1127,13 +1131,31 @@ class DeviantartOAuthAPI(): self.log.info("Collecting folder information for '%s'", username) folders = self.gallery_folders(username) + # create 'folderid'-to-'folder' mapping + fmap = { + folder["folderid"]: folder + for folder in folders + } + # add parent names to folders, but ignore "Featured" as parent - fmap = {} featured = folders[0]["folderid"] - for folder in folders: - if folder["parent"] and folder["parent"] != featured: - folder["name"] = fmap[folder["parent"]] + "/" + folder["name"] - fmap[folder["folderid"]] = folder["name"] + done = False + + while not done: + done = True + for folder in folders: + parent = folder["parent"] + if not parent: + pass + elif parent == featured: + folder["parent"] = None + else: + parent = fmap[parent] + if parent["parent"]: + done = False + else: + folder["name"] = parent["name"] + "/" + folder["name"] + folder["parent"] = None # map deviationids to folder names dmap = collections.defaultdict(list) |
