diff options
Diffstat (limited to 'gallery_dl/extractor/subscribestar.py')
| -rw-r--r-- | gallery_dl/extractor/subscribestar.py | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/gallery_dl/extractor/subscribestar.py b/gallery_dl/extractor/subscribestar.py index 989e6cc..280c8d7 100644 --- a/gallery_dl/extractor/subscribestar.py +++ b/gallery_dl/extractor/subscribestar.py @@ -46,14 +46,20 @@ class SubscribestarExtractor(Extractor): content, "<body>", "</body>") data["title"] = text.unescape(text.rextr(content, "<h1>", "</h1>")) - yield Message.Directory, data + yield Message.Directory, "", data for num, item in enumerate(media, 1): item.update(data) item["num"] = num - text.nameext_from_url(item.get("name") or item["url"], item) - if item["url"][0] == "/": - item["url"] = self.root + item["url"] - yield Message.Url, item["url"], item + + url = item["url"] + if name := (item.get("name") or item.get("original_filename")): + text.nameext_from_name(name, item) + else: + text.nameext_from_url(url, item) + + if url[0] == "/": + url = f"{self.root}{url}" + yield Message.Url, url, item def posts(self): """Yield HTML content of all relevant posts""" @@ -155,7 +161,7 @@ class SubscribestarExtractor(Extractor): attachments = text.extr( html, 'class="uploads-docs"', 'class="post-edit_form"') if attachments: - for att in util.re(r'class="doc_preview[" ]').split( + for att in text.re(r'class="doc_preview[" ]').split( attachments)[1:]: media.append({ "id" : text.parse_int(text.extr( @@ -169,7 +175,7 @@ class SubscribestarExtractor(Extractor): audios = text.extr( html, 'class="uploads-audios"', 'class="post-edit_form"') if audios: - for audio in util.re(r'class="audio_preview-data[" ]').split( + for audio in text.re(r'class="audio_preview-data[" ]').split( audios)[1:]: media.append({ "id" : text.parse_int(text.extr( @@ -202,9 +208,9 @@ class SubscribestarExtractor(Extractor): def _parse_datetime(self, dt): if dt.startswith("Updated on "): dt = dt[11:] - date = text.parse_datetime(dt, "%b %d, %Y %I:%M %p") + date = self.parse_datetime(dt, "%b %d, %Y %I:%M %p") if date is dt: - date = text.parse_datetime(dt, "%B %d, %Y %I:%M %p") + date = self.parse_datetime(dt, "%B %d, %Y %I:%M %p") return date def _warn_preview(self): @@ -215,7 +221,7 @@ class SubscribestarExtractor(Extractor): class SubscribestarUserExtractor(SubscribestarExtractor): """Extractor for media from a subscribestar user""" subcategory = "user" - pattern = BASE_PATTERN + r"/(?!posts/)([^/?#]+)" + pattern = rf"{BASE_PATTERN}/(?!posts/)([^/?#]+)" example = "https://www.subscribestar.com/USER" def posts(self): @@ -237,7 +243,7 @@ class SubscribestarUserExtractor(SubscribestarExtractor): class SubscribestarPostExtractor(SubscribestarExtractor): """Extractor for media from a single subscribestar post""" subcategory = "post" - pattern = BASE_PATTERN + r"/posts/(\d+)" + pattern = rf"{BASE_PATTERN}/posts/(\d+)" example = "https://www.subscribestar.com/posts/12345" def posts(self): |
