738 lines
40 KiB
Python
738 lines
40 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright (C) 2004-2008 Tristan Seligmann and Jonathan Jacobs
|
|
# Copyright (C) 2012-2014 Bastian Kleineidam
|
|
# Copyright (C) 2015-2017 Tobias Gruetzmacher
|
|
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
from six.moves.urllib.parse import urlsplit
|
|
|
|
from ..util import quote
|
|
from ..scraper import _ParserScraper
|
|
from ..output import out
|
|
|
|
# SmackJeeves is a crawlers nightmare - users are allowed to edit HTML
|
|
# directly. Additionally, users use unescaped < characters sometimes, which
|
|
# breaks the parse tree on libxml2 before 2.9.3...
|
|
|
|
|
|
class SmackJeeves(_ParserScraper):
|
|
ONLY_COMICS = '[contains(@href, "/comics/")]'
|
|
|
|
prevSearch = (
|
|
'//a[@class="nav-prev"]' + ONLY_COMICS,
|
|
'//a[img[@id="sj_nav_prev_img"]]' + ONLY_COMICS,
|
|
'//a[img[re:test(@alt, "prev", "i") and not(@id="comic_image")]]' + ONLY_COMICS,
|
|
'//a[img[re:test(@src, "/(prev|back|Yun2lVQ)")]]' + ONLY_COMICS,
|
|
'//a[re:test(@title, "previous", "i")]' + ONLY_COMICS,
|
|
'//a[re:test(text(), "prev|back|atras", "i")]' + ONLY_COMICS,
|
|
'//a[div[@class="prev"]]' + ONLY_COMICS,
|
|
'//select[@class="jumpbox"]/preceding::a[1]' + ONLY_COMICS,
|
|
'//form[@name="jumpbox"]/preceding::a[1]' + ONLY_COMICS,
|
|
)
|
|
|
|
nextSearch = (
|
|
'//a[@class="nav-next"]' + ONLY_COMICS,
|
|
'//a[img[@id="sj_nav_next_img"]]' + ONLY_COMICS,
|
|
'//a[img[re:test(@alt, "next", "i") and not(@id="comic_image")]]' + ONLY_COMICS,
|
|
'//a[img[re:test(@src, "/(next|wJkQA07)", "i")]]' + ONLY_COMICS,
|
|
'//a[re:test(@title, "next", "i")]' + ONLY_COMICS,
|
|
'//a[re:test(text(), "next|siguiente", "i")]' + ONLY_COMICS,
|
|
'//a[div[@class="next"]]' + ONLY_COMICS,
|
|
'//select[@class="jumpbox"]/following::a[1]' + ONLY_COMICS,
|
|
'//form[@name="jumpbox"]/following::a[1]' + ONLY_COMICS,
|
|
)
|
|
|
|
imageSearch = (
|
|
'//img[@id="comic_image"]',
|
|
'//div[@id="comic-image"]//img',
|
|
'//img[@id="comic"]',
|
|
'//div[@id="comicset"]/object/param[@name="movie"]/@value',
|
|
)
|
|
|
|
broken_html_bugfix = True
|
|
|
|
def __init__(self, name, host=None, sub=None, adult=False, endOfLife=False):
|
|
super(SmackJeeves, self).__init__('SmackJeeves/' + name)
|
|
if host:
|
|
self.url = 'http://%s/comics/' % host
|
|
else:
|
|
self.url = 'http://%s.smackjeeves.com/comics/' % sub
|
|
self.adult = adult
|
|
self.endOfLife = endOfLife
|
|
|
|
def starter(self):
|
|
"""Get start URL."""
|
|
start = self.url
|
|
if self.adult:
|
|
host = urlsplit(self.url).hostname
|
|
start = 'http://%s/mature.php?ref=%s' % (host, quote(start))
|
|
data = self.getPage(start)
|
|
startimg = None
|
|
if not self.shouldSkipUrl(start, data):
|
|
startimg = self.fetchUrl(start, data, self.imageSearch)
|
|
prevurl = self.fetchUrl(start, data, self.prevSearch)
|
|
data = self.getPage(prevurl)
|
|
previmg = None
|
|
if not self.shouldSkipUrl(prevurl, data):
|
|
previmg = self.fetchUrl(prevurl, data, self.imageSearch)
|
|
if startimg and previmg and startimg == previmg:
|
|
out.debug("Matching! %s %s" % (prevurl, self.name))
|
|
return prevurl
|
|
else:
|
|
return self.fetchUrl(prevurl, data, self.nextSearch)
|
|
|
|
def namer(self, image_url, page_url):
|
|
parts = page_url.split('/')
|
|
name = parts[-2]
|
|
num = parts[-3]
|
|
return "%s_%s" % (name, num)
|
|
|
|
def shouldSkipUrl(self, url, data):
|
|
return (data.xpath('//img[contains(@src, "/images/image_na.gif")]') or
|
|
'/851756/175-final-story-15-paradise' in url or
|
|
'/2422158/hedgehog-piece-grand-voyage' in url)
|
|
|
|
@classmethod
|
|
def getmodules(cls):
|
|
return (
|
|
# these would be generated by scripts/smackjeeves.py, but the sheer
|
|
# amount of comics on SmackJeeves makes that idea rather
|
|
# unattractive. If you add new comics, try to copy them from the
|
|
# output of that script...
|
|
# START AUTOUPDATE
|
|
cls('20TimesKirby', sub='20xkirby'),
|
|
cls('2Kingdoms', sub='2kingdoms', endOfLife=True),
|
|
cls('355Days', sub='355days'),
|
|
cls('_A_', sub='a-the-stalker', endOfLife=True),
|
|
cls('AB', sub='alistairandboggart', adult=True),
|
|
cls('AceOfHearts', sub='aceof-hearts'),
|
|
cls('AcidMonday', sub='acidmonday', adult=True),
|
|
cls('Adalsysla', sub='adalsysla', endOfLife=True),
|
|
cls('AddictiveScience', sub='addictivescience'),
|
|
cls('ADoodleADay', sub='adoodleaday'),
|
|
cls('AdventuresOfLumAndFriends', sub='aolaf'),
|
|
cls('AdventuresoftheWeird', sub='adventuresoftheweird'),
|
|
cls('AetherTheories', sub='aethertheories'),
|
|
cls('AgeOfTheGray', sub='ageofthegray'),
|
|
cls('AGirlOnTheServer', sub='girlontheserver'),
|
|
cls('AKirbyKomic', sub='akirbykomic'),
|
|
cls('ALaMode', sub='alamode'),
|
|
cls('AllInLOVE', sub='allinlove'),
|
|
cls('AllStarHeroes', sub='allstarheroes'),
|
|
cls('AlmostTouching', sub='almosttouching', adult=True),
|
|
cls('AloversRule', sub='aloversrule', adult=True),
|
|
cls('AlwaysDamnedWebcomic', sub='alwaysdamned', adult=True),
|
|
cls('AlwaysRainingHere', sub='alwaysraininghere'),
|
|
cls('Amaravati', sub='amaravati'),
|
|
cls('AmorVincitOmnia', sub='avo', adult=True),
|
|
cls('AmsdenEstate', sub='monsterous'),
|
|
cls('AngelGuardian', sub='angel-guardian'),
|
|
cls('ANGELOU', sub='angelou-esp'),
|
|
cls('AnimalAdventures', sub='animaladventures'),
|
|
cls('Animayhem', sub='animayhem'),
|
|
cls('AnythingAboutNothing', host='www.anythingcomic.com'),
|
|
cls('APTComic', sub='aptcomic'),
|
|
cls('AQuestionOfCharacter', sub='aqoc'),
|
|
cls('Area9', sub='area-9'),
|
|
cls('AroundTheBlock', sub='aroundtheblock'),
|
|
cls('ArtOfAFantasy', sub='artofafantasy', adult=True),
|
|
cls('ASongforElise', sub='asongforelise', adult=True),
|
|
cls('AtArmsLength', host='www.atarmslength.net'),
|
|
cls('Atlaswebcomic', sub='atlaswebcomic'),
|
|
cls('Autophobia', sub='autophobia'),
|
|
cls('Aware', sub='aware'),
|
|
cls('AyaTakeo', sub='ayatakeo'),
|
|
cls('AYuriCollab', sub='ayuricollabbitches', adult=True),
|
|
cls('BabysittingFourDemons', sub='babysitting4demons'),
|
|
cls('Babywhatsyoursign', sub='babywhatsyoursign'),
|
|
cls('BadassRiz', sub='badassriz'),
|
|
cls('BallandChain', sub='ballandchain'),
|
|
cls('Bard', sub='barred'),
|
|
cls('BassComicAdventures', sub='basscomicadventures'),
|
|
cls('BattleSequence', sub='battlesequence'),
|
|
cls('Bearhoney', sub='bear-honey'),
|
|
cls('BearlyAbel', sub='bearlyabel'),
|
|
cls('BeautifulLies', sub='beautiful-lies'),
|
|
cls('BehindTheGlassCurtain', sub='g1ass', endOfLife=True),
|
|
cls('BehindTheObsidianMirror', sub='obsidian-mirror', adult=True),
|
|
cls('BeretCatComics', sub='beretcatcomics'),
|
|
cls('Bestbrosforever', sub='bestbrosforever'),
|
|
cls('Betovering', sub='betovering', adult=True),
|
|
cls('BettencourtHotel', sub='bettencourt', endOfLife=True),
|
|
cls('BetweenLightAndDark', sub='bld'),
|
|
cls('BeTwin', sub='be-twin', endOfLife=True),
|
|
cls('BeyondTheOrdinary', sub='bto'),
|
|
cls('BioRevelation', sub='biorevelation'),
|
|
cls('Bl3', sub='bl3', endOfLife=True),
|
|
cls('BlackAndBlue', sub='black-and-blue', endOfLife=True),
|
|
cls('Blackdemon', sub='blackdemoncomics'),
|
|
cls('BlackDragon', sub='blackdragon'),
|
|
cls('BlackFridayRule', sub='blackfridayrule'),
|
|
cls('BlackSheepcomic', sub='black-sheep'),
|
|
cls('BLDShortComics', sub='bldshortcomics'),
|
|
cls('BleachRedux', sub='bleachredux'),
|
|
cls('BlindandBlue', sub='blindandblue'),
|
|
cls('BloodhuntersBirthOfAVampire', sub='bloodhunters', endOfLife=True),
|
|
cls('BloomAPokemonConquestComic', sub='bloomconquest'),
|
|
cls('BlueHair', sub='bluehair'),
|
|
cls('BoilingPointofBrain', sub='bpob'),
|
|
cls('BoogeyDancingMonkeyPot', sub='monkeypot'),
|
|
cls('BreachOfAgency', sub='breachofagency', endOfLife=True),
|
|
cls('BreakfastOnACliff', sub='boac'),
|
|
cls('Burn', sub='burn'),
|
|
cls('ByTheBook', sub='bythebook', adult=True),
|
|
cls('CafeSuada', sub='cafesuada'),
|
|
cls('Cambion', sub='cambion', adult=True),
|
|
cls('CaptiveSoul', sub='captive-soul'),
|
|
cls('Captured', sub='captured', adult=True),
|
|
cls('CaravanaTaleofGodsandMen', sub='caravantale'),
|
|
cls('Cataclysm', sub='cataclysm', adult=True),
|
|
cls('Catnip', sub='catnipmanga', adult=True),
|
|
cls('Cerintha', sub='cerintha'),
|
|
cls('ChampionofChampions', sub='championofchampions'),
|
|
cls('ChampionsAndHeroesAgeOfDragons', sub='championsandheroes'),
|
|
cls('ChannelDDDNews', sub='dddnews'),
|
|
cls('ChaosAdventuresII', sub='chaosadventuresii'),
|
|
cls('ChaoticNation', sub='chaoticnation', adult=True),
|
|
cls('Charaktermaske', sub='charaktermaske'),
|
|
cls('Chatuplines', sub='chatuplines'),
|
|
cls('CheneysGotaGun', sub='cheney'),
|
|
cls('ChickenScratches', sub='chickenscratches'),
|
|
cls('ChildrenOfTheNight', sub='cotn'),
|
|
cls('ChimiMouryou', sub='cmmr'),
|
|
cls('ChocolatewithPepper', sub='chocolate-with-pepper'),
|
|
cls('CityFolk', host='www.cityfolk.ca'),
|
|
cls('ClairetheFlare', sub='clairetheflare'),
|
|
cls('CleanCure', sub='cleanpluscure'),
|
|
cls('ClockworkAtrium', host='www.clockwork-atrium.com'),
|
|
cls('CloeRemembrance', sub='cloe', endOfLife=True),
|
|
cls('CockroachTheater', sub='cockroachtheater'),
|
|
cls('Cogs', sub='cogs'),
|
|
cls('ColorBlind', sub='cbcomic'),
|
|
cls('ConventionalWisdom', sub='conventionalwisdom'),
|
|
cls('CosmicDash', sub='cosmicdash'),
|
|
cls('Cramberries', sub='cramberries'),
|
|
cls('CrimsonWings', sub='crimson-wings'),
|
|
cls('CrocodileTears', sub='crocodile-tears', adult=True),
|
|
cls('CupOfOlea', sub='cupofolea'),
|
|
cls('CurseLineage', sub='curselineage'),
|
|
cls('DanielleDark', sub='danielledark'),
|
|
cls('Dasien', sub='dasien', adult=True),
|
|
cls('DavidDoesntGetIt', sub='daviddoesntgetit'),
|
|
cls('DBON', sub='dbondoujin'),
|
|
cls('DeadtoDay', sub='deadtoday'),
|
|
cls('DeathNoteIridescent', sub='dn-iridescent'),
|
|
cls('DefyingGravityTheFourGreatGuardians', sub='defyinggravitycomic'),
|
|
cls('DEGAF', sub='degaf'),
|
|
cls('DEMENTED', sub='demented', adult=True),
|
|
cls('DemonBattles', sub='demonbattles'),
|
|
cls('DemonCat', sub='demoncat'),
|
|
cls('DemonEater', sub='demoneater', adult=True),
|
|
cls('DenizensAttention', sub='denizensattention'),
|
|
cls('DevilsCake', sub='devilscake'),
|
|
cls('DevotoMusicinHell', sub='devoto', adult=True),
|
|
cls('Diaz', sub='diaz'),
|
|
cls('DigimonSaviors', sub='digimonsaviors'),
|
|
cls('DigimonTamersMiraiProject', sub='digimontamersmiraiproject'),
|
|
cls('DigisRandomSpriteshack', sub='digisspriteshack'),
|
|
cls('DigitalInsanity', sub='digitalinsanity'),
|
|
cls('DoItYourself', sub='diy'),
|
|
cls('DontDie', sub='dontdie'),
|
|
cls('DoodleBeans', sub='beans', adult=True),
|
|
cls('DoodlingAround', sub='doodlingcomic'),
|
|
cls('DoomsdayMyDear', host='www.doomsdaymydear.com'),
|
|
cls('Dragonet', sub='dragonet'),
|
|
cls('DragonKid', sub='dragonkid'),
|
|
cls('DreamCatcher', host='www.dreamcatchercomic.com'),
|
|
cls('DumpofManyPeople', sub='dumpofmanypeople'),
|
|
cls('DungeonHordes', sub='dungeonhordes'),
|
|
cls('EATATAU', sub='eatatau'),
|
|
cls('EDepthAngel', sub='edepth'),
|
|
cls('EidolonWhispersOfEternity', sub='whispersofeternity'),
|
|
cls('ElementalSpirits', sub='elementalspirits'),
|
|
cls('EnkeltenKentta', sub='enkeltenkentta', adult=True),
|
|
cls('Enthrall', sub='enthrall', adult=True),
|
|
cls('EntreEuxDeux', sub='entreuxdeux', endOfLife=True),
|
|
cls('Entuthrie', sub='entuthrie', adult=True),
|
|
cls('Eorah', sub='eorah', adult=True),
|
|
cls('Equsopia', sub='equsopia'),
|
|
cls('ERAConvergence', sub='convergence', endOfLife=True),
|
|
cls('ERAIbuki', sub='eraibuki', endOfLife=True),
|
|
cls('ERRORERROR', sub='errorerror'),
|
|
cls('EuphemisticEephus', sub='eephus'),
|
|
cls('EvilPlan', host='evilplan.thewebcomic.com'),
|
|
cls('ExperimentalMegaman', sub='ex90081'),
|
|
cls('EyesOfADigimon', sub='eoad'),
|
|
cls('FailureConfetti', sub='failureconfetti'),
|
|
cls('FairyTaleRejects', sub='fairytalerejects', adult=True),
|
|
cls('FaithlessDigitals', sub='faithlessdigitals'),
|
|
cls('FalconersDailyStrips', sub='falcdaily'),
|
|
cls('FallenAngelslove', sub='fallen-angels-love'),
|
|
cls('FarOutMantic', sub='meteorflo'),
|
|
cls('FarOutThere', sub='faroutthere'),
|
|
cls('FatetheAnthologyofKaienandhisfuckingmagicfriends', sub='fatehoho'),
|
|
cls('FemmeSchism', sub='femmeschism'),
|
|
cls('FeralGentry', sub='feralgentry'),
|
|
cls('FinalArcanum', sub='finalarcanum'),
|
|
cls('FireredLisasReise', sub='lisasreise'),
|
|
cls('FlyorFail', sub='flyorfail'),
|
|
cls('ForcedSeduction', sub='forced-seduction'),
|
|
cls('ForestHill', host='www.foresthillcomic.org'),
|
|
cls('ForgetTheDistance', sub='forgetthedistance', adult=True),
|
|
cls('Fortheloveofabrokenstring', sub='fortheloveofabrokenstring'),
|
|
cls('FramebyFrame', sub='frame-by-frame', adult=True),
|
|
cls('FrenzyRedux', sub='theadventuresoffrenzy'),
|
|
cls('FrobertTheDemon', sub='frobby'),
|
|
cls('FromnowonImagirl', sub='fromnowonimagirl'),
|
|
cls('FruitloopAndMrDownbeat', sub='fruitbeat'),
|
|
cls('FullSpectrumTherapy', sub='fst'),
|
|
cls('GamerCafe', sub='gamercafe'),
|
|
cls('GamesPeoplePlayUpdatedWeekly', sub='gamespeopleplay'),
|
|
cls('GardenofHearts', sub='gardenofhearts'),
|
|
cls('GayBacon', sub='gaybacon'),
|
|
cls('GayTimesWithRyanAndJay', sub='gtwraj'),
|
|
cls('GetUpAndGo', sub='getupandgo', adult=True),
|
|
cls('GigisNuzlockeRuns', sub='giginuzlocke'),
|
|
cls('Gloomverse', sub='gloomverse'),
|
|
cls('Gnoph', sub='gnoph', endOfLife=True),
|
|
cls('GoldenSunGenerationsAftermathVolume1', sub='gsgbtsyearone'),
|
|
cls('GoldenSunGenerationsColossoVolume6', sub='gsgbtsyearthree'),
|
|
cls('GoodGame', sub='goodgame', endOfLife=True),
|
|
cls('GoodnightMrsGoose', sub='goose'),
|
|
cls('Grayscale', sub='grayscale', adult=True),
|
|
cls('GuardianGhost', sub='guardianghost'),
|
|
cls('GuardiansoftheGalaxialSpaceways', sub='ggs'),
|
|
cls('Habibahssong', sub='habibahsong'),
|
|
cls('HarvestMoonParadiseFound', sub='paradisefound', endOfLife=True),
|
|
cls('HateThePlayer', host='hatetheplayer.thewebcomic.com'),
|
|
cls('HatShop', sub='hatshop'),
|
|
cls('Helix', host='www.helixcomic.com'),
|
|
cls('HeltonShelton', sub='heltonshelton'),
|
|
cls('HendrixAndJulian', sub='hendrixandjulian', adult=True),
|
|
cls('Hephaestus', host='hephaestus.thewebcomic.com'),
|
|
cls('HereBeVoodoo', sub='herebevoodoo', adult=True),
|
|
cls('HiddenStrengthAWhiteNuzlocke', sub='hsnuzlocke'),
|
|
cls('Hinata', sub='hinata'),
|
|
cls('HIPS', sub='hips', adult=True),
|
|
cls('HitandMiss', sub='hitandmiss'),
|
|
cls('Holocrash', sub='holocrash', endOfLife=True),
|
|
cls('HolyBlasphemy', sub='holyblasphemy'),
|
|
cls('HolyCrap', sub='holycrap'),
|
|
cls('HopeForABreeze', sub='h4ab'),
|
|
cls('HouseOfCraziness', sub='craziness'),
|
|
cls('HurrocksFardel', sub='hurrocksfardel'),
|
|
cls('Hybristorific', sub='hybristorific', adult=True),
|
|
cls('IciVontLesMorts', sub='icivontlesmorts', adult=True),
|
|
cls('Inchoatica', sub='inchoatica'),
|
|
cls('Ingloriousbasterds', sub='ingloriousbasterds'),
|
|
cls('InHouseHumor', sub='inhousehumor'),
|
|
cls('Inhuman', sub='inhumancomic'),
|
|
cls('InsideOuTAYuriTale', sub='insideout-a-yuri-tale'),
|
|
cls('InspiredByADream', sub='inspiredbyadream'),
|
|
cls('ItsAn8BitWorldBlankWorld', sub='8bitblankworld'),
|
|
cls('IWishIggysWish', sub='i-wish-comic'),
|
|
cls('JackiesStory', sub='jackiestory'),
|
|
cls('Jantarpol', sub='jantar-pl'),
|
|
cls('Jantar', sub='jantar'),
|
|
cls('Jason', sub='jasoncomic'),
|
|
cls('JoeysAdventure', sub='joeysadventure'),
|
|
cls('JourneyMan', sub='journeyman'),
|
|
cls('JoyToTheWorld', sub='joytotheworld'),
|
|
cls('June', sub='june'),
|
|
cls('JustAnotherLife', sub='justanotherlife'),
|
|
cls('JustCrazy', sub='justcrazy'),
|
|
cls('Justmyluck', sub='justmyluck'),
|
|
cls('KaitoShuno', sub='kaitoshuno', adult=True),
|
|
cls('KasaKeira', sub='kasakeira'),
|
|
cls('Katran', sub='katran'),
|
|
cls('KazanatoFuneralPlanningService', sub='kazanato'),
|
|
cls('KCNO', sub='kcno', endOfLife=True),
|
|
cls('KezroChroniclesPhantomOps', sub='phantomops'),
|
|
cls('Kirbandfriendsshowcase', sub='kas'),
|
|
cls('KirbiesoftheAlternateDimension', sub='kirbyaltdimension'),
|
|
cls('KirbyAdventure', sub='kirbysadventure'),
|
|
cls('KirbyDreamTeam', sub='kirbysdreamteam'),
|
|
cls('KirbyFunfestTheOriginals', sub='kirbyfunfestold'),
|
|
cls('KirbysDreamAdventure', sub='kirbyda'),
|
|
cls('KirbysDreamlandAdventures', sub='kirbysdreamlandadventures'),
|
|
cls('KirbyTheDeeArmy', sub='kirbyandthedeearmy', endOfLife=True),
|
|
cls('KissmeSnow', sub='kissmesnow'),
|
|
cls('KissoftheDevil', sub='kissofthedevil'),
|
|
cls('Knightface', sub='knightface', adult=True),
|
|
cls('KnightsRequiem', sub='knightsrequiem'),
|
|
cls('KojiX5', sub='kojix5', endOfLife=True),
|
|
cls('Kreetor', sub='kreetor'),
|
|
cls('Kruptos', sub='kruptos', endOfLife=True),
|
|
cls('KuronaFlutterandLylaSpamTime', sub='icantflyaplane'),
|
|
cls('KuroNeko', sub='kuro-neko'),
|
|
cls('LastBlockStanding', sub='lastblockstanding'),
|
|
cls('LastLivingSouls', host='lastlivingsouls.thewebcomic.com'),
|
|
cls('LavenderLegend', sub='lavenderlegend'),
|
|
cls('LeCirquedObscure', sub='cirquedobscure'),
|
|
cls('LedbyaMadMan', sub='ledbyamadman'),
|
|
cls('LegendOfZeldaAHerosStory', sub='aherosstory'),
|
|
cls('LegendOfZeldaStaffOfPower', sub='loz-sop'),
|
|
cls('LegendOfZeldaTheEdgeAndTheLight', sub='legendofzelda', endOfLife=True),
|
|
cls('LegendOfZeldaTheWindWaker', sub='zeldawindwaker'),
|
|
cls('LegendsofMobiusBookOne', sub='legendsofmobius-bookone'),
|
|
cls('Lemongrass', sub='lemongrass'),
|
|
cls('LesCendresdelHiver', sub='cendres'),
|
|
cls('LethalDose', sub='lethaldosecomic', adult=True),
|
|
cls('LetLoveRule', sub='letloverule'),
|
|
cls('LetsBreakitforReals', sub='breaktehmentality'),
|
|
cls('LicensedHeroes', sub='licensedheroes'),
|
|
cls('LifeAsACutOut', host='lifeasacutout.thewebcomic.com'),
|
|
cls('LifeAsItWas', sub='lifeasitwas'),
|
|
cls('LifeLessOrdinary', sub='lifelessordinary', adult=True),
|
|
cls('Lifeonpaper', sub='lifeonpaper'),
|
|
cls('LightLovers', sub='lightlovers', adult=True),
|
|
cls('LightwithinShadow', sub='lightwithinshadow'),
|
|
cls('LiliBleu', sub='lilibleu'),
|
|
cls('LilLevi', sub='lillevi'),
|
|
cls('LOGOS', sub='logoscomic', adult=True),
|
|
cls('LOKI', sub='loki'),
|
|
cls('LondonUnderworld', sub='lunderworld'),
|
|
cls('LostNova', sub='lostnova'),
|
|
cls('LoveandIcecream', sub='lovexandxicecream'),
|
|
cls('LoveHarbor', sub='shipcentral'),
|
|
cls('LoveMeLoveMyTeddyBear', sub='teddybear'),
|
|
cls('LoveroftheSunandMoon', sub='loverofthesunandmoon'),
|
|
cls('LsEmpire', sub='l-empire'),
|
|
cls('LuffinpuffandEric', sub='luffinpuff'),
|
|
cls('LumasParadise', sub='luma'),
|
|
cls('MagicalGirlAlice', sub='magicalgirlalice'),
|
|
cls('MagicalMisfits', sub='magicalmisfits'),
|
|
cls('Magience', host='www.magience.co'),
|
|
cls('Magipunk', sub='magipunk'),
|
|
cls('Manifestedpart1', sub='manifested'),
|
|
cls('MarioandLuigiMisadventures', sub='mandladventures'),
|
|
cls('MariosDayJob', sub='mariosjob'),
|
|
cls('MarioVsSonicVsMegaMan', sub='mvsvmm', endOfLife=True),
|
|
cls('MarsMind', sub='marsmind'),
|
|
cls('MarXistemTWC', sub='marxistem'),
|
|
cls('Mascara', sub='mascara'),
|
|
cls('MasqueradeWTTM', sub='masqueradewttm'),
|
|
cls('MatildasSweetCakeCafe', sub='mscc', adult=True),
|
|
cls('MayTheRainCome', sub='maytheraincome', endOfLife=True),
|
|
cls('Mazscara', sub='mazscara'),
|
|
cls('MegaManBattleNetwork7', sub='mmbn7-twt'),
|
|
cls('MegaManTales', sub='megamantales'),
|
|
cls('MegaPain', sub='megapain'),
|
|
cls('MelodyAndMacabre', sub='melodyandmacabre'),
|
|
cls('Merceneiress', host='www.merceneiress.com'),
|
|
cls('MetroJack', sub='metro-jack', adult=True),
|
|
cls('MidnightPrince', sub='midnightprince', adult=True),
|
|
cls('MineS', sub='mines'),
|
|
cls('Minibot', sub='minibot'),
|
|
cls('MinorActsOfHeroism', host='www.minoractsofheroism.com'),
|
|
cls('Missing', sub='missing'),
|
|
cls('Missingversionfrancaise', sub='missingfr'),
|
|
cls('MixupofallMixups', sub='mixupofmixups'),
|
|
cls('MobianChaos', sub='mobianchaos'),
|
|
cls('Mokepon', sub='mokepon'),
|
|
cls('Monstar', host='monstar.thewebcomic.com'),
|
|
cls('MoonValley', sub='moonvalley'),
|
|
cls('MorphE', sub='morphe'),
|
|
cls('Mortifer', sub='mortifer'),
|
|
cls('MrFactory', sub='mrfactory'),
|
|
cls('MUTE', sub='muterobot', endOfLife=True),
|
|
cls('MyFakeHeart', sub='myfakeheart'),
|
|
cls('MySisterTheDragon', sub='sisterdragon', endOfLife=True),
|
|
cls('MySparklingPrincesama', sub='kiraouji'),
|
|
cls('MyStereoBot', sub='mystereobot'),
|
|
cls('MysticanDreams', sub='mysticandreams'),
|
|
cls('MythsOfUnovaAWhiteNuzlockeRunHardMode', sub='mythsofunova'),
|
|
cls('MYth', sub='myth'),
|
|
cls('MyTrollLife', sub='mytrolllife'),
|
|
cls('MyTwoCentsPlusTax', sub='mtcpt'),
|
|
cls('Nah', sub='thecomicformerlyknownasgenlab'),
|
|
cls('Negligence', sub='negligence'),
|
|
cls('NeoCrystalAdventures', sub='neocrystaladventures'),
|
|
cls('NeonGlow', sub='neonglow'),
|
|
cls('NeverTheHero', sub='neverthehero'),
|
|
cls('Nexus', sub='nexus'),
|
|
cls('NiceKitty', sub='nicekitty'),
|
|
cls('NighHeavenandHell', sub='oldnighheavenandhell', adult=True),
|
|
cls('NightSpace', sub='nightspace'),
|
|
cls('NIK', sub='nik'),
|
|
cls('NissiesDragonPrincess', sub='drgnprincess'),
|
|
cls('NixsFireRedNuzlocke', sub='nixnuzlocke'),
|
|
cls('NobleHeartsHiruandMerroug', sub='hiruandmerroug', adult=True),
|
|
cls('NoEnd', sub='no-end'),
|
|
cls('NormalcyisforWimps', sub='normalcyisforwimps'),
|
|
cls('NotyoursamI', sub='notyoursami', adult=True),
|
|
cls('ObnoxiousHerokun', sub='hero-kun', adult=True),
|
|
cls('ObsidianHeart', sub='obsidianheart'),
|
|
cls('October20th', sub='october20th'),
|
|
cls('OddPlaceOddTime', sub='oddplaceoddtime'),
|
|
cls('Ohman', sub='ohman'),
|
|
cls('OldElastikid', sub='oldelastikid'),
|
|
cls('OneRainyDay', sub='one-rainy-day', adult=True),
|
|
cls('Onlyonelovesong', sub='onlyonelovesong'),
|
|
cls('OperationTheater', sub='operation-theater'),
|
|
cls('OriginBook1Codearth', sub='theoriginbooks'),
|
|
cls('OurTimeInEden', sub='ourtimeineden'),
|
|
cls('Outbreak', sub='xoutbreak'),
|
|
cls('OutofKey', sub='outofkey'),
|
|
cls('OverSync', sub='oversync'),
|
|
cls('Pahantekija', sub='pahantekija'),
|
|
cls('Panacea', sub='panacea', adult=True),
|
|
cls('PantsParty', sub='partypants'),
|
|
cls('PanzerDragonandEnigmaCompleteEdition', sub='panzerdragonandenigma'),
|
|
cls('Paradox', sub='paradoxcomic', adult=True),
|
|
cls('Pause', sub='pause'),
|
|
cls('PencilviewUpdatesMondayscough', sub='pencilview'),
|
|
cls('PerplexingMagnoliaDisruption', sub='smgpmd'),
|
|
cls('PeterPan', sub='peterpan'),
|
|
cls('Phantomland', sub='phantomland'),
|
|
cls('PhotoShootNarusasuDoujinshi', sub='photoshootnarusasu', adult=True),
|
|
cls('PlasticKings', sub='plastickings'),
|
|
cls('PlayTime', sub='dollysplaytime'),
|
|
cls('PleaseBeMyBoytoy', sub='pleasebemyboytoy'),
|
|
cls('PMDExplorersOfHeart', sub='pmd-explorers-of-heart'),
|
|
cls('PMDTeamFirefox', sub='pmdteamfirefox'),
|
|
cls('PMDVictoryFire', sub='victoryfire'),
|
|
cls('PokemonBeta', sub='pokemonbeta', endOfLife=True),
|
|
cls('PokemonCrystalDoubleNuzlockeChallenge', sub='miinuzlocke', endOfLife=True),
|
|
cls('PokemonLANDSKY', sub='landsky'),
|
|
cls('PokemonMysteryDungeonTeamCrystal', sub='crystalmysterydungeon'),
|
|
cls('PokemonNoRakuen', sub='pokemon-no-rakuen'),
|
|
cls('PokemonParallel', sub='pokemon-parallel'),
|
|
cls('PokemonSAKOHJU', sub='sakohju'),
|
|
cls('Pokeventurous', sub='pokeventuras'),
|
|
cls('Ponzi', sub='ponzi'),
|
|
cls('PrettyMouth', sub='prettymouth'),
|
|
cls('PrincessChroma', sub='princesschroma'),
|
|
cls('ProfessorDolphinpresentsPokemon', sub='pdpp'),
|
|
cls('ProjectCAPLimit', sub='imagecap'),
|
|
cls('PTO', sub='pto', adult=True),
|
|
cls('Puck', sub='puck'),
|
|
cls('PullingYouUnder', sub='pullingyouunder', adult=True),
|
|
cls('PulseandBolt', sub='pulse-bolt'),
|
|
cls('PurpureaNoxa', sub='purpureanoxa', adult=True),
|
|
cls('QueerQueen', sub='queerqueen'),
|
|
cls('RainbowMansion', host='rainbow-mansion.thewebcomic.com', adult=True),
|
|
cls('RainLGBT', sub='rainlgbt'),
|
|
cls('RainxSasori', sub='rainxsasori', adult=True, endOfLife=True),
|
|
cls('RANDOM', sub='randomthecomic'),
|
|
cls('RareCandyTreatment', sub='rarecandytreatment'),
|
|
cls('RavenWolf', sub='ravenwolf'),
|
|
cls('RedVelvetRequiem', sub='rvr'),
|
|
cls('Regina', sub='regina'),
|
|
cls('ReidyAndFriendsShowcase', sub='reidynfriends'),
|
|
cls('RemoteAngel', sub='remoteangel'),
|
|
cls('Replica', sub='replica', adult=True, endOfLife=True),
|
|
cls('Respectable', sub='respectable', adult=True, endOfLife=True),
|
|
cls('ReturntoEden', sub='rte'),
|
|
cls('RiversideExtras', host='www.riversidecomics.co'),
|
|
cls('ROSIER', sub='rosier'),
|
|
cls('RottenApple', sub='rottenapple'),
|
|
cls('RoyalIcing', sub='royalicing'),
|
|
cls('RubyNation', sub='therubynation'),
|
|
cls('RuderiQuest', sub='ruderi'),
|
|
cls('RuneSpark', sub='runespark'),
|
|
cls('RUScrewed', sub='ru-screwed'),
|
|
cls('RyuManwebcomicVersion', sub='ryuman-web', endOfLife=True),
|
|
cls('SabishiiGhost', sub='sabishiighost'),
|
|
cls('SaintforRent', sub='saint-for-rent'),
|
|
cls('SakuraDAY', sub='sakuraday4s'),
|
|
cls('SakuraMishzo', sub='sakurazo', adult=True),
|
|
cls('SalemUncommons', sub='salemuncommons'),
|
|
cls('SallySprocketAndPistonPete', sub='ssnpp'),
|
|
cls('SaltyKiss', sub='saltykiss'),
|
|
cls('SayWhatYouMean', sub='saywhatyoumean'),
|
|
cls('SChIzO', sub='schizophrenic'),
|
|
cls('SchoolOfRejectsSoRe', sub='sore'),
|
|
cls('ScionsoftheSeraph', sub='scions', adult=True),
|
|
cls('ScrappedProject', sub='scrappedproject'),
|
|
cls('SecretPowerbk1', sub='secretpower1'),
|
|
cls('SecretPowerbk2', sub='secretpower2'),
|
|
cls('Seki', sub='se-ki', adult=True),
|
|
cls('SenoireDelirium', sub='senoiredelirium', endOfLife=True),
|
|
cls('SeriousTimes', sub='serioustimes'),
|
|
cls('SFCBlackjackBay', sub='blackjackbay'),
|
|
cls('SFCForestofDreams', sub='sfcforestofdreams'),
|
|
cls('ShamelessAdvertisements', sub='advertiseat'),
|
|
cls('Shameless', sub='shamelesscomic'),
|
|
cls('ShotoutofCanon', sub='akumathfs'),
|
|
cls('ShroudofLight', sub='shroudoflight'),
|
|
cls('Signifikat', sub='signifikat', adult=True),
|
|
cls('SimonSues', sub='simonsues', adult=True),
|
|
cls('SimpleBear', sub='simplebear'),
|
|
cls('SimplySarah', sub='simplysarah'),
|
|
cls('Sire', host='sire.thewebcomic.com'),
|
|
cls('Skeptical', host='www.skepticalthewebcomic.com'),
|
|
cls('Slackmatic', sub='slackmatic'),
|
|
cls('SLightlyAbOVeAvErage', sub='slightlyaboveaverage', adult=True),
|
|
cls('SlipstreamSingularity', sub='slipstreamsingularity'),
|
|
cls('SmallPressAdventures', sub='smallpressadventures'),
|
|
cls('SocksMittensandScarfs', sub='socksmitsscarfs'),
|
|
cls('SomebodyShootMe', sub='somebodyshootme'),
|
|
cls('SomethingLikeaPhenomenon', sub='somethinglikeaphenomenon', adult=True),
|
|
cls('SonicAuthorAdventII', sub='saa2'),
|
|
cls('SonicBoom', sub='sonic-boom'),
|
|
cls('SonicClub', sub='sonicclub'),
|
|
cls('SonicDashly', sub='sonicdashly'),
|
|
cls('SonicFuture', sub='sonicfuture'),
|
|
cls('SonicSchoolRedo', sub='sonicschoolredo'),
|
|
cls('SonicUniverseAsk', sub='sonicuniverseask'),
|
|
cls('SOSRadio', sub='sosradio'),
|
|
cls('SouthernCross', host='southerncross.thewebcomic.com'),
|
|
cls('SovereignTheMostAmazingComicEver', sub='mostamazingcomicever'),
|
|
cls('SpaghettiAndMeatballs', sub='spaghettiandmeatballs', adult=True),
|
|
cls('SparElricsExtras', sub='sparextras'),
|
|
cls('SparkStory', sub='sparkstory'),
|
|
cls('Spellcross', sub='spellcross'),
|
|
cls('Spidersilk', sub='spidersilk'),
|
|
cls('SpiderWings', sub='spiderwings'),
|
|
cls('SplitScreen', sub='splitscreencomic', adult=True, endOfLife=True),
|
|
cls('SPRITEDHeroesofDobalia', sub='spritedhod'),
|
|
cls('Spriterschaos', sub='spriterschaos'),
|
|
cls('Sprytts', sub='sprytts'),
|
|
cls('SpursAndStripes', host='www.spursandstripescomic.com', adult=True),
|
|
cls('StarTrip', sub='startrip'),
|
|
cls('Stay', sub='stay-comic', adult=True),
|
|
cls('StellaInChrome', sub='stellainchrome'),
|
|
cls('Stereophonic', host='stereophonic.thewebcomic.com'),
|
|
cls('Storyofadamnedlove', sub='storyofadamnedlove'),
|
|
cls('StrangersandFriends', sub='hemu'),
|
|
cls('Striped', sub='striped', adult=True),
|
|
cls('StuntRayWalterswish', sub='stuntray'),
|
|
cls('SubjecttoChangeCollegeWoes', sub='subject-to-change'),
|
|
cls('Sunfall', host='sunfall.thewebcomic.com'),
|
|
cls('SunmeetsMoon', sub='sunmeetsmoon'),
|
|
cls('SUNRISESTORY', sub='sunrisestory'),
|
|
cls('SuperDimensionAfterTheHero', sub='afterthehero'),
|
|
cls('SuperMarioBros3', sub='smb3', endOfLife=True),
|
|
cls('SuperMarjoBros', sub='marjobros'),
|
|
cls('SupermassiveBlackHoleA', sub='smbhax'),
|
|
cls('SurvivorFanCharacters', sub='sfc'),
|
|
cls('SweetestPoison', sub='sweetestpoison'),
|
|
cls('SwitchMechanism', sub='switchmechanism', endOfLife=True),
|
|
cls('Symbios', sub='symbios', adult=True),
|
|
cls('TaikiTheWebcomic', sub='taiki'),
|
|
cls('TailsAdventureThroughTimeandOtherWorlds', sub='tailsadventure'),
|
|
cls('TakingPicturesofStrangers', sub='darrenandkale', adult=True),
|
|
cls('TalesFromAaronsWings', sub='tfaw', endOfLife=True),
|
|
cls('TEN', sub='ten'),
|
|
cls('ThatWasntThereYesterday', sub='twty'),
|
|
cls('The13thWorld', sub='the13thworld'),
|
|
cls('TheAdventuresOfBanjoZ', sub='abz-fancomic', adult=True, endOfLife=True),
|
|
cls('TheAntihero', sub='antihero'),
|
|
cls('TheArchipelago', sub='thearchipelago'),
|
|
cls('Theatrics', sub='theatrics'),
|
|
cls('TheAvianStories', sub='theavianstories'),
|
|
cls('TheBattleInTheSky', sub='thebattleinthesky'),
|
|
cls('TheBookOfNosferatu', host='www.thebookofnosferatu.com'),
|
|
cls('TheBrideoftheShark', sub='sameyome', adult=True),
|
|
cls('TheBucket', sub='thebucket'),
|
|
cls('TheCafedAlizee', sub='alizee'),
|
|
cls('TheCavernOfSecrets', sub='cavern'),
|
|
cls('TheColony', sub='thecolony', adult=True),
|
|
cls('TheContract', sub='the-contract'),
|
|
cls('TheCrawl', sub='thecrawl'),
|
|
cls('TheCurtAndTonyShow', sub='thecurtandtonyshow', endOfLife=True),
|
|
cls('TheDarkAgeofMobius', sub='thedarkageofmobius'),
|
|
cls('TheDarkLegacy', sub='tdlcomic'),
|
|
cls('TheDemonicAdventuresOfAngelWitchPita', sub='angelwitchpita', adult=True),
|
|
cls('TheDestroyer', sub='heartless-destroyer', adult=True),
|
|
cls('TheDragonAndTheLemur', sub='dal', adult=True),
|
|
cls('TheDreaming', sub='thedreaming', endOfLife=True),
|
|
cls('TheDrifter', sub='thedrifter', adult=True),
|
|
cls('TheElectricRose', host='www.electricrosecomic.com'),
|
|
cls('TheForestofWhispers', sub='theforestofwhispers'),
|
|
cls('TheGhostWithTheMost', sub='theghostwiththemost'),
|
|
cls('TheGoldRiderofPern', sub='goldrider'),
|
|
cls('TheGrayZone', sub='thegrayzone'),
|
|
cls('TheHeadhunters', sub='headhunters'),
|
|
cls('TheHeartofEarth', sub='heart-of-earth'),
|
|
cls('TheHobbitbic', sub='hobbit'),
|
|
cls('TheiaMania', sub='theia-mania'),
|
|
cls('TheJosephComics', sub='josephcomics', endOfLife=True),
|
|
cls('TheKeyHotelEnding', sub='tekeyhotel', endOfLife=True),
|
|
cls('TheKeyToReality', sub='keytoreality'),
|
|
cls('TheKwiddexProtocol', sub='kwiddexprotocol'),
|
|
cls('TheLastBloodCafe', sub='lastbloodcafe'),
|
|
cls('ThelaughingDeath', sub='thelaughingdeath'),
|
|
cls('TheLegendaryQueen', sub='legendaryqueen', adult=True),
|
|
cls('TheLifeofMagFlamequill', sub='lifeofmag'),
|
|
cls('TheLoneSwordsman', sub='theloneswordsman'),
|
|
cls('TheLostland', sub='thelostlandcomic'),
|
|
cls('TheMadMan', sub='themadman'),
|
|
cls('TheMegaManandSonicSpriteShowcase', sub='megamanshowcase'),
|
|
cls('TheMoistTouch', sub='themoisttouch'),
|
|
cls('TheNightSurfers', sub='thenightsurfers'),
|
|
cls('TheNocheComicSeries', sub='nochecomicseries', adult=True),
|
|
cls('TheNOMEDSEGA', sub='nomed'),
|
|
cls('ThePirateBalthasar', sub='thepiratebalthasar'),
|
|
cls('ThePremise', sub='thepremise'),
|
|
cls('ThePrincessAndTheGiant', sub='princess', endOfLife=True),
|
|
cls('ThePropertyofHate', sub='tpoh'),
|
|
cls('TheReborn', sub='reborn'),
|
|
cls('TheSearchForHenryJekyll', sub='thesearchforhenryjekyll'),
|
|
cls('TheSilverLeague', sub='thesilverleague'),
|
|
cls('TheSummerofBlakeSinclair', sub='blake-sinclair'),
|
|
cls('Theswordsmanandtheamnesiac', sub='tsata', adult=True),
|
|
cls('TheTimeDog', sub='timedog'),
|
|
cls('TheTytonNuzlockeChallengeEmeraldEdition', sub='tytonnuzlockeemerald'),
|
|
cls('TheWhiteTower', sub='thewhitetower', endOfLife=True),
|
|
cls('TheWinterCampaign', sub='winterc'),
|
|
cls('TheYoshiHerd', sub='theyoshiherd'),
|
|
cls('ThiefCatcherRingTail', sub='tcringtail'),
|
|
cls('ThinkBeforeYouThink', sub='thinkbeforeyouthink'),
|
|
cls('ThornsComic', sub='thornscomic'),
|
|
cls('ThornTopia', sub='tnt100'),
|
|
cls('TLAAOK', sub='tlaaok', adult=True),
|
|
cls('TosiHuonoYaoiSarjis', sub='tosihuonoyaoisarjis', adult=True),
|
|
cls('TotallyCrossover', sub='totallycrossover'),
|
|
cls('TPTruePower', sub='truepower'),
|
|
cls('TrainerWantsToFight', sub='twtf'),
|
|
cls('Transfusions', sub='transfusions', adult=True),
|
|
cls('TransUMan', sub='transuman', adult=True, endOfLife=True),
|
|
cls('TRIPP', sub='tripp'),
|
|
cls('TroubleNextDoor', sub='troublenextdoor', endOfLife=True),
|
|
cls('UglyBoysLove', sub='shounenai'),
|
|
cls('Uglygame', sub='uglygame'),
|
|
cls('UnderTheDeadSkies', host='www.underthedeadskies.com'),
|
|
cls('UnicampaLapis', sub='ual'),
|
|
cls('UpDown', sub='updown', adult=True),
|
|
cls('UshalaatWorldsEnd', sub='ushala', adult=True),
|
|
cls('Vacan7', sub='vacan7', adult=True),
|
|
cls('VACANT', sub='vacant'),
|
|
cls('VerloreGeleentheid', host='verlore.thewebcomic.com'),
|
|
cls('VoidMisadventures', sub='voidmisadventures'),
|
|
cls('VoidTheGuideToAHealthyRelationship', sub='vtgtahr', adult=True),
|
|
cls('VoyageoftheBrokenPromise', sub='voyageofthebrokenpromise', adult=True),
|
|
cls('WakeEcho', sub='echo'),
|
|
cls('Wander', sub='wander'),
|
|
cls('WantedDeadorDead', sub='wanteddeadordead'),
|
|
cls('Wayfar', sub='wayfar'),
|
|
cls('Waysoftheheart', sub='wayoftheheart'),
|
|
cls('WeAreGolden', sub='wearegolden', adult=True),
|
|
cls('WelcomeToFreakshow', sub='welcometofreakshow'),
|
|
cls('WelcomeToThePCA', sub='welcometothepca', endOfLife=True),
|
|
cls('WhatAboutLove', sub='whataboutlove', adult=True),
|
|
cls('WHATAboutSHADOWS', sub='was', endOfLife=True),
|
|
cls('WhatIsDeepInOnesHeart', sub='ones-mindt'),
|
|
cls('WhenSheWasBad', sub='whenshewasbad'),
|
|
cls('Whenweweresilent', sub='silence'),
|
|
cls('WhereaboutsOfTime', sub='wot'),
|
|
cls('WhiteHeart', sub='whiteheart', adult=True),
|
|
cls('WhiteNoise', sub='white-noise'),
|
|
cls('WhOLE', sub='whole', adult=True),
|
|
cls('Wildflowers', host='www.wildflowerslgbt.ca'),
|
|
cls('WildWingBoysKoathArc', sub='wwbka'),
|
|
cls('WildWingBoys', sub='wwb'),
|
|
cls('WingsOverEthereal', sub='wings-over-ethereal'),
|
|
cls('WingsTurnedtoDust', sub='wingsturnedtodust'),
|
|
cls('Wootlabs', host='wootlabs.thewebcomic.com'),
|
|
cls('XXMoralityXx', sub='xxmoralityxx'),
|
|
cls('YadotCakeShop', sub='yadotcakeshop', adult=True),
|
|
cls('YamanaokiHighSchool', sub='yamanaokihs'),
|
|
cls('YouAreTheReasonForTheEndOfTheWorld', sub='thereasonfortheendoftheworld'),
|
|
cls('YoungCannibals', host='www.youngcannibals.net'),
|
|
cls('ZaenWell', sub='zaenwell'),
|
|
cls('ZeldaTheNewAdventureofLinkIIMajorasMask', sub='newlink'),
|
|
# END AUTOUPDATE
|
|
)
|