From 7a2f15348f2c83b6a517684822f5d423c3b1c492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Fri, 9 Jan 2026 15:36:55 +0100 Subject: [PATCH] [imagetwist:gallery] extract 'gallery_title' & 'gallery_id' metadata --- gallery_dl/extractor/imagehosts.py | 23 +++++++++++++++-------- test/results/imagetwist.py | 9 +++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/gallery_dl/extractor/imagehosts.py b/gallery_dl/extractor/imagehosts.py index 9cc83baa..344730df 100644 --- a/gallery_dl/extractor/imagehosts.py +++ b/gallery_dl/extractor/imagehosts.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2016-2025 Mike Fährmann +# Copyright 2016-2026 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 @@ -205,8 +205,8 @@ class ImagevenueImageExtractor(ImagehostImageExtractor): class ImagetwistImageExtractor(ImagehostImageExtractor): """Extractor for single images from imagetwist.com""" category = "imagetwist" - pattern = (r"(?:https?://)?((?:www\.|phun\.)?" - r"image(?:twist|haha)\.com/([a-z0-9]{12}))") + pattern = (r"(?:https?://)?((?:www\.|phun\.)?image(?:twist|haha)\.com" + r"/([a-z0-9]{12}))") example = "https://imagetwist.com/123456abcdef/NAME.EXT" @property @@ -227,18 +227,24 @@ class ImagetwistGalleryExtractor(ImagehostImageExtractor): category = "imagetwist" subcategory = "gallery" pattern = (r"(?:https?://)?((?:www\.|phun\.)?image(?:twist|haha)\.com/(" - r"p/[^/?#]+/\d+|" + r"p/[^/?#]+/(\d+)|" r"\?[^#]*\bfld_id=\d+[^#]*&page=\d+))") example = "https://imagetwist.com/p/USER/12345/TITLE" def items(self): url = self.page_url root = url[:url.find("/", 8)] - data = {"_extractor": ImagetwistImageExtractor} + page = self.request(url).text + + extr = text.extract_from(page) + data = { + "_extractor" : ImagetwistImageExtractor, + "gallery_title": text.unescape(extr('page_main_title">', "<")), + "gallery_id" : self.groups[2] or extr("&fld_id=", "&"), + } + del extr while True: - page = self.request(url).text - gallery = text.extr(page, 'class="gallerys', "