From d72df1c5af4a3ca2ba7661cb3b409b6c523f02ee Mon Sep 17 00:00:00 2001 From: Techwolf Date: Fri, 20 May 2022 23:59:50 -0700 Subject: [PATCH 01/46] Add Inverloch --- dosagelib/plugins/i.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dosagelib/plugins/i.py b/dosagelib/plugins/i.py index 460bc49af..c11027e20 100644 --- a/dosagelib/plugins/i.py +++ b/dosagelib/plugins/i.py @@ -41,6 +41,16 @@ class InternetWebcomic(WordPressNavi): help = 'Index format: n' +class Inverloch(ParserScraper): + stripUrl = 'https://www.seraph-inn.com/view.php?story=inverloch&page=%s' + url = stripUrl % '763' + firstStripUrl = stripUrl % '2' + imageSearch = '//img[@class="page"]' + prevSearch = '//p[@class="comic-nav"]/a[text()=" Previous"]' + multipleImagesPerStrip = True + endOfLife = True + + class IrregularWebcomic(BasicScraper): url = 'http://www.irregularwebcomic.net/' stripUrl = url + '%s.html' From bbaa6bda0cba406b6ec911b4b7c581008afb975c Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 6 Jul 2022 00:32:40 -0700 Subject: [PATCH 02/46] Add MangaDex/GijiHarem --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index dd5d1cf91..c060aeae2 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -104,6 +104,7 @@ class MangaDex(ParserScraper): cls('DragonDrive', '5c06ae70-b5cf-431a-bcd5-262a411de527'), cls('FuguushokuKajishiDakedoSaikyouDesu', '17b3b648-fd89-4a69-9a42-6068ffbfa7a7'), cls('GanbareDoukiChan', '190616bc-7da6-45fd-abd4-dd2ca656c183'), + cls('GijiHarem', 'd8f9afe2-aa44-4bc6-9145-eebb1f282372'), cls('HangingOutWithAGamerGirl', 'de9e3b62-eac5-4c0a-917d-ffccad694381'), cls('HoriMiya', 'a25e46ec-30f7-4db6-89df-cacbc1d9a900'), cls('HowToOpenATriangularRiceball', '6ebd90ce-d5e8-49c0-a4bc-e02e0f8ecb93'), From 7c66c60c1c5769883373ff70368958d8ad1711c1 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Sun, 17 Jul 2022 01:04:31 -0700 Subject: [PATCH 03/46] Add ProjectFuture/TheBountyProject --- dosagelib/plugins/projectfuture.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/projectfuture.py b/dosagelib/plugins/projectfuture.py index ac7c6ed33..686cfb672 100644 --- a/dosagelib/plugins/projectfuture.py +++ b/dosagelib/plugins/projectfuture.py @@ -42,6 +42,7 @@ class ProjectFuture(ParserScraper): cls('TheAxemanCometh', 'axeman', '01-01', last='02-18'), cls('ToCatchADemon', 'daxxon', '01-00', last='03-14'), cls('TheDarkAngel', 'darkangel', 'cover', last='54'), + cls('TheBountyProject', 'bounty', '00-00'), cls('TheEpsilonProject', 'epsilon', '00-01'), cls('TheHarvest', 'harvest', '01-00'), cls('TheSierraChronicles', 'sierra', '0', last='29'), From bcdaf8749afcfe971f336365dbefefac9b17a1e6 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Sat, 27 Aug 2022 21:24:15 -0700 Subject: [PATCH 04/46] Add MangaDex/KonoKaishaNiSukiNaHitoGaImasu --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index c060aeae2..f22713ed8 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -117,6 +117,7 @@ class MangaDex(ParserScraper): cls('KawaiiJoushiWoKomarasetai', '23b7cc7a-df89-4049-af28-1fa78f88713e'), cls('KanojoOkarishimasu', '32fdfe9b-6e11-4a13-9e36-dcd8ea77b4e4'), cls('KoiToUtatane', 'f7d40a27-e289-45b3-9c68-d1cb251897e6'), + cls('KonoKaishaNiSukiNaHitoGaImasu', '3e8cf40f-ba17-480a-b60b-a675db032ee2'), cls('Lv2KaraCheatDattaMotoYuushaKouhoNoMattariIsekaiLife', '58bc83a0-1808-484e-88b9-17e167469e23'), cls('MaouNoOreGaDoreiElfWoYomeNiShitandaGaDouMederebaIi', '55ace2fb-e157-4d76-9e72-67c6bd762a39'), cls('ModernMoGal', 'b1953f80-36f7-492c-b0f8-e9dd0ad01752'), From 382c395dd5329ec4058e55f9498d7ff50344fdbb Mon Sep 17 00:00:00 2001 From: Techwolf Date: Mon, 17 Oct 2022 02:18:07 -0700 Subject: [PATCH 05/46] Add MangaDex/KaikoSaretaAnkokuHeishi30DaiNoSlowNaSecondLife --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index f22713ed8..ce06e2698 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -114,6 +114,7 @@ class MangaDex(ParserScraper): cls('JahySamaWaKujikenai', '2f4e5f5b-d930-4266-8c8a-c4cf9a81e51f'), cls('JingaiNoYomeToIchaIchaSuru', '809d2493-df3c-4e72-a57e-3e0026cae9fb'), cls('KaetteKudasaiAkutsuSan', '737a846b-2e67-4d63-9f7e-f54b3beebac4'), + cls('KaikoSaretaAnkokuHeishi30DaiNoSlowNaSecondLife', 'cbcf5051-74a0-4b93-b99c-1a6975f1bef9'), cls('KawaiiJoushiWoKomarasetai', '23b7cc7a-df89-4049-af28-1fa78f88713e'), cls('KanojoOkarishimasu', '32fdfe9b-6e11-4a13-9e36-dcd8ea77b4e4'), cls('KoiToUtatane', 'f7d40a27-e289-45b3-9c68-d1cb251897e6'), From 536fdba808644f5cd2a04f89d0ccfbdbcba41ee3 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 1 Nov 2022 00:45:24 -0700 Subject: [PATCH 06/46] Add WebToons/TheSpectrumOfUs --- dosagelib/plugins/webtoons.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/webtoons.py b/dosagelib/plugins/webtoons.py index a77ff18c3..85df1cddc 100644 --- a/dosagelib/plugins/webtoons.py +++ b/dosagelib/plugins/webtoons.py @@ -401,6 +401,7 @@ class WebToons(ParserScraper): cls('TheRoomies', 'challenge/the-roomies-archive', 513669), cls('TheShadowProphet', 'drama/the-shadow-prophet', 1881), cls('TheSoundOfYourHeart', 'comedy/the-sound-of-your-heart', 269), + cls('TheSpectrumOfUs', 'challenge/the-spectrum-of-us', 334525), cls('TheSteamDragonExpress', 'fantasy/steam-dragon-express', 1270), cls('TheStoriesOfThoseAroundMe', 'romance/the-stories-of-those-around-me', 96), cls('TheStrangeTalesOfOscarZahn', 'fantasy/the-strange-tales-of-oscar-zahn', 685), From 8ec987411de474ba16269be24ac21d13275228c6 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 2 Nov 2022 18:35:47 -0700 Subject: [PATCH 07/46] Add WebToons/BitterSweetCoffee --- dosagelib/plugins/webtoons.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/webtoons.py b/dosagelib/plugins/webtoons.py index 85df1cddc..653e07c26 100644 --- a/dosagelib/plugins/webtoons.py +++ b/dosagelib/plugins/webtoons.py @@ -87,6 +87,7 @@ class WebToons(ParserScraper): cls('BehindTheGIFs', 'comedy/behind-the-gifs', 658), cls('BigJo', 'romance/big-jo', 854), cls('BiteMe', 'thriller/bite-me', 1019), + cls('BitterSweetCoffee', 'challenge/bitter-sweet-coffee', 797203), cls('Blackened', 'challenge/blackened', 363805), cls('BladesOfFurry', 'romance/blades-of-furry', 2383), cls('Blessed', 'drama/blessed', 1193), From 3404e48889e2f87e9c88de07ab26af10f6a7d012 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 2 Nov 2022 18:37:19 -0700 Subject: [PATCH 08/46] Add WebToons/NotSoLucky --- dosagelib/plugins/webtoons.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/webtoons.py b/dosagelib/plugins/webtoons.py index 653e07c26..8e71935b3 100644 --- a/dosagelib/plugins/webtoons.py +++ b/dosagelib/plugins/webtoons.py @@ -302,6 +302,7 @@ class WebToons(ParserScraper): cls('NoScope', 'sports/no-scope', 1572), cls('NotEvenBones', 'thriller/not-even-bones', 1756), cls('NothingSpecial', 'fantasy/nothing-special', 1188), + cls('NotSoLucky', 'challenge/not-so-lucky', 673387), cls('OddGirlOut', 'drama/odd-girl-out', 1420), cls('OhHoly', 'romance/oh-holy', 809), cls('OmniscientReader', 'action/omniscient-reader', 2154), From 13cb80728b05efd9b5ec199506bc18aeb3be4d59 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 2 Nov 2022 18:37:39 -0700 Subject: [PATCH 09/46] Add WebToons/CatchMeIfYouCan --- dosagelib/plugins/webtoons.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/webtoons.py b/dosagelib/plugins/webtoons.py index 8e71935b3..fb839853c 100644 --- a/dosagelib/plugins/webtoons.py +++ b/dosagelib/plugins/webtoons.py @@ -106,6 +106,7 @@ class WebToons(ParserScraper): cls('CARL', 'slice-of-life/carl', 1216), cls('Caster', 'action/caster', 1461), cls('CastleSwimmer', 'fantasy/castle-swimmer', 1499), + cls('CatchMeIfYouCan', 'challenge/catch-me-if-you-can-', 434808), cls('Catharsis', 'fantasy/catharsis', 396), cls('CatLoafAdventures', 'slice-of-life/cat-loaf-adventures', 1381), cls('CChansACatgirl', 'challenge/c-chans-a-catgirl', 263430), From 005e2f126da2c184d391b4a89ff4664eaac9ada9 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Mon, 14 Nov 2022 20:17:57 -0800 Subject: [PATCH 10/46] Fix ComicFury/Alderwood --- dosagelib/plugins/comicfury.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/dosagelib/plugins/comicfury.py b/dosagelib/plugins/comicfury.py index 43808ddca..1a0f24a88 100644 --- a/dosagelib/plugins/comicfury.py +++ b/dosagelib/plugins/comicfury.py @@ -73,10 +73,16 @@ class ComicFury(ParserScraper): '//img[d:class("comicsegmentimage")]', ) - def namer(self, image_url, page_url): - parts = page_url.split('/') - path, ext = os.path.splitext(image_url) + def namer(self, imageUrl, pageUrl): + parts = pageUrl.split('/') + path, ext = os.path.splitext(imageUrl) num = parts[-1] + if self.multipleImagesPerStrip: + page = self.getPage(pageUrl) + images = page.xpath('//img[@class="comicsegmentimage"]/@src') + if len(images) > 1: + imageIndex = images.index(imageUrl) + 1 + return "%s_%s-%d%s" % (self.prefix, num, imageIndex, ext) return "%s_%s%s" % (self.prefix, num, ext) def shouldSkipUrl(self, url, data): @@ -136,7 +142,7 @@ class ComicFury(ParserScraper): cls('AgentBishop', 'agentbishop'), cls('AHappierKindOfSad', 'ahappierkindofsad'), cls('AlbinoBrothers', 'albinobros'), - cls('Alderwood', 'alderwood'), + cls('Alderwood', 'alderwood', segmented=True), cls('AlexanderAndLucasRebooted', 'alexanderandlucas'), cls('AliaTerra', 'alia-terra'), cls('AlienIrony', 'alien-irony'), From dabf0c9373227f8697c9c21db8022e66cc08bb3e Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 15 Nov 2022 21:54:37 -0800 Subject: [PATCH 11/46] Add ComicFury/QueenieAdventure --- dosagelib/plugins/comicfury.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/comicfury.py b/dosagelib/plugins/comicfury.py index 1a0f24a88..0a7a9c108 100644 --- a/dosagelib/plugins/comicfury.py +++ b/dosagelib/plugins/comicfury.py @@ -791,6 +791,7 @@ class ComicFury(ParserScraper): cls('Pulse', 'pulse'), cls('PureHavoc', 'pure-havoc'), cls('Queenie', 'queenie'), + cls('QueenieAdventure', 'queenieadventure', adult=True, segmented=True), cls('QuestCorporeal', 'questcorporeal'), cls('Rain', 'rain'), cls('RandomlyAssembled', 'randomlyassembled'), From 93f0a365077b629657373e91795a455ba7dfef39 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 13 Dec 2022 17:11:17 -0800 Subject: [PATCH 12/46] Add MangaDex/ArcaneSniper --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index ce06e2698..73f52adb0 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -95,6 +95,7 @@ class MangaDex(ParserScraper): @classmethod def getmodules(cls): return ( + cls('ArcaneSniper', 'cbf53f02-9594-42e7-9dbf-8ae1c783466f'), cls('AttackOnTitan', '304ceac3-8cdb-4fe7-acf7-2b6ff7a60613'), cls('Beastars', 'f5e3baad-3cd4-427c-a2ec-ad7d776b370d'), cls('BokuNoKokoroNoYabaiYatsu', '3df1a9a3-a1be-47a3-9e90-9b3e55b1d0ac'), From 8814c7c65698b344b66aec9b94ecf19e62fd1489 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 21 Dec 2022 23:47:48 -0800 Subject: [PATCH 13/46] Add WebToons/Miez --- dosagelib/plugins/webtoons.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/webtoons.py b/dosagelib/plugins/webtoons.py index fb839853c..1aaee50ef 100644 --- a/dosagelib/plugins/webtoons.py +++ b/dosagelib/plugins/webtoons.py @@ -275,6 +275,7 @@ class WebToons(ParserScraper): cls('MidnightRain', 'drama/midnight-rain', 1797), cls('MidnightRhapsody', 'slice-of-life/midnight-rhapsody', 116), cls('MidnightRhapsodySeason2', 'slice-of-life/midnight-rhapsody-season2', 365), + cls('Miez', 'sf/miez', 2719), cls('MissAbbottAndTheDoctor', 'romance/miss-abbott-and-the-doctor', 707), cls('MonsterIsle', 'challenge/monster-isle', 531999), cls('MOONBEARD', 'comedy/moon-beard', 471), From 176495afcb5f4cbea8ab61d21a4c298a63f25fa7 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Mon, 26 Dec 2022 01:28:47 -0800 Subject: [PATCH 14/46] Add Vreakerz --- dosagelib/plugins/v.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dosagelib/plugins/v.py b/dosagelib/plugins/v.py index e807882e8..191ea106f 100644 --- a/dosagelib/plugins/v.py +++ b/dosagelib/plugins/v.py @@ -3,7 +3,7 @@ # Copyright (C) 2012-2014 Bastian Kleineidam # Copyright (C) 2015-2020 Tobias Gruetzmacher # Copyright (C) 2019-2020 Daniel Ring -from ..scraper import _ParserScraper +from ..scraper import ParserScraper, _ParserScraper from ..helpers import bounceStarter, indirectStarter @@ -82,3 +82,11 @@ class VirmirWorld(_ParserScraper): def getIndexStripUrl(self, index): index = index.split('-') return self.stripUrl % (index[0], index[1]) + + +class Vreakerz(ParserScraper): + url = 'http://vreakerz.angrykitten.nl/' + stripUrl = url + 'stories/read/%s' + firstStripUrl = stripUrl % '1' + imageSearch = '//img[contains(@src, "storypages")]' + prevSearch = '//a[@class="btn-prior"]' From 77d51ce613b13849e6dcca67dedd9eccb378c906 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 3 Jan 2023 02:55:34 -0800 Subject: [PATCH 15/46] Add MangaDex/ImTheMaxLevelNewbie --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index 73f52adb0..03128a2f1 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -111,6 +111,7 @@ class MangaDex(ParserScraper): cls('HowToOpenATriangularRiceball', '6ebd90ce-d5e8-49c0-a4bc-e02e0f8ecb93'), cls('HunterXHunter', 'db692d58-4b13-4174-ae8c-30c515c0689c'), cls('IchaichasuruToOkaneGaWaichauFutariNoHanashi', '8eaaec7d-7aa7-490e-8d52-5a3d0a28e78b'), + cls('ImTheMaxLevelNewbie', 'a253e13a-2b41-4f7d-915e-1e31a3f5d31d'), cls('InterspeciesReviewers', '1b2fddf9-1385-4f3c-b37a-cf86a9428b1a'), cls('JahySamaWaKujikenai', '2f4e5f5b-d930-4266-8c8a-c4cf9a81e51f'), cls('JingaiNoYomeToIchaIchaSuru', '809d2493-df3c-4e72-a57e-3e0026cae9fb'), From 0916136e092b354b50a13deba225466ee8f9f9af Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 3 Jan 2023 02:55:56 -0800 Subject: [PATCH 16/46] add MangaDex/TamingMaster --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index 03128a2f1..099b09f01 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -146,6 +146,7 @@ class MangaDex(ParserScraper): cls('SwordArtOnlineProgressive', '22ea3f54-11e4-4932-a527-89d63d3a62d9'), cls('TadokoroSan', '8ffbfa2f-23fa-4490-848e-942581a4d873'), cls('TamenDeGushi', '3f1453fb-9dac-4aca-a2ea-69613856c952'), + cls('TamingMaster', '534c1b5b-aff6-44fd-bf68-7294e6526fb3'), cls('TenseiShitaraSlimeDattaKen', 'e78a489b-6632-4d61-b00b-5206f5b8b22b'), cls('TheNewGate', 'b41bef1e-7df9-4255-bd82-ecf570fec566'), cls('TheWolfAndRedRidingHood', 'a7d1283b-ed38-4659-b8bc-47bfca5ccb8a'), From c4090bc5906bc39de41cbc7faf8c68b1e0ccbc01 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Sat, 7 Jan 2023 14:38:33 -0800 Subject: [PATCH 17/46] Add MangaDex/AniTomo --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index 099b09f01..61bd3ca1c 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -95,6 +95,7 @@ class MangaDex(ParserScraper): @classmethod def getmodules(cls): return ( + cls('AniTomo', '920c22e7-49c9-4bb4-b394-0c964b6037fc'), cls('ArcaneSniper', 'cbf53f02-9594-42e7-9dbf-8ae1c783466f'), cls('AttackOnTitan', '304ceac3-8cdb-4fe7-acf7-2b6ff7a60613'), cls('Beastars', 'f5e3baad-3cd4-427c-a2ec-ad7d776b370d'), From 7209d932f47f418398d930d33eafa8fec844e8f6 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Mon, 9 Jan 2023 22:33:06 -0800 Subject: [PATCH 18/46] Add KemonoCafe/CaughtInOrbit --- dosagelib/plugins/kemonocafe.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dosagelib/plugins/kemonocafe.py b/dosagelib/plugins/kemonocafe.py index 119303816..b1e78a160 100644 --- a/dosagelib/plugins/kemonocafe.py +++ b/dosagelib/plugins/kemonocafe.py @@ -37,11 +37,17 @@ class KemonoCafe(ParserScraper): filename = filename.replace('89', '90') elif 'rascals' in pageUrl and '133-2' in pageUrl: filename = filename.replace('133', '134') + elif 'caughtinorbit' in pageUrl and '26gs' in filename: + filename = filename.replace('026gs', '021') + elif 'caughtinorbit' in pageUrl and '27gs' in filename: + filename = filename.replace('027gs', '022') # Fix unordered filenames if 'addictivescience' in pageUrl: page = self.getPage(pageUrl) num = int(page.xpath('//div[@id="comic-wrap"]/@class')[0].replace('comic-id-', '')) filename = '%04d_%s' % (num, filename) + elif 'CaughtInOrbit' in filename: + filename = filename.replace('CaughtInOrbit', 'CIO') return filename @classmethod @@ -50,6 +56,7 @@ class KemonoCafe(ParserScraper): cls('AddictiveScience', 'addictivescience', 'page0001'), cls('Bethellium', 'bethellium', 'c01p00'), cls('CaribbeanBlue', 'cb', 'page000', last='page325'), + cls('CaughtInOrbit', 'caughtinorbit', 'comic-cover'), cls('IMew', 'imew', 'imew00', last='imew50'), cls('Knighthood', 'knighthood', 'kh0001'), cls('KnuckleUp', 'knuckle-up', 'page001', adult=True), From 58ddba1a7e3e4d4a834658678fbde748348f1c0c Mon Sep 17 00:00:00 2001 From: Techwolf Date: Fri, 27 Jan 2023 21:33:47 -0800 Subject: [PATCH 19/46] Add ProjectFuture/InnocenceGuiltAndChange --- dosagelib/plugins/projectfuture.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dosagelib/plugins/projectfuture.py b/dosagelib/plugins/projectfuture.py index 686cfb672..c6e036f09 100644 --- a/dosagelib/plugins/projectfuture.py +++ b/dosagelib/plugins/projectfuture.py @@ -30,10 +30,11 @@ class ProjectFuture(ParserScraper): cls('BookOfTenets', 'tenets', '01', last='45'), cls('CriticalMass', 'criticalmass', 'cover', last='26'), cls('DarkLordRising', 'darklord', '01-00', last='10-10'), - cls('Emily', 'emily', '01-00'), - cls('FishingTrip', 'fishing', '01-00'), + cls('Emily', 'emily', '01-00', last='07-10'), + cls('FishingTrip', 'fishing', '01-00', last='03-12'), cls('HeadsYouLose', 'heads', '00-01', last='07-12'), - cls('IPanther', 'panther', '00'), + cls('InnocenceGuiltAndChange', 'ernst', '01-00'), + cls('IPanther', 'panther', '00', last='20'), cls('NiallsStory', 'niall', '00'), cls('ProjectFuture', 'strip', '0', last='664'), cls('RedValentine', 'redvalentine', '1', last='6'), @@ -44,7 +45,7 @@ class ProjectFuture(ParserScraper): cls('TheDarkAngel', 'darkangel', 'cover', last='54'), cls('TheBountyProject', 'bounty', '00-00'), cls('TheEpsilonProject', 'epsilon', '00-01'), - cls('TheHarvest', 'harvest', '01-00'), + cls('TheHarvest', 'harvest', '01-00', last='08-26'), cls('TheSierraChronicles', 'sierra', '0', last='29'), cls('TheTuppenyMan', 'tuppenny', '00', last='16'), cls('TurningANewPage', 'azrael', '1', last='54'), From 2547fb628263e92c01b5106406a88a504ccfbb52 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Thu, 2 Feb 2023 21:23:48 -0800 Subject: [PATCH 20/46] Add MangaDex/Overgeared --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index 61bd3ca1c..147751cc7 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -130,6 +130,7 @@ class MangaDex(ParserScraper): cls('OokamiShounenWaKyouMoUsoOKasaneru', '5e77d9e2-2e44-431a-a995-5fefd411e55e'), cls('OokamiToKoshinryou', 'de900fd3-c94c-4148-bbcb-ca56eaeb57a4'), cls('OtomeYoukaiZakuro', 'c1fa97be-0f1f-4686-84bc-806881c97d53'), + cls('Overgeared', '3fc308c9-4b00-4dc3-943e-1f39242bc708'), cls('OversimplifiedSCP', 'e911fe33-a9b3-43dc-9eb7-f5ee081a6dc8'), cls('PashiriNaBokuToKoisuruBanchouSan', '838e5b3a-51c8-44cf-b6e2-68193416f6fe'), cls('PleaseDontBullyMeNagatoro', 'd86cf65b-5f6c-437d-a0af-19a31f94ec55'), From d604f1adc6e7d8f231b5b0d3ddf5c7b1df63078a Mon Sep 17 00:00:00 2001 From: Techwolf Date: Fri, 17 Feb 2023 19:05:11 -0800 Subject: [PATCH 21/46] Add ProjectFuture/ZetaTakesATrip --- dosagelib/plugins/projectfuture.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/projectfuture.py b/dosagelib/plugins/projectfuture.py index c6e036f09..eb385adc6 100644 --- a/dosagelib/plugins/projectfuture.py +++ b/dosagelib/plugins/projectfuture.py @@ -50,4 +50,5 @@ class ProjectFuture(ParserScraper): cls('TheTuppenyMan', 'tuppenny', '00', last='16'), cls('TurningANewPage', 'azrael', '1', last='54'), cls('Xerian', 'xerian', '01-00'), + cls('ZetaTakesATrip', 'zeta', '0-00'), ) From df133acb061e646d9ddc9914290d1610c0d518d0 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Fri, 17 Feb 2023 19:05:19 -0800 Subject: [PATCH 22/46] Fix OhJoySexToy (fixes #255) --- dosagelib/plugins/o.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/o.py b/dosagelib/plugins/o.py index 284623353..954d5d69b 100644 --- a/dosagelib/plugins/o.py +++ b/dosagelib/plugins/o.py @@ -75,6 +75,7 @@ class OhJoySexToy(WordPressNavi): url = 'http://www.ohjoysextoy.com/' firstStripUrl = url + 'introduction/' textSearch = '//div[@id="comic"]//img/@alt' + multipleImagesPerStrip = True adult = True From 8287bb6bedc8602f304ea53baf187422bd656ed3 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 7 Mar 2023 23:24:17 -0800 Subject: [PATCH 23/46] Fix Lackadaisy --- dosagelib/plugins/l.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dosagelib/plugins/l.py b/dosagelib/plugins/l.py index 1e9e4e36a..1ac3eaa04 100644 --- a/dosagelib/plugins/l.py +++ b/dosagelib/plugins/l.py @@ -11,11 +11,11 @@ from ..util import tagre from .common import ComicControlScraper, WordPressScraper, WordPressNaviIn -class Lackadaisy(_ParserScraper): +class Lackadaisy(ParserScraper): url = 'https://www.lackadaisy.com/comic.php' stripUrl = url + '?comicid=%s' firstStripUrl = stripUrl % '1' - imageSearch = '//div[@id="content"]/img' + imageSearch = '//div[@id="exhibit"]/img[contains(@src, "comic/")]' prevSearch = '//div[@class="prev"]/a' nextSearch = '//div[@class="next"]/a' help = 'Index format: n' From 550aac28de3a602ff57a7dd0be8a0efa390ea7e0 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 11 Apr 2023 00:10:05 -0700 Subject: [PATCH 24/46] Add MangaDex/LonelyGirlNiSakaraenai --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index 147751cc7..5ff8cc6da 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -122,6 +122,7 @@ class MangaDex(ParserScraper): cls('KanojoOkarishimasu', '32fdfe9b-6e11-4a13-9e36-dcd8ea77b4e4'), cls('KoiToUtatane', 'f7d40a27-e289-45b3-9c68-d1cb251897e6'), cls('KonoKaishaNiSukiNaHitoGaImasu', '3e8cf40f-ba17-480a-b60b-a675db032ee2'), + cls('LonelyGirlNiSakaraenai', 'd7576e72-0301-4ed3-9137-722ed768bfda'), cls('Lv2KaraCheatDattaMotoYuushaKouhoNoMattariIsekaiLife', '58bc83a0-1808-484e-88b9-17e167469e23'), cls('MaouNoOreGaDoreiElfWoYomeNiShitandaGaDouMederebaIi', '55ace2fb-e157-4d76-9e72-67c6bd762a39'), cls('ModernMoGal', 'b1953f80-36f7-492c-b0f8-e9dd0ad01752'), From b06b746e86b90d539a9a08a9dc736819ef5d9570 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 11 Apr 2023 00:10:11 -0700 Subject: [PATCH 25/46] Add Lancer --- dosagelib/plugins/l.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dosagelib/plugins/l.py b/dosagelib/plugins/l.py index 1ac3eaa04..f28bccc93 100644 --- a/dosagelib/plugins/l.py +++ b/dosagelib/plugins/l.py @@ -28,6 +28,12 @@ class Lackadaisy(ParserScraper): return 'lackadaisy_%s.%s' % (num, ext) +class Lancer(WordPressScraper): + url = 'https://lancercomic.com/' + stripUrl = url + 'comic/%s/' + firstStripUrl = stripUrl % 'chapter-1-cover' + + class LastResort(WordPressScraper): url = 'http://www.lastres0rt.com/' stripUrl = url + 'comic/%s/' From e2dd8e2f3c50883cc75fff61196388b621f1395a Mon Sep 17 00:00:00 2001 From: Techwolf Date: Sat, 15 Apr 2023 02:31:48 -0700 Subject: [PATCH 26/46] Add MangaDex/MousouTelepathy --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index 5ff8cc6da..14a796331 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -126,6 +126,7 @@ class MangaDex(ParserScraper): cls('Lv2KaraCheatDattaMotoYuushaKouhoNoMattariIsekaiLife', '58bc83a0-1808-484e-88b9-17e167469e23'), cls('MaouNoOreGaDoreiElfWoYomeNiShitandaGaDouMederebaIi', '55ace2fb-e157-4d76-9e72-67c6bd762a39'), cls('ModernMoGal', 'b1953f80-36f7-492c-b0f8-e9dd0ad01752'), + cls('MousouTelepathy', '3d25d7da-893f-400e-9aeb-6163773c671a'), cls('MyTinySenpaiFromWork', '28ed63af-61f8-43af-bac3-762030c72963'), cls('OMaidensinYourSavageSeason', 'c4613b7d-7a6e-48f9-82f0-bce3dd33383a'), cls('OokamiShounenWaKyouMoUsoOKasaneru', '5e77d9e2-2e44-431a-a995-5fefd411e55e'), From c296e5102e0c52e736f013b1ffc5fb19b7ae265d Mon Sep 17 00:00:00 2001 From: Techwolf Date: Thu, 27 Apr 2023 00:48:41 -0700 Subject: [PATCH 27/46] Add MangaDex/MyWifeIsFromAThousandYearsAgo --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index 14a796331..6a8888ac3 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -128,6 +128,7 @@ class MangaDex(ParserScraper): cls('ModernMoGal', 'b1953f80-36f7-492c-b0f8-e9dd0ad01752'), cls('MousouTelepathy', '3d25d7da-893f-400e-9aeb-6163773c671a'), cls('MyTinySenpaiFromWork', '28ed63af-61f8-43af-bac3-762030c72963'), + cls('MyWifeIsFromAThousandYearsAgo', '17a56d33-9443-433a-9e0d-70459893ed8f'), cls('OMaidensinYourSavageSeason', 'c4613b7d-7a6e-48f9-82f0-bce3dd33383a'), cls('OokamiShounenWaKyouMoUsoOKasaneru', '5e77d9e2-2e44-431a-a995-5fefd411e55e'), cls('OokamiToKoshinryou', 'de900fd3-c94c-4148-bbcb-ca56eaeb57a4'), From 10733c1512025152e270c2edcc66fffe7a67a214 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 20:24:54 -0700 Subject: [PATCH 28/46] Add WebToons/WorldsStrongestTroll --- dosagelib/plugins/webtoons.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/webtoons.py b/dosagelib/plugins/webtoons.py index 1aaee50ef..2f6b365e3 100644 --- a/dosagelib/plugins/webtoons.py +++ b/dosagelib/plugins/webtoons.py @@ -458,6 +458,7 @@ class WebToons(ParserScraper): cls('WitchCreekRoad', 'horror/witch-creek-road', 1453), cls('WitchHunt', 'supernatural/witch-hunt', 363), cls('Wolfsbane', 'horror/wolfsbane', 1826), + cls('WorldsStrongestTroll', 'fantasy/worlds-strongest-troll', 5315), cls('XINK3R', 'super-hero/xinker', 541), cls('YourAdventure', 'comedy/your-adventure', 506), cls('YourLetter', 'drama/your-letter', 1540), From 4109adaa2aa1ce905f3590804535b6264725a469 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 21:00:32 -0700 Subject: [PATCH 29/46] Fix AlphaLuna --- dosagelib/plugins/a.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dosagelib/plugins/a.py b/dosagelib/plugins/a.py index 7cff9fc8f..283c48858 100644 --- a/dosagelib/plugins/a.py +++ b/dosagelib/plugins/a.py @@ -6,7 +6,7 @@ from re import compile, escape, MULTILINE from ..util import tagre -from ..scraper import BasicScraper, _BasicScraper, _ParserScraper +from ..scraper import BasicScraper, ParserScraper, _BasicScraper, _ParserScraper from ..helpers import regexNamer, bounceStarter, indirectStarter from .common import WordPressScraper, WordPressNavi, WordPressWebcomic @@ -166,18 +166,18 @@ class AllTheGrowingThings(WordPressScraper): endOfLife = True -class AlphaLuna(_ParserScraper): - url = 'https://alphaluna.net/' +class AlphaLuna(ParserScraper): + url = 'https://alphalunacomic.net/' stripUrl = url + 'comic/%s/' firstStripUrl = stripUrl % 'issue-1-cover' imageSearch = '//main[@id="comic"]//img' prevSearch = '//a[@rel="prev"]' -class AlphaLunaSpanish(_ParserScraper): +class AlphaLunaSpanish(ParserScraper): name = 'AlphaLuna/Spanish' lang = 'es' - url = 'https://alphaluna.net/spanish/' + url = 'https://alphalunacomic.net/spanish/' stripUrl = url + 'comic/%s/' firstStripUrl = stripUrl % 'issue-1-cover' imageSearch = '//main[@id="comic"]//img' From 9c143f3c9c10701c3d2bf94960e591e058857015 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 21:00:58 -0700 Subject: [PATCH 30/46] Fix NonPlayerCharacter --- dosagelib/plugins/n.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dosagelib/plugins/n.py b/dosagelib/plugins/n.py index 8387bccf2..a4278fddf 100644 --- a/dosagelib/plugins/n.py +++ b/dosagelib/plugins/n.py @@ -5,7 +5,7 @@ # Copyright (C) 2019-2020 Daniel Ring from re import compile, escape -from ..scraper import _BasicScraper, _ParserScraper +from ..scraper import ParserScraper, _BasicScraper, _ParserScraper from ..helpers import indirectStarter, bounceStarter from ..util import tagre from .common import ComicControlScraper, WordPressScraper, WordPressNavi, WordPressWebcomic @@ -176,13 +176,13 @@ class NoNeedForBushido(_ParserScraper): help = 'Index format: nnn' -class NonPlayerCharacter(_ParserScraper): +class NonPlayerCharacter(ParserScraper): url = 'https://www.lfg.co/' - stripUrl = url + 'npc/tale/%s/' + stripUrl = url + 'npc/comic/%s/' firstStripUrl = stripUrl % '1-1' imageSearch = '//div[@id="comic-img"]//img' prevSearch = '//a[@class="comic-nav-prev"]' - latestSearch = '//div[@id="feature-npc-footer"]/a[contains(@href, "npc/tale/")]' + latestSearch = '//div[@id="feature-npc-footer"]/a[contains(@href, "npc/comic/")]' starter = indirectStarter def namer(self, imageUrl, pageUrl): From f158f5af7c6f44c888e253b226737df382fa20e3 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 21:03:36 -0700 Subject: [PATCH 31/46] Fix Weregeek --- dosagelib/plugins/w.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/dosagelib/plugins/w.py b/dosagelib/plugins/w.py index 94c8e3008..0af93415b 100644 --- a/dosagelib/plugins/w.py +++ b/dosagelib/plugins/w.py @@ -5,7 +5,7 @@ # Copyright (C) 2019-2020 Daniel Ring from re import compile, escape, IGNORECASE -from ..scraper import _BasicScraper, _ParserScraper +from ..scraper import ParserScraper, _BasicScraper, _ParserScraper from ..util import tagre from ..helpers import bounceStarter from .common import ComicControlScraper, WordPressScraper, WordPressNaviIn, WordPressWebcomic @@ -36,13 +36,12 @@ class WebcomicName(_ParserScraper): multipleImagesPerStrip = True -class Weregeek(_ParserScraper): +class Weregeek(ParserScraper): url = 'http://www.weregeek.com/' - stripUrl = url + '%s/' - firstStripUrl = stripUrl % '2006/11/27' - imageSearch = '//div[@id="comic"]/img' - prevSearch = '//a[./img[@alt="Previous"]]' - help = 'Index format: yyyy/mm/dd' + stripUrl = url + 'comic/%s/' + firstStripUrl = stripUrl % 'comic-1' + imageSearch = '//div[d:class("webcomic-media")]//img' + prevSearch = '//a[d:class("previous-webcomic-link")]' class WereIWolf(_ParserScraper): From 94bfb6e2cf250c8a98d63802cacfe45272dcda85 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 21:04:20 -0700 Subject: [PATCH 32/46] Add WebToons/CrystalVirusOtherStory --- dosagelib/plugins/webtoons.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/webtoons.py b/dosagelib/plugins/webtoons.py index 2f6b365e3..72f6415fd 100644 --- a/dosagelib/plugins/webtoons.py +++ b/dosagelib/plugins/webtoons.py @@ -123,6 +123,7 @@ class WebToons(ParserScraper): cls('CookingComically', 'tiptoon/cooking-comically', 622), cls('Crumbs', 'romance/crumbs', 1648), cls('CrystalVirus', 'challenge/crystal-virus', 347038), + cls('CrystalVirusOtherStory', 'challenge/crystal-virus-other-story', 837028), cls('CupidsArrows', 'romance/cupids-arrows', 1538), cls('CursedPrincessClub', 'comedy/cursed-princess-club', 1537), cls('Cyberbunk', 'sf/cyberbunk', 466), From 14180fef140cf9451f3a76ce257c913852633926 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 21:06:24 -0700 Subject: [PATCH 33/46] Add Tapastic/Ginpu --- dosagelib/plugins/tapas.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/tapas.py b/dosagelib/plugins/tapas.py index 81765c66e..a1db5bdb0 100644 --- a/dosagelib/plugins/tapas.py +++ b/dosagelib/plugins/tapas.py @@ -66,6 +66,7 @@ class Tapas(ParserScraper): cls('AmpleTime', 'Ample-Time'), cls('FANGS', 'fangscomic'), cls('FishNuggets', 'Fish-Nuggets'), + cls('Ginpu', 'Ginpu-Studios-Comics'), cls('HoneyAndTheMoon', 'Honey-and-the-Moon'), cls('InsignificantOtters', 'IOtters'), cls('MagicalBoy', 'magicalboy'), From 5d6321f79e9ef9708d4b0b07a3e92d80d3612123 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 21:09:05 -0700 Subject: [PATCH 34/46] Fix PlushAndBlood --- dosagelib/plugins/p.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dosagelib/plugins/p.py b/dosagelib/plugins/p.py index 33089f463..29ef61897 100644 --- a/dosagelib/plugins/p.py +++ b/dosagelib/plugins/p.py @@ -210,12 +210,12 @@ class PlanescapeSurvival(_BasicScraper): help = 'Index format: nnn' -class PlushAndBlood(_ParserScraper): +class PlushAndBlood(ParserScraper): url = 'http://www.plushandblood.com/Comic.php' stripUrl = url + '?strip_id=%s' firstStripUrl = stripUrl % '1' imageSearch = '//img[contains(@src, "comics/")]' - prevSearch = '//a[./img[contains(@src, "Nav/Prev")]]' + prevSearch = '//a[contains(text(), "PREV")]' class PokeyThePenguin(_ParserScraper): From 734326106d324a6fb624f424e6ffdd71199de053 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 23:40:17 -0700 Subject: [PATCH 35/46] Fix PvPOnline --- dosagelib/plugins/p.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dosagelib/plugins/p.py b/dosagelib/plugins/p.py index 29ef61897..41aad4a30 100644 --- a/dosagelib/plugins/p.py +++ b/dosagelib/plugins/p.py @@ -334,8 +334,10 @@ class PS238(_ParserScraper): class PvPOnline(ParserScraper): baseUrl = 'https://www.toonhoundstudios.com/' url = baseUrl + 'pvp/' - stripUrl = baseUrl + 'comic/%s/?sid=372' + stripUrl = baseUrl + 'comic/%s/' firstStripUrl = stripUrl % '19980504' imageSearch = '//div[@id="spliced-comic"]//img/@data-src-img' - prevSearch = '//div[d:class("comic-nav")]//a[d:class("prev")]' - help = 'Older pages need a Patreon subscription' + prevSearch = '//a[d:class("prev")]' + + def namer(self, imageUrl, pageUrl): + return 'pvp' + imageUrl.rsplit('/', 1)[-1] From 63723bc1f9598115fa5f28ed415a6605d87a77ab Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 23:40:25 -0700 Subject: [PATCH 36/46] Fix FoxDad --- dosagelib/plugins/f.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dosagelib/plugins/f.py b/dosagelib/plugins/f.py index fa259e5f2..86de3addd 100644 --- a/dosagelib/plugins/f.py +++ b/dosagelib/plugins/f.py @@ -6,7 +6,7 @@ from re import compile, escape from ..util import tagre -from ..scraper import _BasicScraper, _ParserScraper +from ..scraper import ParserScraper, _BasicScraper, _ParserScraper from ..helpers import indirectStarter, joinPathPartsNamer from .common import ComicControlScraper, WordPressNaviIn, WordPressScraper @@ -149,18 +149,19 @@ class ForLackOfABetterComic(_ParserScraper): endOfLife = True -class FoxDad(_ParserScraper): +class FoxDad(ParserScraper): url = 'https://foxdad.com/' stripUrl = url + 'post/%s' firstStripUrl = stripUrl % '149683014997/some-people-are-just-different-support-the-comic' - imageSearch = ('//figure[@class="photo-hires-item"]//img', '//figure[@class="tmblr-full"]//img') + imageSearch = '//figure[@class="photo-hires-item"]//img' prevSearch = '//a[@class="previous-button"]' def namer(self, imageUrl, pageUrl): page = self.getPage(pageUrl) - post = page.xpath('//link[@type="application/json+oembed"]')[0].get('href') - post = post.replace('https://www.tumblr.com/oembed/1.0?url=https://foxdad.com/post', '') - post = post.replace('-support-me-on-patreon', '') + post = page.xpath('//li[@class="timestamp"]/a/@href')[0] + post = post.replace('https://foxdad.com/post/', '') + if '-consider-support' in post: + post = post.split('-consider-support')[0] return post.replace('/', '-') From cf95aa076a45cf713bd6f12e5b3328227ba32c68 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 23:42:10 -0700 Subject: [PATCH 37/46] Add Rainburn --- dosagelib/plugins/r.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dosagelib/plugins/r.py b/dosagelib/plugins/r.py index 035fef337..5a10455cc 100644 --- a/dosagelib/plugins/r.py +++ b/dosagelib/plugins/r.py @@ -7,11 +7,19 @@ from re import compile from urllib.parse import urljoin from ..helpers import bounceStarter -from ..scraper import _BasicScraper, _ParserScraper +from ..scraper import ParserScraper, _BasicScraper, _ParserScraper from ..util import tagre from .common import WordPressScraper, WordPressNavi, WordPressWebcomic +class Rainburn(ParserScraper): + url = 'https://rainburn.virmir.com/' + stripUrl = url + 'comic.php?page=%s' + firstStripUrl = stripUrl % '1' + imageSearch = '//div[@class="comic"]//img' + prevSearch = '//a[contains(@class, "prev")]' + + class RalfTheDestroyer(WordPressScraper): url = 'http://ralfthedestroyer.com/' From ed1124662c07efe3a19fcd65b4c1fbaf6fa2f62f Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 7 Jun 2023 00:02:40 -0700 Subject: [PATCH 38/46] Fix Nightshift --- dosagelib/plugins/n.py | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/dosagelib/plugins/n.py b/dosagelib/plugins/n.py index a4278fddf..21a66d588 100644 --- a/dosagelib/plugins/n.py +++ b/dosagelib/plugins/n.py @@ -113,29 +113,18 @@ class Nicky510(WordPressNavi): endOfLife = True -class Nightshift(WordPressWebcomic): - url = 'https://poecatcomix.com/nightshift-static/' - stripUrl = 'https://poecatcomix.com/nightshift/%s/' - firstStripUrl = stripUrl % 'ns-cover' - imageSearch = '//div[contains(@class, "webcomic-media")]//img' +class Nightshift(ParserScraper): + url = 'https://poecatcomix.com/nightshiftcomic/' + stripUrl = url + '%s/' + firstStripUrl = stripUrl % 'ns-issue-1-cover' + imageSearch = '//img[@class="scale-with-grid wp-post-image"]' + prevSearch = '//a[d:class("fixed-nav-prev")]' + latestSearch = '//div[@class="post-title"]//a' + starter = indirectStarter adult = True - def starter(self): - # Build list of chapters for naming - indexPage = self.getPage(self.url) - self.chapters = indexPage.xpath('//a[./img[contains(@class, "attachment-large")]]/@href') - latestPage = self.chapters[0] - self.chapters = self.chapters[1:] - self.currentChapter = len(self.chapters) - return latestPage - def namer(self, imageUrl, pageUrl): - page = pageUrl.rstrip('/').rsplit('/', 1)[-1] - page = page.replace('blood-brothers', 'bloodbrothers').replace('bb-2', 'bb2').replace('ns7-', 'page-') - filename = 'ns%d-%s.%s' % (self.currentChapter, page, imageUrl.rsplit('.', 1)[-1]) - if pageUrl in self.chapters: - self.currentChapter = self.currentChapter - 1 - return filename + return pageUrl.rsplit('/', 2)[1] + '.' + imageUrl.rsplit('.', 1)[-1] class Nimona(_ParserScraper): From 540163b9ee2aff5b09620e9616f63c8552df5c3b Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 7 Jun 2023 00:05:14 -0700 Subject: [PATCH 39/46] Fix StarfireAgency --- dosagelib/plugins/s.py | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/dosagelib/plugins/s.py b/dosagelib/plugins/s.py index bfddc68c5..9de02edd2 100644 --- a/dosagelib/plugins/s.py +++ b/dosagelib/plugins/s.py @@ -527,30 +527,18 @@ class StarCrossdDestiny(_ParserScraper): return directory + '-' + filename -class StarfireAgency(WordPressWebcomic): - url = 'https://poecatcomix.com/starfire-agency-static/' - stripUrl = 'https://poecatcomix.com/starfire-agency/%s/' - firstStripUrl = stripUrl % '2005-09-201' - imageSearch = '//div[contains(@class, "webcomic-media")]//img' - - def starter(self): - # Build list of chapters for naming - indexPage = self.getPage(self.url) - self.chapters = indexPage.xpath('//a[./img[contains(@class, "attachment-large")]]/@href') - latestPage = self.chapters[0] - self.chapters = self.chapters[1:] - self.currentChapter = len(self.chapters) - return latestPage +class StarfireAgency(ParserScraper): + url = 'https://poecatcomix.com/starfirecomic/' + stripUrl = url + '%s/' + firstStripUrl = stripUrl % 'sfa-issue-1-cover' + imageSearch = '//img[@class="scale-with-grid wp-post-image"]' + prevSearch = '//a[d:class("fixed-nav-prev")]' + latestSearch = '//div[@class="post-title"]//a' + starter = indirectStarter + adult = True def namer(self, imageUrl, pageUrl): - page = pageUrl.rstrip('/').rsplit('/', 1)[-1] - page = page.replace('3page00', 'cover3').replace('6429', 'cover7').replace('sfa-6-5-cover', 'cover6') - page = page.replace('sfa01', 'page01').replace('sfa03', 'page03').replace('sfa04', 'page04') - page = page.replace('sfa24', 'page24').replace('sfa07', 'page') - filename = 'sfa%d-%s.%s' % (self.currentChapter, page, imageUrl.rsplit('.', 1)[-1]) - if pageUrl in self.chapters: - self.currentChapter = self.currentChapter - 1 - return filename + return pageUrl.rsplit('/', 2)[1] + '.' + imageUrl.rsplit('.', 1)[-1] class StarTrip(ComicControlScraper): From 22865e0a1b2f9b709aa13a1032ff1fbc68aba8f5 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 7 Jun 2023 00:05:18 -0700 Subject: [PATCH 40/46] Add Hellkats --- dosagelib/plugins/h.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dosagelib/plugins/h.py b/dosagelib/plugins/h.py index 4ed5f75bf..0c45d77c0 100644 --- a/dosagelib/plugins/h.py +++ b/dosagelib/plugins/h.py @@ -68,6 +68,20 @@ class HeadlessBliss(ComicControlScraper): url = 'http://headlessbliss.com/' +class Hellkats(ParserScraper): + url = 'https://poecatcomix.com/hellkatscomic/' + stripUrl = url + '%s/' + firstStripUrl = stripUrl % 'hellkats-issue-1-cover' + imageSearch = '//img[@class="scale-with-grid wp-post-image"]' + prevSearch = '//a[d:class("fixed-nav-prev")]' + latestSearch = '//div[@class="post-title"]//a' + starter = indirectStarter + adult = True + + def namer(self, imageUrl, pageUrl): + return pageUrl.rsplit('/', 2)[1] + '.' + imageUrl.rsplit('.', 1)[-1] + + class HeyFox(WordPressScraper): url = 'http://www.steamclaw.com/heyfox/' stripUrl = url + 'archives/comic/%s' From 61deb8900b51277f1373e1f1f5747397193cb7e4 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 7 Jun 2023 00:20:25 -0700 Subject: [PATCH 41/46] Fix Shifters --- dosagelib/plugins/s.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/dosagelib/plugins/s.py b/dosagelib/plugins/s.py index 9de02edd2..a679d8da2 100644 --- a/dosagelib/plugins/s.py +++ b/dosagelib/plugins/s.py @@ -209,10 +209,18 @@ class Sheldon(_BasicScraper): help = 'Index format: yymmdd' -class Shifters(WordPressNavi): - url = 'http://shiftersonline.com/' - stripUrl = url + '%s/' - firstStripUrl = stripUrl % 'shifters-redux-promo' +class Shifters(ParserScraper): + baseUrl = 'https://shiftersonline.com/' + url = baseUrl + 'series/shifters-redux/' + stripUrl = baseUrl + 'comic/%s/' + firstStripUrl = stripUrl % 'chapter-1-pg-1' + imageSearch = '//div[@id="spliced-comic"]//span[@class="default-lang"]//img' + prevSearch = '//a[@class="previous-comic"]' + latestSearch = '//div[@id="comic-archive-list"]//a' + starter = indirectStarter + + def namer(self, imageUrl, pageUrl): + return pageUrl.rsplit('/', 2)[1] + '.' + imageUrl.rsplit('.', 1)[-1] class ShipInABottle(WordPressScraper): From 8e416325ac4f1015c00b6308def1a8f121ecb869 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 7 Jun 2023 00:20:40 -0700 Subject: [PATCH 42/46] Add Shifters/OnGossamerWings --- dosagelib/plugins/s.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dosagelib/plugins/s.py b/dosagelib/plugins/s.py index a679d8da2..8e4f74a66 100644 --- a/dosagelib/plugins/s.py +++ b/dosagelib/plugins/s.py @@ -223,6 +223,14 @@ class Shifters(ParserScraper): return pageUrl.rsplit('/', 2)[1] + '.' + imageUrl.rsplit('.', 1)[-1] +class ShiftersOnGossamerWings(Shifters): + name = 'Shifters/OnGossamerWings' + baseUrl = 'https://shiftersonline.com/' + url = baseUrl + 'series/shifters-on-gossamer-wings/' + stripUrl = baseUrl + 'comic/%s/' + firstStripUrl = stripUrl % 'on-gossamer-wings-cover' + + class ShipInABottle(WordPressScraper): url = 'http://shipinbottle.pepsaga.com/' stripUrl = url + '?p=%s' From 4965e0ce09d8ccec4be137ee15dd3d3b4b2a097e Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 7 Jun 2023 00:20:53 -0700 Subject: [PATCH 43/46] Add Shifters/TheBeastWithin --- dosagelib/plugins/s.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/dosagelib/plugins/s.py b/dosagelib/plugins/s.py index 8e4f74a66..131873281 100644 --- a/dosagelib/plugins/s.py +++ b/dosagelib/plugins/s.py @@ -231,6 +231,45 @@ class ShiftersOnGossamerWings(Shifters): firstStripUrl = stripUrl % 'on-gossamer-wings-cover' +class ShiftersTheBeastWithin(Shifters): + name = 'Shifters/TheBeastWithin' + baseUrl = 'https://shiftersonline.com/' + url = baseUrl + 'series/shifters-the-beast-within/' + stripUrl = baseUrl + 'comic/%s/' + firstStripUrl = stripUrl % 'awakenings-pg-1' + endOfLife = True + + def namer(self, imageUrl, pageUrl): + filename = pageUrl.rsplit('/', 2)[1] + '.' + imageUrl.rsplit('.', 1)[-1] + if filename.startswith('the-company-of-dragons'): + filename = 'in-' + filename + # Prepend chapter number to filename + chapters = [ + 'awakenings', + 'lifting-the-veil', + 'tears-of-blood', + 'on-the-lam', + 'shades-of-intrigue', + 'catfight', + 'out-of-control', + 'damage-control', + 'wolfs-clothing', + 'strange-dreams', + 'blood-bonds', + 'the-other-team', + 'get-ferrah', + 'the-price-of-power', + 'dogfight', + 'surfacing', + 'in-the-company-of-dragons', + 'filler', + ] + for chapter in chapters: + if filename.startswith(chapter): + filename = 'chapter-' + str(chapters.index(chapter) + 1) + '-' + filename + return filename + + class ShipInABottle(WordPressScraper): url = 'http://shipinbottle.pepsaga.com/' stripUrl = url + '?p=%s' From e9b48cfd58d50b2801e3995d02dca1f5a24cb0cd Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 7 Jun 2023 23:32:40 -0700 Subject: [PATCH 44/46] Fix UberQuest --- dosagelib/plugins/old.py | 1 + dosagelib/plugins/studiokhimera.py | 18 ------------------ dosagelib/plugins/u.py | 23 +++++++++++++++++++++++ 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/dosagelib/plugins/old.py b/dosagelib/plugins/old.py index 9f06968c2..e9a53c085 100644 --- a/dosagelib/plugins/old.py +++ b/dosagelib/plugins/old.py @@ -1679,6 +1679,7 @@ class Renamed(Scraper): cls('SmackJeeves/TheRealmOfKaerwyn', 'ComicFury/TheRealmOfKaerwyn'), cls('SoloLeveling', 'MangaDex/SoloLeveling'), cls('StudioKhimera/Draconia', 'Draconia'), + cls('StudioKhimera/UberQuest', 'UberQuest'), cls('TracesOfThePast', 'RickGriffinStudios/TracesOfThePast'), cls('TracesOfThePast/NSFW', 'RickGriffinStudios/TracesOfThePastNSFW'), diff --git a/dosagelib/plugins/studiokhimera.py b/dosagelib/plugins/studiokhimera.py index 8a129157f..22ae3808e 100644 --- a/dosagelib/plugins/studiokhimera.py +++ b/dosagelib/plugins/studiokhimera.py @@ -45,21 +45,3 @@ class StudioKhimera(ParserScraper): return ( cls('Mousechievous', 'mousechievous'), ) - - -class UberQuest(WordPressScraper): - name = 'StudioKhimera/UberQuest' - stripUrl = 'https://uberquest.studiokhimera.com/comic/page/%s/' - url = stripUrl % 'latest' - firstStripUrl = stripUrl % 'cover' - imageSearch = '//div[@class="prj--comic-image"]/img' - prevSearch = '//uq-image-button[d:class("prj--comic-control-prev")]' - - def namer(self, imageUrl, pageUrl): - # Fix inconsistent filenames - filename = imageUrl.rsplit('/', 1)[-1] - filename = filename.replace('Page', 'UberQuest') - filename = filename.replace('UberQuest01.', 'UberQuest001.') - filename = filename.replace('UberQuest98.', 'UberQuest098.') - filename = filename.replace('UberQuest99.', 'UberQuest099.') - return filename diff --git a/dosagelib/plugins/u.py b/dosagelib/plugins/u.py index 01ec06e23..12eeb0bbd 100644 --- a/dosagelib/plugins/u.py +++ b/dosagelib/plugins/u.py @@ -3,6 +3,7 @@ # Copyright (C) 2012-2014 Bastian Kleineidam # Copyright (C) 2015-2020 Tobias Gruetzmacher # Copyright (C) 2019-2020 Daniel Ring +import json from re import compile from urllib.parse import urljoin from lxml import etree @@ -13,6 +14,28 @@ from ..util import tagre from .common import ComicControlScraper, WordPressScraper, WordPressNavi +class UberQuest(ParserScraper): + baseUrl = 'https://uberquest.studiokhimera.com/' + url = baseUrl + 'wp-json/keeros_comics/v1/chapters' + stripUrl = baseUrl + 'wp-json/wp/v2/cfx_comic_page?page_number=%s' + firstStripUrl = stripUrl % 'cover' + + def starter(self): + # Retrieve comic metadata from API + data = self.session.get(self.url) + data.raise_for_status() + return self.stripUrl % data.json()[-1]['pages'][-1]['page_number'] + + def getPrevUrl(self, url, data): + return self.stripUrl % json.loads(data.text_content())[0]['prev_id'] + + def fetchUrls(self, url, data, urlSearch): + return [json.loads(data.text_content())[0]['attachment']] + + def namer(self, imageUrl, pageUrl): + return 'UberQuest-' + pageUrl.rsplit('=', 1)[-1] + + class Underling(WordPressNavi): url = ('https://web.archive.org/web/20190806120425/' 'http://underlingcomic.com/') From 6719c6ac259aa923c9751e78ec0eb07010785d4e Mon Sep 17 00:00:00 2001 From: Techwolf Date: Wed, 7 Jun 2023 23:58:09 -0700 Subject: [PATCH 45/46] Add MangaDex/UzakiChanWaAsobitai --- dosagelib/plugins/mangadex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index 6a8888ac3..910821be9 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -158,6 +158,7 @@ class MangaDex(ParserScraper): cls('TomoChanWaOnnanoko', '76ee7069-23b4-493c-bc44-34ccbf3051a8'), cls('TonikakuKawaii', '30f3ac69-21b6-45ad-a110-d011b7aaadaa'), cls('UramikoiKoiUramikoi', '009b6788-48f3-4e78-975c-097f54def7ab'), + cls('UzakiChanWaAsobitai', '5a90308a-8b12-4a4d-9c6d-2487028fe319'), cls('YotsubaAnd', '58be6aa6-06cb-4ca5-bd20-f1392ce451fb'), cls('YuYuHakusho', '44a5cbe1-0204-4cc7-a1ff-0fda2ac004b6'), ) From 202e47af5041eb105bcbd21710dd3654dc3143b1 Mon Sep 17 00:00:00 2001 From: Techwolf Date: Tue, 6 Jun 2023 21:07:42 -0700 Subject: [PATCH 46/46] Clean up lost comics --- dosagelib/plugins/c.py | 7 ----- dosagelib/plugins/f.py | 18 ------------ dosagelib/plugins/g.py | 10 ------- dosagelib/plugins/kemonocafe.py | 1 - dosagelib/plugins/mangadex.py | 1 - dosagelib/plugins/old.py | 10 +++++++ dosagelib/plugins/studiokhimera.py | 47 ------------------------------ dosagelib/plugins/t.py | 8 ----- dosagelib/plugins/v.py | 18 ------------ dosagelib/plugins/webtoons.py | 2 -- 10 files changed, 10 insertions(+), 112 deletions(-) delete mode 100644 dosagelib/plugins/studiokhimera.py diff --git a/dosagelib/plugins/c.py b/dosagelib/plugins/c.py index fa95e48ad..c731f375c 100644 --- a/dosagelib/plugins/c.py +++ b/dosagelib/plugins/c.py @@ -117,13 +117,6 @@ class CatAndGirl(_ParserScraper): prevSearch = '//a[d:class("pager--prev")]' -class CatenaCafe(WordPressScraper): - name = 'CatenaManor/CatenaCafe' - url = 'https://catenamanor.com/' - stripUrl = url + 'comic/%s/' - firstStripUrl = stripUrl % 'reboot-book1cover-small' - - class CatenaManor(_ParserScraper): baseUrl = ('https://web.archive.org/web/20141027141116/' 'http://catenamanor.com/') diff --git a/dosagelib/plugins/f.py b/dosagelib/plugins/f.py index 86de3addd..2bef57265 100644 --- a/dosagelib/plugins/f.py +++ b/dosagelib/plugins/f.py @@ -20,24 +20,6 @@ class FalconTwin(_BasicScraper): help = 'Index format: nnn' -class FalseStart(_ParserScraper): - baseUrl = 'https://boneitisindustries.com/' - url = baseUrl + 'comics/false-start/' - stripUrl = baseUrl + 'comic/%s/' - firstStripUrl = stripUrl % 'false-start-chapter-zero-page-1' - imageSearch = '//div[@id="content"]//img[d:class("size-full")]' - prevSearch = '//a[./span[d:class("ticon-chevron-left")]]' - adult = True - - def starter(self): - archivePage = self.getPage(self.url) - self.archive = archivePage.xpath('//div[contains(@class, "vcex-portfolio-grid")]//a/@href') - return self.archive[-1] - - def getPrevUrl(self, url, data): - return self.archive[self.archive.index(url) - 1] - - class Faneurysm(WordPressNaviIn): url = 'http://hijinksensue.com/comic/think-only-tree/' firstStripUrl = 'http://hijinksensue.com/comic/captains-prerogative/' diff --git a/dosagelib/plugins/g.py b/dosagelib/plugins/g.py index aa2726144..4c266f339 100644 --- a/dosagelib/plugins/g.py +++ b/dosagelib/plugins/g.py @@ -59,16 +59,6 @@ class GeeksNextDoor(_ParserScraper): help = 'Index format: yyyy-mm-dd' -class Ginpu(WordPressNavi): - url = 'https://www.ginpu.us/' - stripUrl = url + 'comic/%s/' - firstStripUrl = stripUrl % 'filler-2' - - def namer(self, imageUrl, pageUrl): - filename = imageUrl.rsplit('/', 3) - return '%s-%s_%s' % (filename[1], filename[2], filename[3]) - - class GirlGenius(_BasicScraper): baseUrl = 'http://www.girlgeniusonline.com/' rurl = escape(baseUrl) diff --git a/dosagelib/plugins/kemonocafe.py b/dosagelib/plugins/kemonocafe.py index b1e78a160..788ab1eaf 100644 --- a/dosagelib/plugins/kemonocafe.py +++ b/dosagelib/plugins/kemonocafe.py @@ -63,7 +63,6 @@ class KemonoCafe(ParserScraper): cls('LasLindas', 'laslindas', 'll0001', adult=True), cls('Paprika', 'paprika', 'page000'), cls('PracticeMakesPerfect', 'pmp', 'title-001'), - cls('PrincessBunny', 'princessbunny', 'pg001'), cls('Rascals', 'rascals', 'rascals-pg-0', adult=True), cls('TheEyeOfRamalach', 'theeye', 'theeye-page01'), cls('TinaOfTheSouth', 'tots', 'tos-01-01'), diff --git a/dosagelib/plugins/mangadex.py b/dosagelib/plugins/mangadex.py index 910821be9..1bd6e9ea9 100644 --- a/dosagelib/plugins/mangadex.py +++ b/dosagelib/plugins/mangadex.py @@ -112,7 +112,6 @@ class MangaDex(ParserScraper): cls('HowToOpenATriangularRiceball', '6ebd90ce-d5e8-49c0-a4bc-e02e0f8ecb93'), cls('HunterXHunter', 'db692d58-4b13-4174-ae8c-30c515c0689c'), cls('IchaichasuruToOkaneGaWaichauFutariNoHanashi', '8eaaec7d-7aa7-490e-8d52-5a3d0a28e78b'), - cls('ImTheMaxLevelNewbie', 'a253e13a-2b41-4f7d-915e-1e31a3f5d31d'), cls('InterspeciesReviewers', '1b2fddf9-1385-4f3c-b37a-cf86a9428b1a'), cls('JahySamaWaKujikenai', '2f4e5f5b-d930-4266-8c8a-c4cf9a81e51f'), cls('JingaiNoYomeToIchaIchaSuru', '809d2493-df3c-4e72-a57e-3e0026cae9fb'), diff --git a/dosagelib/plugins/old.py b/dosagelib/plugins/old.py index e9a53c085..b5989665b 100644 --- a/dosagelib/plugins/old.py +++ b/dosagelib/plugins/old.py @@ -604,6 +604,7 @@ class Removed(Scraper): cls('WotNow'), # Removed in 3.0 + cls('CatenaManor/CatenaCafe'), cls('ComicFury/AdventuresOftheGreatCaptainMaggieandCrew'), cls('ComicFury/AWAKENING'), cls('ComicFury/Beebleville'), @@ -832,6 +833,8 @@ class Removed(Scraper): cls('ComicsKingdom/Redeye'), cls('ComicsKingdom/RedeyeSundays'), cls('CrapIDrewOnMyLunchBreak'), + cls('FalseStart'), + cls('Ginpu'), cls('GoComics/060'), cls('GoComics/2CowsAndAChicken'), cls('GoComics/ABitSketch'), @@ -992,9 +995,11 @@ class Removed(Scraper): cls('GoComics/Wrobbertcartoons'), cls('GoComics/Zootopia'), cls('JustAnotherEscape'), + cls('KemonoCafe/PrincessBunny'), cls('Laiyu', 'brk'), cls('MangaDex/DrStone', 'legal'), cls('MangaDex/HeavensDesignTeam', 'legal'), + cls('MangaDex/ImTheMaxLevelNewbie', 'legal'), cls('MangaDex/SPYxFAMILY', 'legal'), cls('Ryugou'), cls('SeelPeel'), @@ -1568,16 +1573,21 @@ class Removed(Scraper): cls('SnafuComics/Tin'), cls('SnafuComics/Titan'), cls('StudioKhimera/Eorah', 'mov'), + cls('StudioKhimera/Mousechevious'), cls('StuffNoOneToldMe'), cls('TaleOfTenThousand'), + cls('TalesAndTactics'), cls('TheCyantianChronicles/CookieCaper'), cls('TheCyantianChronicles/Pawprints'), + cls('VampireHunterBoyfriends'), cls('VGCats/Adventure'), cls('VGCats/Super'), cls('VictimsOfTheSystem'), cls('WebDesignerCOTW'), cls('WebToons/Adamsville'), cls('WebToons/CrapIDrewOnMyLunchBreak'), + cls('WebToons/CrystalVirus'), + cls('WebToons/OVERPOWERED'), cls('WintersLight'), ) diff --git a/dosagelib/plugins/studiokhimera.py b/dosagelib/plugins/studiokhimera.py deleted file mode 100644 index 22ae3808e..000000000 --- a/dosagelib/plugins/studiokhimera.py +++ /dev/null @@ -1,47 +0,0 @@ -# SPDX-License-Identifier: MIT -# Copyright (C) 2019-2022 Tobias Gruetzmacher -# Copyright (C) 2019-2020 Daniel Ring -from ..scraper import ParserScraper -from .common import WordPressScraper - - -class StudioKhimera(ParserScraper): - imageSearch = '//figure[@class="gallery-item"]//img/@data-src' - prevSearch = '//a[@rel="prev"]' - - def __init__(self, name, sub, last=None, adult=False, fixNames=False): - super().__init__('StudioKhimera/' + name) - - self.baseUrl = 'https://%s.studiokhimera.com/' % sub - self.stripUrl = self.baseUrl + '%s/' - self.url = self.baseUrl + 'category/comicChapter/?latest' - - self.multipleImagesPerStrip = True - - if last: - self.last = True - self.url = self.stripUrl % last - self.endOfLife = True - - if adult: - self.adult = True - - def starter(self): - # Retrieve list of chapter links - chapterPage = self.getPage(self.baseUrl + 'archive/') - self.chapters = chapterPage.xpath('//main//a/@href') - self.firstStripUrl = self.chapters[0] - return self.chapters[-1] - - def getPrevUrl(self, url, data): - # Select previous chapter from list - index = [i for i, ch in enumerate(self.chapters) if ch == url][0] - if index == 0: - return None - return self.chapters[index - 1] - - @classmethod - def getmodules(cls): - return ( - cls('Mousechievous', 'mousechievous'), - ) diff --git a/dosagelib/plugins/t.py b/dosagelib/plugins/t.py index ba41db60a..c9c1596dd 100644 --- a/dosagelib/plugins/t.py +++ b/dosagelib/plugins/t.py @@ -16,14 +16,6 @@ from .common import (ComicControlScraper, WordPressScraper, WordPressSpliced, WordPressNavi, WordPressWebcomic) -class TailsAndTactics(_ParserScraper): - url = 'http://tailsandtactics.com/comic/' - stripUrl = url + '%s/' - firstStripUrl = stripUrl % '1' - imageSearch = '//div[@class="comic-image"]/img' - prevSearch = '//a[text()=" Back"]' - - class TekMage(WordPressNavi): url = 'https://tekmagecomic.com/' stripUrl = url + 'comic/%s/' diff --git a/dosagelib/plugins/v.py b/dosagelib/plugins/v.py index 191ea106f..cc0e1777b 100644 --- a/dosagelib/plugins/v.py +++ b/dosagelib/plugins/v.py @@ -7,24 +7,6 @@ from ..scraper import ParserScraper, _ParserScraper from ..helpers import bounceStarter, indirectStarter -class VampireHunterBoyfriends(_ParserScraper): - baseUrl = 'https://boneitisindustries.com/' - url = baseUrl + 'comics/vampire-hunter-boyfriends/' - stripUrl = baseUrl + 'comic/%s/' - firstStripUrl = stripUrl % 'vampire-hunter-boyfriends-chapter-1-cover' - imageSearch = '//div[@id="content"]//img[d:class("size-full")]' - prevSearch = '//a[./span[d:class("ticon-chevron-left")]]' - adult = True - - def starter(self): - archivePage = self.getPage(self.url) - self.archive = archivePage.xpath('//div[contains(@class, "vcex-portfolio-grid")]//a/@href') - return self.archive[-1] - - def getPrevUrl(self, url, data): - return self.archive[self.archive.index(url) - 1] - - class Vexxarr(_ParserScraper): baseUrl = 'http://www.vexxarr.com/' url = baseUrl + 'Index.php' diff --git a/dosagelib/plugins/webtoons.py b/dosagelib/plugins/webtoons.py index 72f6415fd..ecd3f47c2 100644 --- a/dosagelib/plugins/webtoons.py +++ b/dosagelib/plugins/webtoons.py @@ -122,7 +122,6 @@ class WebToons(ParserScraper): cls('CodeAdam', 'action/code-adam', 1657), cls('CookingComically', 'tiptoon/cooking-comically', 622), cls('Crumbs', 'romance/crumbs', 1648), - cls('CrystalVirus', 'challenge/crystal-virus', 347038), cls('CrystalVirusOtherStory', 'challenge/crystal-virus-other-story', 837028), cls('CupidsArrows', 'romance/cupids-arrows', 1538), cls('CursedPrincessClub', 'comedy/cursed-princess-club', 1537), @@ -311,7 +310,6 @@ class WebToons(ParserScraper): cls('OmniscientReader', 'action/omniscient-reader', 2154), cls('ORANGEMARMALADE', 'romance/orange-marmalade', 97), cls('Outrage', 'super-hero/outrage', 1450), - cls('OVERPOWERED', 'challenge/overpowered', 85292), cls('PacificRimAmara', 'sf/pacific-rim-amara', 1327), cls('PandorasBlogs', 'challenge/pandoras-blogs', 532007), cls('PaperRoses', 'challenge/paper-roses', 39736),