diff --git a/gallery_dl/extractor/2chan.py b/gallery_dl/extractor/2chan.py index 38b2d5a8..f5125eea 100644 --- a/gallery_dl/extractor/2chan.py +++ b/gallery_dl/extractor/2chan.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2017-2021 Mike Fährmann +# Copyright 2017-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 @@ -13,7 +13,7 @@ from .. import text class _2chanThreadExtractor(Extractor): - """Extractor for images from threads on www.2chan.net""" + """Extractor for 2chan threads""" category = "2chan" subcategory = "thread" directory_fmt = ("{category}", "{board_name}", "{thread}") @@ -21,9 +21,24 @@ class _2chanThreadExtractor(Extractor): archive_fmt = "{board}_{thread}_{tim}" url_fmt = "https://{server}.2chan.net/{board}/src/{filename}" pattern = r"(?:https?://)?([\w-]+)\.2chan\.net/([^/]+)/res/(\d+)" - test = ("http://dec.2chan.net/70/res/4752.htm", { - "url": "f49aa31340e9a3429226af24e19e01f5b819ca1f", - "keyword": "44599c21b248e79692b2eb2da12699bd0ed5640a", + test = ("https://dec.2chan.net/70/res/14565.htm", { + "pattern": r"https://dec\.2chan\.net/70/src/\d{13}\.jpg", + "count": ">= 3", + "keyword": { + "board": "70", + "board_name": "新板提案", + "com": str, + "fsize": r"re:\d+", + "name": "名無し", + "no": r"re:1[45]\d\d\d", + "now": r"re:22/../..\(.\)..:..:..", + "post": "無題", + "server": "dec", + "thread": "14565", + "tim": r"re:^\d{13}$", + "time": r"re:^\d{10}$", + "title": "ヒロアカ板" + }, }) def __init__(self, match): diff --git a/gallery_dl/extractor/500px.py b/gallery_dl/extractor/500px.py index 88ceaebc..b2ae9633 100644 --- a/gallery_dl/extractor/500px.py +++ b/gallery_dl/extractor/500px.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 @@ -261,7 +261,7 @@ class _500pxImageExtractor(_500pxExtractor): "tags": list, "taken_at": "2017-05-04T17:36:51+00:00", "times_viewed": int, - "url": "/photo/222049255/Queen-Of-Coasts-by-Olesya-Nabieva", + "url": "/photo/222049255/Queen-Of-Coasts-by-Alice-Nabieva", "user": dict, "user_id": 12847235, "votes_count": int, diff --git a/gallery_dl/extractor/8kun.py b/gallery_dl/extractor/8kun.py index 9232f88c..5d260b9c 100644 --- a/gallery_dl/extractor/8kun.py +++ b/gallery_dl/extractor/8kun.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Mike Fährmann +# Copyright 2020-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 @@ -26,10 +26,10 @@ class _8kunThreadExtractor(Extractor): "count": ">= 8", }), # old-style file URLs (#1101) - ("https://8kun.top/d/res/13258.html", { - "pattern": r"https://media\.8kun\.top/d/src/\d+(-\d)?\.\w+", - "range": "1-20", - }), + # ("https://8kun.top/d/res/13258.html", { + # "pattern": r"https://media\.8kun\.top/d/src/\d+(-\d)?\.\w+", + # "range": "1-20", + # }), ) def __init__(self, match): diff --git a/gallery_dl/extractor/8muses.py b/gallery_dl/extractor/8muses.py index 3cd9c3ae..fe57412f 100644 --- a/gallery_dl/extractor/8muses.py +++ b/gallery_dl/extractor/8muses.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 @@ -55,7 +55,7 @@ class _8musesAlbumExtractor(Extractor): }, }), # custom sorting - ("https://www.8muses.com/comics/album/Fakku-Comics/9?sort=az", { + ("https://www.8muses.com/comics/album/Fakku-Comics/11?sort=az", { "count": ">= 70", "keyword": {"name": r"re:^[R-Zr-z]"}, }), diff --git a/gallery_dl/extractor/artstation.py b/gallery_dl/extractor/artstation.py index e686c708..19b9d97d 100644 --- a/gallery_dl/extractor/artstation.py +++ b/gallery_dl/extractor/artstation.py @@ -147,14 +147,15 @@ class ArtstationUserExtractor(ArtstationExtractor): r"/(?!artwork|projects|search)([^/?#]+)(?:/albums/all)?" r"|((?!www)\w+)\.artstation\.com(?:/projects)?)/?$") test = ( - ("https://www.artstation.com/gaerikim/", { + ("https://www.artstation.com/sungchoi/", { "pattern": r"https://\w+\.artstation\.com/p/assets/images" r"/images/\d+/\d+/\d+/(4k|large|medium|small)/[^/]+", - "count": ">= 6", + "range": "1-10", + "count": ">= 10", }), - ("https://www.artstation.com/gaerikim/albums/all/"), - ("https://gaerikim.artstation.com/"), - ("https://gaerikim.artstation.com/projects/"), + ("https://www.artstation.com/sungchoi/albums/all/"), + ("https://sungchoi.artstation.com/"), + ("https://sungchoi.artstation.com/projects/"), ) def projects(self): @@ -400,7 +401,7 @@ class ArtstationFollowingExtractor(ArtstationExtractor): subcategory = "following" pattern = (r"(?:https?://)?(?:www\.)?artstation\.com" r"/(?!artwork|projects|search)([^/?#]+)/following") - test = ("https://www.artstation.com/gaerikim/following", { + test = ("https://www.artstation.com/sungchoi/following", { "pattern": ArtstationUserExtractor.pattern, "count": ">= 50", }) diff --git a/gallery_dl/extractor/blogger.py b/gallery_dl/extractor/blogger.py index eef87f9d..21ca9914 100644 --- a/gallery_dl/extractor/blogger.py +++ b/gallery_dl/extractor/blogger.py @@ -136,9 +136,9 @@ class BloggerPostExtractor(BloggerExtractor): "pattern": r"https://.+\.googlevideo\.com/videoplayback", }), # image URLs with width/height (#1061) - ("https://aaaninja.blogspot.com/2020/08/altera-boob-press-2.html", { - "pattern": r"https://1.bp.blogspot.com/.+/s0/altera_.+png", - }), + # ("https://aaaninja.blogspot.com/2020/08/altera-boob-press-2.html", { + # "pattern": r"https://1.bp.blogspot.com/.+/s0/altera_.+png", + # }), # new image domain (#2204) (("https://randomthingsthroughmyletterbox.blogspot.com/2022/01" "/bitter-flowers-by-gunnar-staalesen-blog.html"), { diff --git a/gallery_dl/extractor/danbooru.py b/gallery_dl/extractor/danbooru.py index f21817e5..ec0db681 100644 --- a/gallery_dl/extractor/danbooru.py +++ b/gallery_dl/extractor/danbooru.py @@ -181,7 +181,8 @@ class DanbooruTagExtractor(DanbooruExtractor): # 'external' option (#1747) ("https://danbooru.donmai.us/posts?tags=pixiv_id%3A1476533", { "options": (("external", True),), - "pattern": r"http://img16.pixiv.net/img/takaraakihito/1476533.jpg", + "pattern": r"https://i\.pximg\.net/img-original/img" + r"/2008/08/28/02/35/48/1476533_p0\.jpg", }), ("https://e621.net/posts?tags=anry", { "url": "8021e5ea28d47c474c1ffc9bd44863c4d45700ba", diff --git a/gallery_dl/extractor/deviantart.py b/gallery_dl/extractor/deviantart.py index 70bee527..39ae4845 100644 --- a/gallery_dl/extractor/deviantart.py +++ b/gallery_dl/extractor/deviantart.py @@ -671,12 +671,12 @@ class DeviantartCollectionExtractor(DeviantartExtractor): test = ( (("https://www.deviantart.com/pencilshadings/favourites" "/70595441/3D-Favorites"), { - "count": ">= 20", + "count": ">= 15", "options": (("original", False),), }), (("https://www.deviantart.com/pencilshadings/favourites" "/F050486B-CB62-3C66-87FB-1105A7F6379F/3D Favorites"), { - "count": ">= 20", + "count": ">= 15", "options": (("original", False),), }), ("https://pencilshadings.deviantart.com" @@ -876,8 +876,9 @@ class DeviantartDeviationExtractor(DeviantartExtractor): }), # GIF (#242) (("https://www.deviantart.com/skatergators/art/COM-Moni-781571783"), { - "pattern": (r"https://images-wixmp-\w+\.wixmp\.com" - r"/f/[^/]+/[^.]+\.gif\?token="), + "pattern": r"https://wixmp-\w+\.wixmp\.com/f/03fd2413-efe9-4e5c-" + r"8734-2b72605b3fbb/dcxbsnb-1bbf0b38-42af-4070-8878-" + r"f30961955bec\.gif\?token=ey...", }), # Flash animation with GIF preview (#1731) ("https://www.deviantart.com/yuumei/art/Flash-Comic-214724929", { diff --git a/gallery_dl/extractor/exhentai.py b/gallery_dl/extractor/exhentai.py index 36b89f78..27206913 100644 --- a/gallery_dl/extractor/exhentai.py +++ b/gallery_dl/extractor/exhentai.py @@ -122,7 +122,7 @@ class ExhentaiGalleryExtractor(ExhentaiExtractor): "date": "dt:2018-03-18 20:15:00", "eh_category": "Non-H", "expunged": False, - "favorites": "21", + "favorites": r"re:^[12]\d$", "filecount": "4", "filesize": 1488978, "gid": 1200119, diff --git a/gallery_dl/extractor/gelbooru_v02.py b/gallery_dl/extractor/gelbooru_v02.py index bf9c9832..35a34484 100644 --- a/gallery_dl/extractor/gelbooru_v02.py +++ b/gallery_dl/extractor/gelbooru_v02.py @@ -149,7 +149,7 @@ 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": "622e80be3f496672c44aab5c47fbc6941c61bc79", + "content": "5c6ae9ee13e6d4bc9cb8bdce224c84e67fbfa36c", "pattern": r"https?://.*rule34\.xxx/images/\d+/[0-9a-f]+\.jpg", "count": 2, }), diff --git a/gallery_dl/extractor/hentaihand.py b/gallery_dl/extractor/hentaihand.py index c423b183..bf9e4641 100644 --- a/gallery_dl/extractor/hentaihand.py +++ b/gallery_dl/extractor/hentaihand.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2020-2021 Mike Fährmann +# Copyright 2020-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 @@ -22,12 +22,12 @@ class HentaihandGalleryExtractor(GalleryExtractor): (("https://hentaihand.com/en/comic/c75-takumi-na-muchi-choudenji-hou-" "no-aishi-kata-how-to-love-a-super-electromagnetic-gun-toaru-kagaku-" "no-railgun-english"), { - "pattern": r"https://cdn.hentaihand.com/.*/images/360468/\d+.jpg$", + "pattern": r"https://cdn.hentaihand.com/.*/images/37387/\d+.jpg$", "count": 50, "keyword": { "artists" : ["Takumi Na Muchi"], "date" : "dt:2014-06-28 00:00:00", - "gallery_id": 360468, + "gallery_id": 37387, "lang" : "en", "language" : "English", "parodies" : ["Toaru Kagaku No Railgun"], diff --git a/gallery_dl/extractor/imagefap.py b/gallery_dl/extractor/imagefap.py index 7922e845..b1c0e9e2 100644 --- a/gallery_dl/extractor/imagefap.py +++ b/gallery_dl/extractor/imagefap.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 @@ -36,13 +36,13 @@ class ImagefapGalleryExtractor(ImagefapExtractor): test = ( ("https://www.imagefap.com/pictures/7102714", { - "pattern": r"https://cdnh\.imagefap\.com" + "pattern": r"https://cdnh?\.imagefap\.com" r"/images/full/\d+/\d+/\d+\.jpg", "keyword": "2ba96e84c2952c4750e9fa94a3f2b1f965cec2f3", "content": "694a0a57385980a6f90fbc296cadcd6c11ba2dab", }), ("https://www.imagefap.com/gallery/5486966", { - "pattern": r"https://cdnh\.imagefap\.com" + "pattern": r"https://cdnh?\.imagefap\.com" r"/images/full/\d+/\d+/\d+\.jpg", "keyword": "3e24eace5b09639b881ebd393165862feb46adde", }), @@ -107,7 +107,7 @@ class ImagefapImageExtractor(ImagefapExtractor): pattern = BASE_PATTERN + r"/photo/(\d+)" test = ( ("https://www.imagefap.com/photo/1369341772/", { - "pattern": r"https://cdnh\.imagefap\.com" + "pattern": r"https://cdnh?\.imagefap\.com" r"/images/full/\d+/\d+/\d+\.jpg", "keyword": "8894e45f7262020d8d66ce59917315def1fc475b", }), @@ -156,10 +156,10 @@ class ImagefapUserExtractor(ImagefapExtractor): r"|usergallery\.php\?userid=(\d+))") test = ( ("https://www.imagefap.com/profile/LucyRae/galleries", { - "url": "d941aa906f56a75972a7a5283030eb9a8d27a4fd", + "url": "822cb6cbb6f474ca2d0f58d1d6d253bc2338937a", }), ("https://www.imagefap.com/usergallery.php?userid=1862791", { - "url": "d941aa906f56a75972a7a5283030eb9a8d27a4fd", + "url": "822cb6cbb6f474ca2d0f58d1d6d253bc2338937a", }), ("https://www.imagefap.com/profile.php?user=LucyRae"), ("https://beta.imagefap.com/profile.php?user=LucyRae"), diff --git a/gallery_dl/extractor/mangahere.py b/gallery_dl/extractor/mangahere.py index 461c92df..531aef48 100644 --- a/gallery_dl/extractor/mangahere.py +++ b/gallery_dl/extractor/mangahere.py @@ -95,9 +95,9 @@ class MangahereMangaExtractor(MangahereBase, MangaExtractor): r"(/manga/[^/?#]+/?)(?:#.*)?$") test = ( ("https://www.mangahere.cc/manga/aria/", { - "url": "dc7f8954efbe87d9fd670c54e5edb5230c01f767", - "keyword": "864524eed2dc6a73e366f6ba400b80d894f99b5a", - "count": 69, + "url": "9c2e54ec42e9a87ad53096c328b33c90750af3e4", + "keyword": "71503c682c5d0c277a50409a8c5fd78e871e3d69", + "count": 71, }), ("https://www.mangahere.cc/manga/hiyokoi/#50", { "url": "654850570aa03825cd57e2ae2904af489602c523", diff --git a/gallery_dl/extractor/mangakakalot.py b/gallery_dl/extractor/mangakakalot.py index 6b0a3249..ba55ac16 100644 --- a/gallery_dl/extractor/mangakakalot.py +++ b/gallery_dl/extractor/mangakakalot.py @@ -26,18 +26,14 @@ class MangakakalotChapterExtractor(MangakakalotBase, ChapterExtractor): """Extractor for manga chapters from mangakakalot.tv""" pattern = BASE_PATTERN + r"(/chapter/[^/?#]+/chapter[_-][^/?#]+)" test = ( - ("https://ww.mangakakalot.tv/chapter/manga-hl984546/chapter-6", { + ("https://ww3.mangakakalot.tv/chapter/manga-jk986845/chapter-34.2", { "pattern": r"https://cm\.blazefast\.co" r"/[0-9a-f]{2}/[0-9a-f]{2}/[0-9a-f]{32}\.jpg", - "keyword": "e9646a76a210f1eb4a71b4134664814c99d65d48", - "count": 14, - }), - (("https://mangakakalot.tv/chapter" - "/hatarakanai_futari_the_jobless_siblings/chapter_20.1"), { - "keyword": "14c430737ff600b26a3811815905f34dd6a6c8c6", - "content": "b3eb1f139caef98d9dcd8ba6a5ee146a13deebc4", - "count": 2, + "keyword": "0f1586ff52f0f9cbbb25306ae64ab718f8a6a633", + "count": 9, }), + ("https://mangakakalot.tv/chapter" + "/hatarakanai_futari_the_jobless_siblings/chapter_20.1"), ) def __init__(self, match): @@ -81,13 +77,11 @@ class MangakakalotMangaExtractor(MangakakalotBase, MangaExtractor): chapterclass = MangakakalotChapterExtractor pattern = BASE_PATTERN + r"(/manga/[^/?#]+)" test = ( - ("https://ww.mangakakalot.tv/manga/lk921810", { - "url": "654d040c17728c9c8756fce7092b084e8dcf67d2", - }), - ("https://mangakakalot.tv/manga/manga-jk986845", { + ("https://ww3.mangakakalot.tv/manga/manga-jk986845", { "pattern": MangakakalotChapterExtractor.pattern, "count": ">= 30", }), + ("https://mangakakalot.tv/manga/lk921810"), ) def chapters(self, page): diff --git a/gallery_dl/extractor/manganelo.py b/gallery_dl/extractor/manganelo.py index 833d18e0..3444a7a7 100644 --- a/gallery_dl/extractor/manganelo.py +++ b/gallery_dl/extractor/manganelo.py @@ -21,16 +21,12 @@ class ManganeloChapterExtractor(ChapterExtractor): pattern = BASE_PATTERN + r"(/(?:manga-\w+|chapter/\w+)/chapter[-_][^/?#]+)" test = ( ("https://readmanganato.com/manga-gn983696/chapter-23", { - "pattern": r"https://s\d+\.\w+\.com/mangakakalot/g\d+/gq921227/" - r"vol3_chapter_23_24_yen/\d+\.jpg", - "keyword": "3748087cf41abc97f991530e6fd53b291490d6d0", + "pattern": r"https://v\d+\.mkklcdnv6tempv5\.com/img/tab_17/03/23" + r"/39/gn983696/vol_3_chapter_23_24_yen/\d+-[no]\.jpg", + "keyword": "2c5cd59342f149375df9bcb50aa416b4d04a43cf", "count": 25, }), - ("https://manganelo.com/chapter/gamers/chapter_15", { - "keyword": "8f59f88d516247011fe122e05746c27e203c8191", - "content": "fbec629c71f66b246bfa0604204407c0d1c8ae38", - "count": 39, - }), + ("https://manganelo.com/chapter/gamers/chapter_15"), ("https://manganelo.com/chapter/gq921227/chapter_23"), ) @@ -81,14 +77,11 @@ class ManganeloMangaExtractor(MangaExtractor): chapterclass = ManganeloChapterExtractor pattern = BASE_PATTERN + r"(/(?:manga[-/]|read_)\w+)/?$" test = ( - ("https://manganato.com/manga-gu983703", { + ("https://readmanganato.com/manga-gn983696", { "pattern": ManganeloChapterExtractor.pattern, - "count": ">= 70", - }), - ("https://manganelo.com/manga/read_otome_no_teikoku", { - "pattern": ManganeloChapterExtractor.pattern, - "count": ">= 40", + "count": ">= 25", }), + ("https://manganelo.com/manga/read_otome_no_teikoku"), ("https://manganelo.com/manga/ol921234/"), ) diff --git a/gallery_dl/extractor/mangapark.py b/gallery_dl/extractor/mangapark.py index a883b913..a28a966e 100644 --- a/gallery_dl/extractor/mangapark.py +++ b/gallery_dl/extractor/mangapark.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 @@ -121,8 +121,8 @@ class MangaparkMangaExtractor(MangaparkBase, MangaExtractor): r"(/manga/[^/?#]+)/?$") test = ( ("https://mangapark.net/manga/aria", { - "url": "b8f7db2f581404753c4af37af66c049a41273b94", - "keyword": "2c0d28efaf84fcfe62932b6931ef3c3987cd48c0", + "url": "51c6d82aed5c3c78e0d3f980b09a998e6a2a83ee", + "keyword": "cabc60cf2efa82749d27ac92c495945961e4b73c", }), ("https://mangapark.me/manga/aria"), ("https://mangapark.com/manga/aria"), diff --git a/gallery_dl/extractor/myhentaigallery.py b/gallery_dl/extractor/myhentaigallery.py index 4a43d57c..da0f589d 100644 --- a/gallery_dl/extractor/myhentaigallery.py +++ b/gallery_dl/extractor/myhentaigallery.py @@ -4,7 +4,7 @@ # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. -"""Extract hentai-gallery from https://myhentaigallery.com/""" +"""Extractors for https://myhentaigallery.com/""" from .common import GalleryExtractor from .. import text, exception @@ -18,8 +18,8 @@ class MyhentaigalleryGalleryExtractor(GalleryExtractor): r"/gallery/(?:thumbnails|show)/(\d+)") test = ( ("https://myhentaigallery.com/gallery/thumbnails/16247", { - "pattern": r"https://images.myhentaigrid.com/imagesgallery/images" - r"/[^/]+/original/\d+\.jpg", + "pattern": r"https://images.myhentaicomics\.com/imagesgallery" + r"/images/[^/]+/original/\d+\.jpg", "keyword": { "artist" : list, "count" : 11, diff --git a/gallery_dl/extractor/philomena.py b/gallery_dl/extractor/philomena.py index 951b34df..fba13129 100644 --- a/gallery_dl/extractor/philomena.py +++ b/gallery_dl/extractor/philomena.py @@ -118,11 +118,11 @@ class PhilomenaPostExtractor(PhilomenaExtractor): "source_url": "https://www.deviantart.com/speccysy/art" "/Afternoon-Flight-215193985", "spoilered": False, - "tag_count": 42, + "tag_count": int, "tag_ids": list, "tags": list, "thumbnails_generated": True, - "updated_at": "2021-09-30T20:04:01Z", + "updated_at": "2022-04-25T09:30:57Z", "uploader": "Clover the Clever", "uploader_id": 211188, "upvotes": int, diff --git a/gallery_dl/extractor/piczel.py b/gallery_dl/extractor/piczel.py index 94de9838..b03d6f84 100644 --- a/gallery_dl/extractor/piczel.py +++ b/gallery_dl/extractor/piczel.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 @@ -108,7 +108,7 @@ class PiczelImageExtractor(PiczelExtractor): pattern = r"(?:https?://)?(?:www\.)?piczel\.tv/gallery/image/(\d+)" test = ("https://piczel.tv/gallery/image/7807", { "pattern": r"https://(\w+\.)?piczel\.tv/static/uploads/gallery_image" - r"/32920/image/7807/25737334-Lulena\.png", + r"/32920/image/7807/1532236438-Lulena\.png", "content": "df9a053a24234474a19bce2b7e27e0dec23bff87", "keyword": { "created_at": "2018-07-22T05:13:58.000Z", diff --git a/gallery_dl/extractor/readcomiconline.py b/gallery_dl/extractor/readcomiconline.py index a4774246..c924e0a3 100644 --- a/gallery_dl/extractor/readcomiconline.py +++ b/gallery_dl/extractor/readcomiconline.py @@ -50,8 +50,9 @@ class ReadcomiconlineIssueExtractor(ReadcomiconlineBase, ChapterExtractor): subcategory = "issue" pattern = BASE_PATTERN + r"(/Comic/[^/?#]+/[^/?#]+\?)([^#]+)" test = ("https://readcomiconline.li/Comic/W-i-t-c-h/Issue-130?id=22289", { - "url": "30d29c5afc65043bfd384c010257ec2d0ecbafa6", + "pattern": r"https://2\.bp\.blogspot\.com/[\w-]+=s0\?.+", "keyword": "2d9ec81ce1b11fac06ebf96ce33cdbfca0e85eb5", + "count": 36, }) def __init__(self, match): diff --git a/gallery_dl/extractor/skeb.py b/gallery_dl/extractor/skeb.py index 2ecb4b68..6dfc9075 100644 --- a/gallery_dl/extractor/skeb.py +++ b/gallery_dl/extractor/skeb.py @@ -134,12 +134,12 @@ class SkebPostExtractor(SkebExtractor): "anonymous": False, "body": "re:はじめまして。私はYouTubeにてVTuberとして活動をしている湊ラ", "client": { - "avatar_url": "https://pbs.twimg.com/profile_images" - "/1537488326697287680/yNUbLDgC.jpg", - "header_url": "https://pbs.twimg.com/profile_banners" - "/1375007870291300358/1655744756/1500x500", + "avatar_url": r"re:https://pbs.twimg.com/profile_images" + r"/\d+/\w+\.jpg", + "header_url": r"re:https://pbs.twimg.com/profile_banners" + r"/1375007870291300358/\d+/1500x500", "id": 1196514, - "name": "湊ラギ♦️🎀Vtuber🎀次回6/23予定", + "name": str, "screen_name": "minato_ragi", }, "completed_at": "2022-02-27T14:03:45.442Z", diff --git a/gallery_dl/extractor/slickpic.py b/gallery_dl/extractor/slickpic.py index 7b5982a2..ae4e2e8a 100644 --- a/gallery_dl/extractor/slickpic.py +++ b/gallery_dl/extractor/slickpic.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2019-2020 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 @@ -36,12 +36,15 @@ class SlickpicAlbumExtractor(SlickpicExtractor): pattern = BASE_PATTERN + r"/albums/([^/?#]+)" test = ( ("https://mattcrandall.slickpic.com/albums/LamborghiniMurcielago/", { - "url": "58bd94ebc80fd906e9879826970b408d54c6da07", - "keyword": "54a9d6f9e42ae43c644aa9316186fb9d9955fe53", + "pattern": r"https://stored-cf\.slickpic\.com/NDk5MjNmYTc1MzU0MQ,," + r"/20160807/\w+/p/o/JSBFSS-\d+\.jpg", + "keyword": "c37c4ce9c54c09abc6abdf295855d46f11529cbf", + "count": 102, }), ("https://mattcrandall.slickpic.com/albums/LamborghiniMurcielago/", { "range": "34", - "content": ("cec6630e659dc72db1ee1a9a6f3b525189261988", + "content": ("52b5a310587de1048030ab13a912f6a3a9cc7dab", + "cec6630e659dc72db1ee1a9a6f3b525189261988", "6f81e1e74c6cd6db36844e7211eef8e7cd30055d", "22e83645fc242bc3584eca7ec982c8a53a4d8a44"), }), diff --git a/gallery_dl/extractor/smugmug.py b/gallery_dl/extractor/smugmug.py index bdf6036f..98e914e9 100644 --- a/gallery_dl/extractor/smugmug.py +++ b/gallery_dl/extractor/smugmug.py @@ -1,12 +1,12 @@ # -*- 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 # published by the Free Software Foundation. -"""Extract images from https://www.smugmug.com/""" +"""Extractors for https://www.smugmug.com/""" from .common import Extractor, Message from .. import text, oauth, exception @@ -111,13 +111,13 @@ class SmugmugImageExtractor(SmugmugExtractor): test = ( ("https://tdm.smugmug.com/Nature/Dove/i-kCsLJT6", { "url": "e6408fd2c64e721fd146130dceb56a971ceb4259", - "keyword": "b15af021186b7234cebcac758d2a4fd8462f9912", + "keyword": "460a773f5addadd3e216bda346fc524fe4eedc52", "content": "ecbd9d7b4f75a637abc8d35319be9ec065a44eb0", }), # video ("https://tstravels.smugmug.com/Dailies/Daily-Dose-2015/i-39JFNzB", { "url": "04d0ab1ff829ca7d78f5acb5548953df08e9a5ee", - "keyword": "f6967cc5a46c3e130a4f8de7c5c971f72e07fe61", + "keyword": "eb74e5cf6780d5152ab8f11b431ec1b17fa8f69b", }), ) diff --git a/gallery_dl/extractor/twibooru.py b/gallery_dl/extractor/twibooru.py index 355ca21b..93fa039d 100644 --- a/gallery_dl/extractor/twibooru.py +++ b/gallery_dl/extractor/twibooru.py @@ -83,7 +83,7 @@ class TwibooruPostExtractor(TwibooruExtractor): "tag_ids": list, "tags": list, "thumbnails_generated": True, - "updated_at": "2022-02-03T15:49:07.110Z", + "updated_at": "2022-05-13T00:43:19.791Z", "upvotes": int, "view_url": "https://cdn.twibooru.org/img/2020/7/8/1/full.png", "width": 576, diff --git a/gallery_dl/extractor/vsco.py b/gallery_dl/extractor/vsco.py index 92782426..756384b8 100644 --- a/gallery_dl/extractor/vsco.py +++ b/gallery_dl/extractor/vsco.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2019-2020 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 @@ -119,7 +119,8 @@ class VscoUserExtractor(VscoExtractor): pattern = BASE_PATTERN + r"(?:/gallery|/images(?:/\d+)?)?/?(?:$|[?#])" test = ( ("https://vsco.co/missuri/gallery", { - "pattern": r"https://image(-aws.+)?\.vsco\.co/[0-9a-f/]+/vsco\w+", + "pattern": r"https://image(-aws.+)?\.vsco\.co" + r"/[0-9a-f/]+/[\w-]+\.\w+", "range": "1-80", "count": 80, }), @@ -150,7 +151,7 @@ class VscoCollectionExtractor(VscoExtractor): archive_fmt = "c_{user}_{id}" pattern = BASE_PATTERN + r"/collection/" test = ("https://vsco.co/vsco/collection/1", { - "pattern": r"https://image(-aws.+)?\.vsco\.co/[0-9a-f/]+/vsco\w+\.\w+", + "pattern": r"https://image(-aws.+)?\.vsco\.co/[0-9a-f/]+/[\w-]+\.\w+", "range": "1-80", "count": 80, }) diff --git a/gallery_dl/extractor/wallhaven.py b/gallery_dl/extractor/wallhaven.py index e025a224..37eab247 100644 --- a/gallery_dl/extractor/wallhaven.py +++ b/gallery_dl/extractor/wallhaven.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 @@ -58,7 +58,7 @@ class WallhavenSearchExtractor(WallhavenExtractor): (("https://wallhaven.cc/search?q=id%3A87" "&categories=111&purity=100&sorting=date_added&order=asc&page=3"), { "pattern": r"https://w.wallhaven.cc/full/\w\w/wallhaven-\w+\.\w+", - "count": "<= 20", + "count": "<= 30", }), ) diff --git a/gallery_dl/extractor/weibo.py b/gallery_dl/extractor/weibo.py index 9edca520..bdbdc8ce 100644 --- a/gallery_dl/extractor/weibo.py +++ b/gallery_dl/extractor/weibo.py @@ -310,7 +310,8 @@ class WeiboAlbumExtractor(WeiboExtractor): subcategory = "album" pattern = USER_PATTERN + r"\?tabtype=album" test = ("https://weibo.com/1758989602?tabtype=album", { - "pattern": r"https://wx\d+\.sinaimg\.cn/large/\w{32}\.(jpg|png|gif)", + "pattern": r"https://(wx\d+\.sinaimg\.cn/large/\w{32}\.(jpg|png|gif)" + r"|g\.us\.sinaimg\.cn/../\w+\.mp4)", "range": "1-3", "count": 3, })