Add KemonoCafe site engine

This commit is contained in:
Techwolf 2019-09-07 19:03:01 -07:00 committed by Tobias Gruetzmacher
parent 419c41fb74
commit 81b92a8c18
3 changed files with 58 additions and 12 deletions

View file

@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2019-2020 Tobias Gruetzmacher
from __future__ import absolute_import, division, print_function
from ..scraper import _ParserScraper
class KemonoCafe(_ParserScraper):
imageSearch = '//div[@id="comic"]//img'
prevSearch = '//a[contains(@class, "comic-nav-previous")]'
def __init__(self, name, sub, first, last=None, adult=False):
super(KemonoCafe, self).__init__('KemonoCafe/' + name)
self.url = 'https://%s.kemono.cafe/' % sub
self.stripUrl = self.url + 'comic/%s/'
self.firstStripUrl = self.stripUrl % first
if last:
self.url = self.stripUrl % last
self.endOfLife = True
if adult:
self.adult = True
def namer(self, imageUrl, pageUrl):
# Strip date from filenames
filename = imageUrl.rsplit('/', 1)[-1]
if filename[4] == '-' and filename[7] == '-':
filename = filename[10:]
if filename[0] == '-' or filename[0] == '_':
filename = filename[1:]
# Fix duplicate filenames
if 'paprika' in pageUrl and '69-2' in pageUrl:
filename = filename.replace('69', '69-2')
elif 'rascals' in pageUrl and '89-2' in pageUrl:
filename = filename.replace('89', '90')
elif 'rascals' in pageUrl and '133-2' in pageUrl:
filename = filename.replace('133', '134')
return filename
@classmethod
def getmodules(cls):
return (
cls('CaribbeanBlue', 'cb', 'page000', last='page325'),
cls('IMew', 'imew', 'imew00', last='imew50'),
cls('Knighthood', 'knighthood', 'kh0001'),
cls('LasLindas', 'laslindas', 'll0001', adult=True),
cls('Paprika', 'paprika', 'page000'),
cls('PracticeMakesPerfect', 'pmp', 'title-001'),
cls('Rascals', 'rascals', 'rascals-pg-0', adult=True),
cls('TheEyeOfRamalach', 'theeye', 'theeye-page01'),
cls('TinaOfTheSouth', 'tots', 'tos-01-01'),
)

View file

@ -5,7 +5,7 @@
from __future__ import absolute_import, division, print_function from __future__ import absolute_import, division, print_function
from re import compile, escape from re import compile
from ..scraper import _BasicScraper, _ParserScraper from ..scraper import _BasicScraper, _ParserScraper
from ..helpers import bounceStarter, indirectStarter from ..helpers import bounceStarter, indirectStarter
@ -36,16 +36,6 @@ class Laiyu(_WordPressScraper):
starter = indirectStarter starter = indirectStarter
class LasLindas(_BasicScraper):
url = 'http://laslindas.katbox.net/'
rurl = escape(url)
stripUrl = url + 'comic/%s/'
imageSearch = compile(tagre("img", "src", r'(%swp-content/uploads/[^"]+)' % rurl, after="attachment-full"))
multipleImagesPerStrip = True
prevSearch = compile(tagre("a", "href", r'(%scomic/[^"]+)' % rurl, after="previous"))
help = 'Index format: stripname'
class LastResort(_WordPressScraper): class LastResort(_WordPressScraper):
url = 'http://www.lastres0rt.com/' url = 'http://www.lastres0rt.com/'
stripUrl = url + 'comic/%s/' stripUrl = url + 'comic/%s/'

View file

@ -435,7 +435,6 @@ class Removed(Scraper):
cls('PensAndTales/FireflyCross'), cls('PensAndTales/FireflyCross'),
cls('PetiteSymphony/Kickinrad'), cls('PetiteSymphony/Kickinrad'),
cls('PetiteSymphony/Orangegrind'), cls('PetiteSymphony/Orangegrind'),
cls('PetiteSymphony/Rascals'),
cls('PetiteSymphony/Seed'), cls('PetiteSymphony/Seed'),
cls('Pimpette'), cls('Pimpette'),
cls('PunksAndNerds', 'mis'), cls('PunksAndNerds', 'mis'),
@ -727,10 +726,12 @@ class Renamed(Scraper):
cls('KeenSpot/Newshounds', 'Newshounds'), cls('KeenSpot/Newshounds', 'Newshounds'),
cls('KeenSpot/SinFest', 'SinFest'), cls('KeenSpot/SinFest', 'SinFest'),
cls('KeenSpot/TheGodChild', 'GodChild'), cls('KeenSpot/TheGodChild', 'GodChild'),
cls('LasLindas', 'KemonoCafe/LasLindas'),
cls('NicoleAndDerek', 'NamirDeiter/NicoleAndDerek'), cls('NicoleAndDerek', 'NamirDeiter/NicoleAndDerek'),
cls('OnTheFasttrack', 'ComicsKingdom/OnTheFastrack'), cls('OnTheFasttrack', 'ComicsKingdom/OnTheFastrack'),
cls('PetiteSymphony/Djandora', 'ComicsBreak/Djandora'), cls('PetiteSymphony/Djandora', 'ComicsBreak/Djandora'),
cls('PetiteSymphony/Generation17', 'ComicsBreak/Generation17'), cls('PetiteSymphony/Generation17', 'ComicsBreak/Generation17'),
cls('PetiteSymphony/Rascals', 'KemonoCafe/Rascals'),
cls('QuentynQuinnSpaceRanger', 'RHJunior/QuentynQuinnSpaceRanger'), cls('QuentynQuinnSpaceRanger', 'RHJunior/QuentynQuinnSpaceRanger'),
cls('ShermansLagoon', 'ComicsKingdom/ShermansLagoon'), cls('ShermansLagoon', 'ComicsKingdom/ShermansLagoon'),
cls('SmackJeeves/CityFolk', 'ComicFury/CityFolk'), cls('SmackJeeves/CityFolk', 'ComicFury/CityFolk'),