dosage/dosagelib/plugins/gocomics.py

553 lines
26 KiB
Python
Raw Normal View History

# SPDX-License-Identifier: MIT
2016-10-28 22:21:41 +00:00
# Copyright (C) 2004-2008 Tristan Seligmann and Jonathan Jacobs
2014-01-05 15:50:57 +00:00
# Copyright (C) 2012-2014 Bastian Kleineidam
# Copyright (C) 2015-2020 Tobias Gruetzmacher
from ..scraper import _ParserScraper
from ..helpers import indirectStarter
class GoComics(_ParserScraper):
url = 'https://www.gocomics.com/'
imageSearch = '//picture[d:class("item-comic-image")]/img'
prevSearch = '//a[d:class("js-previous-comic")]'
latestSearch = '//div[d:class("gc-deck--cta-0")]//a'
starter = indirectStarter
help = 'Index format: yyyy/mm/dd'
def __init__(self, name, path, lang=None):
super(GoComics, self).__init__('GoComics/' + name)
self.session.add_throttle('www.gocomics.com', 1.0, 2.0)
self.url = 'https://www.gocomics.com/' + path
self.shortname = name
if lang:
self.lang = lang
2012-11-26 06:13:32 +00:00
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 '{}/{}'.format(self.url, 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'),
# do not edit anything below since these entries are generated from
# scripts/gocomics.py
# START AUTOUPDATE
cls('1AndDone', '1-and-done'),
cls('9ChickweedLane', '9chickweedlane'),
cls('9ChickweedLaneClassics', '9-chickweed-lane-classics'),
cls('9To5', '9to5'),
cls('Aaggghhh', 'Aaggghhh', 'es'),
cls('AdamAtHome', 'adamathome'),
cls('AdultChildren', 'adult-children'),
cls('Agnes', 'agnes'),
cls('AJAndMagnus', 'aj-and-magnus'),
2016-10-01 01:39:36 +00:00
cls('AlisHouse', 'alis-house'),
cls('AlleyOop', 'alley-oop'),
cls('AmandaTheGreat', 'amanda-the-great'),
cls('AmericanChopSuey', 'american-chop-suey'),
cls('Andertoons', 'andertoons'),
cls('AndyCapp', 'andycapp'),
cls('AngryLittleGirls', 'angry-little-girls'),
cls('AnimalCrackers', 'animalcrackers'),
cls('Annie', 'annie'),
cls('AProblemLikeJamal', 'a-problem-like-jamal'),
cls('ArloAndJanis', 'arloandjanis'),
cls('AskACat', 'ask-a-cat'),
cls('AskAPortlySyndicatePerson', 'ask-a-portly-syndicate-person'),
cls('AskShagg', 'askshagg'),
2016-10-01 01:39:36 +00:00
cls('AtTavicat', 'tavicat'),
cls('AuntyAcid', 'aunty-acid'),
cls('BabyTrump', 'baby-trump'),
cls('BackInTheDay', 'backintheday'),
cls('BackToBC', 'back-to-bc'),
2016-10-01 01:39:36 +00:00
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('BatchRejection', 'batch-rejection'),
cls('BC', 'bc'),
cls('BeanieTheBrownie', 'beanie-the-brownie'),
cls('Beardo', 'beardo'),
cls('BearWithMe', 'bear-with-me'),
cls('Ben', 'ben'),
cls('BenitinYEneas', 'muttandjeffespanol', 'es'),
cls('BergerAndWyse', 'berger-and-wyse'),
cls('BerkeleyMews', 'berkeley-mews'),
cls('Betty', 'betty'),
cls('BFGFSyndrome', 'bfgf-syndrome'),
cls('BigNate', 'bignate'),
cls('BigNateFirstClass', 'big-nate-first-class'),
cls('BigTop', 'bigtop'),
cls('BirdAndMoon', 'bird-and-moon'),
cls('Birdbrains', 'birdbrains'),
cls('BleekerTheRechargeableDog', 'bleeker'),
cls('Bliss', 'bliss'),
cls('BloomCounty', 'bloomcounty'),
cls('BloomCounty2019', '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'),
2017-02-12 11:21:01 +00:00
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('CatanaComics', 'little-moments-of-love'),
cls('CathyClassics', 'cathy'),
cls('CathyCommiserations', 'cathy-commiserations'),
cls('CatsCafe', 'cats-cafe'),
2016-10-01 01:39:36 +00:00
cls('CattitudeDoggonit', 'cattitude-doggonit'),
cls('CestLaVie', 'cestlavie'),
cls('CheapThrillsCuisine', 'cheap-thrills-cuisine'),
2017-05-21 21:10:32 +00:00
cls('CheerUpEmoKid', 'cheer-up-emo-kid'),
cls('ChipBok', 'chipbok'),
cls('ChrisBritt', 'chrisbritt'),
cls('ChuckDrawsThings', 'chuck-draws-things'),
cls('ChuckleBros', 'chucklebros'),
cls('CitizenDog', 'citizendog'),
2016-10-01 01:39:36 +00:00
cls('Claw', 'claw'),
cls('ClayBennett', 'claybennett'),
cls('ClayJones', 'clayjones'),
cls('Cleats', 'cleats'),
cls('CloseToHome', 'closetohome'),
cls('Computoon', 'compu-toon'),
cls('ConnieToTheWonnie', 'connie-to-the-wonnie'),
cls('Cornered', 'cornered'),
cls('CowAndBoyClassics', 'cowandboy'),
cls('CowTown', 'cowtown'),
cls('Crabgrass', 'crabgrass'),
cls('Crumb', 'crumb'),
cls('CulDeSac', 'culdesac'),
cls('DaddysHome', 'daddyshome'),
cls('DanaSummers', 'danasummers'),
cls('DanWasserman', 'danwasserman'),
cls('DarkSideOfTheHorse', 'darksideofthehorse'),
cls('DeepDarkFears', 'deep-dark-fears'),
cls('DeFlocked', 'deflocked'),
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('Drabble', 'drabble'),
cls('DrewSheneman', 'drewsheneman'),
cls('Drive', 'drive'),
2017-02-12 11:21:01 +00:00
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'),
2016-10-01 01:39:36 +00:00
cls('EverydayPeopleCartoons', 'everyday-people-cartoons'),
cls('Eyebeam', 'eyebeam'),
cls('EyebeamClassic', 'eyebeam-classic'),
cls('FalseKnees', 'false-knees'),
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('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('Frazz', 'frazz'),
cls('FredBasset', 'fredbasset'),
cls('FredBassetEnEspanol', 'fredbassetespanol', 'es'),
cls('FreeRange', 'freerange'),
cls('FreshlySqueezed', 'freshlysqueezed'),
cls('FrogApplause', 'frogapplause'),
cls('Garfield', 'garfield'),
2016-10-01 01:39:36 +00:00
cls('GarfieldClassics', 'garfield-classics'),
cls('GarfieldEnEspanol', 'garfieldespanol', 'es'),
cls('GaryMarkstein', 'garymarkstein'),
cls('GaryVarvel', 'garyvarvel'),
cls('GasolineAlley', 'gasolinealley'),
cls('Geech', 'geech'),
cls('GetALife', 'getalife'),
cls('GetFuzzy', 'getfuzzy'),
cls('Gil', 'gil'),
cls('GilThorp', 'gilthorp'),
cls('GingerMeggs', 'gingermeggs'),
cls('GingerMeggsEnEspanol', 'gingermeggs-espanol', 'es'),
cls('GlasbergenCartoons', 'glasbergen-cartoons'),
cls('GManWebcomics', 'g-man-webcomics'),
2016-10-01 01:39:36 +00:00
cls('GnomeSyndicate', 'gnome-syndicate'),
cls('Goats', 'goats'),
cls('GoComicsFanArt', 'fan-art'),
cls('GrandAvenue', 'grand-avenue'),
cls('GrayMatters', 'gray-matters'),
cls('GreenHumour', 'green-humour'),
cls('HaircutPractice', 'haircut-practice'),
cls('HalfFull', 'half-full'),
2017-05-21 21:10:32 +00:00
cls('Harley', 'harley'),
cls('HeartOfTheCity', 'heartofthecity'),
cls('Heathcliff', 'heathcliff'),
cls('HeathcliffEnEspanol', 'heathcliffespanol', 'es'),
cls('HenryPayne', 'henrypayne'),
cls('HerbAndJamaal', 'herbandjamaal'),
cls('Herman', 'herman'),
cls('HomeAndAway', 'homeandaway'),
cls('HotComicsForCoolPeople', 'hot-comics-for-cool-people'),
cls('HowToCat', 'how-to-cat'),
cls('HUBRIS', 'hubris'),
cls('HumanCull', 'human-cull'),
cls('HutchOwen', 'hutch-owen'),
cls('ImagineThis', 'imaginethis'),
2017-05-21 21:10:32 +00:00
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('JakeLikesOnions', 'jake-likes-onions'),
cls('JanesWorld', 'janesworld'),
cls('JeffDanziger', 'jeffdanziger'),
cls('JeffStahler', 'jeffstahler'),
cls('JenSorensen', 'jen-sorensen'),
cls('JimBentonCartoons', 'jim-benton-cartoons'),
cls('JimMorin', 'jimmorin'),
cls('JimsJournal', 'jimsjournal'),
cls('JoeHeller', 'joe-heller'),
cls('JoelPett', 'joelpett'),
cls('JoeVanilla', 'joevanilla'),
2017-02-12 11:21:01 +00:00
cls('JoeyAlisonSayersComics', 'joey-alison-sayers-comics'),
cls('JohnDeering', 'johndeering'),
cls('JumpStart', 'jumpstart'),
cls('JunkDrawer', 'junk-drawer'),
cls('JustoYFranco', 'justo-y-franco', 'es'),
cls('JustSayUncle', 'just-say-uncle'),
cls('KenCatalino', 'kencatalino'),
cls('KevinKallaugher', 'kal'),
cls('KevinNecessaryEditorialCartoons', 'kevin-necessary-editorial-cartoons'),
cls('KidBeowulf', 'kid-beowulf'),
cls('KitchenCapers', 'kitchen-capers'),
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('LaughingRedheadComics', 'laughing-redhead-comics'),
cls('LayLines', 'lay-lines'),
cls('LearnToSpeakCat', 'learn-to-speak-cat'),
cls('LibertyMeadows', 'libertymeadows'),
cls('LifeOnEarth', 'life-on-earth'),
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('LizClimoCartoons', 'liz-climo-cartoons'),
cls('Lola', 'lola'),
cls('LolaEnEspanol', 'lola-en-espanol', 'es'),
cls('LongStoryShort', 'long-story-short'),
cls('LooksGoodOnPaper', 'looks-good-on-paper'),
cls('LooseParts', 'looseparts'),
cls('LosOsorios', 'los-osorios', 'es'),
cls('LostSheep', 'lostsheep'),
cls('Luann', 'luann'),
cls('LuannAgainn', 'luann-againn'),
cls('LuannEnEspanol', 'luannspanish', 'es'),
cls('LuckyCow', 'luckycow'),
cls('LugNuts', 'lug-nuts'),
cls('Lunarbaboon', 'lunarbaboon'),
cls('M2Bulls', 'm2bulls'),
cls('Magnificatz', 'magnificatz'),
cls('Maintaining', 'maintaining'),
cls('MakingIt', 'making-it'),
cls('MariasDay', 'marias-day'),
cls('Marmaduke', 'marmaduke'),
cls('MarshallRamsey', 'marshallramsey'),
cls('MattBors', 'matt-bors'),
cls('MattDavies', 'mattdavies'),
cls('MattWuerker', 'mattwuerker'),
cls('MediumLarge', 'medium-large'),
cls('MessycowComics', 'messy-cow'),
cls('MexikidStories', 'mexikid-stories'),
cls('MichaelRamirez', 'michaelramirez'),
cls('MikeDuJour', 'mike-du-jour'),
cls('MikeLester', 'mike-lester'),
cls('MikeLuckovich', 'mikeluckovich'),
cls('MissPeach', 'miss-peach'),
cls('Mo', 'mo'),
cls('ModeratelyConfused', 'moderately-confused'),
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('MyDadIsDracula', 'my-dad-is-dracula'),
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'),
2016-10-01 01:39:36 +00:00
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'),
2016-10-01 01:39:36 +00:00
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('OurSuperAdventure', 'our-super-adventure'),
cls('Outland', 'outland'),
cls('OutOfTheGenePoolReRuns', 'outofthegenepool'),
cls('Overboard', 'overboard'),
cls('OverboardEnEspanol', 'overboardespanol', 'es'),
cls('OverTheHedge', 'overthehedge'),
cls('OzyAndMillie', 'ozy-and-millie'),
cls('PatOliphant', 'patoliphant'),
cls('PCAndPixel', 'pcandpixel'),
cls('Peanuts', 'peanuts'),
cls('PeanutsBegins', 'peanuts-begins'),
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('Pinkerton', 'pinkerton'),
cls('PirateMike', 'pirate-mike'),
cls('PleaseListenToMe', 'please-listen-to-me'),
cls('Pluggers', 'pluggers'),
cls('PoochCafe', 'poochcafe'),
2016-10-01 01:39:36 +00:00
cls('Poorcraft', 'poorcraft'),
cls('PoorlyDrawnLines', 'poorly-drawn-lines'),
cls('PopCultureShockTherapy', 'pop-culture-shock-therapy'),
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('RealityCheck', 'realitycheck'),
cls('RealLifeAdventures', 'reallifeadventures'),
cls('RebeccaHendin', 'rebecca-hendin'),
cls('RedAndRover', 'redandrover'),
cls('RedMeat', 'redmeat'),
cls('RichardsPoorAlmanac', 'richards-poor-almanac'),
cls('RipHaywire', 'riphaywire'),
cls('RipleysAunqueUstedNoLoCrea', 'ripleys-en-espanol', 'es'),
cls('RipleysBelieveItOrNot', 'ripleysbelieveitornot'),
cls('RobbieAndBobby', 'robbie-and-bobby'),
cls('RobertAriail', 'robert-ariail'),
cls('RobRogers', 'robrogers'),
cls('Rosebuds', 'rosebuds'),
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('ShenComix', 'shen-comix'),
cls('ShirleyAndSonClassics', 'shirley-and-son-classics'),
cls('Shoe', 'shoe'),
cls('Shoecabbage', 'shoecabbage'),
cls('ShutterbugFollies', 'shutterbug-follies'),
cls('SigneWilkinson', 'signewilkinson'),
2016-10-01 01:39:36 +00:00
cls('SketchsharkComics', 'sketchshark-comics'),
cls('SkinHorse', 'skinhorse'),
cls('Skippy', 'skippy'),
cls('SmallPotatoes', 'small-potatoes'),
cls('SnoopyEnEspanol', 'peanuts-espanol', 'es'),
cls('Snowflakes', 'snowflakes'),
cls('SnowSez', 'snow-sez'),
cls('Speechless', 'speechless'),
cls('SpeedBump', 'speedbump'),
cls('SpiritOfTheStaircase', 'spirit-of-the-staircase'),
cls('SpotTheFrog', 'spot-the-frog'),
2016-10-01 01:39:36 +00:00
cls('Starling', 'starling'),
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('SwanEaters', 'swan-eaters'),
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('TextsFromMittens', 'texts-from-mittens'),
cls('Thatababy', 'thatababy'),
cls('ThatIsPriceless', 'that-is-priceless'),
cls('ThatNewCarlSmell', 'that-new-carl-smell'),
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('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('TheDailyDrawing', 'the-daily-drawing'),
cls('TheDinetteSet', 'dinetteset'),
cls('TheDoozies', 'thedoozies'),
cls('TheDuplex', 'duplex'),
cls('TheElderberries', 'theelderberries'),
cls('TheFlyingMcCoys', 'theflyingmccoys'),
cls('TheFuscoBrothers', 'thefuscobrothers'),
cls('TheGrizzwells', 'thegrizzwells'),
cls('TheHumbleStumble', 'humble-stumble'),
cls('TheKChronicles', 'thekchronicles'),
cls('TheKnightLife', 'theknightlife'),
cls('TheLastMechanicalMonster', 'the-last-mechanical-monster'),
cls('TheLeftyBoscoPictureShow', 'leftyboscopictureshow'),
cls('TheMartianConfederacy', 'the-martian-confederacy'),
cls('TheMeaningOfLila', 'meaningoflila'),
cls('TheMiddleAge', 'the-middle-age'),
cls('TheMiddletons', 'themiddletons'),
cls('TheNorm40', 'the-norm-4-0'),
cls('TheNormClassics', 'thenorm'),
cls('TheOtherCoast', 'theothercoast'),
2016-10-01 01:39:36 +00:00
cls('TheOtherEnd', 'the-other-end'),
cls('TheQuixoteSyndrome', 'the-quixote-syndrome'),
cls('TheUpsideDownWorldOfGustaveVerbeek', 'upside-down-world-of-gustave-verbeek'),
cls('TheWanderingMelon', 'the-wandering-melon'),
cls('TheWizardOfIdSpanish', 'wizardofidespanol', 'es'),
cls('TheWorriedWell', 'the-worried-well'),
cls('think', 'think'),
cls('ThinLines', 'thinlines'),
cls('TimCampbell', 'tim-campbell'),
cls('TimEagan', 'tim-eagan'),
cls('TinySepuku', 'tinysepuku'),
cls('TOBY', 'toby'),
cls('TodaysSzep', 'todays-szep'),
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'),
2017-05-21 21:10:32 +00:00
cls('TwoPartyOpera', 'two-party-opera'),
cls('UnderpantsAndOverbites', 'underpants-and-overbites'),
cls('UnderstandingChaos', 'understanding-chaos'),
cls('UnstrangePhenomena', 'unstrange-phenomena'),
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'),
2016-10-01 01:39:36 +00:00
cls('Warped', 'warped'),
cls('WatchYourHead', 'watchyourhead'),
cls('Wawawiwa', 'wawawiwa'),
cls('WaynoVision', 'waynovision'),
cls('WebcomicName', 'webcomic-name'),
cls('WeePals', 'weepals'),
cls('WhyattCartoons', 'whyatt-cartoons'),
2016-10-01 01:39:36 +00:00
cls('Widdershins', 'widdershins'),
cls('WideOpen', 'wide-open'),
cls('WinLoseDrew', 'drewlitton'),
cls('Winston', 'winston'),
cls('WizardOfId', 'wizardofid'),
cls('WizardOfIdClassics', 'wizard-of-id-classics'),
2016-10-01 01:39:36 +00:00
cls('Wondermark', 'wondermark'),
cls('WorkingDaze', 'working-daze'),
cls('WorkingItOut', 'workingitout'),
cls('WrongHands', 'wrong-hands'),
cls('WTDuck', 'wtduck'),
cls('WuMo', 'wumo'),
cls('WumoEnEspanol', 'wumoespanol', 'es'),
cls('Yaffle', 'yaffle'),
cls('YesImHotInThis', 'yesimhotinthis'),
cls('ZackHill', 'zackhill'),
cls('ZenPencils', 'zen-pencils'),
cls('Ziggy', 'ziggy'),
cls('ZiggyEnEspanol', 'ziggyespanol', 'es'),
# END AUTOUPDATE
)