diff options
Diffstat (limited to 'gallery_dl/extractor/ao3.py')
| -rw-r--r-- | gallery_dl/extractor/ao3.py | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/gallery_dl/extractor/ao3.py b/gallery_dl/extractor/ao3.py index d3ab846..2652acb 100644 --- a/gallery_dl/extractor/ao3.py +++ b/gallery_dl/extractor/ao3.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Mike Fährmann +# Copyright 2024-2025 Mike Fährmann # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as @@ -8,7 +8,7 @@ """Extractors for https://archiveofourown.org/""" -from .common import Extractor, Message +from .common import Extractor, Message, Dispatch from .. import text, util, exception from ..cache import cache @@ -135,7 +135,7 @@ class Ao3WorkExtractor(Ao3Extractor): self.login() work_id = self.groups[0] - url = "{}/works/{}".format(self.root, work_id) + url = f"{self.root}/works/{work_id}" response = self.request(url, notfound="work") if response.url.endswith("/users/login?restricted=true"): @@ -144,7 +144,7 @@ class Ao3WorkExtractor(Ao3Extractor): page = response.text if len(page) < 20000 and \ '<h2 class="landmark heading">Adult Content Warning</' in page: - raise exception.StopExtraction("Adult Content") + raise exception.AbortExtraction("Adult Content") extr = text.extract_from(page) @@ -205,8 +205,7 @@ class Ao3WorkExtractor(Ao3Extractor): } data["language"] = util.code_to_language(data["lang"]) - series = data["series"] - if series: + if series := data["series"]: extr = text.extract_from(series) data["series"] = { "prev" : extr(' class="previous" href="/works/', '"'), @@ -249,18 +248,14 @@ class Ao3SearchExtractor(Ao3Extractor): example = "https://archiveofourown.org/works/search?work_search[query]=air" -class Ao3UserExtractor(Ao3Extractor): +class Ao3UserExtractor(Dispatch, Ao3Extractor): """Extractor for an AO3 user profile""" - subcategory = "user" pattern = (BASE_PATTERN + r"/users/([^/?#]+(?:/pseuds/[^/?#]+)?)" r"(?:/profile)?/?(?:$|\?|#)") example = "https://archiveofourown.org/users/USER" - def initialize(self): - pass - def items(self): - base = "{}/users/{}/".format(self.root, self.groups[0]) + base = f"{self.root}/users/{self.groups[0]}/" return self._dispatch_extractors(( (Ao3UserWorksExtractor , base + "works"), (Ao3UserSeriesExtractor , base + "series"), |
