Update GoComics module for new site layout.

(fixes #77)
This commit is contained in:
Tobias Gruetzmacher 2017-01-11 02:21:05 +01:00
parent 061efaac6e
commit a183e812ae
2 changed files with 70 additions and 427 deletions

View file

@ -1,20 +1,21 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2004-2008 Tristan Seligmann and Jonathan Jacobs
# Copyright (C) 2012-2014 Bastian Kleineidam
# Copyright (C) 2015-2016 Tobias Gruetzmacher
# Copyright (C) 2015-2017 Tobias Gruetzmacher
from __future__ import absolute_import, division, print_function
from ..scraper import _ParserScraper
from ..helpers import bounceStarter
from .common import xpath_class
class GoComics(_ParserScraper):
url = 'http://www.gocomics.com/'
imageSearch = ('//div/img[@class="strip"]',
'//p[@class="feature_item"]/img[@class="strip"]')
prevSearch = '//ul[@class="feature-nav"]//a[@class="prev"]'
nextSearch = '//ul[@class="feature-nav"]//a[@class="next"]'
imageSearch = '//picture[%s]/img' % xpath_class('item-comic-image')
navSearch = '//div[@class="button-icon-group"]//a[%s]'
prevSearch = navSearch % xpath_class('fa-caret-left')
nextSearch = navSearch % xpath_class('fa-caret-right')
starter = bounceStarter
help = 'Index format: yyyy/mm/dd'
@ -40,205 +41,35 @@ class GoComics(_ParserScraper):
def getmodules(cls):
return (
# old comics removed from the listing
cls('AbnormalTruth', 'abnormal-truth'),
cls('ABootsAndPupComic', 'a-boots-and-pup-comic'),
cls('AdmiralSquirt', 'admiral-squirt'),
cls('AdventuresofDaisy', 'Adventures-of-Daisy'),
cls('AdventuresOfMartyAndTurkey', 'marty-and-turkey'),
cls('AdventuresofMikeAndSimon', 'adventures-of-mike-and-simon'),
cls('AmaZnEvents', 'amaznevents'),
cls('AnythingGoes', 'anything-goes'),
cls('BarkingCrayon', 'barking-crayon'),
cls('BenAndSeymour', 'ben-seymour'),
cls('BERSERKALERT', 'berserk-alert'),
cls('BestInShow', 'best-in-show'),
cls('BobtheGroanUP', 'bob-the-groanup'),
cls('BradsPit', 'brads-pit'),
cls('CalAndOzz', 'cal-and-ozz'),
cls('CandyPills', 'candy-pills'),
cls('Cartertoons', 'cartertoons'),
cls('CatsAtWork', 'cats-at-work'),
cls('ChasingUnicorns', 'chasing-unicorns'),
cls('ChubbyGirlComics', 'chubbygirlcomics'),
cls('Classifudds', 'classifudds'),
cls('CockroachComix', 'cockroachcomix'),
cls('CoffeeShopTidbits', 'coffee-shop-tidbits'),
cls('ColonelKernel', 'colonel-kernel'),
cls('Cooper', 'cooper'),
cls('CowSheepandaGnomeNamedHelga', 'cow-sheep-and-a-gnome-named-helga'),
cls('CoyoteVille', 'coyteville'),
cls('Crooksville', 'crooksville'),
cls('DabneyandDad', 'dabney-and-dad'),
cls('DialHforHBomb', 'dial-h-for-h-bomb'),
cls('DiligentCity', 'diligent-city'),
cls('DitzAbledPrincess', 'ditzabled-princess'),
cls('DogsDucksandAliens', 'dogs-ducks-and-aliens'),
cls('DoingTime', 'doingtime'),
cls('DoodleDaysComics', 'doodle-days'),
cls('EBEJeebie', 'ebe-jeebie'),
cls('EDITORIALPASTANDPRESENT', 'editorial-past-and-present'),
cls('ElephantintheRoom', 'elephant-in-the-room'),
cls('ElfandMotorbelly', 'elf-and-motorbelly'),
cls('EngagAndNevets', 'engag-nevets'),
cls('EspressoCity', 'Espresso-City'),
cls('EttoreandBaldo', 'ettore-and-baldo'),
cls('FantasticMegaLeague', 'fantastiteam'),
cls('FarcesofNature', 'farces-of-nature'),
cls('Featherweight', 'featherweight'),
cls('FleasonFlick', 'fleasonflick'),
cls('FrizziToons', 'frizzitoons'),
cls('FundayMorning', 'funday-morning'),
cls('GatorsAndSuch', 'gators-and-such'),
cls('GenerationMute', 'generation-mute'),
cls('GetAGrip', 'get-a-grip'),
cls('GramDragon', 'gramdragon'),
cls('HanginOut', 'hangin-out'),
cls('HankAndDalesOurWorld', 'hank-and-dales-our-world'),
cls('HanktheSock', 'hank-the-sock'),
cls('HarambeeHills', 'harambeehills'),
cls('Hbenson7', 'hbenson7'),
cls('HeadComics', 'head-comics'),
cls('HeavenlyNostrils', 'heavenly-nostrils'),
cls('HolySchnark', 'holy-schnark!'),
cls('HumblebeeandBob', 'humblebee-and-bob'),
cls('Humoresque', 'humoresque'),
cls('ImaDillo', 'i-m-a-dillo'),
cls('ImTellingMom', 'telling-mom'),
cls('IsleofEx', 'isle-of-ex'),
cls('JackRadioComics', 'jack-radio-comics'),
cls('JillpokeBohemia', 'jillpoke-bohemia'),
cls('JimAndSarah', 'jim-and-sarah'),
cls('JordanandBentley', 'jordan-and-bentley'),
cls('KirbysTreehouse', 'kirbys-treehouse'),
cls('KozmooftheCosmos', 'kozmoofthecosmos'),
cls('LardWantsWorldPeace', 'lard-wants-world-peace'),
cls('LarryvilleBlue', 'larryville-blue'),
cls('Leadbellies', 'leadbellies'),
cls('LEFTOVERS', 'leftovers'),
cls('LeGooseyLu', 'LeGoosey-Lu'),
cls('LIGHTERSIDE', 'lighter-side'),
cls('LostInTranslation', 'lost-in-translation'),
cls('LucasLuminous', 'lucas-luminous'),
cls('MagnificatzOld', 'magnificatz-sherpa'),
cls('Markonpaper', 'mark-on-paper'),
cls('MaryBWary', 'mary-b-wary'),
cls('Maximus', 'maximus'),
cls('Mick', 'mick'),
cls('MixedMedications', 'mixedmedications'),
cls('Mortimer', 'mortimer'),
cls('MrMorris', 'mr-morris'),
cls('MyCage', 'mycage'),
cls('MyGuardianGrandpa', 'my-guardian-grandpa'),
cls('NeatStep', 'neatstep'),
cls('NeighborhoodZone', 'neightborhood-zone'),
cls('NobodysHome', 'nobodys-home'),
cls('NoPlaceLikeHolmes', 'no-place-like-holmes'),
cls('Norman', 'Norman'),
cls('Oat', 'oat'),
cls('ObamaandtheFatman', 'obama-and-the-fatman'),
cls('OntheQuad', 'on-the-quad'),
cls('OrangesareFunny', 'oranges-are-funny'),
cls('Outnumbered', 'outnumbered'),
cls('PamosWorld', 'pamos-world'),
cls('ParisDoodles', 'mo-willems-paris-doodles'),
cls('Peanizles', 'peanizles'),
cls('PetFood', 'pet-food'),
cls('PipethePelican', 'pipe-the-pelican'),
cls('PlasticBabyHeadsfromOuterSpace', 'plastic-babyheads'),
cls('PlentyofPenguins', 'plenty-of-penguins'),
cls('Puppets', 'puppets'),
cls('Putz', 'putz'),
cls('QuestionsForKids', 'questions-for-kids'),
cls('Rackafracka', 'rackafracka'),
cls('RegularCreatures', 'regular-creatures'),
cls('Risible', 'risible'),
cls('RogueSymmetry', 'rogue_symmetry'),
cls('Rosy', 'rosy'),
cls('Sabine', 'sabine'),
cls('SCAIRYTALESTheNotSoScaryFairyTales', 'Scairy-Tales:-the-not-so-scary-fairy-tales!'),
cls('SecondPrize', 'secondprize'),
cls('SincerelyBeatrice', 'sincerely-beatrice'),
cls('Skooled', 'skooled'),
cls('SNAFU', 'snafu'),
cls('SpaceNutz', 'space-nutz'),
cls('SPACESLUGS', 'spaceslugs'),
cls('SpaceTimeFunnies', 'spacetimefunnies'),
cls('Spectickles', 'abbotts-spectickles'),
cls('SpinCrazy', 'spin-crazy'),
cls('STEPDAD', 'stepdad'),
cls('Stookie', 'Stookie'),
cls('SuburbanWilderness', 'suburban-wilderness'),
cls('SuckerHeadSmack', 'suckerhead-smack'),
cls('TeacherInk', 'teacher-ink'),
cls('TheAdventuresofHeromanGuy', 'adventures-of-heroman-guy'),
cls('TheEdperiment', 'the-edperiment'),
cls('TheFamilyBlend', 'the-family-blend'),
cls('TheFruitBowl', 'thefruitbowl'),
cls('TheGoldenKid', 'golden-kid'),
cls('TheInsolentLemon', 'the-insolent-lemon'),
cls('TheLightedLab', 'the-lighted-lab'),
cls('TheLilMiesters', 'the-lil-miesters'),
cls('TheOdderLimits', 'the-odder-limits'),
cls('THESILVERLINING', 'silver-lining'),
cls('TheSingleDadDiaries', 'single-dad-diaries'),
cls('TheVernalPool', 'vernal-pool'),
cls('TheWinyChild', 'the-winy-child'),
cls('ThrompTM', 'thromp'),
cls('TnCComics', 'tnc-comics'),
cls('ToBeNamed', 'to-be-named'),
cls('TonyAuth', 'tonyauth'),
cls('Toocrazy', 'too-crazy'),
cls('TwitchyOToole', 'twitchy-otoole'),
cls('TwoBits', 'two-bits'),
cls('Vernscartoons', 'vernscartoons'),
cls('WayOutInLeftField', 'Way-Out-In-Left-Field'),
cls('WelcometoFriendly', 'welcome-to-friendly'),
cls('WendlesLife', 'wendleslife'),
cls('Whatcatscanandcantdo', 'whatcatscanandcantdo'),
cls('Whiteouts', 'whiteouts'),
cls('WillSays', 'will-says'),
cls('WillyWho', 'willy-who'),
cls('WindingRoads', 'winding-roads'),
cls('WittOfWill', 'witt-of-will'),
cls('YouGuysAreMyFriendsTheComic', 'you-guys-are-my-friends'),
# do not edit anything below since these entries are generated from
# scripts/gocomics.py
# START AUTOUPDATE
cls('060', '0-60'),
cls('1AndDone', '1-and-done'),
cls('2CowsAndAChicken', '2cowsandachicken'),
cls('9ChickweedLane', '9chickweedlane'),
cls('9To5', '9to5'),
cls('AaronGuile', 'aaron-guile'),
cls('ABitSketch', 'a-bit-sketch'),
cls('ABomb', 'a-bomb'),
cls('ACMEINKD', 'acme-inkd'),
cls('AcornPark', 'acorn-park'),
cls('AdamAtHome', 'adamathome'),
cls('AdultChildren', 'adult-children'),
cls('Adulting', 'adulting'),
cls('Agnes', 'agnes'),
cls('AJAndMagnus', 'aj-and-magnus'),
cls('AlisHouse', 'alis-house'),
cls('AlisonWard', 'alison-ward'),
cls('AlleyOop', 'alley-oop'),
cls('AllInGoodTime', 'all-in-good-time'),
cls('AmandaTheGreat', 'amanda-the-great'),
cls('Andertoons', 'andertoons'),
cls('AndNow', 'and-now'),
cls('AndyCapp', 'andycapp'),
cls('Anecdote', 'anecdote'),
cls('AngryLittleGirls', 'angry-little-girls'),
cls('AnimalCrackers', 'animalcrackers'),
cls('AnimalMitchell', 'animal-mitchell'),
cls('AnneAndPythagoras', 'anne-and-pythagoras'),
cls('Annie', 'annie'),
cls('AppleCreekComics', 'apple-creek'),
cls('ArloAndJanis', 'arloandjanis'),
cls('AskACat', 'ask-a-cat'),
cls('AskShagg', 'askshagg'),
cls('ATasteOfTimes', 'a-taste-of-times'),
cls('AtTavicat', 'tavicat'),
cls('AtTheZoo', 'at-the-zoo'),
cls('AuntyAcid', 'aunty-acid'),
@ -249,28 +80,23 @@ class GoComics(_ParserScraper):
cls('BadMachinery', 'bad-machinery'),
cls('BadReporter', 'badreporter'),
cls('Baldo', 'baldo'),
cls('BaldoEnEspaol', 'espanol/baldoespanol', 'es'),
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('Bazoobee', 'bazoobee'),
cls('BC', 'bc'),
cls('BeanieTheBrownie', 'beanie-the-brownie'),
cls('Beardo', 'beardo'),
cls('BeMisery', 'bemisery'),
cls('Ben', 'ben'),
cls('BeneathTheFerns', 'beneath-the-ferns'),
cls('BenitinYEneas', 'espanol/muttandjeffespanol', 'es'),
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('BigJim', 'bigjim'),
cls('BigNate', 'bignate'),
cls('BigNateFirstClass', 'big-nate-first-class'),
cls('BigTop', 'bigtop'),
@ -280,41 +106,30 @@ class GoComics(_ParserScraper):
cls('Bliss', 'bliss'),
cls('BloomCounty', 'bloomcounty'),
cls('BloomCounty2016', 'bloom-county'),
cls('Bluebonnets', 'cowsandstuff'),
cls('BlueSkiesToons', 'blue-skies-toons'),
cls('BobGorrell', 'bobgorrell'),
cls('BobTheSquirrel', 'bobthesquirrel'),
cls('BoltsAndNuts', 'bolts-and-nuts'),
cls('BoNanas', 'bonanas'),
cls('Boomerangs', 'boomerangs'),
cls('Bork', 'bork'),
cls('BottAuto', 'bott-auto'),
cls('Bottomliners', 'bottomliners'),
cls('BoundAndGagged', 'boundandgagged'),
cls('BrainSquirts', 'brain-squirts'),
cls('BreakingCatNews', 'breaking-cat-news'),
cls('BreakOfDay', 'break-of-day'),
cls('Brevity', 'brevity'),
cls('Brevity', 'brevitypanel'),
cls('BrewsterRockit', 'brewsterrockit'),
cls('BrianMcFadden', 'brian-mcfadden'),
cls('BroomHilda', 'broomhilda'),
cls('Bully', 'bully'),
cls('Buni', 'buni'),
cls('BUNS', 'buns'),
cls('Bushscrubs', 'bushscrubs'),
cls('BushyTales', 'bushy-tales'),
cls('CAFFEINATED', 'CAFFEINATED'),
cls('CalvinAndHobbes', 'calvinandhobbes'),
cls('CalvinAndHobbesEnEspaol', 'espanol/calvinandhobbesespanol', 'es'),
cls('CandacenCompany', 'candace-n-company'),
cls('CalvinAndHobbesEnEspanol', 'calvinandhobbesespanol', 'es'),
cls('Candorville', 'candorville'),
cls('CapsulasMedicas', 'espanol/capsulas-medicas', 'es'),
cls('CarteBlanche', 'carte-blanche'),
cls('CapsulasMedicas', 'capsulas-medicas%20', 'es'),
cls('Cathy', 'cathy'),
cls('CattitudeDoggonit', 'cattitude-doggonit'),
cls('CestLaVie', 'cestlavie'),
cls('ChanLowe', 'chanlowe'),
cls('CharmysArmy', 'charmys-army'),
cls('CheapThrillsCuisine', 'cheap-thrills-cuisine'),
cls('ChipBok', 'chipbok'),
cls('ChrisBritt', 'chrisbritt'),
@ -325,76 +140,55 @@ class GoComics(_ParserScraper):
cls('ClayJones', 'clayjones'),
cls('ClearBlueWater', 'clearbluewater'),
cls('Cleats', 'cleats'),
cls('CleoAndCompany', 'cleo-and-company'),
cls('CloseToHome', 'closetohome'),
cls('Committed', 'committed'),
cls('Computoon', 'compu-toon'),
cls('ConnieToTheWonnie', 'connie-to-the-wonnie'),
cls('Cornered', 'cornered'),
cls('CourageousManAdventures', 'courageous-man-adventures'),
cls('CowAndBoyClassics', 'cowandboy'),
cls('CowTown', 'cowtown'),
cls('Crumb', 'crumb'),
cls('CulDeSac', 'culdesac'),
cls('DaddingBadly', 'dadding-badly'),
cls('DaddysHome', 'daddyshome'),
cls('DadsDay', 'dads-day'),
cls('DanaSummers', 'danasummers'),
cls('DanWasserman', 'danwasserman'),
cls('DarkSideOfTheHorse', 'darksideofthehorse'),
cls('DarrinBell', 'darrin-bell'),
cls('DBCartoons', 'db-cartoons'),
cls('DeepDarkFears', 'deep-dark-fears'),
cls('DevinCraneComicStripGhostwriter', 'devincranecomicstripghostwriter'),
cls('DiamondLil', 'diamondlil'),
cls('DickTracy', 'dicktracy'),
cls('DilbertClassics', 'dilbert-classics'),
cls('DilbertEnEspaol', 'espanol/dilbert-en-espanol', 'es'),
cls('DilbertEnEspanol', 'dilbert-en-espanol', 'es'),
cls('DinosaurComics', 'dinosaur-comics'),
cls('DogEatDoug', 'dogeatdoug'),
cls('DoghouseInYourSoul', 'doghouse-in-your-soul'),
cls('DogsOfCKennel', 'dogsofckennel'),
cls('DomesticAbuse', 'domesticabuse'),
cls('DonBrutus', 'espanol/don-brutus', 'es'),
cls('DontPickTheFlowers', 'dont-pick-the-flowers'),
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('Dragin', 'dragin'),
cls('DragonGirl', 'dragon-girl'),
cls('DrewSheneman', 'drewsheneman'),
cls('Drive', 'drive'),
cls('Dromo', 'dro-mo'),
cls('DrWhiskers', 'dr-whiskers'),
cls('DudeAndDude', 'dudedude'),
cls('DumbQuestionBadAnswer', 'dumb-question-bad-answer'),
cls('DungeonHordes', 'dungeon-hordes'),
cls('DustSpecks', 'dust-specks'),
cls('DutchnPals', 'dutch-n-pals'),
cls('Dysconnected', 'dysconnected'),
cls('Econogirl', 'econogirl'),
cls('EdgeCity', 'edge-city'),
cls('EdgeOfAdventure', 'edge-of-adventure'),
cls('Eek', 'eek'),
cls('EightballEyeball', 'eightball-eyeball'),
cls('ElCafDePoncho', 'espanol/poochcafeespanol', 'es'),
cls('Elmo', 'elmo'),
cls('ElCafDePoncho', 'el-cafe-de-poncho', 'es'),
cls('EmmyLou', 'emmy-lou'),
cls('Endangered', 'endangered'),
cls('Endtown', 'endtown'),
cls('EricTheCircle', 'eric-the-circle'),
cls('EverydayPeopleCartoons', 'everyday-people-cartoons'),
cls('Eyebeam', 'eyebeam'),
cls('FacesOfTheNewsByKerryWaghorn', 'facesinthenews'),
cls('FamilyTree', 'familytree'),
cls('FamousAndNotSoFamousQuotes', 'famous-and-not-so-famous-quotes'),
cls('Farcus', 'farcus'),
cls('FarOut', 'far-out'),
cls('FatCats', 'fat-cats'),
cls('FatherOfTheBrood', 'father-of-the-brood'),
cls('FloAndFriends', 'floandfriends'),
cls('FloydAndTony', 'floyd-and-tony'),
cls('FMinus', 'fminus'),
cls('FoolishMortals', 'foolish-mortals'),
cls('ForBetterOrForWorse', 'forbetterorforworse'),
@ -404,28 +198,25 @@ class GoComics(_ParserScraper):
cls('FowlLanguage', 'fowl-language'),
cls('FoxTrot', 'foxtrot'),
cls('FoxTrotClassics', 'foxtrotclassics'),
cls('FoxTrotEnEspaol', 'espanol/foxtrotespanol', 'es'),
cls('FoxTrotEnEspanol', 'foxtrotespanol', 'es'),
cls('Francis', 'francis'),
cls('FrankAndErnest', 'frank-and-ernest'),
cls('FrankAndSteinway', 'frank-and-steinway'),
cls('FrankieComics', 'frankie-comics'),
cls('Frazz', 'frazz'),
cls('FredBasset', 'fredbasset'),
cls('FredBassetEnEspaol', 'espanol/fredbassetespanol', 'es'),
cls('FredBassetEnEspanol', 'fredbassetespanol', 'es'),
cls('FreeRange', 'freerange'),
cls('FreshlySqueezed', 'freshlysqueezed'),
cls('FriedCritter', 'fried-critter'),
cls('FrogApplause', 'frogapplause'),
cls('FromTheMoWillemsSketchbook', 'from-the-mo-willems-sketchbook'),
cls('GarciaCartoonCo', 'garcia-cartoon-co'),
cls('Garfield', 'garfield'),
cls('GarfieldClassics', 'garfield-classics'),
cls('GarfieldEnEspaol', 'espanol/garfieldespanol', 'es'),
cls('GarfieldEnEspanol', 'garfieldespanol%20', 'es'),
cls('GarfieldMinusGarfield', 'garfieldminusgarfield'),
cls('GaryMarkstein', 'garymarkstein'),
cls('GaryVarvel', 'garyvarvel'),
cls('GasolineAlley', 'gasolinealley'),
cls('Gaturro', 'espanol/gaturro', 'es'),
cls('Gaturro', 'gaturro', 'es'),
cls('Geech', 'geech'),
cls('GentleCreatures', 'gentle-creatures'),
cls('GetALife', 'getalife'),
@ -433,8 +224,7 @@ class GoComics(_ParserScraper):
cls('Gil', 'gil'),
cls('GilThorp', 'gilthorp'),
cls('GingerMeggs', 'gingermeggs'),
cls('GingerMeggsEnEspaol', 'espanol/gingermeggsespanol', 'es'),
cls('GIRTH', 'girth'),
cls('GingerMeggsEnEspanol', 'gingermeggsespanol%20', 'es'),
cls('GlasbergenCartoons', 'glasbergen-cartoons'),
cls('GlennMcCoy', 'glennmccoy'),
cls('GManWebcomics', 'g-man-webcomics'),
@ -443,52 +233,35 @@ class GoComics(_ParserScraper):
cls('GoComicsFanArt', 'fan-art'),
cls('Graffiti', 'graffiti'),
cls('GrandAvenue', 'grand-avenue'),
cls('GrandmaSnoops', 'grandmasnoops'),
cls('GrannyAnny', 'granny-anny'),
cls('Gravy', 'gravy'),
cls('GrayMatters', 'gray-matters'),
cls('GreenHumour', 'green-humour'),
cls('GreenPieces', 'green-pieces'),
cls('GunstonStreet', 'gunston-street'),
cls('HaikuEwe', 'haikuewe'),
cls('HalfFull', 'half-full'),
cls('HalfFullEnEspaol', 'espanol/half-full-espanol', 'es'),
cls('HallEditorialCartoons', 'hall-editorial-cartoons'),
cls('HaloAndHorns', 'no-place-like-holmes'),
cls('HalfFullEnEspanol', 'half-full-espanol', 'es'),
cls('HamShears', 'ham-shears'),
cls('HaphazardHumor', 'haphazard-humor'),
cls('Headcheese', 'headcheese'),
cls('HealthCapsules', 'healthcapsules'),
cls('HeartOfTheCity', 'heartofthecity'),
cls('Heathcliff', 'heathcliff'),
cls('HeathcliffEnEspaol', 'espanol/heathcliffespanol', 'es'),
cls('HeathcliffEnEspanol', 'heathcliffespanol', 'es'),
cls('HenryPayne', 'henrypayne'),
cls('HerbAndJamaal', 'herbandjamaal'),
cls('Herman', 'herman'),
cls('HermanEnEspaol', 'espanol/herman-en-espanol', 'es'),
cls('HermanEnEspanol', 'herman-en-espanol', 'es'),
cls('HipsterPicnic', 'hipster-picnic'),
cls('Hogwashed', 'hogwashed'),
cls('HomeAndAway', 'homeandaway'),
cls('HomeLife', 'home-life'),
cls('HotComicsForCoolPeople', 'hot-comics-for-cool-people'),
cls('Hubbel', 'hubbel'),
cls('HUBRIS', 'hubris'),
cls('HugoComics', 'hugo-comics'),
cls('HumanCull', 'human-cull'),
cls('HurrieTheMisManager', 'hurrie'),
cls('HuskyTales', 'husky-tales'),
cls('HutchOwen', 'hutch-owen'),
cls('ImagineThis', 'imaginethis'),
cls('InheritTheMirth', 'inherit-the-mirth'),
cls('InkPen', 'inkpen'),
cls('InkwellForest', 'inkwell-forest'),
cls('InSecurity', 'in-security'),
cls('InspectorDangersCrimeQuiz', 'inspector-dangers-crime-quiz'),
cls('InTheBleachers', 'inthebleachers'),
cls('InTheSticks', 'inthesticks'),
cls('InvisibleBread', 'invisible-bread'),
cls('IronyOr', 'irony-or'),
cls('ItsAllAboutYou', 'itsallaboutyou'),
cls('ItsJustJim', 'its-just-jim'),
cls('JackOhman', 'jackohman'),
cls('JanesWorld', 'janesworld'),
cls('JeffDanziger', 'jeffdanziger'),
@ -503,12 +276,9 @@ class GoComics(_ParserScraper):
cls('JoelPett', 'joelpett'),
cls('JoeVanilla', 'joevanilla'),
cls('JohnDeering', 'johndeering'),
cls('JolleyStuffBrowser', 'jolleystuff-browser'),
cls('JumpStart', 'jumpstart'),
cls('JustoYFranco', 'espanol/justo-y-franco', 'es'),
cls('JustoYFranco', 'justo-y-franco', 'es'),
cls('JustSayUncle', 'just-say-uncle'),
cls('KALEECHIKORNERS', 'kaleechi-korners'),
cls('KartoonsByKline', 'kartoons-by-kline'),
cls('KenCatalino', 'kencatalino'),
cls('KevinKallaugher', 'kevinkallaugher'),
cls('KidBeowulf', 'kid-beowulf'),
@ -516,16 +286,15 @@ class GoComics(_ParserScraper):
cls('KidSpot', 'kidspot'),
cls('KidTown', 'kidtown'),
cls('KitchenCapers', 'kitchen-capers'),
cls('KitNCarlyle', 'kitandcarlyle'),
cls('KitNCarlyle', 'kitncarlyle'),
cls('Kliban', 'kliban'),
cls('KlibansCats', 'klibans-cats'),
cls('LaCucaracha', 'lacucaracha'),
cls('LaCucarachaEnEspaol', 'espanol/la-cucaracha-en-espanol', 'es'),
cls('LaffToons', 'lafftoons'),
cls('LaCucarachaEnEspanol', 'la-cucaracha-en-espanol', 'es'),
cls('LaloAlcaraz', 'laloalcaraz'),
cls('LaloAlcarazEnEspaol', 'espanol/laloenespanol', 'es'),
cls('LaloAlcarazEnEspanol', 'laloenespanol', 'es'),
cls('LardsWorldPeaceTips', 'lards-world-peace-tips'),
cls('LasHermanasStone', 'espanol/stonesoup_espanol', 'es'),
cls('LasHermanasStone', 'stonesoup_espanol', 'es'),
cls('LastKiss', 'lastkiss'),
cls('LayLines', 'lay-lines'),
cls('LearnToSpeakCat', 'learn-to-speak-cat'),
@ -533,41 +302,33 @@ class GoComics(_ParserScraper):
cls('LeighLunaComics', 'leigh-luna-comics'),
cls('LibertyMeadows', 'libertymeadows'),
cls('LilAbner', 'lil-abner'),
cls('LiliAndDerek', 'lili-and-derek'),
cls('LilleysSillies', 'lilleys-sillies'),
cls('LimboRoad', 'limbo-road'),
cls('Lio', 'lio'),
cls('LioEnEspaol', 'espanol/lioespanol', 'es'),
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('LolaEnEspaol', 'espanol/lola-en-espanol', 'es'),
cls('LolaEnEspanol', 'lola-en-espanol', 'es'),
cls('LooksGoodOnPaper', 'looks-good-on-paper'),
cls('Loose', 'loose'),
cls('LooseParts', 'looseparts'),
cls('LosOsorios', 'espanol/los-osorios', 'es'),
cls('LosOsorios', 'los-osorios', 'es'),
cls('LostSheep', 'lostsheep'),
cls('LostSideOfSuburbia', 'lostsideofsuburbia'),
cls('Luann', 'luann'),
cls('LuannAgainn', 'luann-againn'),
cls('LuannEnEspaol', 'espanol/luannspanish', 'es'),
cls('Lucan', 'lucan'),
cls('LuannEnEspanol', 'luannspanish', 'es'),
cls('LuckyCow', 'luckycow'),
cls('LugNuts', 'lug-nuts'),
cls('LumAndAbner', 'lum-and-abner'),
cls('Lunarbaboon', 'lunarbaboon'),
cls('MadDogGhettoCop', 'maddogghettocop'),
cls('MagicInAMinute', 'magicinaminute'),
cls('Magnificatz', 'magnificatz'),
cls('Maintaining', 'maintaining'),
cls('MakingIt', 'making-it'),
cls('MariasDay', 'marias-day'),
cls('Marmaduke', 'marmaduke'),
cls('MarmadukeEnEspaol', 'espanol/marmaduke-en-espanol', 'es'),
cls('MarmadukeEnEspanol', 'marmaduke-en-espanol', 'es'),
cls('MarshallRamsey', 'marshallramsey'),
cls('MarysNature', 'marys-nature'),
cls('MattBors', 'matt-bors'),
cls('MattDavies', 'mattdavies'),
cls('MattWuerker', 'mattwuerker'),
@ -579,99 +340,68 @@ class GoComics(_ParserScraper):
cls('MikeDuJour', 'mike-du-jour'),
cls('MikeLester', 'mike-lester'),
cls('MikeLuckovich', 'mikeluckovich'),
cls('Millennialville', 'millennialville'),
cls('Milton50', 'milton-5-0'),
cls('Mindframe', 'mindframe'),
cls('Minihahas', 'vernscartoons'),
cls('MinimumSecurity', 'minimumsecurity'),
cls('MiscSoup', 'misc-soup'),
cls('MisterAndMe', 'mister-and-me'),
cls('MockAll', 'mock-all'),
cls('ModeratelyConfused', 'moderately-confused'),
cls('Molebashed', 'molebashed'),
cls('MollyAndTheBear', 'mollyandthebear'),
cls('Momma', 'momma'),
cls('MomsCancer', 'moms-cancer'),
cls('Mongrels', 'mongrels'),
cls('Monty', 'monty'),
cls('MontyDiaros', 'espanol/monty-diarios', 'es'),
cls('MortsIsland', 'noahs-island'),
cls('MontyDiaros', 'monty-diaros', 'es'),
cls('MotleyClassics', 'motley-classics'),
cls('MrLowe', 'mr-lowe'),
cls('Mulligan', 'mulligan'),
cls('MustardAndBoloney', 'mustard-and-boloney'),
cls('MuttAndJeff', 'muttandjeff'),
cls('MyCageNewAndOld', 'mycage'),
cls('MySonIsADog', 'my-son-is-a-dog'),
cls('MythTickle', 'mythtickle'),
cls('Nancy', 'nancy'),
cls('NancyClassics', 'nancy-classics'),
cls('NateElGrande', 'espanol/nate-el-grande', 'es'),
cls('NavyBean', 'navybean'),
cls('NedAndLarry', 'ned-and-larry'),
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('NoAmbiguity', 'no-ambiguity'),
cls('NoBusinessIKnow', 'nobusinessiknow'),
cls('NonSequitur', 'nonsequitur'),
cls('NoOrdinaryLife', 'no-ordinary-life'),
cls('NothingIsNotSomething', 'nothing-is-not-something'),
cls('NotInventedHere', 'not-invented-here'),
cls('NowRecharging', 'now-recharging'),
cls('Npchumorcom', 'npchumor'),
cls('OffTheMark', 'offthemark'),
cls('OhBrother', 'oh-brother'),
cls('OllieAndQuentin', 'ollie-and-quentin'),
cls('OnAClaireDay', 'onaclaireday'),
cls('OneBigHappy', 'onebighappy'),
cls('OneFunnyGoldenRetriever', 'one-funny-golden-retriever'),
cls('ONIONAndPEA', 'onion-and-pea'),
cls('OrdinaryBill', 'ordinary-bill'),
cls('OriginsOfTheSundayComics', 'origins-of-the-sunday-comics'),
cls('OscarAndAnnie', 'oscar-and-annie'),
cls('OutOfTheGenePoolReRuns', 'outofthegenepool'),
cls('Overboard', 'overboard'),
cls('OverboardEnEspaol', 'espanol/overboardespanol', 'es'),
cls('OverQuirked', 'over-quirked'),
cls('OverboardEnEspanol', 'overboardespanol', 'es'),
cls('OverTheHedge', 'overthehedge'),
cls('Owlturd', 'owlturd'),
cls('OzyAndMillie', 'ozy-and-millie'),
cls('PaddedCell', 'padded-cell'),
cls('Painterly', 'sparcomics'),
cls('PalAndBuddy', 'pal-and-buddy'),
cls('PatOliphant', 'patoliphant'),
cls('PaulSzep', 'paulszep'),
cls('PawsForThoughtComics', 'paws-for-thought-comics'),
cls('PCAndPixel', 'pcandpixel'),
cls('Peanuts', 'peanuts'),
cls('PeanutsBegins', 'peanuts-begins'),
cls('PeanutsEnEspaol', 'espanol/peanuts-espanol', 'es'),
cls('PeanutsEnEspanol', 'peanuts-espanol', 'es'),
cls('PeanutsHolidayCountdown', 'peanuts-holiday-countdown'),
cls('PearlsBeforeSwine', 'pearlsbeforeswine'),
cls('Peeples', 'peeples'),
cls('PeopleOfEarth', 'frankblunt'),
cls('Periquita', 'espanol/periquita', 'es'),
cls('PerlasParaLosCerdos', 'espanol/perlas-para-los-cerdos', 'es'),
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('PicpakDog', 'picpak-dog'),
cls('PicturesInBoxes', 'pictures-in-boxes'),
cls('PieComic', 'pie-comic'),
cls('Pinkerton', 'pinkerton'),
cls('PirateMike', 'pirate-mike'),
cls('PlanB', 'planb'),
cls('PleaseListenToMe', 'please-listen-to-me'),
cls('Pluggers', 'pluggers'),
cls('PoliceLimit', 'policelimit'),
cls('PoliticallyMad', 'politically-mad'),
cls('PoliticularJokesAndRuffus', 'politcular-jokes-and-ruffas'),
cls('PoochCafe', 'poochcafe'),
cls('Poorcraft', 'poorcraft'),
cls('PoorlyDrawnLines', 'poorly-drawn-lines'),
@ -680,13 +410,8 @@ class GoComics(_ParserScraper):
cls('PotShots', 'pot-shots'),
cls('PreTeena', 'preteena'),
cls('PricklyCity', 'pricklycity'),
cls('Prideland', 'prideland'),
cls('PrimusTheBadPhilosopher', 'primus-the-bad-philosopher'),
cls('ProfessorHerbertAndGEO', 'professor-herbert-and-geo'),
cls('PromisesPromises', 'promises-promises'),
cls('QueenBlackbeard', 'queen-blackbeard'),
cls('QuestionableQuotebook', 'questionable-quotebook'),
cls('QuickDraw', 'quickdraw'),
cls('RabbitsAgainstMagic', 'rabbitsagainstmagic'),
cls('RaisingDuncan', 'raising-duncan'),
cls('RandolphItch2Am', 'randolphitch'),
@ -698,62 +423,42 @@ class GoComics(_ParserScraper):
cls('ReplyAll', 'replyall'),
cls('ReplyAllLite', 'reply-all-lite'),
cls('RichardsPoorAlmanac', 'richards-poor-almanac'),
cls('Ringers', 'ringers'),
cls('RipHaywire', 'riphaywire'),
cls('RipleysBelieveItOrNot', 'ripleysbelieveitornot'),
cls('RipleysBelieveItOrNotSpanish', 'espanol/ripleys-en-espanol', 'es'),
cls('RipleysBelieveItOrNotSpanish', 'ripleys-en-espanol', 'es'),
cls('RobbieAndBobby', 'robbie-and-bobby'),
cls('RobertAriail', 'robert-ariail'),
cls('RobRogers', 'robrogers'),
cls('RonWarren', 'ron-warren'),
cls('RosaDominical', 'espanol/rosa-dominical', 'es'),
cls('RosaDominical', 'rosa-dominical', 'es'),
cls('RoseIsRose', 'roseisrose'),
cls('Rubes', 'rubes'),
cls('RudyPark', 'rudypark'),
cls('Rufus', 'rufus'),
cls('SandSharkBeach', 'sandshark-beach'),
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('SharpCurveComics', 'sharp-curve-comics'),
cls('Sheldon', 'sheldon'),
cls('SherpaAid', 'sherpaaid'),
cls('ShirleyAndSonClassics', 'shirley-and-son-classics'),
cls('Shoe', 'shoe'),
cls('Shoecabbage', 'shoecabbage'),
cls('Shortcuts', 'shortcuts'),
cls('ShutterbugFollies', 'shutterbug-follies'),
cls('SigneWilkinson', 'signewilkinson'),
cls('SignGarden', 'signgarden'),
cls('SignsOfAFrustratedGolfer', 'signs-of-a-frustrated-golfer'),
cls('SketchsharkComics', 'sketchshark-comics'),
cls('SketchyChics', 'sketchy-chics'),
cls('SkinHorse', 'skinhorse'),
cls('Skippy', 'skippy'),
cls('Skull', 'skull'),
cls('Skylarking', 'skylarking'),
cls('SleepytownBeagles', 'sleepytown-beagles'),
cls('SmallNerdyCreatures', 'small-nerdy-creatures'),
cls('Smith', 'smith'),
cls('Snootle', 'snootle'),
cls('SmallPotatoes', 'small-potatoes'),
cls('Snowflakes', 'snowflakes'),
cls('SnowSez', 'snow-sez'),
cls('SoccerDude', 'soccer-dude'),
cls('SoccerEarth', 'soccer-earth'),
cls('SOD', 'sod'),
cls('SomethingAboutCeleste', 'something-about-celeste'),
cls('SookyRottweiler', 'sooky-rottweiler'),
cls('Soulmates', 'soulmates'),
cls('SoupToNutz', 'soup-to-nutz'),
cls('Spaceport51', 'spaceport-51'),
cls('Speechless', 'speechless'),
cls('SpeedBump', 'speedbump'),
cls('SportsByVoort', 'sports-by-voort'),
cls('SpiritOfTheStaircase', 'spirit-of-the-staircase'),
cls('SpotTheFrog', 'spot-the-frog'),
cls('StaleCrackers', 'clifton'),
cls('StankoAndTibor', 'stankotibor'),
cls('Starling', 'starling'),
cls('Starslip', 'starslip'),
cls('SteveBenson', 'stevebenson'),
@ -764,19 +469,15 @@ class GoComics(_ParserScraper):
cls('StoneSoupClassics', 'stone-soup-classics'),
cls('StrangeBrew', 'strangebrew'),
cls('StuartCarlson', 'stuartcarlson'),
cls('SubSub', 'subsub'),
cls('SuburbanFairyTales', 'suburban-fairy-tales'),
cls('SUITSANDGUARDERS', 'suits-and-guarders'),
cls('SunnyStreet', 'sunny-street'),
cls('SunshineState', 'sunshine-state'),
cls('SuperFunPakComix', 'super-fun-pak-comix'),
cls('SuperSiblings', 'super-siblings'),
cls('SweetAndSourPork', 'sweet-and-sour-pork'),
cls('Sylvia', 'sylvia'),
cls('TankMcNamara', 'tankmcnamara'),
cls('Tarzan', 'tarzan'),
cls('TarzanEnEspaol', 'espanol/tarzan-en-espanol', 'es'),
cls('TedRall', 'tedrall'),
cls('TarzanEnEspanol', 'tarzan-en-espanol', 'es'),
cls('TedRall', 'ted-rall'),
cls('TenCats', 'ten-cats'),
cls('Thatababy', 'thatababy'),
cls('ThatIsPriceless', 'that-is-priceless'),
@ -785,68 +486,47 @@ class GoComics(_ParserScraper):
cls('ThatsLife', 'thats-life'),
cls('TheAcademiaWaltz', 'academiawaltz'),
cls('TheAdventuresOfBusinessCat', 'the-adventures-of-business-cat'),
cls('TheAngryGamer', 'the-angry-gamer'),
cls('TheArgyleSweater', 'theargylesweater'),
cls('TheAwkwardYeti', 'the-awkward-yeti'),
cls('TheBarn', 'thebarn'),
cls('TheBeauforts', 'the-beauforts'),
cls('TheBellies', 'the-bellies'),
cls('TheBentPinky', 'the-bent-pinky'),
cls('TheBestMedicineCartoon', 'the-best-medicine'),
cls('TheBigPicture', 'thebigpicture'),
cls('TheBoobiehatch', 'the-boobiehatch'),
cls('TheBoondocks', 'boondocks'),
cls('TheBornLoser', 'the-born-loser'),
cls('TheBuckets', 'thebuckets'),
cls('TheCardinal', 'thecardinal'),
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('TheDinkledorfs', 'the-dinkledorfs'),
cls('TheDoozies', 'thedoozies'),
cls('TheDuplex', 'duplex'),
cls('TheElderberries', 'theelderberries'),
cls('TheEntrepiranha', 'the-entrepiranha'),
cls('TheFabulousBushPigs', 'the-fabulous-bush-pigs'),
cls('TheFlyingMcCoys', 'theflyingmccoys'),
cls('TheFuscoBrothers', 'thefuscobrothers'),
cls('TheGentlemansArmchair', 'the-gentlemans-armchair'),
cls('TheGrayZone', 'the-gray-zone'),
cls('TheGreenMonkeys', 'thegreenmonkeys'),
cls('TheGrizzwells', 'thegrizzwells'),
cls('TheHumbleStumble', 'humble-stumble'),
cls('TheKChronicles', 'thekchronicles'),
cls('TheKnightLife', 'theknightlife'),
cls('TheLeftyBoscoPictureShow', 'leftyboscopictureshow'),
cls('TheLostBear', 'the-lost-bear'),
cls('TheMagicForest', 'the-magic-forest'),
cls('TheMartianConfederacy', 'the-martian-confederacy'),
cls('TheMeaningOfLila', 'meaningoflila'),
cls('TheMiddletons', 'themiddletons'),
cls('TheMothManAndLarvaeBoy', 'the-mothman-and-larvae-boy'),
cls('TheMountainMen', 'the-mountain-men'),
cls('TheNeighborhood', 'the-neighborhood'),
cls('TheNevilleYouKnow', 'the-neville-you-know'),
cls('TheNonsenseNewz', 'the-nonsense-newz'),
cls('TheNorm40', 'the-norm-4-0'),
cls('TheNormClassics', 'thenorm'),
cls('TheOldManAndHisDog', 'old-man-and-his-dog'),
cls('TheOtherCoast', 'theothercoast'),
cls('TheOtherEnd', 'the-other-end'),
cls('TheQuinnAndFinnShow', 'quinn-and-finn'),
cls('TheQuixoteSyndrome', 'the-quixote-syndrome'),
cls('TheRocks', 'the-rocks'),
cls('TheSunshineClub', 'the-sunshine-club'),
cls('TheUnemployed', 'the-unemployed'),
cls('TheWagesOfSindy', 'the-wages-of-sindy'),
cls('TheUpsideDownWorldOfGustaveVerbeek', 'upside-down-world-of-gustave-verbeek'),
cls('TheWanderingMelon', 'the-wandering-melon'),
cls('TheWizardOfIdSpanish', 'espanol/wizardofidespanol', 'es'),
cls('TheWizardOfIdSpanish', 'wizardofidespanol', 'es'),
cls('TheWorriedWell', 'the-worried-well'),
cls('TheWorstThingIveEverDone', 'the-worst-thing-ive-ever-done'),
cls('Thingsesque', 'thingsesque'),
cls('think', 'think'),
cls('ThinLines', 'thinlines'),
cls('TimEagan', 'tim-eagan'),
@ -854,27 +534,19 @@ class GoComics(_ParserScraper):
cls('TinySepuku', 'tinysepuku'),
cls('TOBY', 'toby'),
cls('TodaysDogg', 'todays-dogg'),
cls('TodaysTrump', 'todays-trump'),
cls('TomTheDancingBug', 'tomthedancingbug'),
cls('TomToles', 'tomtoles'),
cls('TooMuchCoffeeMan', 'toomuchcoffeeman'),
cls('TopicToons', 'topictoons'),
cls('ToughTown', 'tough-town'),
cls('ToxicValues', 'toxic-values'),
cls('Trivquiz', 'trivquiz'),
cls('Trucutu', 'espanol/trucutu', 'es'),
cls('TruthBeKnown', 'truth-be-known'),
cls('Trucutu', 'trucutu', 'es'),
cls('TruthFacts', 'truth-facts'),
cls('TuesdaysWithCory', 'tuesdays-with-cory'),
cls('Tutelandia', 'espanol/tutelandia', 'es'),
cls('Tutelandia', 'tutelandia', 'es'),
cls('UncleArtsFunland', 'uncleartsfunland'),
cls('Underdone', 'underdone'),
cls('UnderstandingChaos', 'understanding-chaos'),
cls('UnMannerlyWays', 'mannerly-ways'),
cls('UnstrangePhenomena', 'unstrange-phenomena'),
cls('UpAndOut', 'up-and-out'),
cls('USAcres', 'us-acres'),
cls('ViewFromTheCouch', 'view-from-the-couch'),
cls('ViewsAfrica', 'viewsafrica'),
cls('ViewsAmerica', 'viewsamerica'),
cls('ViewsAsia', 'viewsasia'),
@ -884,22 +556,16 @@ class GoComics(_ParserScraper):
cls('ViewsMidEast', 'viewsmideast'),
cls('ViewsOfTheWorld', 'viewsoftheworld'),
cls('ViiviAndWagner', 'viivi-and-wagner'),
cls('VoicesInTheDark', 'voices-in-the-dark'),
cls('WallaceTheBrave', 'wallace-the-brave'),
cls('WaltHandelsman', 'walthandelsman'),
cls('Warped', 'warped'),
cls('WarpedAndDemented', 'warped-and-demented'),
cls('Waskataskahiskewaskewan', 'waskataskahiskewaskewan'),
cls('WatchYourHead', 'watchyourhead'),
cls('WaynoVision', 'waynovision'),
cls('WayOutComics', 'way-out-comics'),
cls('WeaselInk', 'weasel-ink'),
cls('WeePals', 'weepals'),
cls('WhiskeyFalls', 'whiskey-falls'),
cls('WeTheRobots', 'we-the-robots'),
cls('WickedCrispy', 'wicked-crispy'),
cls('Widdershins', 'widdershins'),
cls('WideOpen', 'wide-open'),
cls('Windsock', 'windsock'),
cls('WinLoseDrew', 'drewlitton'),
cls('Winston', 'winston'),
cls('WitOfTheWorld', 'witoftheworld'),
@ -909,21 +575,16 @@ class GoComics(_ParserScraper):
cls('WorkingDaze', 'working-daze'),
cls('WorkingItOut', 'workingitout'),
cls('WorldOfWonder', 'world-of-wonder'),
cls('WrobbertCartoons', 'wrobbertcartoons'),
cls('WrongHands', 'wrong-hands'),
cls('WTDuck', 'wtduck'),
cls('WuMo', 'wumo'),
cls('WumoEnEspaol', 'espanol/wumoespanol', 'es'),
cls('WumoEnEspanol', 'wumoespanol', 'es'),
cls('Wyatt', 'wyatt'),
cls('YennyEnEspaol', 'espanol/yennyespanol', 'es'),
cls('YennyEnEspanol', 'yennyespanol', 'es'),
cls('YennyLopez', 'yenny-lopez'),
cls('YinYangster', 'yin-yangster'),
cls('ZackHill', 'zackhill'),
cls('ZenPencils', 'zen-pencils'),
cls('Ziggy', 'ziggy'),
cls('ZiggyEnEspaol', 'espanol/ziggyespanol', 'es'),
cls('ZITO', 'zito'),
cls('ZombieHeights', 'zombie-heights'),
cls('Zootopia', 'zootopia'),
cls('ZiggyEnEspanol', 'ziggyespanol', 'es'),
# END AUTOUPDATE
)

View file

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2004-2008 Tristan Seligmann and Jonathan Jacobs
# Copyright (C) 2012-2014 Bastian Kleineidam
# Copyright (C) 2015-2016 Tobias Gruetzmacher
# Copyright (C) 2015-2017 Tobias Gruetzmacher
"""
Script to get a list of gocomics and save the info in a JSON file for further
processing.
@ -15,46 +15,28 @@ from scriptutil import ComicListUpdater
class GoComicsUpdater(ComicListUpdater):
# names of comics to exclude
excluded_comics = (
# "coming soon"
"AngryProgrammer",
"Complex",
"Guinness",
"Jabberwoncky",
"Moments",
"Pi",
"RandysRationale",
"SignsOfOurTimes",
"TheGagwriter",
"Yaoyao",
# duplicate
"Dilbert",
"SaturdayMorningBreakfastCereal",
# not available
"BillyAndCo",
"BuffaloChips",
"Crawdiddy",
# too short
'LukeyMcGarrysTLDR',
)
def handle_url(self, url):
"""Parse one search result page."""
def handle_gocomics(self, url, outercss='a.amu-media-item-link', lang=None):
"""Parse one GoComics alphabetic page."""
data = self.get_url(url, expand=False)
for comiclink in data.cssselect('a.alpha_list'):
for comiclink in data.cssselect(outercss):
link = comiclink.attrib['href']
name = comiclink.text
self.add_comic(name, link)
name = comiclink.cssselect('h4')[0].text
self.add_comic(name, (link, lang))
def collect_results(self):
"""Parse all listing pages."""
self.handle_url('http://www.gocomics.com/features')
self.handle_url('http://www.gocomics.com/explore/espanol')
self.handle_url('http://www.gocomics.com/explore/editorial_list')
self.handle_url('http://www.gocomics.com/explore/sherpa_list')
for part in ('a-b', 'c-e', 'f-i', 'j-n', 'o-r', 's-t', 'u-%23'):
self.handle_gocomics('http://www.gocomics.com/comics/a-to-z?page=' + part)
self.handle_gocomics('http://www.gocomics.com/comics/espanol', 'a.gc-card-item', 'es')
def get_entry(self, name, url):
langopt = ", 'es'" if 'espanol/' in url else ''
def get_entry(self, name, data):
url, lang = data
langopt = ", '%s'" % lang if lang else ''
return u"cls('%s', '%s'%s)," % (name, url[1:], langopt)