# -*- coding: utf-8 -*-
# Copyright (C) 2004-2008 Tristan Seligmann and Jonathan Jacobs
# Copyright (C) 2012-2014 Bastian Kleineidam
# Copyright (C) 2015-2018 Tobias Gruetzmacher

from __future__ import absolute_import, division, print_function

from ..scraper import _ParserScraper
from ..helpers import indirectStarter, xpath_class


class GoComics(_ParserScraper):
    url = 'http://www.gocomics.com/'
    imageSearch = '//picture[{}]/img'.format(xpath_class('item-comic-image'))
    prevSearch = '//a[{}]'.format(xpath_class('js-previous-comic'))
    latestSearch = '//div[{}]//a'.format(xpath_class('gc-deck--cta-0'))
    starter = indirectStarter
    help = 'Index format: yyyy/mm/dd'

    def __init__(self, name, path, lang=None):
        super(GoComics, self).__init__('GoComics/' + name)
        self.url = 'http://www.gocomics.com/' + path
        self.shortname = name
        if lang:
            self.lang = lang

    def namer(self, image_url, page_url):
        prefix, year, month, day = page_url.rsplit('/', 3)
        return "%s_%s%s%s.gif" % (self.shortname, year, month, day)

    def getIndexStripUrl(self, index):
        return self.url + self.path + '/%s' % index

    def shouldSkipUrl(self, url, data):
        """Skip pages without images."""
        return data.xpath('//img[contains(@src, "content-error-missing")]')

    @classmethod
    def getmodules(cls):
        return (
            # old comics removed from the listing
            cls('HeavenlyNostrils', 'heavenly-nostrils'),
            cls('MyCage', 'mycage'),
            cls('ParisDoodles', 'mo-willems-paris-doodles'),
            cls('PlasticBabyHeadsfromOuterSpace', 'plastic-babyheads'),
            cls('TonyAuth', 'tonyauth'),

            # do not edit anything below since these entries are generated from
            # scripts/gocomics.py
            # START AUTOUPDATE
            cls('1AndDone', '1-and-done'),
            cls('2CowsAndAChicken', '2cowsandachicken'),
            cls('9ChickweedLane', '9chickweedlane'),
            cls('9To5', '9to5'),
            cls('AdamAtHome', 'adamathome'),
            cls('AdultChildren', 'adult-children'),
            cls('Agnes', 'agnes'),
            cls('AJAndMagnus', 'aj-and-magnus'),
            cls('AlisHouse', 'alis-house'),
            cls('AlleyOop', 'alley-oop'),
            cls('AmandaTheGreat', 'amanda-the-great'),
            cls('Andertoons', 'andertoons'),
            cls('AndyCapp', 'andycapp'),
            cls('AngryLittleGirls', 'angry-little-girls'),
            cls('AnimalCrackers', 'animalcrackers'),
            cls('Annie', 'annie'),
            cls('ArloAndJanis', 'arloandjanis'),
            cls('AskACat', 'ask-a-cat'),
            cls('AskShagg', 'askshagg'),
            cls('AtTavicat', 'tavicat'),
            cls('AtTheZoo', 'at-the-zoo'),
            cls('AuntyAcid', 'aunty-acid'),
            cls('BackInTheDay', 'backintheday'),
            cls('BackToBC', 'back-to-bc'),
            cls('Bacon', 'bacon'),
            cls('Badlands', 'badlands'),
            cls('BadMachinery', 'bad-machinery'),
            cls('BadReporter', 'badreporter'),
            cls('Baldo', 'baldo'),
            cls('BaldoEnEspanol', 'baldoespanol', 'es'),
            cls('BallardStreet', 'ballardstreet'),
            cls('BananaTriangle', 'banana-triangle'),
            cls('BarkeaterLake', 'barkeaterlake'),
            cls('BarneyAndClyde', 'barneyandclyde'),
            cls('BasicInstructions', 'basicinstructions'),
            cls('BC', 'bc'),
            cls('BeanieTheBrownie', 'beanie-the-brownie'),
            cls('Beardo', 'beardo'),
            cls('Ben', 'ben'),
            cls('BenitinYEneas', 'muttandjeffespanol', 'es'),
            cls('BentObjects', 'bent-objects'),
            cls('BergerAndWyse', 'berger-and-wyse'),
            cls('BerkeleyMews', 'berkeley-mews'),
            cls('Betty', 'betty'),
            cls('Bewley', 'bewley'),
            cls('BiffAndRiley', 'biff-and-riley'),
            cls('BigNate', 'bignate'),
            cls('BigNateFirstClass', 'big-nate-first-class'),
            cls('BigTop', 'bigtop'),
            cls('Biographic', 'biographic'),
            cls('Birdbrains', 'birdbrains'),
            cls('BleekerTheRechargeableDog', 'bleeker'),
            cls('Bliss', 'bliss'),
            cls('BloomCounty', 'bloomcounty'),
            cls('BloomCounty2017', 'bloom-county'),
            cls('BobGorrell', 'bobgorrell'),
            cls('BobTheSquirrel', 'bobthesquirrel'),
            cls('BoNanas', 'bonanas'),
            cls('Boomerangs', 'boomerangs'),
            cls('Bottomliners', 'bottomliners'),
            cls('BoundAndGagged', 'boundandgagged'),
            cls('BrainSquirts', 'brain-squirts'),
            cls('BreakingCatNews', 'breaking-cat-news'),
            cls('BreakOfDay', 'break-of-day'),
            cls('Brevity', 'brevity'),
            cls('BrewsterRockit', 'brewsterrockit'),
            cls('BrianMcFadden', 'brian-mcfadden'),
            cls('BroomHilda', 'broomhilda'),
            cls('Bully', 'bully'),
            cls('Buni', 'buni'),
            cls('BushyTales', 'bushy-tales'),
            cls('CalvinAndHobbes', 'calvinandhobbes'),
            cls('CalvinAndHobbesEnEspanol', 'calvinandhobbesespanol', 'es'),
            cls('Candorville', 'candorville'),
            cls('CapsulasMedicas', 'capsulas-medicas%20', 'es'),
            cls('Cathy', 'cathy'),
            cls('CattitudeDoggonit', 'cattitude-doggonit'),
            cls('CestLaVie', 'cestlavie'),
            cls('ChanLowe', 'chanlowe'),
            cls('CheapThrillsCuisine', 'cheap-thrills-cuisine'),
            cls('CheerUpEmoKid', 'cheer-up-emo-kid'),
            cls('ChipBok', 'chipbok'),
            cls('ChrisBritt', 'chrisbritt'),
            cls('ChuckleBros', 'chucklebros'),
            cls('CitizenDog', 'citizendog'),
            cls('Claw', 'claw'),
            cls('ClayBennett', 'claybennett'),
            cls('ClayJones', 'clayjones'),
            cls('ClearBlueWater', 'clearbluewater'),
            cls('Cleats', 'cleats'),
            cls('CloseToHome', 'closetohome'),
            cls('Committed', 'committed'),
            cls('Computoon', 'compu-toon'),
            cls('ConnieToTheWonnie', 'connie-to-the-wonnie'),
            cls('Cornered', 'cornered'),
            cls('CowAndBoyClassics', 'cowandboy'),
            cls('CowTown', 'cowtown'),
            cls('Crumb', 'crumb'),
            cls('CulDeSac', 'culdesac'),
            cls('DaddysHome', 'daddyshome'),
            cls('DanaSummers', 'danasummers'),
            cls('DanWasserman', 'danwasserman'),
            cls('DarkSideOfTheHorse', 'darksideofthehorse'),
            cls('DarrinBell', 'darrin-bell'),
            cls('DeepDarkFears', 'deep-dark-fears'),
            cls('DiamondLil', 'diamondlil'),
            cls('DickTracy', 'dicktracy'),
            cls('DilbertClassics', 'dilbert-classics'),
            cls('DilbertEnEspanol', 'dilbert-en-espanol', 'es'),
            cls('DinosaurComics', 'dinosaur-comics'),
            cls('DogEatDoug', 'dogeatdoug'),
            cls('DogsOfCKennel', 'dogsofckennel'),
            cls('DomesticAbuse', 'domesticabuse'),
            cls('DonBrutus', 'don-brutus', 'es'),
            cls('DoodleForFood', 'doodle-for-food'),
            cls('DoodleTown', 'doodle-town'),
            cls('Doonesbury', 'doonesbury'),
            cls('DorrisMcComics', 'dorris-mccomics'),
            cls('Drabble', 'drabble'),
            cls('DragonGirl', 'dragon-girl'),
            cls('DrewSheneman', 'drewsheneman'),
            cls('Drive', 'drive'),
            cls('Dromo', 'dro-mo'),
            cls('DudeAndDude', 'dudedude'),
            cls('DumbwichCastle', 'dumbwich-castle'),
            cls('EdgeCity', 'edge-city'),
            cls('EdgeOfAdventure', 'edge-of-adventure'),
            cls('Eek', 'eek'),
            cls('ElCafDePoncho', 'el-cafe-de-poncho', 'es'),
            cls('EmmyLou', 'emmy-lou'),
            cls('Endtown', 'endtown'),
            cls('EricTheCircle', 'eric-the-circle'),
            cls('EverydayPeopleCartoons', 'everyday-people-cartoons'),
            cls('Eyebeam', 'eyebeam'),
            cls('FacesOfTheNewsByKerryWaghorn', 'facesinthenews'),
            cls('FamilyTree', 'familytree'),
            cls('Farcus', 'farcus'),
            cls('FatCats', 'fat-cats'),
            cls('FloAndFriends', 'floandfriends'),
            cls('FMinus', 'fminus'),
            cls('FoolishMortals', 'foolish-mortals'),
            cls('ForBetterOrForWorse', 'forbetterorforworse'),
            cls('ForHeavensSake', 'forheavenssake'),
            cls('FortKnox', 'fortknox'),
            cls('FourEyes', 'four-eyes'),
            cls('FowlLanguage', 'fowl-language'),
            cls('FoxTrot', 'foxtrot'),
            cls('FoxTrotClassics', 'foxtrotclassics'),
            cls('FoxTrotEnEspanol', 'foxtrotespanol', 'es'),
            cls('Francis', 'francis'),
            cls('FrankAndErnest', 'frank-and-ernest'),
            cls('FrankieComics', 'frankie-comics'),
            cls('Frazz', 'frazz'),
            cls('FredBasset', 'fredbasset'),
            cls('FredBassetEnEspanol', 'fredbassetespanol', 'es'),
            cls('FreeRange', 'freerange'),
            cls('FreshlySqueezed', 'freshlysqueezed'),
            cls('FrogApplause', 'frogapplause'),
            cls('FromTheMoWillemsSketchbook', 'from-the-mo-willems-sketchbook'),
            cls('Garfield', 'garfield'),
            cls('GarfieldClassics', 'garfield-classics'),
            cls('GarfieldEnEspanol', 'garfieldespanol%20', 'es'),
            cls('GarfieldMinusGarfield', 'garfieldminusgarfield'),
            cls('GaryMarkstein', 'garymarkstein'),
            cls('GaryVarvel', 'garyvarvel'),
            cls('GasolineAlley', 'gasolinealley'),
            cls('Gaturro', 'gaturro', 'es'),
            cls('Geech', 'geech'),
            cls('GentleCreatures', 'gentle-creatures'),
            cls('GetALife', 'getalife'),
            cls('GetFuzzy', 'getfuzzy'),
            cls('Gil', 'gil'),
            cls('GilThorp', 'gilthorp'),
            cls('GingerMeggs', 'gingermeggs'),
            cls('GingerMeggsEnEspanol', 'gingermeggsespanol%20', 'es'),
            cls('GlasbergenCartoons', 'glasbergen-cartoons'),
            cls('GlennMcCoy', 'glennmccoy'),
            cls('GManWebcomics', 'g-man-webcomics'),
            cls('GnomeSyndicate', 'gnome-syndicate'),
            cls('Goats', 'goats'),
            cls('GoComicsFanArt', 'fan-art'),
            cls('Graffiti', 'graffiti'),
            cls('GrandAvenue', 'grand-avenue'),
            cls('GrayMatters', 'gray-matters'),
            cls('GreenHumour', 'green-humour'),
            cls('HaikuEwe', 'haikuewe'),
            cls('HalfFull', 'half-full'),
            cls('HalfFullEnEspanol', 'half-full-espanol', 'es'),
            cls('HamShears', 'ham-shears'),
            cls('Harley', 'harley'),
            cls('HealthCapsules', 'healthcapsules'),
            cls('HeartOfTheCity', 'heartofthecity'),
            cls('Heathcliff', 'heathcliff'),
            cls('HeathcliffEnEspanol', 'heathcliffespanol', 'es'),
            cls('HenryPayne', 'henrypayne'),
            cls('HerbAndJamaal', 'herbandjamaal'),
            cls('Herman', 'herman'),
            cls('HermanEnEspanol', 'herman-en-espanol', 'es'),
            cls('HomeAndAway', 'homeandaway'),
            cls('HotComicsForCoolPeople', 'hot-comics-for-cool-people'),
            cls('HUBRIS', 'hubris'),
            cls('HumanCull', 'human-cull'),
            cls('HutchOwen', 'hutch-owen'),
            cls('ImagineThis', 'imaginethis'),
            cls('ImogenQuest', 'imogen-quest'),
            cls('InkPen', 'inkpen'),
            cls('InSecurity', 'in-security'),
            cls('InspectorDangersCrimeQuiz', 'inspector-dangers-crime-quiz'),
            cls('InTheBleachers', 'inthebleachers'),
            cls('InTheSticks', 'inthesticks'),
            cls('InvisibleBread', 'invisible-bread'),
            cls('ItsAllAboutYou', 'itsallaboutyou'),
            cls('JackOhman', 'jackohman'),
            cls('JanesWorld', 'janesworld'),
            cls('JeffDanziger', 'jeffdanziger'),
            cls('JeffStahler', 'jeffstahler'),
            cls('JenSorensen', 'jen-sorensen'),
            cls('JerryHolbert', 'jerryholbert'),
            cls('JetpackJr', 'jetpack-jr'),
            cls('JimBentonCartoons', 'jim-benton-cartoons'),
            cls('JimMorin', 'jimmorin'),
            cls('JimsJournal', 'jimsjournal'),
            cls('JoeHeller', 'joe-heller'),
            cls('JoelPett', 'joelpett'),
            cls('JoeVanilla', 'joevanilla'),
            cls('JoeyAlisonSayersComics', 'joey-alison-sayers-comics'),
            cls('JohnDeering', 'johndeering'),
            cls('JumpStart', 'jumpstart'),
            cls('JustoYFranco', 'justo-y-franco', 'es'),
            cls('JustSayUncle', 'just-say-uncle'),
            cls('KenCatalino', 'kencatalino'),
            cls('KevinKallaugher', 'kevinkallaugher'),
            cls('KidBeowulf', 'kid-beowulf'),
            cls('KidShayComics', 'kid-shay-comics'),
            cls('KidSpot', 'kidspot'),
            cls('KidTown', 'kidtown'),
            cls('KitchenCapers', 'kitchen-capers'),
            cls('KitNCarlyle', 'kitncarlyle'),
            cls('Kliban', 'kliban'),
            cls('KlibansCats', 'klibans-cats'),
            cls('LaCucaracha', 'lacucaracha'),
            cls('LaCucarachaEnEspanol', 'la-cucaracha-en-espanol', 'es'),
            cls('LaloAlcaraz', 'laloalcaraz'),
            cls('LaloAlcarazEnEspanol', 'laloenespanol', 'es'),
            cls('LardsWorldPeaceTips', 'lards-world-peace-tips'),
            cls('LasHermanasStone', 'stonesoup_espanol', 'es'),
            cls('LastKiss', 'lastkiss'),
            cls('LayLines', 'lay-lines'),
            cls('LearnToSpeakCat', 'learn-to-speak-cat'),
            cls('LegendOfBill', 'legendofbill'),
            cls('LibertyMeadows', 'libertymeadows'),
            cls('LilAbner', 'lil-abner'),
            cls('Lio', 'lio'),
            cls('LioEnEspanol', 'lioespanol', 'es'),
            cls('LisaBenson', 'lisabenson'),
            cls('LittleDogLost', 'littledoglost'),
            cls('LittleFriedChickenAndSushi', 'little-fried-chicken-and-sushi'),
            cls('LittleNemo', 'little-nemo'),
            cls('Lola', 'lola'),
            cls('LolaEnEspanol', 'lola-en-espanol', 'es'),
            cls('LooksGoodOnPaper', 'looks-good-on-paper'),
            cls('LooseParts', 'looseparts'),
            cls('LosOsorios', 'los-osorios', 'es'),
            cls('LostSheep', 'lostsheep'),
            cls('LostSideOfSuburbia', 'lostsideofsuburbia'),
            cls('Luann', 'luann'),
            cls('LuannAgainn', 'luann-againn'),
            cls('LuannEnEspanol', 'luannspanish', 'es'),
            cls('LuckyCow', 'luckycow'),
            cls('LugNuts', 'lug-nuts'),
            cls('Lunarbaboon', 'lunarbaboon'),
            cls('MagicInAMinute', 'magicinaminute'),
            cls('Magnificatz', 'magnificatz'),
            cls('Maintaining', 'maintaining'),
            cls('MakingIt', 'making-it'),
            cls('MariasDay', 'marias-day'),
            cls('Marmaduke', 'marmaduke'),
            cls('MarmadukeEnEspanol', 'marmaduke-en-espanol', 'es'),
            cls('MarshallRamsey', 'marshallramsey'),
            cls('MattBors', 'matt-bors'),
            cls('MattDavies', 'mattdavies'),
            cls('MattWuerker', 'mattwuerker'),
            cls('MazeToonsPuzzle', 'mazetoons-puzzle'),
            cls('MediumLarge', 'medium-large'),
            cls('MegClassics', 'meg-classics'),
            cls('MercWorks', 'mercworks'),
            cls('MichaelAndrew', 'michael-andrew'),
            cls('MichaelRamirez', 'michaelramirez'),
            cls('Microcosm', 'microcosm'),
            cls('MikeDuJour', 'mike-du-jour'),
            cls('MikeLester', 'mike-lester'),
            cls('MikeLuckovich', 'mikeluckovich'),
            cls('MinimumSecurity', 'minimumsecurity'),
            cls('ModeratelyConfused', 'moderately-confused'),
            cls('MollyAndTheBear', 'mollyandthebear'),
            cls('Momma', 'momma'),
            cls('MomsCancer', 'moms-cancer'),
            cls('Monty', 'monty'),
            cls('MontyDiaros', 'monty-diaros', 'es'),
            cls('MotleyClassics', 'motley-classics'),
            cls('MrLowe', 'mr-lowe'),
            cls('MustardAndBoloney', 'mustard-and-boloney'),
            cls('MuttAndJeff', 'muttandjeff'),
            cls('MyCageNewAndOld', 'mycage'),
            cls('MythTickle', 'mythtickle'),
            cls('Nancy', 'nancy'),
            cls('NancyClassics', 'nancy-classics'),
            cls('NateElGrande', 'nate-el-grande', 'es'),
            cls('NestHeads', 'nestheads'),
            cls('NEUROTICA', 'neurotica'),
            cls('NewAdventuresOfQueenVictoria', 'thenewadventuresofqueenvictoria'),
            cls('NextDoorNeighbors', 'next-door-neighbors'),
            cls('NickAnderson', 'nickanderson'),
            cls('NickAndZuzu', 'nick-and-zuzu'),
            cls('NonSequitur', 'nonsequitur'),
            cls('NothingIsNotSomething', 'nothing-is-not-something'),
            cls('NotInventedHere', 'not-invented-here'),
            cls('NowRecharging', 'now-recharging'),
            cls('OffTheMark', 'offthemark'),
            cls('OhBrother', 'oh-brother'),
            cls('OllieAndQuentin', 'ollie-and-quentin'),
            cls('OnAClaireDay', 'onaclaireday'),
            cls('OneBigHappy', 'onebighappy'),
            cls('OrdinaryBill', 'ordinary-bill'),
            cls('OriginsOfTheSundayComics', 'origins-of-the-sunday-comics'),
            cls('OutOfTheGenePoolReRuns', 'outofthegenepool'),
            cls('Overboard', 'overboard'),
            cls('OverboardEnEspanol', 'overboardespanol', 'es'),
            cls('OverTheHedge', 'overthehedge'),
            cls('Owlturd', 'owlturd'),
            cls('OzyAndMillie', 'ozy-and-millie'),
            cls('PatOliphant', 'patoliphant'),
            cls('PaulSzep', 'paulszep'),
            cls('PCAndPixel', 'pcandpixel'),
            cls('Peanuts', 'peanuts'),
            cls('PeanutsBegins', 'peanuts-begins'),
            cls('PeanutsEnEspanol', 'peanuts-espanol', 'es'),
            cls('PearlsBeforeSwine', 'pearlsbeforeswine'),
            cls('Periquita', 'periquita', 'es'),
            cls('PerlasParaLosCerdos', 'perlas-para-los-cerdos', 'es'),
            cls('PerryBibleFellowship', 'perry-bible-fellowship'),
            cls('PhilHands', 'phil-hands'),
            cls('PhoebeAndHerUnicorn', 'phoebe-and-her-unicorn'),
            cls('Pibgorn', 'pibgorn'),
            cls('PibgornSketches', 'pibgornsketches'),
            cls('Pickles', 'pickles'),
            cls('PicturesInBoxes', 'pictures-in-boxes'),
            cls('PieComic', 'pie-comic'),
            cls('Pinkerton', 'pinkerton'),
            cls('PleaseKeepWarm', 'please-keep-warm'),
            cls('PleaseListenToMe', 'please-listen-to-me'),
            cls('Pluggers', 'pluggers'),
            cls('PoochCafe', 'poochcafe'),
            cls('Poorcraft', 'poorcraft'),
            cls('PoorlyDrawnLines', 'poorly-drawn-lines'),
            cls('PopCultureShockTherapy', 'pop-culture-shock-therapy'),
            cls('Poptropica', 'poptropica'),
            cls('PotShots', 'pot-shots'),
            cls('PreTeena', 'preteena'),
            cls('PricklyCity', 'pricklycity'),
            cls('PromisesPromises', 'promises-promises'),
            cls('QuestionableQuotebook', 'questionable-quotebook'),
            cls('RabbitsAgainstMagic', 'rabbitsagainstmagic'),
            cls('RaisingDuncan', 'raising-duncan'),
            cls('RandolphItch2Am', 'randolphitch'),
            cls('RandomActsOfNancy', 'random-acts-of-nancy'),
            cls('RealityCheck', 'realitycheck'),
            cls('RealLifeAdventures', 'reallifeadventures'),
            cls('RebeccaHendin', 'rebecca-hendin'),
            cls('RedAndRover', 'redandrover'),
            cls('ReplyAll', 'replyall'),
            cls('ReplyAllLite', 'reply-all-lite'),
            cls('RichardsPoorAlmanac', 'richards-poor-almanac'),
            cls('RipHaywire', 'riphaywire'),
            cls('RipleysBelieveItOrNot', 'ripleysbelieveitornot'),
            cls('RipleysBelieveItOrNotSpanish', 'ripleys-en-espanol', 'es'),
            cls('RobbieAndBobby', 'robbie-and-bobby'),
            cls('RobertAriail', 'robert-ariail'),
            cls('RobRogers', 'robrogers'),
            cls('RosaDominical', 'rosa-dominical', 'es'),
            cls('RoseIsRose', 'roseisrose'),
            cls('Rubes', 'rubes'),
            cls('RudyPark', 'rudypark'),
            cls('SarahsScribbles', 'sarahs-scribbles'),
            cls('SaturdayMorningBreakfastCereal', 'saturday-morning-breakfast-cereal'),
            cls('SavageChickens', 'savage-chickens'),
            cls('ScaryGary', 'scarygary'),
            cls('ScenesFromAMultiverse', 'scenes-from-a-multiverse'),
            cls('ScottStantis', 'scottstantis'),
            cls('Sheldon', 'sheldon'),
            cls('ShirleyAndSonClassics', 'shirley-and-son-classics'),
            cls('Shoe', 'shoe'),
            cls('Shoecabbage', 'shoecabbage'),
            cls('Shortcuts', 'shortcuts'),
            cls('ShutterbugFollies', 'shutterbug-follies'),
            cls('SigneWilkinson', 'signewilkinson'),
            cls('SketchsharkComics', 'sketchshark-comics'),
            cls('SketchyChics', 'sketchy-chics'),
            cls('SkinHorse', 'skinhorse'),
            cls('Skippy', 'skippy'),
            cls('SmallPotatoes', 'small-potatoes'),
            cls('Snowflakes', 'snowflakes'),
            cls('SnowSez', 'snow-sez'),
            cls('Soulmates', 'soulmates'),
            cls('SoupToNutz', 'soup-to-nutz'),
            cls('Speechless', 'speechless'),
            cls('SpeedBump', 'speedbump'),
            cls('SpiritOfTheStaircase', 'spirit-of-the-staircase'),
            cls('SpotTheFrog', 'spot-the-frog'),
            cls('Starling', 'starling'),
            cls('Starslip', 'starslip'),
            cls('SteveBenson', 'stevebenson'),
            cls('SteveBreen', 'stevebreen'),
            cls('SteveKelley', 'stevekelley'),
            cls('StickyComics', 'sticky-comics'),
            cls('StoneSoup', 'stonesoup'),
            cls('StoneSoupClassics', 'stone-soup-classics'),
            cls('StrangeBrew', 'strangebrew'),
            cls('StuartCarlson', 'stuartcarlson'),
            cls('SunnyStreet', 'sunny-street'),
            cls('SunshineState', 'sunshine-state'),
            cls('SuperFunPakComix', 'super-fun-pak-comix'),
            cls('SweetAndSourPork', 'sweet-and-sour-pork'),
            cls('Sylvia', 'sylvia'),
            cls('TankMcNamara', 'tankmcnamara'),
            cls('Tarzan', 'tarzan'),
            cls('TarzanEnEspanol', 'tarzan-en-espanol', 'es'),
            cls('TedRall', 'ted-rall'),
            cls('TenCats', 'ten-cats'),
            cls('Thatababy', 'thatababy'),
            cls('ThatIsPriceless', 'that-is-priceless'),
            cls('ThatNewCarlSmell', 'that-new-carl-smell'),
            cls('ThatsLife', 'thats-life'),
            cls('TheAcademiaWaltz', 'academiawaltz'),
            cls('TheAdventuresOfBusinessCat', 'the-adventures-of-business-cat'),
            cls('TheArgyleSweater', 'theargylesweater'),
            cls('TheAwkwardYeti', 'the-awkward-yeti'),
            cls('TheBarn', 'thebarn'),
            cls('TheBentPinky', 'the-bent-pinky'),
            cls('TheBestMedicineCartoon', 'the-best-medicine'),
            cls('TheBigPicture', 'thebigpicture'),
            cls('TheBoondocks', 'boondocks'),
            cls('TheBornLoser', 'the-born-loser'),
            cls('TheBuckets', 'thebuckets'),
            cls('TheCity', 'thecity'),
            cls('TheComicStripThatHasAFinaleEveryDay', 'the-comic-strip-that-has-a-finale-every-day'),
            cls('TheConjurers', 'the-conjurers'),
            cls('TheCreeps', 'the-creeps'),
            cls('TheDailyDrawing', 'the-daily-drawing'),
            cls('TheDinetteSet', 'dinetteset'),
            cls('TheDoozies', 'thedoozies'),
            cls('TheDuplex', 'duplex'),
            cls('TheElderberries', 'theelderberries'),
            cls('TheFlyingMcCoys', 'theflyingmccoys'),
            cls('TheFuscoBrothers', 'thefuscobrothers'),
            cls('TheGentlemansArmchair', 'the-gentlemans-armchair'),
            cls('TheGrizzwells', 'thegrizzwells'),
            cls('TheHumbleStumble', 'humble-stumble'),
            cls('TheKChronicles', 'thekchronicles'),
            cls('TheKnightLife', 'theknightlife'),
            cls('TheLeftyBoscoPictureShow', 'leftyboscopictureshow'),
            cls('TheLostBear', 'the-lost-bear'),
            cls('TheMartianConfederacy', 'the-martian-confederacy'),
            cls('TheMeaningOfLila', 'meaningoflila'),
            cls('TheMiddletons', 'themiddletons'),
            cls('TheNorm40', 'the-norm-4-0'),
            cls('TheNormClassics', 'thenorm'),
            cls('TheOtherCoast', 'theothercoast'),
            cls('TheOtherEnd', 'the-other-end'),
            cls('ThePigeonGazette', 'the-pigeon-gazette'),
            cls('TheQuixoteSyndrome', 'the-quixote-syndrome'),
            cls('TheSunshineClub', 'the-sunshine-club'),
            cls('TheUpsideDownWorldOfGustaveVerbeek', 'upside-down-world-of-gustave-verbeek'),
            cls('TheWanderingMelon', 'the-wandering-melon'),
            cls('TheWizardOfIdSpanish', 'wizardofidespanol', 'es'),
            cls('TheWorriedWell', 'the-worried-well'),
            cls('TheWorstThingIveEverDone', 'the-worst-thing-ive-ever-done'),
            cls('think', 'think'),
            cls('ThinLines', 'thinlines'),
            cls('TimEagan', 'tim-eagan'),
            cls('TinySepuku', 'tinysepuku'),
            cls('TOBY', 'toby'),
            cls('TodaysDogg', 'todays-dogg'),
            cls('TomTheDancingBug', 'tomthedancingbug'),
            cls('TomToles', 'tomtoles'),
            cls('TooMuchCoffeeMan', 'toomuchcoffeeman'),
            cls('ToughTown', 'tough-town'),
            cls('Trivquiz', 'trivquiz'),
            cls('Trucutu', 'trucutu', 'es'),
            cls('TruthFacts', 'truth-facts'),
            cls('Tutelandia', 'tutelandia', 'es'),
            cls('TwoPartyOpera', 'two-party-opera'),
            cls('UncleArtsFunland', 'uncleartsfunland'),
            cls('UnderstandingChaos', 'understanding-chaos'),
            cls('UnearthedComics', 'unearthed-comics'),
            cls('UnstrangePhenomena', 'unstrange-phenomena'),
            cls('UpAndOut', 'up-and-out'),
            cls('USAcres', 'us-acres'),
            cls('ViewsAfrica', 'viewsafrica'),
            cls('ViewsAmerica', 'viewsamerica'),
            cls('ViewsAsia', 'viewsasia'),
            cls('ViewsBusiness', 'viewsbusiness'),
            cls('ViewsEurope', 'viewseurope'),
            cls('ViewsLatinAmerica', 'viewslatinamerica'),
            cls('ViewsMidEast', 'viewsmideast'),
            cls('ViewsOfTheWorld', 'viewsoftheworld'),
            cls('ViiviAndWagner', 'viivi-and-wagner'),
            cls('WallaceTheBrave', 'wallace-the-brave'),
            cls('WaltHandelsman', 'walthandelsman'),
            cls('Warped', 'warped'),
            cls('WatchYourHead', 'watchyourhead'),
            cls('WaynoVision', 'waynovision'),
            cls('WeePals', 'weepals'),
            cls('WeTheRobots', 'we-the-robots'),
            cls('Widdershins', 'widdershins'),
            cls('WideOpen', 'wide-open'),
            cls('WinLoseDrew', 'drewlitton'),
            cls('Winston', 'winston'),
            cls('WitOfTheWorld', 'witoftheworld'),
            cls('WizardOfId', 'wizardofid'),
            cls('WizardOfIdClassics', 'wizard-of-id-classics'),
            cls('Wondermark', 'wondermark'),
            cls('WorkingDaze', 'working-daze'),
            cls('WorkingItOut', 'workingitout'),
            cls('WorldOfWonder', 'world-of-wonder'),
            cls('WrongHands', 'wrong-hands'),
            cls('WTDuck', 'wtduck'),
            cls('WuMo', 'wumo'),
            cls('WumoEnEspanol', 'wumoespanol', 'es'),
            cls('ZackHill', 'zackhill'),
            cls('ZenPencils', 'zen-pencils'),
            cls('Ziggy', 'ziggy'),
            cls('ZiggyEnEspanol', 'ziggyespanol', 'es'),
            # END AUTOUPDATE
        )