From b7a83ac72647854c90d8ffd734a7752c28532863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sat, 5 Nov 2022 18:20:22 +0100 Subject: [PATCH] [uploadir] update (#3162) - prevent extra HTTP request from redirects - add 'id' metadata field - set 'filename_fmt' and 'archive_fmt' --- gallery_dl/extractor/uploadir.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/gallery_dl/extractor/uploadir.py b/gallery_dl/extractor/uploadir.py index 8c532baa..eeafa127 100644 --- a/gallery_dl/extractor/uploadir.py +++ b/gallery_dl/extractor/uploadir.py @@ -10,8 +10,6 @@ from .common import Extractor, Message from .. import text -from email.utils import parsedate_tz -from datetime import datetime class UploadirFileExtractor(Extractor): @@ -19,6 +17,8 @@ class UploadirFileExtractor(Extractor): category = "uploadir" subcategory = "file" root = "https://uploadir.com" + filename_fmt = "{filename} ({id}).{extension}" + archive_fmt = "{id}" pattern = r"(?:https?://)?uploadir\.com/(?:user/)?u(?:ploads)?/([^/?#]+)" test = ( # image @@ -28,6 +28,7 @@ class UploadirFileExtractor(Extractor): "keyword": { "extension": "jpg", "filename": "Chloe and Rachel 4K jpg", + "id": "rd3t46ry", }, }), # archive @@ -37,6 +38,7 @@ class UploadirFileExtractor(Extractor): "keyword": { "extension": "zip", "filename": "NYAN-Mods-Pack#1", + "id": "gxe8ti9v", }, }), ("https://uploadir.com/uploads/rd3t46ry"), @@ -49,10 +51,11 @@ class UploadirFileExtractor(Extractor): def items(self): url = "{}/u/{}".format(self.root, self.file_id) - response = self.request(url, method="HEAD") + response = self.request(url, method="HEAD", allow_redirects=False) - if response.history: - extr = text.extract_from(self.request(response.url).text) + if 300 <= response.status_code < 400: + url = response.headers["Location"] + extr = text.extract_from(self.request(url).text) name = text.unescape(extr("

", "

").strip()) url = self.root + extr('class="form" action="', '"') @@ -67,13 +70,9 @@ class UploadirFileExtractor(Extractor): }) else: - hget = response.headers.get - hcd = hget("Content-Disposition") - hlm = hget("Last-Modified") - + hcd = response.headers.get("Content-Disposition") data = text.nameext_from_url(text.extr(hcd, 'filename="', '"')) - if hlm: - data["date"] = datetime(*parsedate_tz(hlm)[:6]) + data["id"] = self.file_id yield Message.Directory, data yield Message.Url, url, data