# -*- coding: utf-8 -*-
# Copyright (C) 2004-2008 Tristan Seligmann and Jonathan Jacobs
# Copyright (C) 2012-2014 Bastian Kleineidam
# Copyright (C) 2015-2020 Tobias Gruetzmacher
from __future__ import absolute_import, division, print_function
from re import compile, escape, MULTILINE
try:
from functools import cached_property
except ImportError:
from cached_property import cached_property
from ..scraper import _BasicScraper, _ParserScraper
from ..helpers import indirectStarter, xpath_class
from ..util import tagre
from .common import _ComicControlScraper, _WordPressScraper, _WPNavi, _WPNaviIn, _WPWebcomic
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 Tamberlane(_WPWebcomic):
baseUrl = 'https://www.tamberlanecomic.com/'
url = baseUrl + 'latest/'
stripUrl = baseUrl + 'tamberlane/%s/'
firstStripUrl = stripUrl % 'page-1'
def namer(self, imageUrl, pageUrl):
# Fix inconsistent filenames
filename = imageUrl.rsplit('/', 1)[-1]
return filename.replace('ai4zCWaA', 'Page_152')
class TheBrads(_ParserScraper):
url = ('https://web.archive.org/web/20171211154809/'
'http://bradcolbow.com/archive/C4/')
stripUrl = url + '%s/'
firstStripUrl = stripUrl % 'P125'
imageSearch = '//div[{}]//img'.format(xpath_class('entry'))
prevSearch = '//a[{}]'.format(xpath_class('prev'))
multipleImagesPerStrip = True
endOfLife = True
class TheClassMenagerie(_ParserScraper):
stripUrl = 'http://www.theclassm.com/d/%s.html'
url = stripUrl % '20050717'
firstStripUrl = stripUrl % '19990322'
imageSearch = '//img[@class="ksc"]'
prevSearch = '//a[@rel="prev"]'
multipleImagesPerStrip = True
endOfLife = True
class TheDevilsPanties(_WPNavi):
url = 'https://thedevilspanties.com/'
stripUrl = url + 'archives/%s'
firstStripUrl = stripUrl % '300'
help = 'Index format: number'
class TheDreamlandChronicles(_WordPressScraper):
url = 'http://www.thedreamlandchronicles.com/'
class TheGamerCat(_ParserScraper):
url = 'https://thegamercat.com/'
stripUrl = url + 'comic/%s/'
firstStripUrl = stripUrl % '06102011'
imageSearch = '//div[@id="comic"]//img'
prevSearch = '//a[contains(@class, "comic-nav-previous")]'
help = 'Index format: stripname'
class TheGentlemansArmchair(_WordPressScraper):
url = 'http://thegentlemansarmchair.com/'
class TheGentleWolf(_WordPressScraper):
url = 'https://thegentlewolf.net/'
stripUrl = url + 'comic/%s/'
firstStripUrl = stripUrl % 'tgw-001'
def namer(self, imageUrl, pageUrl):
# Fix duplicate filename
filename = imageUrl.rsplit('/', 1)[-1]
if pageUrl == self.stripUrl % 'tgw-271':
filename = filename.replace('272', '271')
return filename
class TheJunkHyenasDiner(_WordPressScraper):
url = 'http://junkhyenasdiner.com/'
stripUrl = url + 'comic/%s/'
firstStripUrl = stripUrl % 'intro'
class TheLandscaper(_ParserScraper):
stripUrl = ('https://web.archive.org/web/20171129163510/'
'http://landscaper.visual-assault.net/comic/%s')
url = stripUrl % 'latest'
firstStripUrl = stripUrl % '1'
imageSearch = '//article[{}]//img[1]'.format(xpath_class('comic'))
prevSearch = '//a[contains(text(), "Previous")]'
endOfLife = True
class TheMelvinChronicles(_WordPressScraper):
url = 'http://melvin.jeaniebottle.com/'
class TheNoob(_WordPressScraper):
url = 'http://thenoobcomic.com/'
stripUrl = url + 'comic/%s/'
firstStripUrl = stripUrl % '1'
help = 'Index format: n (unpadded)'
class TheOldVictorian(_ParserScraper):
url = 'http://theoldvictorianwebcomic.com/'
stripUrl = url + 'comic/%s/'
firstStripUrl = stripUrl % 'the-old-victorian-cover'
imageSearch = '//div[@id="comic"]//img'
prevSearch = '//a[contains(@class, "comic-nav-previous")]'
def namer(self, imageUrl, pageUrl):
filename = imageUrl.rsplit('/', 1)[-1].replace('_', '-')
filename = filename.replace('TOV00', 'TOV-00')
if filename.replace('oldvic', '')[0].isdigit():
filename = filename.replace('oldvic', 'TOV-00')
if 'TOV-000' in filename and len(filename) > 12:
filename = filename[:8] + '-' + filename[8:]
return filename
class TheOrderOfTheStick(_BasicScraper):
url = 'http://www.giantitp.com/'
stripUrl = url + 'comics/oots%s.html'
firstStripUrl = stripUrl % '0001'
imageSearch = compile(r'')
prevSearch = compile(r'