diff --git a/gallery_dl/extractor/behance.py b/gallery_dl/extractor/behance.py index 71d3320c..994a7016 100644 --- a/gallery_dl/extractor/behance.py +++ b/gallery_dl/extractor/behance.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2018-2021 Mike Fährmann +# Copyright 2018-2022 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 @@ -84,7 +84,7 @@ class BehanceGalleryExtractor(BehanceExtractor): }), # 'video' modules (#1282) ("https://www.behance.net/gallery/101185577/COLCCI", { - "pattern": r"ytdl:https://adobeprod-a\.akamaihd\.net/", + "pattern": r"ytdl:https://cdn-prod-ccv\.adobe\.com/", "count": 3, }), ) diff --git a/gallery_dl/extractor/dynastyscans.py b/gallery_dl/extractor/dynastyscans.py index ab1044f2..e5c5c017 100644 --- a/gallery_dl/extractor/dynastyscans.py +++ b/gallery_dl/extractor/dynastyscans.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2015-2021 Mike Fährmann +# Copyright 2015-2022 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 @@ -115,8 +115,8 @@ class DynastyscansSearchExtractor(DynastyscansBase, Extractor): pattern = BASE_PATTERN + r"/images/?(?:\?([^#]+))?$" test = ( ("https://dynasty-scans.com/images?with[]=4930&with[]=5211", { - "url": "6b570eedd8a741c2cd34fb98b22a49d772f84191", - "keyword": "fa7ff94f82cdf942f7734741d758f160a6b0905a", + "url": "22cf0fb64e12b29e79b0a3d26666086a48f9916a", + "keyword": "11cbc555a15528d25567977b8808e10369c4c3ee", }), ("https://dynasty-scans.com/images", { "range": "1", diff --git a/gallery_dl/extractor/exhentai.py b/gallery_dl/extractor/exhentai.py index cf9706bc..c23c36ff 100644 --- a/gallery_dl/extractor/exhentai.py +++ b/gallery_dl/extractor/exhentai.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2014-2021 Mike Fährmann +# Copyright 2014-2022 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 @@ -122,7 +122,7 @@ class ExhentaiGalleryExtractor(ExhentaiExtractor): "date": "dt:2018-03-18 20:15:00", "eh_category": "Non-H", "expunged": False, - "favorites": "19", + "favorites": "20", "filecount": "4", "filesize": 1488978, "gid": 1200119, @@ -137,7 +137,7 @@ class ExhentaiGalleryExtractor(ExhentaiExtractor): "parody:komi-san wa komyushou desu.", "character:shouko komi", "group:seventh lowlife", - "sample", + "other:sample", ], "thumb": "https://exhentai.org/t/ce/0a/ce0a5bcb583229a9b07c0f8" "3bcb1630ab1350640-624622-736-1036-jpg_250.jpg", diff --git a/gallery_dl/extractor/foolfuuka.py b/gallery_dl/extractor/foolfuuka.py index 6ddd6894..04e5926b 100644 --- a/gallery_dl/extractor/foolfuuka.py +++ b/gallery_dl/extractor/foolfuuka.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2019-2021 Mike Fährmann +# Copyright 2019-2022 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 @@ -122,7 +122,7 @@ class FoolfuukaThreadExtractor(FoolfuukaExtractor): "url": "d309713d2f838797096b3e9cb44fe514a9c9d07a", }), ("https://desuarchive.org/a/thread/159542679/", { - "url": "2bddbe03b01b4630337f6916f6df36d1d443b7b8", + "url": "e7d624aded15a069194e38dc731ec23217a422fb", }), ("https://boards.fireden.net/sci/thread/11264294/", { "url": "61cab625c95584a12a30049d054931d64f8d20aa", @@ -131,10 +131,10 @@ class FoolfuukaThreadExtractor(FoolfuukaExtractor): "url": "bbe6f82944a45e359f5c8daf53f565913dc13e4f", }), ("https://rbt.asia/g/thread/61487650/", { - "url": "b4692707cddb4ad1c9ba1cde77c4703025cb86e5", + "url": "fadd274b25150a1bdf03a40c58db320fa3b617c4", }), ("https://archive.rebeccablacktech.com/g/thread/61487650/", { - "url": "b4692707cddb4ad1c9ba1cde77c4703025cb86e5", + "url": "fadd274b25150a1bdf03a40c58db320fa3b617c4", }), ("https://thebarchive.com/b/thread/739772332/", { "url": "e8b18001307d130d67db31740ce57c8561b5d80c", diff --git a/gallery_dl/extractor/gelbooru_v02.py b/gallery_dl/extractor/gelbooru_v02.py index 8da0bde9..7e16a518 100644 --- a/gallery_dl/extractor/gelbooru_v02.py +++ b/gallery_dl/extractor/gelbooru_v02.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2021 Mike Fährmann +# Copyright 2021-2022 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 @@ -122,9 +122,9 @@ class GelbooruV02TagExtractor(GelbooruV02Extractor): pattern = BASE_PATTERN + r"/index\.php\?page=post&s=list&tags=([^&#]+)" test = ( ("https://rule34.xxx/index.php?page=post&s=list&tags=danraku", { - "content": "97e4bbf86c3860be18de384d02d544251afe1d45", + "content": "622e80be3f496672c44aab5c47fbc6941c61bc79", "pattern": r"https?://.*rule34\.xxx/images/\d+/[0-9a-f]+\.jpg", - "count": 1, + "count": 2, }), ("https://safebooru.org/index.php?page=post&s=list&tags=bonocho", { "url": "17c61b386530cf4c30842c9f580d15ef1cd09586", diff --git a/gallery_dl/extractor/hitomi.py b/gallery_dl/extractor/hitomi.py index cc8c512f..34eaaaba 100644 --- a/gallery_dl/extractor/hitomi.py +++ b/gallery_dl/extractor/hitomi.py @@ -39,12 +39,10 @@ class HitomiGalleryExtractor(GalleryExtractor): }), # Game CG with scenes (#321) ("https://hitomi.la/galleries/733697.html", { - "url": "c334e6fa571ebc429c125fe6dde0acc32387b42a", "count": 210, }), # fallback for galleries only available through /reader/ URLs ("https://hitomi.la/galleries/1045954.html", { - "url": "392f82f18a59529d99e908f8995f396fddfcdfd0", "count": 1413, }), # gallery with "broken" redirect diff --git a/gallery_dl/extractor/luscious.py b/gallery_dl/extractor/luscious.py index 6761b552..b5db3dd5 100644 --- a/gallery_dl/extractor/luscious.py +++ b/gallery_dl/extractor/luscious.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2016-2021 Mike Fährmann +# Copyright 2016-2022 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 @@ -72,7 +72,7 @@ class LusciousAlbumExtractor(LusciousExtractor): "permissions" : list, "rating" : float, "slug" : "okinami-no-koigokoro", - "status" : str, + "status" : None, "tags" : list, "title" : "Okinami no Koigokoro", "url" : "/albums/okinami-no-koigokoro_277031/", @@ -92,7 +92,7 @@ class LusciousAlbumExtractor(LusciousExtractor): "like_status" : "none", "position" : int, "resolution" : r"re:\d+x\d+", - "status" : str, + "status" : None, "tags" : list, "thumbnail" : str, "title" : str, diff --git a/gallery_dl/extractor/mangahere.py b/gallery_dl/extractor/mangahere.py index 653c61a2..f655f94d 100644 --- a/gallery_dl/extractor/mangahere.py +++ b/gallery_dl/extractor/mangahere.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -# Copyright 2015-2020 Mike Fährmann +# Copyright 2015-2022 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 # published by the Free Software Foundation. -"""Extract manga-chapters and entire manga from https://www.mangahere.cc/""" +"""Extractors for https://www.mangahere.cc/""" from .common import ChapterExtractor, MangaExtractor from .. import text @@ -91,11 +91,12 @@ class MangahereMangaExtractor(MangahereBase, MangaExtractor): """Extractor for manga from mangahere.cc""" chapterclass = MangahereChapterExtractor pattern = (r"(?:https?://)?(?:www\.|m\.)?mangahere\.c[co]" - r"(/manga/[^/]+)/?(?:#.*)?$") + r"(/manga/[^/?#]+/?)(?:#.*)?$") test = ( ("https://www.mangahere.cc/manga/aria/", { - "url": "23ad9256f7392de5973b79a36f6875e9fdcb7563", - "keyword": "79e326641e7d5d2fed43a1eb9949471b8162a9e0", + "url": "dc7f8954efbe87d9fd670c54e5edb5230c01f767", + "keyword": "864524eed2dc6a73e366f6ba400b80d894f99b5a", + "count": 69, }), ("https://www.mangahere.cc/manga/hiyokoi/#50", { "url": "654850570aa03825cd57e2ae2904af489602c523", diff --git a/gallery_dl/extractor/pillowfort.py b/gallery_dl/extractor/pillowfort.py index 3c3fcd49..bdd9f211 100644 --- a/gallery_dl/extractor/pillowfort.py +++ b/gallery_dl/extractor/pillowfort.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2021 Mike Fährmann +# Copyright 2021-2022 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 @@ -145,7 +145,7 @@ class PillowfortPostExtractor(PillowfortExtractor): "id": int, "last_activity": str, "last_activity_elapsed": str, - "last_edited_at": None, + "last_edited_at": str, "likes_count": int, "media_type": "picture", "nsfw": False, @@ -169,7 +169,7 @@ class PillowfortPostExtractor(PillowfortExtractor): "tags": list, "time_elapsed": str, "timestamp": str, - "title": "What is Pillowfort.io? ", + "title": "What is Pillowfort.social?", "updated_at": str, "url": r"re:https://img3.pillowfort.social/posts/.*\.png", "user_id": 5, diff --git a/gallery_dl/extractor/tapas.py b/gallery_dl/extractor/tapas.py index 9b06f92d..fcdf18fa 100644 --- a/gallery_dl/extractor/tapas.py +++ b/gallery_dl/extractor/tapas.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2021 Mike Fährmann +# Copyright 2021-2022 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 @@ -150,7 +150,7 @@ class TapasEpisodeExtractor(TapasExtractor): subcategory = "episode" pattern = BASE_PATTERN + r"/episode/(\d+)" test = ("https://tapas.io/episode/2068651", { - "url": "f122b05648a9f53c2ddb2f6854a7a80ab946e9e8", + "url": "0b53644c864a0a097f65accea6bb620be9671078", "pattern": "^text:", "keyword": { "book": True, @@ -173,7 +173,7 @@ class TapasEpisodeExtractor(TapasExtractor): "publish_date": "2021-02-23T16:02:07Z", "read": bool, "related_ep_id": None, - "relative_publish_date": "Feb 23", + "relative_publish_date": "Feb 23, 2021", "scene": 2, "scheduled": False, "title": "You are a Tomb Raider (2)", diff --git a/gallery_dl/extractor/unsplash.py b/gallery_dl/extractor/unsplash.py index 16779293..2405dc3a 100644 --- a/gallery_dl/extractor/unsplash.py +++ b/gallery_dl/extractor/unsplash.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2021 Mike Fährmann +# Copyright 2021-2022 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 @@ -121,7 +121,7 @@ class UnsplashImageExtractor(UnsplashExtractor): "total_collections": int, "total_likes": int, "total_photos": int, - "twitter_username": "dave_hoefler", + "twitter_username": None, "updated_at": str, "username": "davehoefler", }, diff --git a/gallery_dl/extractor/vk.py b/gallery_dl/extractor/vk.py index 9724c4b7..ed565bc3 100644 --- a/gallery_dl/extractor/vk.py +++ b/gallery_dl/extractor/vk.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2021 Mike Fährmann +# Copyright 2021-2022 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 @@ -75,8 +75,8 @@ class VkPhotosExtractor(VkExtractor): r"|(?!album-?\d+_)([^/?#]+))") test = ( ("https://vk.com/id398982326", { - "pattern": r"https://sun\d+-\d+\.userapi\.com/c\d+/v\d+" - r"/[0-9a-f]+/[\w-]+\.jpg", + "pattern": r"https://sun\d+-\d+\.userapi\.com/sun\d+-\d+" + r"/c\d+/v\d+/[0-9a-f]+/[\w-]+\.jpg", "count": ">= 35", "keywords": { "id": r"re:\d+", diff --git a/gallery_dl/extractor/wikiart.py b/gallery_dl/extractor/wikiart.py index f68cb858..05f27f1c 100644 --- a/gallery_dl/extractor/wikiart.py +++ b/gallery_dl/extractor/wikiart.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2019-2021 Mike Fährmann +# Copyright 2019-2022 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 @@ -70,8 +70,8 @@ class WikiartArtistExtractor(WikiartExtractor): directory_fmt = ("{category}", "{artist[artistName]}") pattern = BASE_PATTERN + r"/(?!\w+-by-)([\w-]+)/?$" test = ("https://www.wikiart.org/en/thomas-cole", { - "url": "deabec0ed7efa97e2a729ff9d08b539143106bac", - "keyword": "751a5457b71c8704982d3bb6485a214cd3d07bf9", + "url": "8514d743382720e6fdab7c9a73faf9e1ec940cfb", + "keyword": "58037afba35bfd7b4101c2316975a75d4ee92a68", }) def __init__(self, match):