Fix some comics.
This commit is contained in:
parent
92420c5a08
commit
45df462a47
20 changed files with 222 additions and 181 deletions
|
@ -3,12 +3,11 @@
|
||||||
# Copyright (C) 2012 Bastian Kleineidam
|
# Copyright (C) 2012 Bastian Kleineidam
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import locale
|
|
||||||
import rfc822
|
import rfc822
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from .output import out
|
from .output import out
|
||||||
from .util import urlopen, saneDataSize, normaliseURL, unquote
|
from .util import urlopen, normaliseURL, unquote, strsize
|
||||||
from .events import getHandler
|
from .events import getHandler
|
||||||
|
|
||||||
class FetchComicError(IOError):
|
class FetchComicError(IOError):
|
||||||
|
@ -94,29 +93,21 @@ class ComicImage(object):
|
||||||
fn = os.path.join(comicDir, filename)
|
fn = os.path.join(comicDir, filename)
|
||||||
if os.path.isfile(fn) and os.path.getsize(fn) >= comicSize:
|
if os.path.isfile(fn) and os.path.getsize(fn) >= comicSize:
|
||||||
self.touch(fn)
|
self.touch(fn)
|
||||||
out.write('Skipping existing file "%s".' % (fn,), 1)
|
out.write('Skipping existing file "%s".' % fn, 1)
|
||||||
return fn, False
|
return fn, False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
out.write('Writing comic to file %s...' % (fn,), 3)
|
out.write('Writing comic to file %s...' % fn, 3)
|
||||||
with open(fn, 'wb') as comicOut:
|
with open(fn, 'wb') as comicOut:
|
||||||
startTime = time.time()
|
|
||||||
comicOut.write(self.urlobj.content)
|
comicOut.write(self.urlobj.content)
|
||||||
endTime = time.time()
|
|
||||||
self.touch(fn)
|
self.touch(fn)
|
||||||
except:
|
except Exception:
|
||||||
if os.path.isfile(fn):
|
if os.path.isfile(fn):
|
||||||
os.remove(fn)
|
os.remove(fn)
|
||||||
raise
|
raise
|
||||||
else:
|
else:
|
||||||
size = os.path.getsize(fn)
|
size = strsize(os.path.getsize(fn))
|
||||||
bytes = locale.format('%d', size, True)
|
out.write("Saved %s (%s)." % (fn, size), 1)
|
||||||
if endTime != startTime:
|
|
||||||
speed = saneDataSize(size / (endTime - startTime))
|
|
||||||
else:
|
|
||||||
speed = '???'
|
|
||||||
attrs = dict(fn=fn, bytes=bytes, speed=speed)
|
|
||||||
out.write('Saved "%(fn)s" (%(bytes)s bytes, %(speed)s/sec).' % attrs, 1)
|
|
||||||
getHandler().comicDownloaded(self.name, fn)
|
getHandler().comicDownloaded(self.name, fn)
|
||||||
|
|
||||||
return fn, True
|
return fn, True
|
||||||
|
|
|
@ -5,14 +5,15 @@
|
||||||
from re import compile, MULTILINE
|
from re import compile, MULTILINE
|
||||||
from ..util import tagre
|
from ..util import tagre
|
||||||
from ..scraper import _BasicScraper
|
from ..scraper import _BasicScraper
|
||||||
from ..helpers import regexNamer, bounceStarter
|
from ..helpers import regexNamer, bounceStarter, indirectStarter
|
||||||
|
|
||||||
|
|
||||||
class ALessonIsLearned(_BasicScraper):
|
class ALessonIsLearned(_BasicScraper):
|
||||||
latestUrl = 'http://www.alessonislearned.com/'
|
baseUrl = 'http://www.alessonislearned.com/'
|
||||||
stripUrl = latestUrl + 'index.php?comic=%s'
|
|
||||||
imageSearch = compile(tagre("img", "src", r"(cmx/lesson\d+\.[a-z]+)"))
|
|
||||||
prevSearch = compile(tagre("a", "href", r"(index\.php\?comic=\d+)", quote="'")+r"[^>]+previous")
|
prevSearch = compile(tagre("a", "href", r"(index\.php\?comic=\d+)", quote="'")+r"[^>]+previous")
|
||||||
|
starter = indirectStarter(baseUrl, prevSearch)
|
||||||
|
stripUrl = baseUrl + 'index.php?comic=%s'
|
||||||
|
imageSearch = compile(tagre("img", "src", r"(cmx/lesson\d+\.[a-z]+)"))
|
||||||
help = 'Index format: nnn'
|
help = 'Index format: nnn'
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,6 +45,7 @@ class AbsurdNotions(_BasicScraper):
|
||||||
latestUrl = 'http://www.absurdnotions.org/page129.html'
|
latestUrl = 'http://www.absurdnotions.org/page129.html'
|
||||||
stripUrl = 'http://www.absurdnotions.org/page%s.html'
|
stripUrl = 'http://www.absurdnotions.org/page%s.html'
|
||||||
imageSearch = compile(tagre('img', 'src', r'(an[^"]+)'))
|
imageSearch = compile(tagre('img', 'src', r'(an[^"]+)'))
|
||||||
|
multipleImagesPerStrip = True
|
||||||
prevSearch = compile(tagre('a', 'href', r'([^"]+)') + tagre('img', 'src', 'nprev\.gif'))
|
prevSearch = compile(tagre('a', 'href', r'([^"]+)') + tagre('img', 'src', 'nprev\.gif'))
|
||||||
help = 'Index format: n (unpadded)'
|
help = 'Index format: n (unpadded)'
|
||||||
|
|
||||||
|
@ -82,7 +84,7 @@ class Alice(_BasicScraper):
|
||||||
class AlienLovesPredator(_BasicScraper):
|
class AlienLovesPredator(_BasicScraper):
|
||||||
latestUrl = 'http://alienlovespredator.com/'
|
latestUrl = 'http://alienlovespredator.com/'
|
||||||
stripUrl = latestUrl + '%s'
|
stripUrl = latestUrl + '%s'
|
||||||
imageSearch = compile(tagre("img", "src", r'(http://alienlovespredator\.com/strips/strip_\d\.jpg)'))
|
imageSearch = compile(tagre("img", "src", r'([^"]+)', after='border="1" alt="" width="750"'))
|
||||||
prevSearch = compile(tagre("a", "href", r'([^"]+)', after="prev"))
|
prevSearch = compile(tagre("a", "href", r'([^"]+)', after="prev"))
|
||||||
help = 'Index format: yyyy/mm/dd/name/'
|
help = 'Index format: yyyy/mm/dd/name/'
|
||||||
|
|
||||||
|
@ -105,7 +107,7 @@ class AltermetaOld(Altermeta):
|
||||||
class Angels2200(_BasicScraper):
|
class Angels2200(_BasicScraper):
|
||||||
latestUrl = 'http://www.janahoffmann.com/angels/'
|
latestUrl = 'http://www.janahoffmann.com/angels/'
|
||||||
stripUrl = latestUrl + '%s'
|
stripUrl = latestUrl + '%s'
|
||||||
imageSearch = compile(tagre("img", "src", r"(http://www\.janahoffmann\.com/angels/comics/[^'\"]+)"))
|
imageSearch = compile(tagre("img", "src", r"(http://www\.janahoffmann\.com/angels/comics/[^']+)", quote="'"))
|
||||||
prevSearch = compile(tagre("a", "href", r'([^"]+)')+"« Previous")
|
prevSearch = compile(tagre("a", "href", r'([^"]+)')+"« Previous")
|
||||||
help = 'Index format: yyyy/mm/dd/part-<n>-comic-<n>'
|
help = 'Index format: yyyy/mm/dd/part-<n>-comic-<n>'
|
||||||
|
|
||||||
|
@ -113,7 +115,7 @@ class Angels2200(_BasicScraper):
|
||||||
class AppleGeeks(_BasicScraper):
|
class AppleGeeks(_BasicScraper):
|
||||||
latestUrl = 'http://www.applegeeks.com/'
|
latestUrl = 'http://www.applegeeks.com/'
|
||||||
stripUrl = latestUrl + 'comics/viewcomic.php?issue=%s'
|
stripUrl = latestUrl + 'comics/viewcomic.php?issue=%s'
|
||||||
imageSearch = compile(tagre("img", "src", r'"(strips/\d+?\..+?)"'))
|
imageSearch = compile(tagre("img", "src", r'((?:/comics/)?issue\d+\.jpg)'))
|
||||||
prevSearch = compile(r'<div class="caption">Previous Comic</div>\s*<p><a href="([^"]+)">', MULTILINE)
|
prevSearch = compile(r'<div class="caption">Previous Comic</div>\s*<p><a href="([^"]+)">', MULTILINE)
|
||||||
help = 'Index format: n (unpadded)'
|
help = 'Index format: n (unpadded)'
|
||||||
|
|
||||||
|
@ -124,7 +126,7 @@ class Achewood(_BasicScraper):
|
||||||
imageSearch = compile(tagre("img", "src", r'(/comic\.php\?date=\d+)'))
|
imageSearch = compile(tagre("img", "src", r'(/comic\.php\?date=\d+)'))
|
||||||
prevSearch = compile(tagre("a", "href", r'(index\.php\?date=\d+)', after="Previous"))
|
prevSearch = compile(tagre("a", "href", r'(index\.php\?date=\d+)', after="Previous"))
|
||||||
help = 'Index format: mmddyyyy'
|
help = 'Index format: mmddyyyy'
|
||||||
namer = regexNamer(compile(r'date%3D(\d{8})'))
|
namer = regexNamer(compile(r'date=(\d+)'))
|
||||||
|
|
||||||
|
|
||||||
class AstronomyPOTD(_BasicScraper):
|
class AstronomyPOTD(_BasicScraper):
|
||||||
|
@ -132,7 +134,7 @@ class AstronomyPOTD(_BasicScraper):
|
||||||
'http://antwrp.gsfc.nasa.gov/apod/astropix.html',
|
'http://antwrp.gsfc.nasa.gov/apod/astropix.html',
|
||||||
compile(r'<a href="(ap\d{6}\.html)">></a>'))
|
compile(r'<a href="(ap\d{6}\.html)">></a>'))
|
||||||
stripUrl = 'http://antwrp.gsfc.nasa.gov/apod/ap%s.html'
|
stripUrl = 'http://antwrp.gsfc.nasa.gov/apod/ap%s.html'
|
||||||
imageSearch = compile(r'<a href="(image/\d{4}/.+\..+?)">')
|
imageSearch = compile(r'<a href="(image/\d{4}/[^"]+)"')
|
||||||
prevSearch = compile(r'<a href="(ap\d{6}\.html)"><</a>')
|
prevSearch = compile(r'<a href="(ap\d{6}\.html)"><</a>')
|
||||||
help = 'Index format: yymmdd'
|
help = 'Index format: yymmdd'
|
||||||
|
|
||||||
|
@ -246,6 +248,6 @@ class AlsoBagels(_BasicScraper):
|
||||||
class Annyseed(_BasicScraper):
|
class Annyseed(_BasicScraper):
|
||||||
latestUrl = 'http://www.colourofivy.com/annyseed_webcomic_latest.htm'
|
latestUrl = 'http://www.colourofivy.com/annyseed_webcomic_latest.htm'
|
||||||
stripUrl = 'http://www.colourofivy.com/annyseed_webcomic%s.htm'
|
stripUrl = 'http://www.colourofivy.com/annyseed_webcomic%s.htm'
|
||||||
imageSearch = compile(r'<td width="570" height="887" valign="top"><img src="(.+?)"')
|
imageSearch = compile(tagre("img", "src", r'(Annyseed[^"]+)'))
|
||||||
prevSearch = compile(r'<a href="(http://www.colourofivy.com/.+?)"><img src="Last.gif"')
|
prevSearch = compile(r'<a href="(http://www\.colourofivy\.com/[^"]+)"><img src="Last.gif"')
|
||||||
help = 'Index format: nnn'
|
help = 'Index format: nnn'
|
||||||
|
|
|
@ -6,14 +6,7 @@ from re import compile
|
||||||
|
|
||||||
from ..util import tagre
|
from ..util import tagre
|
||||||
from ..scraper import _BasicScraper
|
from ..scraper import _BasicScraper
|
||||||
|
from ..helpers import indirectStarter
|
||||||
|
|
||||||
class BadlyDrawnKitties(_BasicScraper):
|
|
||||||
latestUrl = 'http://www.badlydrawnkitties.com/'
|
|
||||||
stripUrl = latestUrl + '%s.html'
|
|
||||||
imageSearch = compile(tagre("img", "src", r'(/new/[^"]+)'))
|
|
||||||
prevSearch = compile(tagre("a", "href", r'(/[^"]+)') + tagre("img", "src", r'/images/previous\.gif'))
|
|
||||||
help = 'Index format: n/nn (unpadded)'
|
|
||||||
|
|
||||||
|
|
||||||
class Bardsworth(_BasicScraper):
|
class Bardsworth(_BasicScraper):
|
||||||
|
@ -27,7 +20,7 @@ class Bardsworth(_BasicScraper):
|
||||||
class BetterDays(_BasicScraper):
|
class BetterDays(_BasicScraper):
|
||||||
latestUrl = 'http://jaynaylor.com/betterdays/'
|
latestUrl = 'http://jaynaylor.com/betterdays/'
|
||||||
stripUrl = latestUrl + 'archives/%s.html'
|
stripUrl = latestUrl + 'archives/%s.html'
|
||||||
imageSearch = compile(tagre("img", "src", r'(/betterdays/comic/[^"]+)'))
|
imageSearch = compile(tagre("img", "src", r'(/betterdays/comic/[^>]+)', quote=""))
|
||||||
prevSearch = compile(tagre("a", "href", r'([^"]+)') + '« Previous')
|
prevSearch = compile(tagre("a", "href", r'([^"]+)') + '« Previous')
|
||||||
help = 'Index format: yyyy/mm/<your guess>'
|
help = 'Index format: yyyy/mm/<your guess>'
|
||||||
|
|
||||||
|
@ -93,17 +86,18 @@ class Brink(_BasicScraper):
|
||||||
|
|
||||||
|
|
||||||
class BoredAndEvil(_BasicScraper):
|
class BoredAndEvil(_BasicScraper):
|
||||||
latestUrl = 'http://www.boredandevil.com/'
|
baseUrl = 'http://www.boredandevil.com/'
|
||||||
stripUrl = latestUrl + '?date=%s'
|
stripUrl = baseUrl + '?date=%s'
|
||||||
imageSearch = compile(tagre("img", "src", r'(strips/[^"]+)'))
|
imageSearch = compile(tagre("img", "src", r'(strips/[^"]+)'))
|
||||||
prevSearch = compile(r'First Comic.+<a href="(.+?)".+previous-on.gif')
|
prevSearch = compile(r'First Comic.+<a href="(.+?)".+previous-on.gif')
|
||||||
|
starter = indirectStarter(baseUrl, prevSearch)
|
||||||
help = 'Index format: yyyy-mm-dd'
|
help = 'Index format: yyyy-mm-dd'
|
||||||
|
|
||||||
|
|
||||||
class BoyOnAStickAndSlither(_BasicScraper):
|
class BoyOnAStickAndSlither(_BasicScraper):
|
||||||
latestUrl = 'http://www.boasas.com/'
|
latestUrl = 'http://www.boasas.com/'
|
||||||
stripUrl = latestUrl + 'page/%s'
|
stripUrl = latestUrl + 'page/%s'
|
||||||
imageSearch = compile(tagre("img", "src", r'(http://25\.media\.tumblr\.com/[^"]+)'))
|
imageSearch = compile(tagre("img", "src", r'(http://\d+\.media\.tumblr\.com/[^"]+_1280\.png)'))
|
||||||
prevSearch = compile(tagre("a", "href", r'(/page/\d+)') + "<span>Next page")
|
prevSearch = compile(tagre("a", "href", r'(/page/\d+)') + "<span>Next page")
|
||||||
help = 'Index format: n (unpadded)'
|
help = 'Index format: n (unpadded)'
|
||||||
|
|
||||||
|
@ -149,9 +143,10 @@ class BadassMuthas(_BasicScraper):
|
||||||
|
|
||||||
|
|
||||||
class BrightlyWound(_BasicScraper):
|
class BrightlyWound(_BasicScraper):
|
||||||
latestUrl = 'http://www.brightlywound.com/'
|
baseUrl = 'http://www.brightlywound.com/'
|
||||||
stripUrl = latestUrl + '?comic=%s'
|
latestUrl = baseUrl + '?comic=137'
|
||||||
imageSearch = compile(tagre("img", "src", r"(comic/[^']+)"))
|
stripUrl = baseUrl + '?comic=%s'
|
||||||
|
imageSearch = compile(tagre("img", "src", r"(comic/[^']+)", quote="'"))
|
||||||
prevSearch = compile(r'<div id=\'navback\'><a href=\'(\?comic\=\d+)\'><img src=\'images/previous.png\'')
|
prevSearch = compile(r'<div id=\'navback\'><a href=\'(\?comic\=\d+)\'><img src=\'images/previous.png\'')
|
||||||
help = 'Index format: nnn'
|
help = 'Index format: nnn'
|
||||||
|
|
||||||
|
@ -215,6 +210,7 @@ class BetweenFailures(_BasicScraper):
|
||||||
class BillyTheBeaker(_BasicScraper):
|
class BillyTheBeaker(_BasicScraper):
|
||||||
latestUrl = 'http://billy.defectivejunk.com/'
|
latestUrl = 'http://billy.defectivejunk.com/'
|
||||||
stripUrl = latestUrl + 'index.php?strip=%s'
|
stripUrl = latestUrl + 'index.php?strip=%s'
|
||||||
|
multipleImagesPerStrip = True
|
||||||
imageSearch = compile(tagre("img", "src", r'(bub\d+_\d+[^"]+)'))
|
imageSearch = compile(tagre("img", "src", r'(bub\d+_\d+[^"]+)'))
|
||||||
prevSearch = compile(tagre("a", "href", r'(index\.php\?strip\=[^"]+)', after="Previous strip"))
|
prevSearch = compile(tagre("a", "href", r'(index\.php\?strip\=[^"]+)', after="Previous strip"))
|
||||||
help = 'Index format: nnn'
|
help = 'Index format: nnn'
|
||||||
|
|
|
@ -14,6 +14,7 @@ class CaptainSNES(_BasicScraper):
|
||||||
stripUrl = latestUrl + '%s/'
|
stripUrl = latestUrl + '%s/'
|
||||||
imageSearch = compile(r"<img src='(http://www\.captainsnes\.com/comics/[^']+)'")
|
imageSearch = compile(r"<img src='(http://www\.captainsnes\.com/comics/[^']+)'")
|
||||||
prevSearch = compile(r'<a href="(http://www\.captainsnes\.com/[^"]+)"><span class="prev">')
|
prevSearch = compile(r'<a href="(http://www\.captainsnes\.com/[^"]+)"><span class="prev">')
|
||||||
|
multipleImagesPerStrip = True
|
||||||
help = 'Index format: yyyy/mm/dd/nnn-stripname'
|
help = 'Index format: yyyy/mm/dd/nnn-stripname'
|
||||||
|
|
||||||
|
|
||||||
|
@ -124,8 +125,8 @@ class CrapIDrewOnMyLunchBreak(_BasicScraper):
|
||||||
class CtrlAltDel(_BasicScraper):
|
class CtrlAltDel(_BasicScraper):
|
||||||
latestUrl = 'http://www.cad-comic.com/cad/'
|
latestUrl = 'http://www.cad-comic.com/cad/'
|
||||||
stripUrl = latestUrl + '%s'
|
stripUrl = latestUrl + '%s'
|
||||||
imageSearch = compile(r'<img src="(/comics/\w+/\d{8}\..+?)"')
|
imageSearch = compile(tagre("img", "src", r'(http://v\.cdn\.cad-comic\.com/comics/[^"]+)'))
|
||||||
prevSearch = compile(r'<a href="(/\w+/\d{8})" class="nav-back')
|
prevSearch = compile(tagre("a", "href", r'([^"]+)', after="nav-back"))
|
||||||
help = 'Index format: yyyymmdd'
|
help = 'Index format: yyyymmdd'
|
||||||
|
|
||||||
|
|
||||||
|
@ -249,7 +250,7 @@ class CalamitiesOfNature(_BasicScraper):
|
||||||
class Champ2010(_BasicScraper):
|
class Champ2010(_BasicScraper):
|
||||||
# the latest URL is hard coded since the comic is discontinued
|
# the latest URL is hard coded since the comic is discontinued
|
||||||
latestUrl = 'http://jedcollins.com/champ2010/champ-12-30-10.html'
|
latestUrl = 'http://jedcollins.com/champ2010/champ-12-30-10.html'
|
||||||
stripUrl = 'http://jedcollins.com/champ2010/champ-%s.html'
|
stripUrl = 'http://jedcollins.com/champ2010/%s.html'
|
||||||
imageSearch = compile(tagre("img", "src", r'(http://jedcollins\.com/champ2010/comics/[^"]+)'))
|
imageSearch = compile(tagre("img", "src", r'(http://jedcollins\.com/champ2010/comics/[^"]+)'))
|
||||||
prevSearch = compile(tagre("a", "href", r'(http://jedcollins\.com/champ2010/[^"]+)', after="Previous"))
|
prevSearch = compile(tagre("a", "href", r'(http://jedcollins\.com/champ2010/[^"]+)', after="Previous"))
|
||||||
help = 'Index format: yy-dd-mm'
|
help = 'Index format: yy-dd-mm'
|
||||||
|
|
|
@ -4,33 +4,48 @@
|
||||||
|
|
||||||
from re import compile
|
from re import compile
|
||||||
from ..scraper import make_scraper
|
from ..scraper import make_scraper
|
||||||
from ..helpers import bounceStarter
|
from ..util import tagre, fetchUrl
|
||||||
from ..util import tagre
|
|
||||||
|
|
||||||
# note: adding the compile() functions inside add() is a major performance hog
|
# note: adding the compile() functions inside add() is a major performance hog
|
||||||
_imageSearch = compile(tagre("img", "src", r'(http://media\.drunkduck\.com\.s3\.amazonaws\.com:80/[^"]+)', before="page-image"))
|
_imageSearch = compile(tagre("img", "src", r'(http://media\.drunkduck\.com\.s3\.amazonaws\.com:80/[^"]+)', before="page-image"))
|
||||||
_linkSearch = tagre("a", "href", r'(/[^"]+/\d+/)')
|
_linkSearch = tagre("a", "href", r'(/[^"]+/\d+/)')
|
||||||
_prevSearch = compile(_linkSearch + tagre("img", "class", "arrow_prev"))
|
_prevSearch = compile(_linkSearch + tagre("img", "class", "arrow_prev"))
|
||||||
_nextSearch = compile(_linkSearch + tagre("img", "class", "arrow_next"))
|
_nextSearch = compile(_linkSearch + tagre("img", "class", "arrow_next"))
|
||||||
|
_lastSearch = compile(_linkSearch + tagre("img", "class", "arrow_last"))
|
||||||
|
|
||||||
def add(name):
|
def add(name):
|
||||||
classname = 'DrunkDuck_%s' % name
|
classname = 'DrunkDuck_%s' % name
|
||||||
url = 'http://www.drunkduck.com/%s/' % name
|
_url = 'http://www.drunkduck.com/%s/' % name
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def namer(cls, imageUrl, pageUrl):
|
def _namer(cls, imageUrl, pageUrl):
|
||||||
index = int(pageUrl.rstrip('/').split('/')[-1])
|
index = int(pageUrl.rstrip('/').split('/')[-1])
|
||||||
ext = imageUrl.rsplit('.')[-1]
|
ext = imageUrl.rsplit('.')[-1]
|
||||||
return '%d.%s' % (index, ext)
|
return '%d.%s' % (index, ext)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _starter(cls):
|
||||||
|
# first, try hopping to previous and next comic
|
||||||
|
url = fetchUrl(_url, _prevSearch)
|
||||||
|
if not url:
|
||||||
|
# no previous link found, try hopping to last comic
|
||||||
|
url = fetchUrl(_url, _lastSearch)
|
||||||
|
if not url:
|
||||||
|
raise ValueError("could not find lastSearch pattern %r in %s" % (_lastSearch.pattern, _url))
|
||||||
|
return url
|
||||||
|
url = fetchUrl(url, _nextSearch)
|
||||||
|
if not url:
|
||||||
|
raise ValueError("could not find nextSearch pattern %r in %s" % (_nextSearch.pattern, _url))
|
||||||
|
return url
|
||||||
|
|
||||||
globals()[classname] = make_scraper(classname,
|
globals()[classname] = make_scraper(classname,
|
||||||
name = 'DrunkDuck/' + name,
|
name = 'DrunkDuck/' + name,
|
||||||
starter = bounceStarter(url, _nextSearch),
|
starter = _starter,
|
||||||
stripUrl = url + '%s/',
|
stripUrl = _url + '%s/',
|
||||||
imageSearch = _imageSearch,
|
imageSearch = _imageSearch,
|
||||||
prevSearch = _prevSearch,
|
prevSearch = _prevSearch,
|
||||||
help = 'Index format: n (unpadded)',
|
help = 'Index format: n (unpadded)',
|
||||||
namer = namer,
|
namer = _namer,
|
||||||
)
|
)
|
||||||
|
|
||||||
# do not edit anything below since these entries are generated from scripts/update.sh
|
# do not edit anything below since these entries are generated from scripts/update.sh
|
||||||
|
@ -266,7 +281,6 @@ add('CorruptHardware')
|
||||||
add('Covalence')
|
add('Covalence')
|
||||||
add('Coveinant_Journey')
|
add('Coveinant_Journey')
|
||||||
add('Cowboys_and_Aliens_II')
|
add('Cowboys_and_Aliens_II')
|
||||||
add('Crack')
|
|
||||||
add('Crack_Bird_and_Company')
|
add('Crack_Bird_and_Company')
|
||||||
add('Crackwalker')
|
add('Crackwalker')
|
||||||
add('Cramberries')
|
add('Cramberries')
|
||||||
|
@ -313,7 +327,6 @@ add('Dasien')
|
||||||
add('Day_in_the_Life_of_a_Cosplayer')
|
add('Day_in_the_Life_of_a_Cosplayer')
|
||||||
add('DeadFingers')
|
add('DeadFingers')
|
||||||
add('Dead_Men')
|
add('Dead_Men')
|
||||||
add('Dead_Strangers')
|
|
||||||
add('Death_Brigade')
|
add('Death_Brigade')
|
||||||
add('Death_P0rn')
|
add('Death_P0rn')
|
||||||
add('Decimated_Eden')
|
add('Decimated_Eden')
|
||||||
|
@ -565,7 +578,6 @@ add('Insomniart')
|
||||||
add('Intergalactic_Continental_Dimension_Travelers')
|
add('Intergalactic_Continental_Dimension_Travelers')
|
||||||
add('Internet_Superbuddies')
|
add('Internet_Superbuddies')
|
||||||
add('Iornhart')
|
add('Iornhart')
|
||||||
add('Iron_Wolf')
|
|
||||||
add('Irrumator')
|
add('Irrumator')
|
||||||
add('Ishi_Alliance')
|
add('Ishi_Alliance')
|
||||||
add('Island_Of_Submission')
|
add('Island_Of_Submission')
|
||||||
|
@ -639,7 +651,6 @@ add('Laurentinas_Improv_Studio_The_Comic_Art')
|
||||||
add('Lavender_Legend')
|
add('Lavender_Legend')
|
||||||
add('Led_by_a_Mad_Man')
|
add('Led_by_a_Mad_Man')
|
||||||
add('LeeEXE')
|
add('LeeEXE')
|
||||||
add('Legacy_of_Blaze')
|
|
||||||
add('Legacy_of_Kain_Laugh_Reaver')
|
add('Legacy_of_Kain_Laugh_Reaver')
|
||||||
add('Legend_of_Link')
|
add('Legend_of_Link')
|
||||||
add('Legend_of_Setar')
|
add('Legend_of_Setar')
|
||||||
|
@ -756,7 +767,6 @@ add('Mob_Ties')
|
||||||
add('Modern_Day_Witchdoctor')
|
add('Modern_Day_Witchdoctor')
|
||||||
add('Modest_Medusa')
|
add('Modest_Medusa')
|
||||||
add('Monkey_Pot')
|
add('Monkey_Pot')
|
||||||
add('Monster_Lover')
|
|
||||||
add('Monster_Lover_Destinys_Path')
|
add('Monster_Lover_Destinys_Path')
|
||||||
add('Monster_Soup')
|
add('Monster_Soup')
|
||||||
add('Moon_Reflected_in_Water')
|
add('Moon_Reflected_in_Water')
|
||||||
|
@ -950,7 +960,6 @@ add('Raw_Fish')
|
||||||
add('Razor_Candy')
|
add('Razor_Candy')
|
||||||
add('Rebound')
|
add('Rebound')
|
||||||
add('Reckless_Youth')
|
add('Reckless_Youth')
|
||||||
add('Red_Dog_Venue')
|
|
||||||
add('Red_Moon')
|
add('Red_Moon')
|
||||||
add('Red_String')
|
add('Red_String')
|
||||||
add('Redemption_of_Heroes')
|
add('Redemption_of_Heroes')
|
||||||
|
@ -1275,7 +1284,6 @@ add('Two_Weeks_Notice')
|
||||||
add('Typical_Strange')
|
add('Typical_Strange')
|
||||||
add('UNA_Frontiers_Commentary')
|
add('UNA_Frontiers_Commentary')
|
||||||
add('USB')
|
add('USB')
|
||||||
add('U_Chuu_No_Hoshi_Hotoshi_Tsuko')
|
|
||||||
add('Ultimate_X')
|
add('Ultimate_X')
|
||||||
add('Ultimate_tourny_of_ultimate_fighting')
|
add('Ultimate_tourny_of_ultimate_fighting')
|
||||||
add('Ultranimu')
|
add('Ultranimu')
|
||||||
|
|
|
@ -5,9 +5,11 @@
|
||||||
from re import compile
|
from re import compile
|
||||||
from ..scraper import make_scraper
|
from ..scraper import make_scraper
|
||||||
from ..util import tagre
|
from ..util import tagre
|
||||||
|
from ..helpers import bounceStarter
|
||||||
|
|
||||||
_imageSearch = compile(tagre("img", "src", r'(http://assets\.amuniversal\.com/[0-9a-f]+)'))
|
_imageSearch = compile(tagre("img", "src", r'(http://assets\.amuniversal\.com/[0-9a-f]+)'))
|
||||||
_prevSearch = compile(tagre("a", "href", r'(/[^"]+/\d+/\d+/\d+)', after="prev"))
|
_prevSearch = compile(tagre("a", "href", r'(/[^"]+/\d+/\d+/\d+)', after="prev"))
|
||||||
|
_nextSearch = compile(tagre("a", "href", r'(/[^"]+/\d+/\d+/\d+)', after="next"))
|
||||||
|
|
||||||
def add(name, shortname):
|
def add(name, shortname):
|
||||||
baseUrl = 'http://www.gocomics.com'
|
baseUrl = 'http://www.gocomics.com'
|
||||||
|
@ -15,11 +17,11 @@ def add(name, shortname):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def namer(cls, imageUrl, pageUrl):
|
def namer(cls, imageUrl, pageUrl):
|
||||||
prefix, year, month, day = pageUrl.split('/', 3)
|
prefix, year, month, day = pageUrl.rsplit('/', 3)
|
||||||
return "%s_%s%s%s.gif" % (shortname, year, month, day)
|
return "%s_%s%s%s.gif" % (name, year, month, day)
|
||||||
|
|
||||||
globals()[classname] = make_scraper(classname,
|
globals()[classname] = make_scraper(classname,
|
||||||
latestUrl=baseUrl + shortname,
|
starter = bounceStarter(baseUrl + shortname, _nextSearch),
|
||||||
name='GoComics/' + name,
|
name='GoComics/' + name,
|
||||||
stripUrl=baseUrl + shortname + '/%s',
|
stripUrl=baseUrl + shortname + '/%s',
|
||||||
imageSearch = _imageSearch,
|
imageSearch = _imageSearch,
|
||||||
|
@ -223,7 +225,6 @@ add('Frazz', '/frazz')
|
||||||
add('FredBasset', '/fredbasset')
|
add('FredBasset', '/fredbasset')
|
||||||
#add('FreeRange', '/freerange')
|
#add('FreeRange', '/freerange')
|
||||||
add('FreshlySqueezed', '/freshlysqueezed')
|
add('FreshlySqueezed', '/freshlysqueezed')
|
||||||
add('FrikkFrakkAndFrank', '/frikk-frakk-frank')
|
|
||||||
add('FrizziToons', '/frizzitoons')
|
add('FrizziToons', '/frizzitoons')
|
||||||
add('FrogApplause', '/frogapplause')
|
add('FrogApplause', '/frogapplause')
|
||||||
add('Garfield', '/garfield')
|
add('Garfield', '/garfield')
|
||||||
|
|
|
@ -14,12 +14,20 @@ _prevSearch = compile(tagre("a", "href", r'([^"]*/d/\d{8}\.html)') +
|
||||||
def add(name, url):
|
def add(name, url):
|
||||||
classname = 'KeenSpot_%s' % name
|
classname = 'KeenSpot_%s' % name
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _prevUrlModifier(cls, prevUrl):
|
||||||
|
if prevUrl:
|
||||||
|
return prevUrl.replace("keenspace", "comicgenesis"
|
||||||
|
).replace("comicgen.com", "comicgenesis.com")
|
||||||
|
|
||||||
globals()[classname] = make_scraper(classname,
|
globals()[classname] = make_scraper(classname,
|
||||||
name='KeenSpot/' + name,
|
name='KeenSpot/' + name,
|
||||||
latestUrl=url,
|
latestUrl=url,
|
||||||
stripUrl=url + 'd/%s.html',
|
stripUrl=url + 'd/%s.html',
|
||||||
imageSearch = _imageSearch,
|
imageSearch = _imageSearch,
|
||||||
prevSearch = _prevSearch,
|
prevSearch = _prevSearch,
|
||||||
|
prevUrlModifier = _prevUrlModifier,
|
||||||
|
multipleImagesPerStrip = True,
|
||||||
help = 'Index format: yyyymmdd',
|
help = 'Index format: yyyymmdd',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -41,7 +49,7 @@ add('ADVENTURERS', 'http://adventurers.comicgenesis.com/')
|
||||||
add('AKitsuneKotaroStory', 'http://kitsunekotaro.comicgenesis.com/')
|
add('AKitsuneKotaroStory', 'http://kitsunekotaro.comicgenesis.com/')
|
||||||
add('AStepTooFar', 'http://asoftercore.comicgenesis.com/')
|
add('AStepTooFar', 'http://asoftercore.comicgenesis.com/')
|
||||||
add('ATasteofEvil', 'http://atasteofevil.comicgenesis.com/')
|
add('ATasteofEvil', 'http://atasteofevil.comicgenesis.com/')
|
||||||
add('AaaSoCAwesomenessandaSliceofCheese', 'http://retography.comicgen.com/')
|
add('AaaSoCAwesomenessandaSliceofCheese', 'http://retography.comicgenesis.com/')
|
||||||
add('Acalltodestiny', 'http://madgoblin.comicgenesis.com/')
|
add('Acalltodestiny', 'http://madgoblin.comicgenesis.com/')
|
||||||
add('Ace147', 'http://ace147.comicgenesis.com/')
|
add('Ace147', 'http://ace147.comicgenesis.com/')
|
||||||
add('AcrossthePond', 'http://atp.comicgenesis.com/')
|
add('AcrossthePond', 'http://atp.comicgenesis.com/')
|
||||||
|
@ -59,7 +67,7 @@ add('AinoYasha', 'http://ainoyasha.comicgenesis.com/')
|
||||||
add('AllAboutEda', 'http://aae.comicgenesis.com/')
|
add('AllAboutEda', 'http://aae.comicgenesis.com/')
|
||||||
add('AllRosesHaveThorns', 'http://allroses.comicgenesis.com/')
|
add('AllRosesHaveThorns', 'http://allroses.comicgenesis.com/')
|
||||||
add('AllWishes', 'http://allwishes.comicgenesis.com/')
|
add('AllWishes', 'http://allwishes.comicgenesis.com/')
|
||||||
add('AlltheCommies', 'http://atc.comicgen.com/')
|
add('AlltheCommies', 'http://atc.comicgenesis.com/')
|
||||||
add('AlphaBetaSoup', 'http://abs.comicgenesis.com/')
|
add('AlphaBetaSoup', 'http://abs.comicgenesis.com/')
|
||||||
add('AlphaLuna', 'http://alphaluna.comicgenesis.com/')
|
add('AlphaLuna', 'http://alphaluna.comicgenesis.com/')
|
||||||
add('AltaModaMetro', 'http://www.am-metro.net/')
|
add('AltaModaMetro', 'http://www.am-metro.net/')
|
||||||
|
@ -77,13 +85,13 @@ add('AngelWarriorComics', 'http://angelwarriorcomics.comicgenesis.com/')
|
||||||
add('Angels', 'http://angelscomic.comicgenesis.com/')
|
add('Angels', 'http://angelscomic.comicgenesis.com/')
|
||||||
add('AngryDMonkey', 'http://www.angrydmonkey.com/')
|
add('AngryDMonkey', 'http://www.angrydmonkey.com/')
|
||||||
add('AngryPeople', 'http://angrypeople.comicgenesis.com/')
|
add('AngryPeople', 'http://angrypeople.comicgenesis.com/')
|
||||||
add('AngrySoul', 'http://angrysoul.comicgen.com/')
|
add('AngrySoul', 'http://angrysoul.comicgenesis.com/')
|
||||||
add('Angst', 'http://oldskool.comicgenesis.com/')
|
add('Angst', 'http://oldskool.comicgenesis.com/')
|
||||||
add('AnimalInstinct', 'http://animalinstinct.comicgenesis.com/')
|
add('AnimalInstinct', 'http://animalinstinct.comicgenesis.com/')
|
||||||
add('AnimeMomentsinHistory', 'http://animehistory.comicgenesis.com/')
|
add('AnimeMomentsinHistory', 'http://animehistory.comicgenesis.com/')
|
||||||
add('Animenifesto', 'http://animenifesto.comicgenesis.com/')
|
add('Animenifesto', 'http://animenifesto.comicgenesis.com/')
|
||||||
add('Anna', 'http://anna.comicgen.com/')
|
add('Anna', 'http://anna.comicgenesis.com/')
|
||||||
add('AnthropomorphicHardware', 'http://hardware.comicgen.com/')
|
add('AnthropomorphicHardware', 'http://hardware.comicgenesis.com/')
|
||||||
add('AntiBunny', 'http://www.antibunny.com/')
|
add('AntiBunny', 'http://www.antibunny.com/')
|
||||||
add('AntiChristDaiji', 'http://clad.comicgenesis.com/')
|
add('AntiChristDaiji', 'http://clad.comicgenesis.com/')
|
||||||
add('AntiZombieArmy', 'http://antizombiearmy.comicgenesis.com/')
|
add('AntiZombieArmy', 'http://antizombiearmy.comicgenesis.com/')
|
||||||
|
@ -127,13 +135,13 @@ add('Bhag', 'http://bhag.comicgenesis.com/')
|
||||||
add('BigMouthComics', 'http://deathless.comicgenesis.com/')
|
add('BigMouthComics', 'http://deathless.comicgenesis.com/')
|
||||||
add('BigTom', 'http://bigtom.comicgenesis.com/')
|
add('BigTom', 'http://bigtom.comicgenesis.com/')
|
||||||
add('Bikou', 'http://bikou.comicgenesis.com/')
|
add('Bikou', 'http://bikou.comicgenesis.com/')
|
||||||
add('BilltheMagician', 'http://billrocks.comicgen.com/')
|
add('BilltheMagician', 'http://billrocks.comicgenesis.com/')
|
||||||
add('BishoujoKishiSailorHellsing', 'http://sailorhellsing.comicgenesis.com/')
|
add('BishoujoKishiSailorHellsing', 'http://sailorhellsing.comicgenesis.com/')
|
||||||
add('BishounenHunters', 'http://bishihunters.comicgenesis.com/')
|
add('BishounenHunters', 'http://bishihunters.comicgenesis.com/')
|
||||||
add('BitterSweetBS', 'http://bsbs.comicgenesis.com/')
|
add('BitterSweetBS', 'http://bsbs.comicgenesis.com/')
|
||||||
add('BlackBlue', 'http://blackandblue.comicgenesis.com/')
|
add('BlackBlue', 'http://blackandblue.comicgenesis.com/')
|
||||||
add('BlackMagic', 'http://naohiro.comicgen.com/')
|
add('BlackMagic', 'http://naohiro.comicgenesis.com/')
|
||||||
add('BlackTapestries', 'http://blacktapestries.comicgen.com/')
|
add('BlackTapestries', 'http://blacktapestries.comicgenesis.com/')
|
||||||
add('Blackaby', 'http://blackaby.comicgenesis.com/')
|
add('Blackaby', 'http://blackaby.comicgenesis.com/')
|
||||||
add('Blahsville', 'http://blahsville.comicgenesis.com/')
|
add('Blahsville', 'http://blahsville.comicgenesis.com/')
|
||||||
add('BlankGeorge', 'http://blankgeorge.comicgenesis.com/')
|
add('BlankGeorge', 'http://blankgeorge.comicgenesis.com/')
|
||||||
|
@ -146,7 +154,6 @@ add('BloodWing', 'http://bloodwing.comicgenesis.com/')
|
||||||
add('BlottoStreet', 'http://blottostreet.comicgenesis.com/')
|
add('BlottoStreet', 'http://blottostreet.comicgenesis.com/')
|
||||||
add('BlueCollarCleanup', 'http://franko.comicgenesis.com/')
|
add('BlueCollarCleanup', 'http://franko.comicgenesis.com/')
|
||||||
add('BlueSkunkthewebcomic', 'http://freakofnature.comicgenesis.com/')
|
add('BlueSkunkthewebcomic', 'http://freakofnature.comicgenesis.com/')
|
||||||
add('BlueZombie', 'http://entity.comicgenesis.com/')
|
|
||||||
add('BlueandOrange', 'http://blueandorange.comicgenesis.com/')
|
add('BlueandOrange', 'http://blueandorange.comicgenesis.com/')
|
||||||
add('Blunderclod', 'http://blunderclod.comicgenesis.com/')
|
add('Blunderclod', 'http://blunderclod.comicgenesis.com/')
|
||||||
add('BoB', 'http://ymmot.comicgenesis.com/')
|
add('BoB', 'http://ymmot.comicgenesis.com/')
|
||||||
|
@ -156,9 +163,8 @@ add('BoldStyle', 'http://boldstyle.comicgenesis.com/')
|
||||||
add('BondsofBlood', 'http://bondsofblood.comicgenesis.com/')
|
add('BondsofBlood', 'http://bondsofblood.comicgenesis.com/')
|
||||||
add('BoobsAhoy', 'http://boobsahoy.comicgenesis.com/')
|
add('BoobsAhoy', 'http://boobsahoy.comicgenesis.com/')
|
||||||
add('Bookwyrms', 'http://bookwyrms.comicgenesis.com/')
|
add('Bookwyrms', 'http://bookwyrms.comicgenesis.com/')
|
||||||
add('BoomerExpress', 'http://www.boomerexpress.com/')
|
|
||||||
add('BorderlineSanity', 'http://brdrline.comicgenesis.com/')
|
add('BorderlineSanity', 'http://brdrline.comicgenesis.com/')
|
||||||
add('BottomFlavor', 'http://bottomflavor.comicgen.com/')
|
add('BottomFlavor', 'http://bottomflavor.comicgenesis.com/')
|
||||||
add('BradTheVampire', 'http://bradthevampire.comicgenesis.com/')
|
add('BradTheVampire', 'http://bradthevampire.comicgenesis.com/')
|
||||||
add('Brainfries', 'http://www.brainfries.com/')
|
add('Brainfries', 'http://www.brainfries.com/')
|
||||||
add('BreakingtheDoldrum', 'http://breakingthedoldrum.comicgenesis.com/')
|
add('BreakingtheDoldrum', 'http://breakingthedoldrum.comicgenesis.com/')
|
||||||
|
@ -175,7 +181,7 @@ add('CAGE', 'http://cage.comicgenesis.com/')
|
||||||
add('CTRO', 'http://llv.comicgenesis.com/')
|
add('CTRO', 'http://llv.comicgenesis.com/')
|
||||||
add('CUltureShocked', 'http://kitsune76.comicgenesis.com/')
|
add('CUltureShocked', 'http://kitsune76.comicgenesis.com/')
|
||||||
add('CameoComic', 'http://cameocomic.comicgenesis.com/')
|
add('CameoComic', 'http://cameocomic.comicgenesis.com/')
|
||||||
add('CampAlaska', 'http://campalaska.comicgen.com/')
|
add('CampAlaska', 'http://campalaska.comicgenesis.com/')
|
||||||
add('CampusLife', 'http://campuslife.comicgenesis.com/')
|
add('CampusLife', 'http://campuslife.comicgenesis.com/')
|
||||||
add('CampusSafari', 'http://shivae2.comicgenesis.com/')
|
add('CampusSafari', 'http://shivae2.comicgenesis.com/')
|
||||||
add('CanYouKeepaSecret', 'http://cykas.comicgenesis.com/')
|
add('CanYouKeepaSecret', 'http://cykas.comicgenesis.com/')
|
||||||
|
@ -194,8 +200,8 @@ add('CaseyandAndy', 'http://sephalon.comicgenesis.com/')
|
||||||
add('Catalyst', 'http://catalyst.comicgenesis.com/')
|
add('Catalyst', 'http://catalyst.comicgenesis.com/')
|
||||||
add('CatboyattheCon', 'http://trades.comicgenesis.com/')
|
add('CatboyattheCon', 'http://trades.comicgenesis.com/')
|
||||||
add('Cats', 'http://cats.comicgenesis.com/')
|
add('Cats', 'http://cats.comicgenesis.com/')
|
||||||
add('Chainroaker', 'http://chainroaker.comicgen.com/')
|
add('Chainroaker', 'http://chainroaker.comicgenesis.com/')
|
||||||
add('Chair', 'http://chair.comicgen.com/')
|
add('Chair', 'http://chair.comicgenesis.com/')
|
||||||
add('Chalkdust', 'http://chalkdustcomic.comicgenesis.com/')
|
add('Chalkdust', 'http://chalkdustcomic.comicgenesis.com/')
|
||||||
add('ChaosInc', 'http://chaosinc.comicgenesis.com/')
|
add('ChaosInc', 'http://chaosinc.comicgenesis.com/')
|
||||||
add('ChaosKnot', 'http://chaosknot.comicgenesis.com/')
|
add('ChaosKnot', 'http://chaosknot.comicgenesis.com/')
|
||||||
|
@ -204,7 +210,7 @@ add('Chicanery', 'http://chicanery.comicgenesis.com/')
|
||||||
add('ChildrenAtPlay', 'http://childrenatplay.comicgenesis.com/')
|
add('ChildrenAtPlay', 'http://childrenatplay.comicgenesis.com/')
|
||||||
add('Chris27sCollectionofCrappyComix', 'http://chrisread.comicgenesis.com/')
|
add('Chris27sCollectionofCrappyComix', 'http://chrisread.comicgenesis.com/')
|
||||||
add('ChronicMisadventures', 'http://chronic.comicgenesis.com/')
|
add('ChronicMisadventures', 'http://chronic.comicgenesis.com/')
|
||||||
add('ChubbyandNot', 'http://chubbyandnot.comicgen.com/')
|
add('ChubbyandNot', 'http://chubbyandnot.comicgenesis.com/')
|
||||||
add('Cinderblock', 'http://cinderblock.comicgenesis.com/')
|
add('Cinderblock', 'http://cinderblock.comicgenesis.com/')
|
||||||
add('Citron', 'http://citron.comicgenesis.com/')
|
add('Citron', 'http://citron.comicgenesis.com/')
|
||||||
add('CitrusHouse', 'http://citrushouse.comicgenesis.com/')
|
add('CitrusHouse', 'http://citrushouse.comicgenesis.com/')
|
||||||
|
@ -237,7 +243,7 @@ add('CracklingSilence', 'http://crackling.comicgenesis.com/')
|
||||||
add('Crackwalker', 'http://crackwalker.comicgenesis.com/')
|
add('Crackwalker', 'http://crackwalker.comicgenesis.com/')
|
||||||
add('CrashBoomMagic', 'http://www.crash-boom-magic.com/')
|
add('CrashBoomMagic', 'http://www.crash-boom-magic.com/')
|
||||||
add('CrazySlowlyGoing', 'http://crazyslowlygoing.comicgenesis.com/')
|
add('CrazySlowlyGoing', 'http://crazyslowlygoing.comicgenesis.com/')
|
||||||
add('CreepyHead', 'http://creepyhead.comicgen.com/')
|
add('CreepyHead', 'http://creepyhead.comicgenesis.com/')
|
||||||
add('CrimsonWings', 'http://sdcomics.comicgenesis.com/')
|
add('CrimsonWings', 'http://sdcomics.comicgenesis.com/')
|
||||||
add('CrookedHalo', 'http://chaoscricket.comicgenesis.com/')
|
add('CrookedHalo', 'http://chaoscricket.comicgenesis.com/')
|
||||||
add('CrossRoads', 'http://anivasion.comicgenesis.com/')
|
add('CrossRoads', 'http://anivasion.comicgenesis.com/')
|
||||||
|
@ -245,7 +251,7 @@ add('CrossStreetBlues', 'http://crossstreet.comicgenesis.com/')
|
||||||
add('CrossroadsOfBoogerCounty', 'http://cobc.comicgenesis.com/')
|
add('CrossroadsOfBoogerCounty', 'http://cobc.comicgenesis.com/')
|
||||||
add('CryHavoc', 'http://cryhavoc.comicgenesis.com/')
|
add('CryHavoc', 'http://cryhavoc.comicgenesis.com/')
|
||||||
add('CuteThulhu', 'http://www.cutethulhu.com/')
|
add('CuteThulhu', 'http://www.cutethulhu.com/')
|
||||||
add('DATAROM', 'http://datarom.comicgen.com/')
|
add('DATAROM', 'http://datarom.comicgenesis.com/')
|
||||||
add('DBZRPGTheComic', 'http://dbzrpg.comicgenesis.com/')
|
add('DBZRPGTheComic', 'http://dbzrpg.comicgenesis.com/')
|
||||||
add('DIABOLICA', 'http://diabolica.comicgenesis.com/')
|
add('DIABOLICA', 'http://diabolica.comicgenesis.com/')
|
||||||
add('DIVE', 'http://dive.comicgenesis.com/')
|
add('DIVE', 'http://dive.comicgenesis.com/')
|
||||||
|
@ -281,8 +287,8 @@ add('DinoandSam', 'http://dinoandsam.comicgenesis.com/')
|
||||||
add('DirkCrimsonEightBitDetective', 'http://dirkcrimson.comicgenesis.com/')
|
add('DirkCrimsonEightBitDetective', 'http://dirkcrimson.comicgenesis.com/')
|
||||||
add('DirtySocks', 'http://dirtysocks.comicgenesis.com/')
|
add('DirtySocks', 'http://dirtysocks.comicgenesis.com/')
|
||||||
add('DmxStoleMyCar', 'http://juggaloscrub.comicgenesis.com/')
|
add('DmxStoleMyCar', 'http://juggaloscrub.comicgenesis.com/')
|
||||||
add('DogDays', 'http://dogdays.comicgen.com/')
|
add('DogDays', 'http://dogdays.comicgenesis.com/')
|
||||||
add('DogandPony', 'http://dogandpony.comicgen.com/')
|
add('DogandPony', 'http://dogandpony.comicgenesis.com/')
|
||||||
add('DogtheSpot', 'http://dogthespot.comicgenesis.com/')
|
add('DogtheSpot', 'http://dogthespot.comicgenesis.com/')
|
||||||
add('DominicDeegan', 'http://dominicdeegan.comicgenesis.com/')
|
add('DominicDeegan', 'http://dominicdeegan.comicgenesis.com/')
|
||||||
add('DominicDurgan', 'http://dominicdurgan.comicgenesis.com/')
|
add('DominicDurgan', 'http://dominicdurgan.comicgenesis.com/')
|
||||||
|
@ -308,10 +314,9 @@ add('DreamersDynasty', 'http://kidneo66.comicgenesis.com/')
|
||||||
add('DreamofaWorld', 'http://doaw.comicgenesis.com/')
|
add('DreamofaWorld', 'http://doaw.comicgenesis.com/')
|
||||||
add('Drewford', 'http://drewford.comicgenesis.com/')
|
add('Drewford', 'http://drewford.comicgenesis.com/')
|
||||||
add('DrunkMonkeyComicsPresents', 'http://drunkmonkey.comicgenesis.com/')
|
add('DrunkMonkeyComicsPresents', 'http://drunkmonkey.comicgenesis.com/')
|
||||||
add('DungeonDamage', 'http://dungeondamage.comicgenesis.com/')
|
|
||||||
add('Dylan', 'http://roryobannion.comicgenesis.com/')
|
add('Dylan', 'http://roryobannion.comicgenesis.com/')
|
||||||
add('DysfunctionJunction', 'http://dysfunctionjunction.comicgenesis.com/')
|
add('DysfunctionJunction', 'http://dysfunctionjunction.comicgenesis.com/')
|
||||||
add('Dyson27sCreek', 'http://dysonscreek.comicgen.com/')
|
add('Dyson27sCreek', 'http://dysonscreek.comicgenesis.com/')
|
||||||
add('E2', 'http://e2e.comicgenesis.com/')
|
add('E2', 'http://e2e.comicgenesis.com/')
|
||||||
add('ECWorldofFenninRo', 'http://wofr.comicgenesis.com/')
|
add('ECWorldofFenninRo', 'http://wofr.comicgenesis.com/')
|
||||||
add('ESHbyESH', 'http://esh.comicgenesis.com/')
|
add('ESHbyESH', 'http://esh.comicgenesis.com/')
|
||||||
|
@ -334,7 +339,7 @@ add('Ensuing', 'http://ensuing.comicgenesis.com/')
|
||||||
add('Epigenesis', 'http://epigenesis.comicgenesis.com/')
|
add('Epigenesis', 'http://epigenesis.comicgenesis.com/')
|
||||||
add('ErrorLevel3', 'http://errorboy.comicgenesis.com/')
|
add('ErrorLevel3', 'http://errorboy.comicgenesis.com/')
|
||||||
add('EscapemanAdventures', 'http://escapeman.comicgenesis.com/')
|
add('EscapemanAdventures', 'http://escapeman.comicgenesis.com/')
|
||||||
add('Etcetera', 'http://etc.comicgen.com/')
|
add('Etcetera', 'http://etc.comicgenesis.com/')
|
||||||
add('EternalCaffeineJunkie', 'http://ecj.comicgenesis.com/')
|
add('EternalCaffeineJunkie', 'http://ecj.comicgenesis.com/')
|
||||||
add('EternityComplex', 'http://eternitycomplex.comicgenesis.com/')
|
add('EternityComplex', 'http://eternitycomplex.comicgenesis.com/')
|
||||||
add('EvesApple', 'http://evesapple.comicgenesis.com/')
|
add('EvesApple', 'http://evesapple.comicgenesis.com/')
|
||||||
|
@ -353,17 +358,16 @@ add('FairyTaleNewVillage', 'http://taiwanimation.comicgenesis.com/')
|
||||||
add('FakingSanity', 'http://fakingsanity.comicgenesis.com/')
|
add('FakingSanity', 'http://fakingsanity.comicgenesis.com/')
|
||||||
add('FalseGods', 'http://falsegod.comicgenesis.com/')
|
add('FalseGods', 'http://falsegod.comicgenesis.com/')
|
||||||
add('FancyThat', 'http://fancythat.comicgenesis.com/')
|
add('FancyThat', 'http://fancythat.comicgenesis.com/')
|
||||||
add('FanserviceMeteorologyWin', 'http://aod.comicgen.com/')
|
add('FanserviceMeteorologyWin', 'http://aod.comicgenesis.com/')
|
||||||
add('FantasyQwest', 'http://creatorauthorman.comicgenesis.com/')
|
add('FantasyQwest', 'http://creatorauthorman.comicgenesis.com/')
|
||||||
add('Fantazine', 'http://fantazin.comicgenesis.com/')
|
add('Fantazine', 'http://fantazin.comicgenesis.com/')
|
||||||
add('FarchieArchie', 'http://farchie.comicgenesis.com/')
|
add('FarchieArchie', 'http://farchie.comicgenesis.com/')
|
||||||
add('Farmboy', 'http://farmboy.comicgenesis.com/')
|
add('Farmboy', 'http://farmboy.comicgenesis.com/')
|
||||||
add('Fate27sTear', 'http://firecloud.comicgenesis.com/')
|
add('Fate27sTear', 'http://firecloud.comicgenesis.com/')
|
||||||
add('FaultyLogic', 'http://faultylogic.comicgenesis.com/')
|
|
||||||
add('FearfulAsymptote', 'http://fearful.comicgenesis.com/')
|
add('FearfulAsymptote', 'http://fearful.comicgenesis.com/')
|
||||||
add('FellowFreaks', 'http://fellowfreaks.comicgenesis.com/')
|
add('FellowFreaks', 'http://fellowfreaks.comicgenesis.com/')
|
||||||
add('Felney', 'http://felneycomic.comicgenesis.com/')
|
add('Felney', 'http://felneycomic.comicgenesis.com/')
|
||||||
add('FemmeFatale', 'http://femmefatale.comicgen.com/')
|
add('FemmeFatale', 'http://femmefatale.comicgenesis.com/')
|
||||||
add('FeverDream', 'http://feverdream.comicgenesis.com/')
|
add('FeverDream', 'http://feverdream.comicgenesis.com/')
|
||||||
add('FiddlyBits', 'http://fiddlybits.comicgenesis.com/')
|
add('FiddlyBits', 'http://fiddlybits.comicgenesis.com/')
|
||||||
add('FightCastorEvade', 'http://fightcastorevade.comicgenesis.com/')
|
add('FightCastorEvade', 'http://fightcastorevade.comicgenesis.com/')
|
||||||
|
@ -376,7 +380,7 @@ add('FiveMinuteComic', 'http://fiveminute.comicgenesis.com/')
|
||||||
add('Fizzle', 'http://fizzle.comicgenesis.com/')
|
add('Fizzle', 'http://fizzle.comicgenesis.com/')
|
||||||
add('Flatwood', 'http://flatwood.comicgenesis.com/')
|
add('Flatwood', 'http://flatwood.comicgenesis.com/')
|
||||||
add('FletchersCave', 'http://fletcherscave.comicgenesis.com/')
|
add('FletchersCave', 'http://fletcherscave.comicgenesis.com/')
|
||||||
add('FlinchandFriends', 'http://flinch.comicgen.com/')
|
add('FlinchandFriends', 'http://flinch.comicgenesis.com/')
|
||||||
add('FlipandSplog', 'http://fas.comicgenesis.com/')
|
add('FlipandSplog', 'http://fas.comicgenesis.com/')
|
||||||
add('Flounderville', 'http://flounderville.comicgenesis.com/')
|
add('Flounderville', 'http://flounderville.comicgenesis.com/')
|
||||||
add('FloydCartoons', 'http://floydcartoons.comicgenesis.com/')
|
add('FloydCartoons', 'http://floydcartoons.comicgenesis.com/')
|
||||||
|
@ -436,7 +440,7 @@ add('Gnerds2000', 'http://gnerds.comicgenesis.com/')
|
||||||
add('Gnomes', 'http://gnomes.comicgenesis.com/')
|
add('Gnomes', 'http://gnomes.comicgenesis.com/')
|
||||||
add('GoCrazy', 'http://gocrazy.comicgenesis.com/')
|
add('GoCrazy', 'http://gocrazy.comicgenesis.com/')
|
||||||
add('GoFish', 'http://gofish.comicgenesis.com/')
|
add('GoFish', 'http://gofish.comicgenesis.com/')
|
||||||
add('GoForIt', 'http://goforit.comicgen.com/')
|
add('GoForIt', 'http://goforit.comicgenesis.com/')
|
||||||
add('GodtheDevilandaMonkey', 'http://godthedevilandamonkey.comicgenesis.com/')
|
add('GodtheDevilandaMonkey', 'http://godthedevilandamonkey.comicgenesis.com/')
|
||||||
add('GoldenAge', 'http://goldenage.comicgenesis.com/')
|
add('GoldenAge', 'http://goldenage.comicgenesis.com/')
|
||||||
add('GoneAstray', 'http://goneastray.comicgenesis.com/')
|
add('GoneAstray', 'http://goneastray.comicgenesis.com/')
|
||||||
|
@ -465,7 +469,7 @@ add('HeadDoctorProductions', 'http://headdoctor.comicgenesis.com/')
|
||||||
add('HealerOnFeatheredWings', 'http://selsachronicles.comicgenesis.comhttp://selsachronicles.comicgenesis.com//')
|
add('HealerOnFeatheredWings', 'http://selsachronicles.comicgenesis.comhttp://selsachronicles.comicgenesis.com//')
|
||||||
add('HeartofaDragon', 'http://heartofadragon.comicgenesis.com/')
|
add('HeartofaDragon', 'http://heartofadragon.comicgenesis.com/')
|
||||||
add('Hedgehogs', 'http://hedgehogs.comicgenesis.com/')
|
add('Hedgehogs', 'http://hedgehogs.comicgenesis.com/')
|
||||||
add('HellSweetHell', 'http://hellsweethell.comicgen.com/')
|
add('HellSweetHell', 'http://hellsweethell.comicgenesis.com/')
|
||||||
add('Hepcats', 'http://hepcats.comicgenesis.com/')
|
add('Hepcats', 'http://hepcats.comicgenesis.com/')
|
||||||
add('HereThereBeDragons', 'http://heretherebedragons.comicgenesis.com/')
|
add('HereThereBeDragons', 'http://heretherebedragons.comicgenesis.com/')
|
||||||
add('HeroAcademy', 'http://heroacademy.comicgenesis.com/')
|
add('HeroAcademy', 'http://heroacademy.comicgenesis.com/')
|
||||||
|
@ -483,7 +487,7 @@ add('Horndog', 'http://horndog.comicgenesis.com/')
|
||||||
add('HorriblyOldSchoolSuperFightFight', 'http://superfightfight.comicgenesis.com/')
|
add('HorriblyOldSchoolSuperFightFight', 'http://superfightfight.comicgenesis.com/')
|
||||||
add('HorseshoesandHandgrenades', 'http://handgrenades.comicgenesis.com/')
|
add('HorseshoesandHandgrenades', 'http://handgrenades.comicgenesis.com/')
|
||||||
add('HotelGrim', 'http://hotelgrim.comicgenesis.com/')
|
add('HotelGrim', 'http://hotelgrim.comicgenesis.com/')
|
||||||
add('HouseofBob', 'http://dustbunny.comicgen.com/')
|
add('HouseofBob', 'http://dustbunny.comicgenesis.com/')
|
||||||
add('HowISeeIt', 'http://toasterpip.comicgenesis.com/')
|
add('HowISeeIt', 'http://toasterpip.comicgenesis.com/')
|
||||||
add('HowNottoRunAComic', 'http://hownottorunacomic.comicgenesis.com/')
|
add('HowNottoRunAComic', 'http://hownottorunacomic.comicgenesis.com/')
|
||||||
add('HowtoCookaSpasticChicken', 'http://wench.comicgenesis.com/')
|
add('HowtoCookaSpasticChicken', 'http://wench.comicgenesis.com/')
|
||||||
|
@ -493,7 +497,7 @@ add('IAlwaysWakeUpLazy', 'http://www.alwayslazy.com/')
|
||||||
add('IBlameDanny', 'http://vileterror.comicgenesis.com/')
|
add('IBlameDanny', 'http://vileterror.comicgenesis.com/')
|
||||||
add('IDGet', 'http://idget.comicgenesis.com/')
|
add('IDGet', 'http://idget.comicgenesis.com/')
|
||||||
add('IDIC398TS', 'http://idiots.comicgenesis.com/')
|
add('IDIC398TS', 'http://idiots.comicgenesis.com/')
|
||||||
add('IEatFood', 'http://ieatfood.comicgen.com/')
|
add('IEatFood', 'http://ieatfood.comicgenesis.com/')
|
||||||
add('IdleMinds', 'http://idleminds.comicgenesis.com/')
|
add('IdleMinds', 'http://idleminds.comicgenesis.com/')
|
||||||
add('Ifeeltwitchy', 'http://meghasissues.comicgenesis.com/')
|
add('Ifeeltwitchy', 'http://meghasissues.comicgenesis.com/')
|
||||||
add('Ihopeyoualldie', 'http://ihateyou.comicgenesis.com/')
|
add('Ihopeyoualldie', 'http://ihateyou.comicgenesis.com/')
|
||||||
|
@ -515,7 +519,7 @@ add('InternationalHopeFoundation', 'http://ihf.comicgenesis.com/')
|
||||||
add('IpsoFacto', 'http://ipsofactocomic.comicgenesis.com/')
|
add('IpsoFacto', 'http://ipsofactocomic.comicgenesis.com/')
|
||||||
add('ItHurtsToBeThatStupid', 'http://ihtbts.comicgenesis.com/')
|
add('ItHurtsToBeThatStupid', 'http://ihtbts.comicgenesis.com/')
|
||||||
add('ItsGravy', 'http://itsgravy.comicgenesis.com/')
|
add('ItsGravy', 'http://itsgravy.comicgenesis.com/')
|
||||||
add('JAndSOddjobs', 'http://oddworld.comicgen.com/')
|
add('JAndSOddjobs', 'http://oddworld.comicgenesis.com/')
|
||||||
add('JBBcomics', 'http://jbbcomics.comicgenesis.com/')
|
add('JBBcomics', 'http://jbbcomics.comicgenesis.com/')
|
||||||
add('JRockShellShock', 'http://jrock.comicgenesis.com/')
|
add('JRockShellShock', 'http://jrock.comicgenesis.com/')
|
||||||
add('JWalkinAndapos', 'http://jwalkin.comicgenesis.com/')
|
add('JWalkinAndapos', 'http://jwalkin.comicgenesis.com/')
|
||||||
|
@ -539,8 +543,6 @@ add('JourneysDown', 'http://journeys.comicgenesis.com/')
|
||||||
add('Joyride', 'http://www.joyridecomic.com/')
|
add('Joyride', 'http://www.joyridecomic.com/')
|
||||||
add('JulyStreet', 'http://julystreet.comicgenesis.com/')
|
add('JulyStreet', 'http://julystreet.comicgenesis.com/')
|
||||||
add('JustAnotherEscape', 'http://www.justanotherescape.com/')
|
add('JustAnotherEscape', 'http://www.justanotherescape.com/')
|
||||||
add('JustWeird', 'http://justweird.comicgenesis.com/')
|
|
||||||
add('JuvenileDiversion', 'http://juvenilediversion.comicgenesis.com/')
|
|
||||||
add('KariandDoug', 'http://karindoug.comicgenesis.com/')
|
add('KariandDoug', 'http://karindoug.comicgenesis.com/')
|
||||||
add('KarmaSlave', 'http://karmaslave.comicgenesis.com/')
|
add('KarmaSlave', 'http://karmaslave.comicgenesis.com/')
|
||||||
add('Kazei5Rebirth', 'http://whiterabbit.comicgenesis.com/')
|
add('Kazei5Rebirth', 'http://whiterabbit.comicgenesis.com/')
|
||||||
|
@ -558,14 +560,13 @@ add('KitsuneJewel', 'http://kitsunejewel.comicgenesis.com/')
|
||||||
add('KittyCattyGames', 'http://kittycattygames.comicgenesis.com/')
|
add('KittyCattyGames', 'http://kittycattygames.comicgenesis.com/')
|
||||||
add('KiwiDay', 'http://kiwiday.comicgenesis.com/')
|
add('KiwiDay', 'http://kiwiday.comicgenesis.com/')
|
||||||
add('KiwiDayN', 'http://kiwidayn.comicgenesis.com/')
|
add('KiwiDayN', 'http://kiwidayn.comicgenesis.com/')
|
||||||
add('KnightsOfTheNexus', 'http://www.knightsofthenexus.com/')
|
|
||||||
add('KnightsoftheOldCoding', 'http://kotoc.comicgenesis.com/')
|
add('KnightsoftheOldCoding', 'http://kotoc.comicgenesis.com/')
|
||||||
add('KoFightClub', 'http://www.kofightclub.com/')
|
add('KoFightClub', 'http://www.kofightclub.com/')
|
||||||
add('KodomoNomo', 'http://kodomonomo.comicgenesis.com/')
|
add('KodomoNomo', 'http://kodomonomo.comicgenesis.com/')
|
||||||
add('Kokiro', 'http://kokiro.comicgenesis.com/')
|
add('Kokiro', 'http://kokiro.comicgenesis.com/')
|
||||||
add('KungFounded', 'http://kungfounded.comicgenesis.com/')
|
add('KungFounded', 'http://kungfounded.comicgenesis.com/')
|
||||||
add('KungFuPandas', 'http://kungfupandas.comicgenesis.com/')
|
add('KungFuPandas', 'http://kungfupandas.comicgenesis.com/')
|
||||||
add('KurenaiMashin', 'http://km.comicgen.com/')
|
add('KurenaiMashin', 'http://km.comicgenesis.com/')
|
||||||
add('LCDLowestCommonDenominator', 'http://lcd.comicgenesis.com/')
|
add('LCDLowestCommonDenominator', 'http://lcd.comicgenesis.com/')
|
||||||
add('LXFTheLeagueofExtraordinaryFurries', 'http://lxfurries.comicgenesis.com/')
|
add('LXFTheLeagueofExtraordinaryFurries', 'http://lxfurries.comicgenesis.com/')
|
||||||
add('LabBratz', 'http://labbratz.comicgenesis.com/')
|
add('LabBratz', 'http://labbratz.comicgenesis.com/')
|
||||||
|
@ -577,7 +578,7 @@ add('LarryandOliver', 'http://lao.comicgenesis.com/')
|
||||||
add('Laserwing', 'http://laserwing.comicgenesis.com/')
|
add('Laserwing', 'http://laserwing.comicgenesis.com/')
|
||||||
add('LatentIntent', 'http://latentintent.comicgenesis.com/')
|
add('LatentIntent', 'http://latentintent.comicgenesis.com/')
|
||||||
add('LeanOnMe', 'http://jadaze.comicgenesis.com/')
|
add('LeanOnMe', 'http://jadaze.comicgenesis.com/')
|
||||||
add('LegendOfTheFour', 'http://legendoffour.comicgen.com/')
|
add('LegendOfTheFour', 'http://legendoffour.comicgenesis.com/')
|
||||||
add('LegendaryMagicalAngelPrincessCeleste', 'http://celeste.comicgenesis.com/')
|
add('LegendaryMagicalAngelPrincessCeleste', 'http://celeste.comicgenesis.com/')
|
||||||
add('LegendoftheGalaxyWar', 'http://galaxylegend.comicgenesis.com/')
|
add('LegendoftheGalaxyWar', 'http://galaxylegend.comicgenesis.com/')
|
||||||
add('LegendsofRovana', 'http://rovana.comicgenesis.com/')
|
add('LegendsofRovana', 'http://rovana.comicgenesis.com/')
|
||||||
|
@ -587,9 +588,9 @@ add('LeuandYar', 'http://leunam12.comicgenesis.com/')
|
||||||
add('Life27saWitch', 'http://lifesawitch.comicgenesis.com/')
|
add('Life27saWitch', 'http://lifesawitch.comicgenesis.com/')
|
||||||
add('LifeGoesOn', 'http://lgo.comicgenesis.com/')
|
add('LifeGoesOn', 'http://lgo.comicgenesis.com/')
|
||||||
add('LifeatBayside', 'http://bayside.comicgenesis.com/')
|
add('LifeatBayside', 'http://bayside.comicgenesis.com/')
|
||||||
add('LifeinBellCounty', 'http://bellcountylife.comicgen.com/')
|
add('LifeinBellCounty', 'http://bellcountylife.comicgenesis.com/')
|
||||||
add('LifeinaNutshell', 'http://hiroslife.comicgenesis.com/')
|
add('LifeinaNutshell', 'http://hiroslife.comicgenesis.com/')
|
||||||
add('LifeisUnfair', 'http://lifeisunfair.comicgen.com/')
|
add('LifeisUnfair', 'http://lifeisunfair.comicgenesis.com/')
|
||||||
add('LifeofBuddha', 'http://lifeofbuddha.comicgenesis.com/')
|
add('LifeofBuddha', 'http://lifeofbuddha.comicgenesis.com/')
|
||||||
add('LifeonForbez', 'http://cdc.comicgenesis.com/')
|
add('LifeonForbez', 'http://cdc.comicgenesis.com/')
|
||||||
add('Lifesuchasitis', 'http://lifesuchasitis.comicgenesis.com/')
|
add('Lifesuchasitis', 'http://lifesuchasitis.comicgenesis.com/')
|
||||||
|
@ -609,7 +610,7 @@ add('Loserz', 'http://loserzcomic.comicgenesis.com/')
|
||||||
add('LostinTransit', 'http://lostintransit.comicgenesis.com/')
|
add('LostinTransit', 'http://lostintransit.comicgenesis.com/')
|
||||||
add('LostinTranslation', 'http://lit.comicgenesis.com/')
|
add('LostinTranslation', 'http://lit.comicgenesis.com/')
|
||||||
add('LoveBites', 'http://lovebites.comicgenesis.com/')
|
add('LoveBites', 'http://lovebites.comicgenesis.com/')
|
||||||
add('LoveMeNot', 'http://lovemenot.comicgen.com/')
|
add('LoveMeNot', 'http://lovemenot.comicgenesis.com/')
|
||||||
add('LowerPlace', 'http://lowerplace.comicgenesis.com/')
|
add('LowerPlace', 'http://lowerplace.comicgenesis.com/')
|
||||||
add('LoxieAndZoot', 'http://loxieandzoot.comicgenesis.com/')
|
add('LoxieAndZoot', 'http://loxieandzoot.comicgenesis.com/')
|
||||||
add('Lumia27sKingdom', 'http://lumia.comicgenesis.com/')
|
add('Lumia27sKingdom', 'http://lumia.comicgenesis.com/')
|
||||||
|
@ -644,9 +645,8 @@ add('MegaCool', 'http://megacool.comicgenesis.com/')
|
||||||
add('Meiosis', 'http://meiosis.comicgenesis.com/')
|
add('Meiosis', 'http://meiosis.comicgenesis.com/')
|
||||||
add('MelEverymanAndHisSarcasticTalkingHousepetAmbrose', 'http://everyman.comicgenesis.com/')
|
add('MelEverymanAndHisSarcasticTalkingHousepetAmbrose', 'http://everyman.comicgenesis.com/')
|
||||||
add('MenschunsererZeitGerman', 'http://muz.comicgenesis.com/')
|
add('MenschunsererZeitGerman', 'http://muz.comicgenesis.com/')
|
||||||
add('Michikomonogatari', 'http://isukiyomi.comicgenesis.com/')
|
|
||||||
add('Midcentral', 'http://midcentral.comicgenesis.com/')
|
add('Midcentral', 'http://midcentral.comicgenesis.com/')
|
||||||
add('MidnorthFlourCo', 'http://mnflourco.comicgen.com/')
|
add('MidnorthFlourCo', 'http://mnflourco.comicgenesis.com/')
|
||||||
add('MiketheMulletThing', 'http://mikethemulletthing.comicgenesis.com/')
|
add('MiketheMulletThing', 'http://mikethemulletthing.comicgenesis.com/')
|
||||||
add('Mindmistress', 'http://mindmistress.comicgenesis.com/')
|
add('Mindmistress', 'http://mindmistress.comicgenesis.com/')
|
||||||
add('Mindtap', 'http://mindtap.comicgenesis.com/')
|
add('Mindtap', 'http://mindtap.comicgenesis.com/')
|
||||||
|
@ -656,7 +656,6 @@ add('MintCondition', 'http://mintcondition.comicgenesis.com/')
|
||||||
add('MisadventuresinPhysics', 'http://mip.comicgenesis.com/')
|
add('MisadventuresinPhysics', 'http://mip.comicgenesis.com/')
|
||||||
add('MisadventuresoftheDrowWizard', 'http://motdw.comicgenesis.com/')
|
add('MisadventuresoftheDrowWizard', 'http://motdw.comicgenesis.com/')
|
||||||
add('MixedMyth', 'http://mixedmyth.comicgenesis.com/')
|
add('MixedMyth', 'http://mixedmyth.comicgenesis.com/')
|
||||||
add('MobileMadness', 'http://mobilemadness.comicgenesis.com/')
|
|
||||||
add('ModelStudent', 'http://darkmaxtor.comicgenesis.com/')
|
add('ModelStudent', 'http://darkmaxtor.comicgenesis.com/')
|
||||||
add('MolluskAntics', 'http://molluskantics.comicgenesis.com/')
|
add('MolluskAntics', 'http://molluskantics.comicgenesis.com/')
|
||||||
add('MoonCrest24', 'http://mooncrest.comicgenesis.com/')
|
add('MoonCrest24', 'http://mooncrest.comicgenesis.com/')
|
||||||
|
@ -677,17 +676,17 @@ add('MyAngelYouAreAngel', 'http://angel.comicgenesis.com/')
|
||||||
add('MyBrainHurts', 'http://mybrainhurts.comicgenesis.com/')
|
add('MyBrainHurts', 'http://mybrainhurts.comicgenesis.com/')
|
||||||
add('MyLifeinBlue', 'http://mylifeinblue.comicgenesis.com/')
|
add('MyLifeinBlue', 'http://mylifeinblue.comicgenesis.com/')
|
||||||
add('MysteryCastle', 'http://mysterycastle.comicgenesis.com/')
|
add('MysteryCastle', 'http://mysterycastle.comicgenesis.com/')
|
||||||
add('MysticRevolution', 'http://mysticrevolution.comicgen.com/')
|
add('MysticRevolution', 'http://mysticrevolution.comicgenesis.com/')
|
||||||
add('MythocorpIntl', 'http://mythocorp.comicgenesis.com/')
|
add('MythocorpIntl', 'http://mythocorp.comicgenesis.com/')
|
||||||
add('NAFTANorthAmericanFreeToonAgreementalsoYankuckcanee', 'http://nafta.comicgenesis.com/')
|
add('NAFTANorthAmericanFreeToonAgreementalsoYankuckcanee', 'http://nafta.comicgenesis.com/')
|
||||||
add('NKatz', 'http://nkatz.comicgenesis.com/')
|
add('NKatz', 'http://nkatz.comicgenesis.com/')
|
||||||
add('NahastLandsofStrife', 'http://nahast.comicgenesis.com/')
|
add('NahastLandsofStrife', 'http://nahast.comicgenesis.com/')
|
||||||
add('NardManga', 'http://nardmanga.comicgenesis.com/')
|
add('NardManga', 'http://nardmanga.comicgenesis.com/')
|
||||||
add('NastyChocolates', 'http://nastychocolates.comicgenesis.com/')
|
add('NastyChocolates', 'http://nastychocolates.comicgenesis.com/')
|
||||||
add('NeTrek', 'http://netrek.comicgen.com/')
|
add('NeTrek', 'http://netrek.comicgenesis.com/')
|
||||||
add('NeedleandThread', 'http://needleandthread.comicgenesis.com/')
|
add('NeedleandThread', 'http://needleandthread.comicgenesis.com/')
|
||||||
add('NeglectedMarioCharacterComix', 'http://nccomix.comicgenesis.com/')
|
add('NeglectedMarioCharacterComix', 'http://nccomix.comicgenesis.com/')
|
||||||
add('NekkoandJoruba', 'http://nekkoandjoruba.comicgen.com/')
|
add('NekkoandJoruba', 'http://nekkoandjoruba.comicgenesis.com/')
|
||||||
add('NekoTheKitty', 'http://nekothekitty.comicgenesis.com/')
|
add('NekoTheKitty', 'http://nekothekitty.comicgenesis.com/')
|
||||||
add('Nekotime', 'http://nekotime.comicgenesis.com/')
|
add('Nekotime', 'http://nekotime.comicgenesis.com/')
|
||||||
add('Nemutionjewel', 'http://nemution.comicgenesis.com/')
|
add('Nemutionjewel', 'http://nemution.comicgenesis.com/')
|
||||||
|
@ -706,10 +705,10 @@ add('NightShiftWEBComix', 'http://webcomix.comicgenesis.com/')
|
||||||
add('NighthawkDayhawk', 'http://nighthawkdayhawk.comicgenesis.com/')
|
add('NighthawkDayhawk', 'http://nighthawkdayhawk.comicgenesis.com/')
|
||||||
add('NightwolfCentral', 'http://nightwolfcentral.comicgenesis.com/')
|
add('NightwolfCentral', 'http://nightwolfcentral.comicgenesis.com/')
|
||||||
add('No4thWalltoBreak', 'http://no4thwalltobreak.comicgenesis.com/')
|
add('No4thWalltoBreak', 'http://no4thwalltobreak.comicgenesis.com/')
|
||||||
add('NoCrap', 'http://nocrap.comicgen.com/')
|
add('NoCrap', 'http://nocrap.comicgenesis.com/')
|
||||||
add('NoNeedForBushido', 'http://noneedforbushido.comicgenesis.com/')
|
add('NoNeedForBushido', 'http://noneedforbushido.comicgenesis.com/')
|
||||||
add('NoTimeForLife', 'http://randyraven.comicgenesis.com/')
|
add('NoTimeForLife', 'http://randyraven.comicgenesis.com/')
|
||||||
add('NobtheBlob', 'http://nobtheblob.comicgen.com/')
|
add('NobtheBlob', 'http://nobtheblob.comicgenesis.com/')
|
||||||
add('NoneMoreComic', 'http://nonemore.comicgenesis.com/')
|
add('NoneMoreComic', 'http://nonemore.comicgenesis.com/')
|
||||||
add('NosesOptional', 'http://nosesoptional.comicgenesis.com/')
|
add('NosesOptional', 'http://nosesoptional.comicgenesis.com/')
|
||||||
add('NothingLikeSanity', 'http://nothinglikesanity.comicgenesis.com/')
|
add('NothingLikeSanity', 'http://nothinglikesanity.comicgenesis.com/')
|
||||||
|
@ -720,7 +719,7 @@ add('NymphsoftheWest', 'http://hesperides.comicgenesis.com/')
|
||||||
add('ODARKCITY', 'http://odark.comicgenesis.com/')
|
add('ODARKCITY', 'http://odark.comicgenesis.com/')
|
||||||
add('ODCKS', 'http://odcks.comicgenesis.com/')
|
add('ODCKS', 'http://odcks.comicgenesis.com/')
|
||||||
add('ORBVS', 'http://orbvs.comicgenesis.com/')
|
add('ORBVS', 'http://orbvs.comicgenesis.com/')
|
||||||
add('Oddities', 'http://oddities.comicgen.com/')
|
add('Oddities', 'http://oddities.comicgenesis.com/')
|
||||||
add('OfDoom', 'http://ofdoom.comicgenesis.com/')
|
add('OfDoom', 'http://ofdoom.comicgenesis.com/')
|
||||||
add('OfSomethingandNothinginParticular', 'http://osanip.comicgenesis.com/')
|
add('OfSomethingandNothinginParticular', 'http://osanip.comicgenesis.com/')
|
||||||
add('OffTheWall', 'http://offthewall.comicgenesis.com/')
|
add('OffTheWall', 'http://offthewall.comicgenesis.com/')
|
||||||
|
@ -748,9 +747,9 @@ add('PET', 'http://petcomic.comicgenesis.com/')
|
||||||
add('PPMBnGRF', 'http://ppmbngrf.comicgenesis.com/')
|
add('PPMBnGRF', 'http://ppmbngrf.comicgenesis.com/')
|
||||||
add('PSIAPessimisticSenseofInadequacy', 'http://fesworks.comicgenesis.com/')
|
add('PSIAPessimisticSenseofInadequacy', 'http://fesworks.comicgenesis.com/')
|
||||||
add('PacoStand', 'http://paco.comicgenesis.com/')
|
add('PacoStand', 'http://paco.comicgenesis.com/')
|
||||||
add('PaladinsAndaposHaven', 'http://paladin.comicgen.com/')
|
add('PaladinsAndaposHaven', 'http://paladin.comicgenesis.com/')
|
||||||
add('PandP', 'http://pandpcomic.comicgenesis.com/')
|
add('PandP', 'http://pandpcomic.comicgenesis.com/')
|
||||||
add('Pandala', 'http://pandala.comicgen.com/')
|
add('Pandala', 'http://pandala.comicgenesis.com/')
|
||||||
add('Pander', 'http://pander.comicgenesis.com/')
|
add('Pander', 'http://pander.comicgenesis.com/')
|
||||||
add('Pandimaniacs', 'http://pandimaniacs.comicgenesis.com/')
|
add('Pandimaniacs', 'http://pandimaniacs.comicgenesis.com/')
|
||||||
add('PanelsTheExperimentation', 'http://panels.comicgenesis.com/')
|
add('PanelsTheExperimentation', 'http://panels.comicgenesis.com/')
|
||||||
|
@ -770,7 +769,7 @@ add('PhilAndBob', 'http://drjon.comicgenesis.com/')
|
||||||
add('PhillerSpace', 'http://phillerspace.comicgenesis.com/')
|
add('PhillerSpace', 'http://phillerspace.comicgenesis.com/')
|
||||||
add('PhillikesTacos', 'http://philtaco.comicgenesis.com/')
|
add('PhillikesTacos', 'http://philtaco.comicgenesis.com/')
|
||||||
add('PhilosophyBites', 'http://phbites.comicgenesis.com/')
|
add('PhilosophyBites', 'http://phbites.comicgenesis.com/')
|
||||||
add('PhilosophyMonkey', 'http://philosophymonkey.comicgen.com/')
|
add('PhilosophyMonkey', 'http://philosophymonkey.comicgenesis.com/')
|
||||||
add('Phoenix', 'http://phoenix1.comicgenesis.com/')
|
add('Phoenix', 'http://phoenix1.comicgenesis.com/')
|
||||||
add('PicpakDog', 'http://picpak.comicgenesis.com/')
|
add('PicpakDog', 'http://picpak.comicgenesis.com/')
|
||||||
add('PictureDiary', 'http://picturediary.comicgenesis.com/')
|
add('PictureDiary', 'http://picturediary.comicgenesis.com/')
|
||||||
|
@ -804,7 +803,7 @@ add('PublicidadeEnganosa', 'http://publicidadeenganosa.comicgenesis.com/')
|
||||||
add('Puppetry', 'http://wordsandpictures.comicgenesis.com/')
|
add('Puppetry', 'http://wordsandpictures.comicgenesis.com/')
|
||||||
add('PurpleDuckMambo', 'http://purpleduckmambo.comicgenesis.com/')
|
add('PurpleDuckMambo', 'http://purpleduckmambo.comicgenesis.com/')
|
||||||
add('QueensOfRandomness', 'http://marshmallow.comicgenesis.com/')
|
add('QueensOfRandomness', 'http://marshmallow.comicgenesis.com/')
|
||||||
add('QuestionableQuestersandShadowsofFate', 'http://qqandsof.comicgen.com/')
|
add('QuestionableQuestersandShadowsofFate', 'http://qqandsof.comicgenesis.com/')
|
||||||
add('QuestionableTales', 'http://questionabletales.comicgenesis.com/')
|
add('QuestionableTales', 'http://questionabletales.comicgenesis.com/')
|
||||||
add('Quickbiteme', 'http://quickbiteme.comicgenesis.com/')
|
add('Quickbiteme', 'http://quickbiteme.comicgenesis.com/')
|
||||||
add('Quuren', 'http://quuren.comicgenesis.com/')
|
add('Quuren', 'http://quuren.comicgenesis.com/')
|
||||||
|
@ -823,12 +822,12 @@ add('Reclamation', 'http://reclamation.comicgenesis.com/')
|
||||||
add('RedLexi', 'http://redlexi.comicgenesis.com/')
|
add('RedLexi', 'http://redlexi.comicgenesis.com/')
|
||||||
add('Remsi', 'http://remsi.comicgenesis.com/')
|
add('Remsi', 'http://remsi.comicgenesis.com/')
|
||||||
add('ReploidFriends', 'http://reploidfriends.comicgenesis.com/')
|
add('ReploidFriends', 'http://reploidfriends.comicgenesis.com/')
|
||||||
add('Requiem', 'http://erech.comicgen.com/')
|
add('Requiem', 'http://erech.comicgenesis.com/')
|
||||||
add('Reset', 'http://reset.comicgenesis.com/')
|
add('Reset', 'http://reset.comicgenesis.com/')
|
||||||
add('ResistanceLine', 'http://resistanceline.comicgen.com/')
|
add('ResistanceLine', 'http://resistanceline.comicgenesis.com/')
|
||||||
add('Restaurant', 'http://restaurant.comicgenesis.com/')
|
add('Restaurant', 'http://restaurant.comicgenesis.com/')
|
||||||
add('RetailWeekly', 'http://retail.comicgenesis.com/')
|
add('RetailWeekly', 'http://retail.comicgenesis.com/')
|
||||||
add('ReturntoDonnelly', 'http://returntodonnelly.comicgen.com/')
|
add('ReturntoDonnelly', 'http://returntodonnelly.comicgenesis.com/')
|
||||||
add('ReturntoEden', 'http://returntoeden.comicgenesis.com/')
|
add('ReturntoEden', 'http://returntoeden.comicgenesis.com/')
|
||||||
add('ReverendRanda', 'http://reverendranda.comicgenesis.com/')
|
add('ReverendRanda', 'http://reverendranda.comicgenesis.com/')
|
||||||
add('Riboflavin', 'http://riboflavin.comicgenesis.com/')
|
add('Riboflavin', 'http://riboflavin.comicgenesis.com/')
|
||||||
|
@ -839,7 +838,6 @@ add('RiverCityHigh', 'http://rivercityhigh.comicgenesis.com/')
|
||||||
add('RoadfromNowhere', 'http://nowhere.comicgenesis.com/')
|
add('RoadfromNowhere', 'http://nowhere.comicgenesis.com/')
|
||||||
add('RoboFlan', 'http://lewiscode.comicgenesis.com/')
|
add('RoboFlan', 'http://lewiscode.comicgenesis.com/')
|
||||||
add('RobotandBoy', 'http://faeta.comicgenesis.com/')
|
add('RobotandBoy', 'http://faeta.comicgenesis.com/')
|
||||||
add('RogerAndDominic', 'http://roganddom.comicgenesis.com/')
|
|
||||||
add('RoguesofClwydRhan', 'http://rocr.comicgenesis.com/')
|
add('RoguesofClwydRhan', 'http://rocr.comicgenesis.com/')
|
||||||
add('RoleoftheDie', 'http://www.roleofthedie.com/')
|
add('RoleoftheDie', 'http://www.roleofthedie.com/')
|
||||||
add('RonnieRaccoon', 'http://www.ronnieraccoon.com/')
|
add('RonnieRaccoon', 'http://www.ronnieraccoon.com/')
|
||||||
|
@ -851,11 +849,11 @@ add('RulesofMakeBelieve', 'http://ju-lian.comicgenesis.com/')
|
||||||
add('RuneMaster', 'http://runemaster.comicgenesis.com/')
|
add('RuneMaster', 'http://runemaster.comicgenesis.com/')
|
||||||
add('Rveillerie', 'http://hootoo.comicgenesis.com/')
|
add('Rveillerie', 'http://hootoo.comicgenesis.com/')
|
||||||
add('SLAGIT', 'http://slagit.comicgenesis.com/')
|
add('SLAGIT', 'http://slagit.comicgenesis.com/')
|
||||||
add('SLAYERSREWIND', 'http://wyldcherry.comicgen.com/')
|
add('SLAYERSREWIND', 'http://wyldcherry.comicgenesis.com/')
|
||||||
add('SMACK', 'http://smack.comicgenesis.com/')
|
add('SMACK', 'http://smack.comicgenesis.com/')
|
||||||
add('SPQRBlues', 'http://spqrblues.comicgenesis.com/')
|
add('SPQRBlues', 'http://spqrblues.comicgenesis.com/')
|
||||||
add('SSComix', 'http://sscomix.comicgenesis.com/')
|
add('SSComix', 'http://sscomix.comicgenesis.com/')
|
||||||
add('STFU', 'http://stfu.comicgen.com/')
|
add('STFU', 'http://stfu.comicgenesis.com/')
|
||||||
add('SaintPeter27sCross', 'http://saintpeterscross.comicgenesis.com/')
|
add('SaintPeter27sCross', 'http://saintpeterscross.comicgenesis.com/')
|
||||||
add('SalemUncommons', 'http://salemuncommons.comicgenesis.com/')
|
add('SalemUncommons', 'http://salemuncommons.comicgenesis.com/')
|
||||||
add('SamandElisAdventures', 'http://sameliadv.comicgenesis.com/')
|
add('SamandElisAdventures', 'http://sameliadv.comicgenesis.com/')
|
||||||
|
@ -865,7 +863,6 @@ add('SarahZero', 'http://plughead.comicgenesis.com/')
|
||||||
add('SaturdayMorningBreakfastCereal', 'http://smbc.comicgenesis.com/')
|
add('SaturdayMorningBreakfastCereal', 'http://smbc.comicgenesis.com/')
|
||||||
add('Saturnalia', 'http://saturnalia.keenspace.com/')
|
add('Saturnalia', 'http://saturnalia.keenspace.com/')
|
||||||
add('SavageIslands', 'http://poobert.comicgenesis.com/')
|
add('SavageIslands', 'http://poobert.comicgenesis.com/')
|
||||||
add('SaveMeGebus', 'http://savemegebus.comicgenesis.com/')
|
|
||||||
add('Sawdust', 'http://sawdust.comicgenesis.com/')
|
add('Sawdust', 'http://sawdust.comicgenesis.com/')
|
||||||
add('ScandalSheet', 'http://scandalsheet.comicgenesis.com/')
|
add('ScandalSheet', 'http://scandalsheet.comicgenesis.com/')
|
||||||
add('Scatterplot', 'http://scatterplot.comicgenesis.com/')
|
add('Scatterplot', 'http://scatterplot.comicgenesis.com/')
|
||||||
|
@ -888,8 +885,8 @@ add('Senioritis', 'http://senioritis.comicgenesis.com/')
|
||||||
add('ShadowPlanet', 'http://shadowplanet.comicgenesis.com/')
|
add('ShadowPlanet', 'http://shadowplanet.comicgenesis.com/')
|
||||||
add('ShadowedLight', 'http://shadowedlight.comicgenesis.com/')
|
add('ShadowedLight', 'http://shadowedlight.comicgenesis.com/')
|
||||||
add('Shapes', 'http://shapes.comicgenesis.com/')
|
add('Shapes', 'http://shapes.comicgenesis.com/')
|
||||||
add('Shifters', 'http://shifters.comicgen.com/')
|
add('Shifters', 'http://shifters.comicgenesis.com/')
|
||||||
add('ShineGetDumplingsGoGoTower', 'http://shinegotower.comicgen.com/')
|
add('ShineGetDumplingsGoGoTower', 'http://shinegotower.comicgenesis.com/')
|
||||||
add('Shinkutokimekisempukaku', 'http://yamcha.comicgenesis.com/')
|
add('Shinkutokimekisempukaku', 'http://yamcha.comicgenesis.com/')
|
||||||
add('ShinobiHigh', 'http://shinobihigh.comicgenesis.com/')
|
add('ShinobiHigh', 'http://shinobihigh.comicgenesis.com/')
|
||||||
add('ShivaeStudios', 'http://shivae.comicgenesis.com/')
|
add('ShivaeStudios', 'http://shivae.comicgenesis.com/')
|
||||||
|
@ -904,7 +901,7 @@ add('SimonsWorld', 'http://simonsworld.comicgenesis.com/')
|
||||||
add('SinPerspectiva', 'http://mysp.comicgenesis.com/')
|
add('SinPerspectiva', 'http://mysp.comicgenesis.com/')
|
||||||
add('SinisterBedfellows', 'http://mckenzee.comicgenesis.com/')
|
add('SinisterBedfellows', 'http://mckenzee.comicgenesis.com/')
|
||||||
add('SinkorDrown', 'http://sinkordrown.comicgenesis.com/')
|
add('SinkorDrown', 'http://sinkordrown.comicgenesis.com/')
|
||||||
add('SinsAgainstNature', 'http://sane.comicgen.com/')
|
add('SinsAgainstNature', 'http://sane.comicgenesis.com/')
|
||||||
add('SippansSerie', 'http://sippan.comicgenesis.com/')
|
add('SippansSerie', 'http://sippan.comicgenesis.com/')
|
||||||
add('SitandSpin', 'http://sitandspin.comicgenesis.com/')
|
add('SitandSpin', 'http://sitandspin.comicgenesis.com/')
|
||||||
add('SixByNineCollege', 'http://sixbyninecollege.comicgenesis.com/')
|
add('SixByNineCollege', 'http://sixbyninecollege.comicgenesis.com/')
|
||||||
|
@ -961,7 +958,7 @@ add('Stubble', 'http://stubble.comicgenesis.com/')
|
||||||
add('StuffofLegends', 'http://stuffoflegends.comicgenesis.com/')
|
add('StuffofLegends', 'http://stuffoflegends.comicgenesis.com/')
|
||||||
add('StupidComics', 'http://stupidcomics.comicgenesis.com/')
|
add('StupidComics', 'http://stupidcomics.comicgenesis.com/')
|
||||||
add('SubjectToChange', 'http://subjecttochange.comicgenesis.com/')
|
add('SubjectToChange', 'http://subjecttochange.comicgenesis.com/')
|
||||||
add('Sublunary', 'http://sublunary.comicgen.com/')
|
add('Sublunary', 'http://sublunary.comicgenesis.com/')
|
||||||
add('SueC3B1osdelSur', 'http://sds.comicgenesis.com/')
|
add('SueC3B1osdelSur', 'http://sds.comicgenesis.com/')
|
||||||
add('SuicideForHire', 'http://suicideforhire.comicgenesis.com/')
|
add('SuicideForHire', 'http://suicideforhire.comicgenesis.com/')
|
||||||
add('Summoners', 'http://summoners.comicgenesis.com/')
|
add('Summoners', 'http://summoners.comicgenesis.com/')
|
||||||
|
@ -1000,7 +997,7 @@ add('TheAcademy', 'http://theacademy.comicgenesis.com/')
|
||||||
add('TheAdventuresofCaptainMooki', 'http://cmooki.comicgenesis.com/')
|
add('TheAdventuresofCaptainMooki', 'http://cmooki.comicgenesis.com/')
|
||||||
add('TheAdventuresofGralax', 'http://gralax.comicgenesis.com/')
|
add('TheAdventuresofGralax', 'http://gralax.comicgenesis.com/')
|
||||||
add('TheAdventuresofKaniraBaxter', 'http://kanirabaxter.comicgenesis.com/')
|
add('TheAdventuresofKaniraBaxter', 'http://kanirabaxter.comicgenesis.com/')
|
||||||
add('TheAdventuresofLi27lDenverPastrami', 'http://lildenverpastrami.comicgen.com/')
|
add('TheAdventuresofLi27lDenverPastrami', 'http://lildenverpastrami.comicgenesis.com/')
|
||||||
add('TheAdventuresofPeppyThePipingPirate', 'http://akira.comicgenesis.com/')
|
add('TheAdventuresofPeppyThePipingPirate', 'http://akira.comicgenesis.com/')
|
||||||
add('TheAdventuresofPopsicleman', 'http://popsicleman.comicgenesis.com/')
|
add('TheAdventuresofPopsicleman', 'http://popsicleman.comicgenesis.com/')
|
||||||
add('TheAdventuresofSpaceDevil', 'http://spacedevil.comicgenesis.com/')
|
add('TheAdventuresofSpaceDevil', 'http://spacedevil.comicgenesis.com/')
|
||||||
|
@ -1010,7 +1007,6 @@ add('TheAdventuresofVindibuddSuperheroInTraining', 'http://vindibudd.comicgenesi
|
||||||
add('TheAdventuresofWharsMeBrainDude', 'http://jamellan.comicgenesis.com/')
|
add('TheAdventuresofWharsMeBrainDude', 'http://jamellan.comicgenesis.com/')
|
||||||
add('TheAmoeba', 'http://www.theamoebaonline.co.uk/')
|
add('TheAmoeba', 'http://www.theamoebaonline.co.uk/')
|
||||||
add('TheAnarchist', 'http://theanarchist.comicgenesis.com/')
|
add('TheAnarchist', 'http://theanarchist.comicgenesis.com/')
|
||||||
add('TheAvatar', 'http://theavatar.comicgenesis.com/')
|
|
||||||
add('TheBessEffectGerman', 'http://tbe.comicgenesis.com/')
|
add('TheBessEffectGerman', 'http://tbe.comicgenesis.com/')
|
||||||
add('TheBestandtheBrightest', 'http://www.flyovercountry.net/')
|
add('TheBestandtheBrightest', 'http://www.flyovercountry.net/')
|
||||||
add('TheBigheads', 'http://thebigheads.comicgenesis.com/')
|
add('TheBigheads', 'http://thebigheads.comicgenesis.com/')
|
||||||
|
@ -1040,7 +1036,7 @@ add('TheFreneticAdventuresofFredBarlowe', 'http://fredbarlowe.comicgenesis.com/'
|
||||||
add('TheGeekWay', 'http://geekway.comicgenesis.com/')
|
add('TheGeekWay', 'http://geekway.comicgenesis.com/')
|
||||||
add('TheGodlyandtheDamned', 'http://gandd.comicgenesis.com/')
|
add('TheGodlyandtheDamned', 'http://gandd.comicgenesis.com/')
|
||||||
add('TheGods27Pack', 'http://godspack.comicgenesis.com/')
|
add('TheGods27Pack', 'http://godspack.comicgenesis.com/')
|
||||||
add('TheGreatTree', 'http://tgt.comicgen.com/')
|
add('TheGreatTree', 'http://tgt.comicgenesis.com/')
|
||||||
add('TheGreenAvenger', 'http://www.green-avenger.com/')
|
add('TheGreenAvenger', 'http://www.green-avenger.com/')
|
||||||
add('TheGrimbles', 'http://grimbles.comicgenesis.com/')
|
add('TheGrimbles', 'http://grimbles.comicgenesis.com/')
|
||||||
add('TheHappyPenis', 'http://happypenis.comicgenesis.com/')
|
add('TheHappyPenis', 'http://happypenis.comicgenesis.com/')
|
||||||
|
@ -1082,10 +1078,10 @@ add('ThePrimeofAmbition', 'http://jaadrih.comicgenesis.com/')
|
||||||
add('TheProfessor', 'http://xuanwu.comicgenesis.com/')
|
add('TheProfessor', 'http://xuanwu.comicgenesis.com/')
|
||||||
add('TheRobmanShow', 'http://therobmanshow.comicgenesis.com/')
|
add('TheRobmanShow', 'http://therobmanshow.comicgenesis.com/')
|
||||||
add('TheSagaofGagerff2', 'http://gager.comicgenesis.com/')
|
add('TheSagaofGagerff2', 'http://gager.comicgenesis.com/')
|
||||||
add('TheSailorNeopetsRPG', 'http://snrpg.comicgen.com/')
|
add('TheSailorNeopetsRPG', 'http://snrpg.comicgenesis.com/')
|
||||||
add('TheShortEnd', 'http://theshortend.comicgenesis.com/')
|
add('TheShortEnd', 'http://theshortend.comicgenesis.com/')
|
||||||
add('TheSiteMap', 'http://sitemap.comicgenesis.com/')
|
add('TheSiteMap', 'http://sitemap.comicgenesis.com/')
|
||||||
add('TheSomethingSomethingofSomethingSomethingness', 'http://somethingstrange.comicgen.com/')
|
add('TheSomethingSomethingofSomethingSomethingness', 'http://somethingstrange.comicgenesis.com/')
|
||||||
add('TheStickFigureDragons', 'http://feychild.comicgenesis.com/')
|
add('TheStickFigureDragons', 'http://feychild.comicgenesis.com/')
|
||||||
add('TheStraightJacketFreedomForce', 'http://tsjff.comicgenesis.com/')
|
add('TheStraightJacketFreedomForce', 'http://tsjff.comicgenesis.com/')
|
||||||
add('TheSuperPeoples', 'http://superpeoples.comicgenesis.com/')
|
add('TheSuperPeoples', 'http://superpeoples.comicgenesis.com/')
|
||||||
|
@ -1095,7 +1091,7 @@ add('TheVolet', 'http://volet.comicgenesis.com/')
|
||||||
add('TheWarofWinds', 'http://warofwinds.comicgenesis.com/')
|
add('TheWarofWinds', 'http://warofwinds.comicgenesis.com/')
|
||||||
add('TheWayoftheWorld', 'http://wayworld.comicgenesis.com/')
|
add('TheWayoftheWorld', 'http://wayworld.comicgenesis.com/')
|
||||||
add('TheWhole9Yards', 'http://nineyards.comicgenesis.com/')
|
add('TheWhole9Yards', 'http://nineyards.comicgenesis.com/')
|
||||||
add('TheWingsOfChange', 'http://wingsofchange.comicgen.com/')
|
add('TheWingsOfChange', 'http://wingsofchange.comicgenesis.com/')
|
||||||
add('TheWoodenLeg', 'http://thewoodenleg.comicgenesis.com/')
|
add('TheWoodenLeg', 'http://thewoodenleg.comicgenesis.com/')
|
||||||
add('TheWorldofUh', 'http://seganut82.comicgenesis.com/')
|
add('TheWorldofUh', 'http://seganut82.comicgenesis.com/')
|
||||||
add('TheWotch', 'http://thewotch.comicgenesis.com/')
|
add('TheWotch', 'http://thewotch.comicgenesis.com/')
|
||||||
|
@ -1133,8 +1129,8 @@ add('TrialsintheLight', 'http://trials.comicgenesis.com/')
|
||||||
add('TripleTrouble', 'http://tripletrouble.comicgenesis.com/')
|
add('TripleTrouble', 'http://tripletrouble.comicgenesis.com/')
|
||||||
add('TriumphantLosers', 'http://triumphantlosers.comicgenesis.com/')
|
add('TriumphantLosers', 'http://triumphantlosers.comicgenesis.com/')
|
||||||
add('TrueBums', 'http://truebums.comicgenesis.com/')
|
add('TrueBums', 'http://truebums.comicgenesis.com/')
|
||||||
add('TurboNinjaBastard', 'http://tnb.comicgen.com/')
|
add('TurboNinjaBastard', 'http://tnb.comicgenesis.com/')
|
||||||
add('TurboTrak', 'http://turbotrak.comicgen.com/')
|
add('TurboTrak', 'http://turbotrak.comicgenesis.com/')
|
||||||
add('Turing27sFollyIITheAdventuresOfPhil', 'http://proteancomics.comicgenesis.com/')
|
add('Turing27sFollyIITheAdventuresOfPhil', 'http://proteancomics.comicgenesis.com/')
|
||||||
add('Tutelar', 'http://coffeystreet.comicgenesis.com/')
|
add('Tutelar', 'http://coffeystreet.comicgenesis.com/')
|
||||||
add('TwiceDestined', 'http://twicedestined.comicgenesis.com/')
|
add('TwiceDestined', 'http://twicedestined.comicgenesis.com/')
|
||||||
|
@ -1167,13 +1163,13 @@ add('VictimsoftheSystem', 'http://victims.comicgenesis.com/')
|
||||||
add('Victor', 'http://victor.comicgenesis.com/')
|
add('Victor', 'http://victor.comicgenesis.com/')
|
||||||
add('VictorianTimes', 'http://victorian.comicgenesis.com/')
|
add('VictorianTimes', 'http://victorian.comicgenesis.com/')
|
||||||
add('VideoGameAddicts', 'http://vgaddicts.comicgenesis.com/')
|
add('VideoGameAddicts', 'http://vgaddicts.comicgenesis.com/')
|
||||||
add('WARPZONEthinkwithinthecube', 'http://warpzonecube.comicgen.com/')
|
add('WARPZONEthinkwithinthecube', 'http://warpzonecube.comicgenesis.com/')
|
||||||
add('WORLDDICTATORComicsPresentsWhenImWorldDictator', 'http://worlddictator.comicgenesis.com/')
|
add('WORLDDICTATORComicsPresentsWhenImWorldDictator', 'http://worlddictator.comicgenesis.com/')
|
||||||
add('WadeintheDeepEnd', 'http://wade.comicgenesis.com/')
|
add('WadeintheDeepEnd', 'http://wade.comicgenesis.com/')
|
||||||
add('WakeUpScreaming', 'http://wakeupscreaming.comicgenesis.com/')
|
add('WakeUpScreaming', 'http://wakeupscreaming.comicgenesis.com/')
|
||||||
add('WakingtheHouseofRaeux', 'http://viistar.comicgenesis.com/')
|
add('WakingtheHouseofRaeux', 'http://viistar.comicgenesis.com/')
|
||||||
add('WarMageNC17', 'http://warmage.comicgenesis.com/')
|
add('WarMageNC17', 'http://warmage.comicgenesis.com/')
|
||||||
add('WarningBucketsOfBlood', 'http://chaoticcomics.comicgen.com/')
|
add('WarningBucketsOfBlood', 'http://chaoticcomics.comicgenesis.com/')
|
||||||
add('WayoftheDodo', 'http://dodocomic.comicgenesis.com/')
|
add('WayoftheDodo', 'http://dodocomic.comicgenesis.com/')
|
||||||
add('WebcomicTheWebcomicWebcomicWebcomicWebcomic', 'http://dannormnsanidey.comicgenesis.com/')
|
add('WebcomicTheWebcomicWebcomicWebcomicWebcomic', 'http://dannormnsanidey.comicgenesis.com/')
|
||||||
add('Wedontgetiteither', 'http://wdgie.comicgenesis.com/')
|
add('Wedontgetiteither', 'http://wdgie.comicgenesis.com/')
|
||||||
|
@ -1202,7 +1198,7 @@ add('WillyMorgan', 'http://willymorgan.comicgenesis.com/')
|
||||||
add('Wingmen', 'http://wingmen.comicgenesis.com/')
|
add('Wingmen', 'http://wingmen.comicgenesis.com/')
|
||||||
add('WishInOneHand', 'http://wishin1hand.comicgenesis.com/')
|
add('WishInOneHand', 'http://wishin1hand.comicgenesis.com/')
|
||||||
add('Witchprickers', 'http://buxompiratewench.comicgenesis.com/')
|
add('Witchprickers', 'http://buxompiratewench.comicgenesis.com/')
|
||||||
add('Witticisma', 'http://witticisma.comicgen.com/')
|
add('Witticisma', 'http://witticisma.comicgenesis.com/')
|
||||||
add('WizardAndWarrior', 'http://wizardandwarrior.comicgenesis.com/')
|
add('WizardAndWarrior', 'http://wizardandwarrior.comicgenesis.com/')
|
||||||
add('Wizztards', 'http://wizztards.comicgenesis.com/')
|
add('Wizztards', 'http://wizztards.comicgenesis.com/')
|
||||||
add('WonTonHammer', 'http://wonton.comicgenesis.com/')
|
add('WonTonHammer', 'http://wonton.comicgenesis.com/')
|
||||||
|
@ -1213,8 +1209,8 @@ add('WrathofHeaven', 'http://wrath.comicgenesis.com/')
|
||||||
add('XartinDelic', 'http://xartindelic.comicgenesis.com/')
|
add('XartinDelic', 'http://xartindelic.comicgenesis.com/')
|
||||||
add('YARKRAMERSFIRSTREALITY', 'http://firstreality.comicgenesis.com/')
|
add('YARKRAMERSFIRSTREALITY', 'http://firstreality.comicgenesis.com/')
|
||||||
add('YKAnime', 'http://ykanime.comicgenesis.com/')
|
add('YKAnime', 'http://ykanime.comicgenesis.com/')
|
||||||
add('YOSH', 'http://yosh.comicgen.com/')
|
add('YOSH', 'http://yosh.comicgenesis.com/')
|
||||||
add('YUMEdream', 'http://yume.comicgen.com/')
|
add('YUMEdream', 'http://yume.comicgenesis.com/')
|
||||||
add('YahtzeeTakesOnTheWorld', 'http://yahtzee.comicgenesis.com/')
|
add('YahtzeeTakesOnTheWorld', 'http://yahtzee.comicgenesis.com/')
|
||||||
add('YangChild', 'http://yangchild.comicgenesis.com/')
|
add('YangChild', 'http://yangchild.comicgenesis.com/')
|
||||||
add('YellowMoon', 'http://yellowmoon.comicgenesis.com/')
|
add('YellowMoon', 'http://yellowmoon.comicgenesis.com/')
|
||||||
|
@ -1230,7 +1226,7 @@ add('Zarla', 'http://zarla.comicgenesis.com/')
|
||||||
add('ZebraGirl', 'http://zebragirl.comicgenesis.com/')
|
add('ZebraGirl', 'http://zebragirl.comicgenesis.com/')
|
||||||
add('Zeek', 'http://zeek.comicgenesis.com/')
|
add('Zeek', 'http://zeek.comicgenesis.com/')
|
||||||
add('ZeeratheSpacePirate', 'http://zeera.comicgenesis.com/')
|
add('ZeeratheSpacePirate', 'http://zeera.comicgenesis.com/')
|
||||||
add('Zelon', 'http://zelon.comicgen.com/')
|
add('Zelon', 'http://zelon.comicgenesis.com/')
|
||||||
add('ZeuU', 'http://zeurinu.comicgenesis.com/')
|
add('ZeuU', 'http://zeurinu.comicgenesis.com/')
|
||||||
add('Zoology', 'http://thezoo.comicgenesis.com/')
|
add('Zoology', 'http://thezoo.comicgenesis.com/')
|
||||||
add('Zootz', 'http://digitalvigilante.comicgenesis.com/')
|
add('Zootz', 'http://digitalvigilante.comicgenesis.com/')
|
||||||
|
@ -1250,13 +1246,13 @@ add('etch', 'http://etch.comicgenesis.com/')
|
||||||
add('fagz', 'http://fagz.comicgenesis.com/')
|
add('fagz', 'http://fagz.comicgenesis.com/')
|
||||||
add('fallinglessons', 'http://fallinglessons.comicgenesis.com/')
|
add('fallinglessons', 'http://fallinglessons.comicgenesis.com/')
|
||||||
add('fromthedeskof', 'http://fromthedeskof.comicgenesis.com/')
|
add('fromthedeskof', 'http://fromthedeskof.comicgenesis.com/')
|
||||||
add('geeks', 'http://geekstryingtobefunny.comicgen.com/')
|
add('geeks', 'http://geekstryingtobefunny.comicgenesis.com/')
|
||||||
add('heysuburbia', 'http://rockyfoxtop.comicgenesis.com/')
|
add('heysuburbia', 'http://rockyfoxtop.comicgenesis.com/')
|
||||||
add('hyperghostbroadcasts', 'http://hyperghostbroadcasts.comicgenesis.com/')
|
add('hyperghostbroadcasts', 'http://hyperghostbroadcasts.comicgenesis.com/')
|
||||||
add('ifthenelse', 'http://ifthenelse.comicgenesis.com/')
|
add('ifthenelse', 'http://ifthenelse.comicgenesis.com/')
|
||||||
add('ihatesteve', 'http://ihatesteve.comicgenesis.com/')
|
add('ihatesteve', 'http://ihatesteve.comicgenesis.com/')
|
||||||
add('inconsistentshorts', 'http://ics.comicgenesis.com/')
|
add('inconsistentshorts', 'http://ics.comicgenesis.com/')
|
||||||
add('junkRIOT', 'http://junkriot.comicgen.com/')
|
add('junkRIOT', 'http://junkriot.comicgenesis.com/')
|
||||||
add('khaoskomic', 'http://komix.comicgenesis.com/')
|
add('khaoskomic', 'http://komix.comicgenesis.com/')
|
||||||
add('laMouettetheseagullfromMars', 'http://lamouette.comicgenesis.com/')
|
add('laMouettetheseagullfromMars', 'http://lamouette.comicgenesis.com/')
|
||||||
add('leapingwizards', 'http://leapingwizards.comicgenesis.com/')
|
add('leapingwizards', 'http://leapingwizards.comicgenesis.com/')
|
||||||
|
@ -1274,11 +1270,11 @@ add('socializedmedicine', 'http://socializedmedicine.comicgenesis.com/')
|
||||||
add('spacejams', 'http://spacejams.comicgenesis.com/')
|
add('spacejams', 'http://spacejams.comicgenesis.com/')
|
||||||
add('spiderfrogballoon', 'http://spiderfrogballoon.comicgenesis.com/')
|
add('spiderfrogballoon', 'http://spiderfrogballoon.comicgenesis.com/')
|
||||||
add('theadventuresofmegamanandlink', 'http://takeru.comicgenesis.com/')
|
add('theadventuresofmegamanandlink', 'http://takeru.comicgenesis.com/')
|
||||||
add('theendofthings', 'http://endofthings.comicgen.com/')
|
add('theendofthings', 'http://endofthings.comicgenesis.com/')
|
||||||
add('themisanthropes', 'http://misanthropes.comicgenesis.com/')
|
add('themisanthropes', 'http://misanthropes.comicgenesis.com/')
|
||||||
add('themouseoftime', 'http://mouseoftime.comicgenesis.com/')
|
add('themouseoftime', 'http://mouseoftime.comicgenesis.com/')
|
||||||
add('ttskr', 'http://ttskr.comicgenesis.com/')
|
add('ttskr', 'http://ttskr.comicgenesis.com/')
|
||||||
add('twelvedragons', 'http://twelvedragons.comicgenesis.com/')
|
add('twelvedragons', 'http://twelvedragons.comicgenesis.com/')
|
||||||
add('umlauthouse', 'http://umlauthouse.comicgenesis.com/')
|
add('umlauthouse', 'http://umlauthouse.comicgenesis.com/')
|
||||||
add('usrbinw00t', 'http://usrbinw00t.comicgenesis.com/')
|
add('usrbinw00t', 'http://usrbinw00t.comicgenesis.com/')
|
||||||
add('xCHOPSTICKSxNeo', 'http://chopsticksneo.comicgen.com/')
|
add('xCHOPSTICKSxNeo', 'http://chopsticksneo.comicgenesis.com/')
|
||||||
|
|
|
@ -49,7 +49,7 @@ class Nicky510(_BasicScraper):
|
||||||
|
|
||||||
class NoNeedForBushido(_BasicScraper):
|
class NoNeedForBushido(_BasicScraper):
|
||||||
latestUrl = 'http://noneedforbushido.com/latest/'
|
latestUrl = 'http://noneedforbushido.com/latest/'
|
||||||
stripUrl = latestUrl + '%s/'
|
stripUrl = 'http://noneedforbushido.com/%s/'
|
||||||
imageSearch = compile(tagre("img", "src", r'(http://noneedforbushido\.com/comics/comic/[^"]+)'))
|
imageSearch = compile(tagre("img", "src", r'(http://noneedforbushido\.com/comics/comic/[^"]+)'))
|
||||||
prevSearch = compile(tagre("a", "href", r'(http://noneedforbushido\.com/[^"]+)', after="previous-comic-link"))
|
prevSearch = compile(tagre("a", "href", r'(http://noneedforbushido\.com/[^"]+)', after="previous-comic-link"))
|
||||||
help = 'Index format: yyyy/comic/nnn'
|
help = 'Index format: yyyy/comic/nnn'
|
||||||
|
|
|
@ -67,10 +67,10 @@ class Sheldon(_BasicScraper):
|
||||||
|
|
||||||
class Shortpacked(_BasicScraper):
|
class Shortpacked(_BasicScraper):
|
||||||
latestUrl = 'http://www.shortpacked.com/'
|
latestUrl = 'http://www.shortpacked.com/'
|
||||||
stripUrl = latestUrl + 'd/%s.html'
|
stripUrl = latestUrl + '%s/'
|
||||||
imageSearch = compile(tagre("img", "src", r'(http://www\.shortpacked\.com/comics/[^"]+)'))
|
imageSearch = compile(tagre("img", "src", r'(http://www\.shortpacked\.com/comics/[^"]+)'))
|
||||||
prevSearch = compile(tagre("a", "href", r'(http://www\.shortpacked\.com/\d+/comic/[^"]+)', after="prev"))
|
prevSearch = compile(tagre("a", "href", r'(http://www\.shortpacked\.com/\d+/comic/[^"]+)', after="prev"))
|
||||||
help = 'Index format: yyyymmdd'
|
help = 'Index format: yyyy/comic/book-nn/mm-name1/name2'
|
||||||
|
|
||||||
|
|
||||||
class SinFest(_BasicScraper):
|
class SinFest(_BasicScraper):
|
||||||
|
|
|
@ -6,8 +6,10 @@ from ..scraper import make_scraper
|
||||||
from ..helpers import bounceStarter
|
from ..helpers import bounceStarter
|
||||||
from ..util import tagre
|
from ..util import tagre
|
||||||
|
|
||||||
_imageSearch = compile(tagre("img", "src", r'(http://www\.smackjeeves\.com/images/uploaded/comics/[^"]*)'))
|
_imageSearch = compile(tagre("img", "src", r'(http://(?:www|img2)\.smackjeeves\.com/images/uploaded/comics/[^"]+)'))
|
||||||
_prevSearch = compile(tagre("a", "href", r'(/comics/\d+/[^"]*)') + '<img[^>]*alt="< Previous"')
|
_linkSearch = tagre("a", "href", r'([^"]*/comics/\d+/[^"]*)')
|
||||||
|
_prevSearch = compile(_linkSearch + '(?:<img[^>]*alt="< Previous"|< Back)')
|
||||||
|
_nextSearch = compile(_linkSearch + '(?:<img[^>]*alt="Next >"|Next >)')
|
||||||
|
|
||||||
def add(name):
|
def add(name):
|
||||||
classname = 'SmackJeeves/' + name
|
classname = 'SmackJeeves/' + name
|
||||||
|
@ -20,8 +22,8 @@ def add(name):
|
||||||
return pageUrl.split('/')[-2]
|
return pageUrl.split('/')[-2]
|
||||||
|
|
||||||
globals()[classname] = make_scraper(classname,
|
globals()[classname] = make_scraper(classname,
|
||||||
starter=bounceStarter(baseUrl, compile(tagre("a", "href", r'(/comics/\d+/[^"]*)') + '<img[^>]*alt="Next >"')),
|
starter=bounceStarter(baseUrl, _nextSearch),
|
||||||
stripUrl = baseUrl,
|
stripUrl = baseUrl + '%s/',
|
||||||
imageSearch = _imageSearch,
|
imageSearch = _imageSearch,
|
||||||
prevSearch = _prevSearch,
|
prevSearch = _prevSearch,
|
||||||
help = 'Index format: nnnn (some increasing number)',
|
help = 'Index format: nnnn (some increasing number)',
|
||||||
|
|
|
@ -16,7 +16,7 @@ def add(name, host):
|
||||||
globals()[classname] = make_scraper(classname,
|
globals()[classname] = make_scraper(classname,
|
||||||
name='SnafuComics/%s' % name,
|
name='SnafuComics/%s' % name,
|
||||||
latestUrl = baseUrl,
|
latestUrl = baseUrl,
|
||||||
stripUrl = baseUrl + 'index.php?strip_id=%s',
|
stripUrl = baseUrl + '?comic_id=%s',
|
||||||
imageSearch = _imageSearch,
|
imageSearch = _imageSearch,
|
||||||
prevSearch = _prevSearch,
|
prevSearch = _prevSearch,
|
||||||
help = 'Index format: n (unpadded)',
|
help = 'Index format: n (unpadded)',
|
||||||
|
|
|
@ -8,27 +8,25 @@ from ..scraper import _BasicScraper
|
||||||
from ..util import tagre
|
from ..util import tagre
|
||||||
|
|
||||||
|
|
||||||
# XXX make dynamic
|
class VGCats(_BasicScraper):
|
||||||
class _VGCats(_BasicScraper):
|
|
||||||
latestUrl = 'http://www.vgcats.com/comics/'
|
latestUrl = 'http://www.vgcats.com/comics/'
|
||||||
imageSearch = compile(r'<img src="(images/\d{6}\..+?)"')
|
stripUrl = latestUrl + '?strip_id=%s'
|
||||||
prevSearch = compile(r'<a href="(\?strip_id=\d+)"><img src="back.gif" border="0"')
|
imageSearch = compile(tagre("img", "src", r'(images/\d{6}\.[^"]+)'))
|
||||||
|
prevSearch = compile(tagre("a", "href", r'(\?strip_id=\d+)') +
|
||||||
|
tagre("img", "src", r"back\.gif"))
|
||||||
help = 'Index format: n (unpadded)'
|
help = 'Index format: n (unpadded)'
|
||||||
|
|
||||||
@property
|
|
||||||
def stripUrl(self):
|
|
||||||
return self.latestUrl + '?strip_id=%s'
|
|
||||||
|
|
||||||
|
class VGCatsSuper(VGCats):
|
||||||
class Super(_VGCats):
|
|
||||||
name = 'VGCats/Super'
|
name = 'VGCats/Super'
|
||||||
latestUrl = 'http://www.vgcats.com/super/'
|
latestUrl = 'http://www.vgcats.com/super/'
|
||||||
|
stripUrl = latestUrl + '?strip_id=%s'
|
||||||
|
|
||||||
|
|
||||||
class Adventure(_VGCats):
|
class VGCatsAdventure(VGCats):
|
||||||
name = 'VGCats/Adventure'
|
name = 'VGCats/Adventure'
|
||||||
latestUrl = 'http://www.vgcats.com/ffxi/'
|
latestUrl = 'http://www.vgcats.com/ffxi/'
|
||||||
|
stripUrl = latestUrl + '?strip_id=%s'
|
||||||
|
|
||||||
|
|
||||||
class ViiviJaWagner(_BasicScraper):
|
class ViiviJaWagner(_BasicScraper):
|
||||||
|
|
|
@ -77,6 +77,7 @@ class _BasicScraper(object):
|
||||||
seen_urls = set()
|
seen_urls = set()
|
||||||
while url:
|
while url:
|
||||||
imageUrls, prevUrl = fetchUrls(url, self.imageSearch, self.prevSearch)
|
imageUrls, prevUrl = fetchUrls(url, self.imageSearch, self.prevSearch)
|
||||||
|
prevUrl = self.prevUrlModifier(prevUrl)
|
||||||
seen_urls.add(url)
|
seen_urls.add(url)
|
||||||
yield self.getComicStrip(url, imageUrls)
|
yield self.getComicStrip(url, imageUrls)
|
||||||
# avoid recursive URL loops
|
# avoid recursive URL loops
|
||||||
|
@ -107,6 +108,14 @@ class _BasicScraper(object):
|
||||||
"""Return filename for given image and page URL."""
|
"""Return filename for given image and page URL."""
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def prevUrlModifier(cls, prevUrl):
|
||||||
|
"""Optional modification of parsed previous URLs. Useful if
|
||||||
|
there are domain redirects. The default implementation does
|
||||||
|
not modify the URL.
|
||||||
|
"""
|
||||||
|
return prevUrl
|
||||||
|
|
||||||
def getFilename(self, imageUrl, pageUrl):
|
def getFilename(self, imageUrl, pageUrl):
|
||||||
"""Return filename for given image and page URL."""
|
"""Return filename for given image and page URL."""
|
||||||
return self.namer(imageUrl, pageUrl)
|
return self.namer(imageUrl, pageUrl)
|
||||||
|
|
|
@ -12,7 +12,6 @@ import re
|
||||||
import traceback
|
import traceback
|
||||||
import time
|
import time
|
||||||
from htmlentitydefs import name2codepoint
|
from htmlentitydefs import name2codepoint
|
||||||
from math import log, floor
|
|
||||||
|
|
||||||
from .output import out
|
from .output import out
|
||||||
from .configuration import UserAgent, AppName, App, SupportUrl
|
from .configuration import UserAgent, AppName, App, SupportUrl
|
||||||
|
@ -209,19 +208,6 @@ def get_columns (fp):
|
||||||
return 80
|
return 80
|
||||||
|
|
||||||
|
|
||||||
suffixes = ('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')
|
|
||||||
|
|
||||||
|
|
||||||
def saneDataSize(size):
|
|
||||||
if size == 0:
|
|
||||||
return 'unk B'
|
|
||||||
index = int(floor(log(abs(size), 1024)))
|
|
||||||
index = min(index, len(suffixes) - 1)
|
|
||||||
index = max(index, 0)
|
|
||||||
factor = 1024 ** index
|
|
||||||
return '%0.3f %s' % (float(size) / factor, suffixes[index])
|
|
||||||
|
|
||||||
|
|
||||||
def splitpath(path):
|
def splitpath(path):
|
||||||
c = []
|
c = []
|
||||||
head, tail = os.path.split(path)
|
head, tail = os.path.split(path)
|
||||||
|
@ -331,3 +317,24 @@ def unquote(text):
|
||||||
while '%' in text:
|
while '%' in text:
|
||||||
text = urllib.unquote(text)
|
text = urllib.unquote(text)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
|
|
||||||
|
def strsize (b):
|
||||||
|
"""Return human representation of bytes b. A negative number of bytes
|
||||||
|
raises a value error."""
|
||||||
|
if b < 0:
|
||||||
|
raise ValueError("Invalid negative byte number")
|
||||||
|
if b < 1024:
|
||||||
|
return "%dB" % b
|
||||||
|
if b < 1024 * 10:
|
||||||
|
return "%dKB" % (b // 1024)
|
||||||
|
if b < 1024 * 1024:
|
||||||
|
return "%.2fKB" % (float(b) / 1024)
|
||||||
|
if b < 1024 * 1024 * 10:
|
||||||
|
return "%.2fMB" % (float(b) / (1024*1024))
|
||||||
|
if b < 1024 * 1024 * 1024:
|
||||||
|
return "%.1fMB" % (float(b) / (1024*1024))
|
||||||
|
if b < 1024 * 1024 * 1024 * 10:
|
||||||
|
return "%.2fGB" % (float(b) / (1024*1024*1024))
|
||||||
|
return "%.1fGB" % (float(b) / (1024*1024*1024))
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,13 @@ json_file = __file__.replace(".py", ".json")
|
||||||
# names of comics to exclude
|
# names of comics to exclude
|
||||||
exclude_comics = [
|
exclude_comics = [
|
||||||
"Twonks_and_Plonkers", # broken images, no real content
|
"Twonks_and_Plonkers", # broken images, no real content
|
||||||
|
"U_Chuu_No_Hoshi_Hotoshi_Tsuko", # broken images
|
||||||
|
"Red_Dog_Venue", # start page is broken
|
||||||
|
"Monster_Lover", # start page is broken
|
||||||
|
"Legacy_of_Blaze", # broken images
|
||||||
|
"Dead_Strangers", # broken images
|
||||||
|
"Crack", # broken images
|
||||||
|
"Iron_Wolf", # broken images
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ url_matcher = re.compile(tagre("a", "href", r'(/[^"]+)', after="alpha_list") + r
|
||||||
|
|
||||||
# names of comics to exclude
|
# names of comics to exclude
|
||||||
exclude_comics = [
|
exclude_comics = [
|
||||||
|
"FrikkFrakkAndFrank", # too few comics
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,28 @@ num_matcher = re.compile(r'Number of Days: (\d+)')
|
||||||
|
|
||||||
# names of comics to exclude
|
# names of comics to exclude
|
||||||
exclude_comics = [
|
exclude_comics = [
|
||||||
|
"JuvenileDiversion", # page moved
|
||||||
|
"JustWeird", # page has 403 forbidden
|
||||||
|
"MobileMadness", # page does not follow standard layout
|
||||||
|
"KnightsOfTheNexus", # page does not follow standard layout
|
||||||
|
"RogerAndDominic", # page does not follow standard layout
|
||||||
|
"TheAvatar", # page does not follow standard layout
|
||||||
|
"Michikomonogatari", # page does not follow standard layout
|
||||||
|
"DungeonDamage", # page does not follow standard layout
|
||||||
|
"SaveMeGebus", # page does not follow standard layout
|
||||||
|
"BlueZombie", # broken page
|
||||||
|
"BoomerExpress", # redirection to another page
|
||||||
|
"FaultyLogic", # page does not follow standard layout
|
||||||
|
"EarthRiser", # redirects to a new page
|
||||||
|
"GoForIt", # page is gone
|
||||||
|
"ACDeceptibotscomic", # no images
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
url_overrides = {
|
||||||
|
# link to last valid strip
|
||||||
|
"BallofYarn": "http://ballofyarn.comicgenesis.com/d/20020624.html",
|
||||||
|
}
|
||||||
|
|
||||||
def handle_url(url, res):
|
def handle_url(url, res):
|
||||||
"""Parse one search result page."""
|
"""Parse one search result page."""
|
||||||
|
@ -49,7 +69,7 @@ def handle_url(url, res):
|
||||||
print("ERROR:", repr(data[end:end+300], file=sys.stderr))
|
print("ERROR:", repr(data[end:end+300], file=sys.stderr))
|
||||||
continue
|
continue
|
||||||
num = int(mo.group(1))
|
num = int(mo.group(1))
|
||||||
res[name] = (url, num)
|
res[name] = (url_overrides.get(name, url), num)
|
||||||
|
|
||||||
|
|
||||||
def save_result(res):
|
def save_result(res):
|
||||||
|
@ -89,6 +109,7 @@ def print_results(args):
|
||||||
url, num = entry
|
url, num = entry
|
||||||
if num < min_comics:
|
if num < min_comics:
|
||||||
continue
|
continue
|
||||||
|
url = url.replace("comicgen.com", "comicgenesis.com")
|
||||||
if has_comic(name):
|
if has_comic(name):
|
||||||
prefix = '#'
|
prefix = '#'
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -66,7 +66,10 @@ def get_content(filename):
|
||||||
for line in f:
|
for line in f:
|
||||||
if line.startswith((". ", "F ")) and "test_comics" in line:
|
if line.startswith((". ", "F ")) and "test_comics" in line:
|
||||||
num_tests += 1
|
num_tests += 1
|
||||||
tests.append(get_test(line))
|
try:
|
||||||
|
tests.append(get_test(line))
|
||||||
|
except Exception as msg:
|
||||||
|
print("WARNING:", msg, file=sys.stderr)
|
||||||
if num_tests % 5 == 0:
|
if num_tests % 5 == 0:
|
||||||
print(num_tests, end=" ", file=sys.stderr)
|
print(num_tests, end=" ", file=sys.stderr)
|
||||||
tests.sort()
|
tests.sort()
|
||||||
|
|
|
@ -7,6 +7,5 @@ script=test.sh
|
||||||
|
|
||||||
rm -f "$script"
|
rm -f "$script"
|
||||||
echo "#!/bin/sh -e" > "$script"
|
echo "#!/bin/sh -e" > "$script"
|
||||||
egrep -v "^\. " testresults.txt | egrep "^F " | cut -b "3-" | awk '{ print "make test TESTOUTPUT=/dev/null TESTS=" $0; }' >> "$script"
|
egrep -v "^\. " testresults.txt | egrep "^F " | cut -b "3-" | sort | awk '{ print "make test TESTOUTPUT=/dev/null TESTS=" $0; }' >> "$script"
|
||||||
chmod 755 "$script"
|
chmod 755 "$script"
|
||||||
|
|
||||||
|
|
|
@ -11,4 +11,3 @@ for script in creators gocomics drunkduck universal keenspot; do
|
||||||
"${d}/removeafter.py" "$target" "# DO NOT REMOVE"
|
"${d}/removeafter.py" "$target" "# DO NOT REMOVE"
|
||||||
"${d}/${script}.py" $mincomics >> "$target"
|
"${d}/${script}.py" $mincomics >> "$target"
|
||||||
done
|
done
|
||||||
|
|
Loading…
Reference in a new issue