diff --git a/dosagelib/plugins/gocomics.py b/dosagelib/plugins/gocomics.py index a3d7fd9ad..8c46bfb32 100644 --- a/dosagelib/plugins/gocomics.py +++ b/dosagelib/plugins/gocomics.py @@ -41,11 +41,27 @@ class _GoComics(_ParserScraper): return data.xpath('//img[contains(@src, "content-error-missing")]') +class _GoComicsEs(_GoComics): + lang = 'es' + + # old comics removed from the listing +class GCAbnormalTruth(_GoComics): + path = 'abnormal-truth' + + +class GCABootsAndPupComic(_GoComics): + path = 'a-boots-and-pup-comic' + + class GCAdventuresofDaisy(_GoComics): path = 'Adventures-of-Daisy' +class GCAdventuresOfMartyAndTurkey(_GoComics): + path = 'marty-and-turkey' + + class GCAdventuresofMikeAndSimon(_GoComics): path = 'adventures-of-mike-and-simon' @@ -62,6 +78,10 @@ class GCBenAndSeymour(_GoComics): path = 'ben-seymour' +class GCBERSERKALERT(_GoComics): + path = 'berserk-alert' + + class GCBestInShow(_GoComics): path = 'best-in-show' @@ -70,18 +90,54 @@ class GCBobtheGroanUP(_GoComics): path = 'bob-the-groanup' +class GCCalAndOzz(_GoComics): + path = 'cal-and-ozz' + + +class GCCandyPills(_GoComics): + path = 'candy-pills' + + class GCCartertoons(_GoComics): path = 'cartertoons' +class GCCatsAtWork(_GoComics): + path = 'cats-at-work' + + +class GCChasingUnicorns(_GoComics): + path = 'chasing-unicorns' + + +class GCChubbyGirlComics(_GoComics): + path = 'chubbygirlcomics' + + +class GCClassifudds(_GoComics): + path = 'classifudds' + + class GCCockroachComix(_GoComics): path = 'cockroachcomix' +class GCColonelKernel(_GoComics): + path = 'colonel-kernel' + + class GCCowSheepandaGnomeNamedHelga(_GoComics): path = 'cow-sheep-and-a-gnome-named-helga' +class GCCoyoteVille(_GoComics): + path = 'coyteville' + + +class GCCrooksville(_GoComics): + path = 'crooksville' + + class GCDabneyandDad(_GoComics): path = 'dabney-and-dad' @@ -90,22 +146,30 @@ class GCDialHforHBomb(_GoComics): path = 'dial-h-for-h-bomb' +class GCDiligentCity(_GoComics): + path = 'diligent-city' + + class GCDitzAbledPrincess(_GoComics): path = 'ditzabled-princess' +class GCDogsDucksandAliens(_GoComics): + path = 'dogs-ducks-and-aliens' + + class GCDoodleDaysComics(_GoComics): path = 'doodle-days' -class GCDragin(_GoComics): - path = 'dragin' - - class GCEBEJeebie(_GoComics): path = 'ebe-jeebie' +class GCEconogirl(_GoComics): + path = 'econogirl' + + class GCEDITORIALPASTANDPRESENT(_GoComics): path = 'editorial-past-and-present' @@ -118,6 +182,10 @@ class GCElfandMotorbelly(_GoComics): path = 'elf-and-motorbelly' +class GCEspressoCity(_GoComics): + path = 'Espresso-City' + + class GCEngagAndNevets(_GoComics): path = 'engag-nevets' @@ -138,6 +206,10 @@ class GCFeatherweight(_GoComics): path = 'featherweight' +class GCFleasonFlick(_GoComics): + path = 'fleasonflick' + + class GCFrizziToons(_GoComics): path = 'frizzitoons' @@ -146,20 +218,24 @@ class GCFundayMorning(_GoComics): path = 'funday-morning' +class GCGatorsAndSuch(_GoComics): + path = 'gators-and-such' + + +class GCGenerationMute(_GoComics): + path = 'generation-mute' + + class GCGetAGrip(_GoComics): path = 'get-a-grip' -class GCGunstonStreet(_GoComics): - path = 'gunston-street' - - class GCHanginOut(_GoComics): path = 'hangin-out' -class GCHarambeeHills(_GoComics): - path = 'harambeehills' +class GCHanktheSock(_GoComics): + path = 'hank-the-sock' class GCHbenson7(_GoComics): @@ -178,6 +254,10 @@ class GCHolySchnark(_GoComics): path = 'holy-schnark!' +class GCHumblebeeandBob(_GoComics): + path = 'humblebee-and-bob' + + class GCHumoresque(_GoComics): path = 'humoresque' @@ -186,10 +266,34 @@ class GCImaDillo(_GoComics): path = 'i-m-a-dillo' +class GCImTellingMom(_GoComics): + path = 'telling-mom' + + +class GCIsleofEx(_GoComics): + path = 'isle-of-ex' + + +class GCJillpokeBohemia(_GoComics): + path = 'jillpoke-bohemia' + + +class GCJordanandBentley(_GoComics): + path = 'jordan-and-bentley' + + +class GCKirbysTreehouse(_GoComics): + path = 'kirbys-treehouse' + + class GCKozmooftheCosmos(_GoComics): path = 'kozmoofthecosmos' +class GCLardWantsWorldPeace(_GoComics): + path = 'lard-wants-world-peace' + + class GCLeadbellies(_GoComics): path = 'leadbellies' @@ -198,6 +302,10 @@ class GCLeGooseyLu(_GoComics): path = 'LeGoosey-Lu' +class GCLIGHTERSIDE(_GoComics): + path = 'lighter-side' + + class GCLostInTranslation(_GoComics): path = 'lost-in-translation' @@ -214,14 +322,22 @@ class GCMaryBWary(_GoComics): path = 'mary-b-wary' -class GCMidLifewAlan(_GoComics): - path = 'mid-life-with-alan' +class GCMaximus(_GoComics): + path = 'maximus' + + +class GCMick(_GoComics): + path = 'mick' class GCMixedMedications(_GoComics): path = 'mixedmedications' +class GCMortimer(_GoComics): + path = 'mortimer' + + class GCMrMorris(_GoComics): path = 'mr-morris' @@ -238,10 +354,6 @@ class GCNeatStep(_GoComics): path = 'neatstep' -class GCNedAndLarry(_GoComics): - path = 'ned-and-larry' - - class GCNeighborhoodZone(_GoComics): path = 'neightborhood-zone' @@ -250,6 +362,18 @@ class GCNobodysHome(_GoComics): path = 'nobodys-home' +class GCNoPlaceLikeHolmes(_GoComics): + path = 'no-place-like-holmes' + + +class GCOat(_GoComics): + path = 'oat' + + +class GCObamaandtheFatman(_GoComics): + path = 'obama-and-the-fatman' + + class GCOntheQuad(_GoComics): path = 'on-the-quad' @@ -262,18 +386,42 @@ class GCOutnumbered(_GoComics): path = 'outnumbered' +class GCPamosWorld(_GoComics): + path = 'pamos-world' + + class GCParisDoodles(_GoComics): path = 'mo-willems-paris-doodles' +class GCPeanizles(_GoComics): + path = 'peanizles' + + class GCPetFood(_GoComics): path = 'pet-food' +class GCPigtimesCartoon(_GoComics): + path = 'pigtimes-cartoon' + + +class GCPipethePelican(_GoComics): + path = 'pipe-the-pelican' + + +class GCPlasticBabyHeadsfromOuterSpace(_GoComics): + path = 'plastic-babyheads' + + class GCPlentyofPenguins(_GoComics): path = 'plenty-of-penguins' +class GCPuppets(_GoComics): + path = 'puppets' + + class GCPutz(_GoComics): path = 'putz' @@ -282,22 +430,46 @@ class GCQuestionsForKids(_GoComics): path = 'questions-for-kids' +class GCRegularCreatures(_GoComics): + path = 'regular-creatures' + + class GCRogueSymmetry(_GoComics): path = 'rogue_symmetry' +class GCRosy(_GoComics): + path = 'rosy' + + class GCSabine(_GoComics): path = 'sabine' +class GCSCAIRYTALESTheNotSoScaryFairyTales(_GoComics): + path = 'Scairy-Tales:-the-not-so-scary-fairy-tales!' + + class GCSecondPrize(_GoComics): path = 'secondprize' +class GCSincerelyBeatrice(_GoComics): + path = 'sincerely-beatrice' + + class GCSkooled(_GoComics): path = 'skooled' +class GCSmallNerdyCreatures(_GoComics): + path = 'small-nerdy-creatures' + + +class GCSpinCrazy(_GoComics): + path = 'spin-crazy' + + class GCSNAFU(_GoComics): path = 'snafu' @@ -330,6 +502,10 @@ class GCSuckerHeadSmack(_GoComics): path = 'suckerhead-smack' +class GCTheAdventuresofHeromanGuy(_GoComics): + path = 'adventures-of-heroman-guy' + + class GCTheAdventuresofTeetyBallerina(_GoComics): path = 'the-adventures-of-teety-ballerina' @@ -338,6 +514,10 @@ class GCTheEdperiment(_GoComics): path = 'the-edperiment' +class GCTheFamilyBlend(_GoComics): + path = 'the-family-blend' + + class GCTheFruitBowl(_GoComics): path = 'thefruitbowl' @@ -346,6 +526,14 @@ class GCTheGoldenKid(_GoComics): path = 'golden-kid' +class GCTheInsolentLemon(_GoComics): + path = 'the-insolent-lemon' + + +class GCTheLightedLab(_GoComics): + path = 'the-lighted-lab' + + class GCTheLilMiesters(_GoComics): path = 'the-lil-miesters' @@ -366,10 +554,18 @@ class GCTheVernalPool(_GoComics): path = 'vernal-pool' +class GCTheWinyChild(_GoComics): + path = 'the-winy-child' + + class GCThrompTM(_GoComics): path = 'thromp' +class GCTnCComics(_GoComics): + path = 'tnc-comics' + + class GCToBeNamed(_GoComics): path = 'to-be-named' @@ -386,14 +582,46 @@ class GCTOWHOMITMAYCONCERN(_GoComics): path = 'towhomitmayconcern' +class GCTwitchyOToole(_GoComics): + path = 'twitchy-otoole' + + +class GCTwoBits(_GoComics): + path = 'two-bits' + + +class GCVernscartoons(_GoComics): + path = 'vernscartoons' + + class GCWayOutInLeftField(_GoComics): path = 'Way-Out-In-Left-Field' +class GCWelcometoFriendly(_GoComics): + path = 'welcome-to-friendly' + + +class GCWendlesLife(_GoComics): + path = 'wendleslife' + + class GCWhatcatscanandcantdo(_GoComics): path = 'whatcatscanandcantdo' +class GCWillSays(_GoComics): + path = 'will-says' + + +class GCWillyWho(_GoComics): + path = 'willy-who' + + +class GCWindingRoads(_GoComics): + path = 'winding-roads' + + class GCYouGuysAreMyFriendsTheComic(_GoComics): path = 'you-guys-are-my-friends' @@ -407,42 +635,42 @@ class GC060(_GoComics): path = '0-60' -class GC2CowsandaChicken(_GoComics): +class GC1AndDone(_GoComics): + path = '1-and-done' + + +class GC2CowsAndAChicken(_GoComics): path = '2cowsandachicken' -class GC5thYearSenior(_GoComics): - path = '5th-year-senior' - - class GC9ChickweedLane(_GoComics): path = '9chickweedlane' -class GC9to5(_GoComics): +class GC9To5(_GoComics): path = '9to5' +class GCAaronGuile(_GoComics): + path = 'aaron-guile' + + class GCABitSketch(_GoComics): path = 'a-bit-sketch' -class GCAbnormalTruth(_GoComics): - path = 'abnormal-truth' - - class GCABomb(_GoComics): path = 'a-bomb' -class GCABootsAndPupComic(_GoComics): - path = 'a-boots-and-pup-comic' - - class GCACMEINKD(_GoComics): path = 'acme-inkd' +class GCAcornPark(_GoComics): + path = 'acorn-park' + + class GCAdamAtHome(_GoComics): path = 'adamathome' @@ -455,14 +683,18 @@ class GCAdultChildren(_GoComics): path = 'adult-children' -class GCAdventuresofMartyandTurkey(_GoComics): - path = 'marty-and-turkey' +class GCAgentGates(_GoComics): + path = 'agent-gates' class GCAgnes(_GoComics): path = 'agnes' +class GCAJAndMagnus(_GoComics): + path = 'aj-and-magnus' + + class GCAlisonWard(_GoComics): path = 'alison-ward' @@ -471,7 +703,11 @@ class GCAlleyOop(_GoComics): path = 'alley-oop' -class GCAmandatheGreat(_GoComics): +class GCAllInGoodTime(_GoComics): + path = 'all-in-good-time' + + +class GCAmandaTheGreat(_GoComics): path = 'amanda-the-great' @@ -483,7 +719,7 @@ class GCAndertoons(_GoComics): path = 'andertoons' -class GCAndnow(_GoComics): +class GCAndNow(_GoComics): path = 'and-now' @@ -499,6 +735,10 @@ class GCAngryLittleGirls(_GoComics): path = 'angry-little-girls' +class GCAngryProgrammer(_GoComics): + path = 'angryprogrammer' + + class GCAnimalCrackers(_GoComics): path = 'animalcrackers' @@ -507,34 +747,50 @@ class GCAnnie(_GoComics): path = 'annie' -class GCAPEanimalpuns4every1(_GoComics): - path = 'ape' - - class GCAppleCreekComics(_GoComics): path = 'apple-creek' -class GCArloandJanis(_GoComics): +class GCArloAndJanis(_GoComics): path = 'arloandjanis' +class GCAskACat(_GoComics): + path = 'ask-a-cat' + + class GCAskShagg(_GoComics): path = 'askshagg' +class GCATasteOfTimes(_GoComics): + path = 'a-taste-of-times' + + +class GCAtTheZoo(_GoComics): + path = 'at-the-zoo' + + class GCAuntyAcid(_GoComics): path = 'aunty-acid' -class GCBackintheDay(_GoComics): +class GCBackInTheDay(_GoComics): path = 'backintheday' +class GCBackToBC(_GoComics): + path = 'back-to-bc' + + class GCBadlands(_GoComics): path = 'badlands' +class GCBadMachinery(_GoComics): + path = 'bad-machinery' + + class GCBadReporter(_GoComics): path = 'badreporter' @@ -543,7 +799,7 @@ class GCBaldo(_GoComics): path = 'baldo' -class GCBaldoenEspaol(_GoComics): +class GCBaldoEnEspaol(_GoComicsEs): path = 'espanol/baldoespanol' @@ -579,11 +835,11 @@ class GCBC(_GoComics): path = 'bc' -class GCBCenEspaol(_GoComics): +class GCBCEnEspaol(_GoComicsEs): path = 'espanol/bcespanol' -class GCBeanietheBrownie(_GoComics): +class GCBeanieTheBrownie(_GoComics): path = 'beanie-the-brownie' @@ -599,14 +855,18 @@ class GCBen(_GoComics): path = 'ben' -class GCBeneaththeFerns(_GoComics): +class GCBeneathTheFerns(_GoComics): path = 'beneath-the-ferns' -class GCBenitinyEneas(_GoComics): +class GCBenitinYEneas(_GoComicsEs): path = 'espanol/muttandjeffespanol' +class GCBentObjects(_GoComics): + path = 'bent-objects' + + class GCBergerAndWyse(_GoComics): path = 'berger-and-wyse' @@ -615,10 +875,6 @@ class GCBerkeleyMews(_GoComics): path = 'berkeley-mews' -class GCBERSERKALERT(_GoComics): - path = 'berserk-alert' - - class GCBetty(_GoComics): path = 'betty' @@ -631,6 +887,10 @@ class GCBiffAndRiley(_GoComics): path = 'biff-and-riley' +class GCBigJim(_GoComics): + path = 'bigjim' + + class GCBigNate(_GoComics): path = 'bignate' @@ -655,6 +915,10 @@ class GCBirdbrains(_GoComics): path = 'birdbrains' +class GCBleekerTheRechargeableDog(_GoComics): + path = 'bleeker' + + class GCBliss(_GoComics): path = 'bliss' @@ -663,6 +927,10 @@ class GCBloomCounty(_GoComics): path = 'bloomcounty' +class GCBloomCounty2015(_GoComics): + path = 'bloom-county' + + class GCBluebonnets(_GoComics): path = 'cowsandstuff' @@ -675,18 +943,18 @@ class GCBobGorrell(_GoComics): path = 'bobgorrell' -class GCBobtheSquirrel(_GoComics): +class GCBobTheSquirrel(_GoComics): path = 'bobthesquirrel' +class GCBoltsAndNuts(_GoComics): + path = 'bolts-and-nuts' + + class GCBoNanas(_GoComics): path = 'bonanas' -class GCBoogerbrain(_GoComics): - path = 'boogerbrain' - - class GCBoomerangs(_GoComics): path = 'boomerangs' @@ -695,10 +963,6 @@ class GCBork(_GoComics): path = 'bork' -class GCBotBrothers(_GoComics): - path = 'bot-brothers' - - class GCBottAuto(_GoComics): path = 'bott-auto' @@ -707,10 +971,14 @@ class GCBottomliners(_GoComics): path = 'bottomliners' -class GCBoundandGagged(_GoComics): +class GCBoundAndGagged(_GoComics): path = 'boundandgagged' +class GCBradsPit(_GoComics): + path = 'brads-pit' + + class GCBrainSquirts(_GoComics): path = 'brain-squirts' @@ -719,7 +987,7 @@ class GCBreakingCatNews(_GoComics): path = 'breaking-cat-news' -class GCBreakofDay(_GoComics): +class GCBreakOfDay(_GoComics): path = 'break-of-day' @@ -735,10 +1003,6 @@ class GCBrianMcFadden(_GoComics): path = 'brian-mcfadden' -class GCBrilliantMines(_GoComics): - path = 'brilliant-mines' - - class GCBroomHilda(_GoComics): path = 'broomhilda' @@ -759,15 +1023,11 @@ class GCBUNS(_GoComics): path = 'buns' -class GCBUSHYTALES(_GoComics): +class GCBushyTales(_GoComics): path = 'bushy-tales' -class GCBuzzaWuzza(_GoComics): - path = 'buzza-wuzza' - - -class GCCafconLeche(_GoComics): +class GCCafConLeche(_GoComics): path = 'cafeconleche' @@ -775,15 +1035,11 @@ class GCCAFFEINATED(_GoComics): path = 'CAFFEINATED' -class GCCalAndOzz(_GoComics): - path = 'cal-and-ozz' - - -class GCCalvinandHobbes(_GoComics): +class GCCalvinAndHobbes(_GoComics): path = 'calvinandhobbes' -class GCCalvinandHobbesenEspaol(_GoComics): +class GCCalvinAndHobbesEnEspaol(_GoComicsEs): path = 'espanol/calvinandhobbesespanol' @@ -795,23 +1051,19 @@ class GCCandorville(_GoComics): path = 'candorville' -class GCCandyPills(_GoComics): - path = 'candy-pills' - - -class GCCapsulasMedicas(_GoComics): +class GCCapsulasMedicas(_GoComicsEs): path = 'espanol/capsulas-medicas' +class GCCarteBlanche(_GoComics): + path = 'carte-blanche' + + class GCCathy(_GoComics): path = 'cathy' -class GCCatsAtWork(_GoComics): - path = 'cats-at-work' - - -class GCCestlaVie(_GoComics): +class GCCestLaVie(_GoComics): path = 'cestlavie' @@ -823,10 +1075,6 @@ class GCCharmysArmy(_GoComics): path = 'charmys-army' -class GCChasingUnicorns(_GoComics): - path = 'chasing-unicorns' - - class GCCheapThrillsCuisine(_GoComics): path = 'cheap-thrills-cuisine' @@ -839,10 +1087,6 @@ class GCChrisBritt(_GoComics): path = 'chrisbritt' -class GCChubbyGirlComics(_GoComics): - path = 'chubbygirlcomics' - - class GCChuckleBros(_GoComics): path = 'chucklebros' @@ -851,10 +1095,6 @@ class GCCitizenDog(_GoComics): path = 'citizendog' -class GCClassifudds(_GoComics): - path = 'classifudds' - - class GCClayBennett(_GoComics): path = 'claybennett' @@ -871,11 +1111,11 @@ class GCCleats(_GoComics): path = 'cleats' -class GCCleoandCompany(_GoComics): +class GCCleoAndCompany(_GoComics): path = 'cleo-and-company' -class GCClosetoHome(_GoComics): +class GCCloseToHome(_GoComics): path = 'closetohome' @@ -883,10 +1123,6 @@ class GCCoffeeShopTidbits(_GoComics): path = 'coffee-shop-tidbits' -class GCColonelKernel(_GoComics): - path = 'colonel-kernel' - - class GCCommitted(_GoComics): path = 'committed' @@ -895,14 +1131,18 @@ class GCComputoon(_GoComics): path = 'compu-toon' -class GCCondorito(_GoComics): +class GCCondorito(_GoComicsEs): path = 'espanol/condorito' -class GCConnietotheWonnie(_GoComics): +class GCConnieToTheWonnie(_GoComics): path = 'connie-to-the-wonnie' +class GCCooper(_GoComics): + path = 'cooper' + + class GCCornered(_GoComics): path = 'cornered' @@ -911,7 +1151,7 @@ class GCCourageousManAdventures(_GoComics): path = 'courageous-man-adventures' -class GCCowandBoyClassics(_GoComics): +class GCCowAndBoyClassics(_GoComics): path = 'cowandboy' @@ -919,26 +1159,30 @@ class GCCowTown(_GoComics): path = 'cowtown' -class GCCoyoteVille(_GoComics): - path = 'coyteville' - - -class GCCrooksville(_GoComics): - path = 'crooksville' +class GCCrawdiddy(_GoComics): + path = 'crawdiddy' class GCCrumb(_GoComics): path = 'crumb' -class GCCuldeSac(_GoComics): +class GCCulDeSac(_GoComics): path = 'culdesac' +class GCDaddingBadly(_GoComics): + path = 'dadding-badly' + + class GCDaddysHome(_GoComics): path = 'daddyshome' +class GCDadsDay(_GoComics): + path = 'dads-day' + + class GCDanaSummers(_GoComics): path = 'danasummers' @@ -947,7 +1191,7 @@ class GCDanWasserman(_GoComics): path = 'danwasserman' -class GCDarkSideoftheHorse(_GoComics): +class GCDarkSideOfTheHorse(_GoComics): path = 'darksideofthehorse' @@ -975,18 +1219,18 @@ class GCDickTracy(_GoComics): path = 'dicktracy' +class GCDilbert(_GoComics): + path = 'dilbert' + + class GCDilbertClassics(_GoComics): path = 'dilbert-classics' -class GCDilbertenEspaol(_GoComics): +class GCDilbertEnEspaol(_GoComicsEs): path = 'espanol/dilbert-en-espanol' -class GCDiligentCity(_GoComics): - path = 'diligent-city' - - class GCDinosaurComics(_GoComics): path = 'dinosaur-comics' @@ -995,11 +1239,11 @@ class GCDogEatDoug(_GoComics): path = 'dogeatdoug' -class GCDogsDucksandAliens(_GoComics): - path = 'dogs-ducks-and-aliens' +class GCDoghouseInYourSoul(_GoComics): + path = 'doghouse-in-your-soul' -class GCDogsofCKennel(_GoComics): +class GCDogsOfCKennel(_GoComics): path = 'dogsofckennel' @@ -1011,11 +1255,11 @@ class GCDomesticAbuse(_GoComics): path = 'domesticabuse' -class GCDonBrutus(_GoComics): +class GCDonBrutus(_GoComicsEs): path = 'espanol/don-brutus' -class GCDontPicktheFlowers(_GoComics): +class GCDontPickTheFlowers(_GoComics): path = 'dont-pick-the-flowers' @@ -1031,15 +1275,27 @@ class GCDrabble(_GoComics): path = 'drabble' +class GCDragin(_GoComics): + path = 'dragin' + + +class GCDragonGirl(_GoComics): + path = 'dragon-girl' + + class GCDrewSheneman(_GoComics): path = 'drewsheneman' +class GCDrive(_GoComics): + path = 'drive' + + class GCDromo(_GoComics): path = 'dro-mo' -class GCDudeandDude(_GoComics): +class GCDudeAndDude(_GoComics): path = 'dudedude' @@ -1047,12 +1303,24 @@ class GCDumbQuestionBadAnswer(_GoComics): path = 'dumb-question-bad-answer' +class GCDungeonHordes(_GoComics): + path = 'dungeon-hordes' + + class GCDustSpecks(_GoComics): path = 'dust-specks' -class GCEconogirl(_GoComics): - path = 'econogirl' +class GCDutchnPals(_GoComics): + path = 'dutch-n-pals' + + +class GCDysconnected(_GoComics): + path = 'dysconnected' + + +class GCEdgeOfAdventure(_GoComics): + path = 'edge-of-adventure' class GCEek(_GoComics): @@ -1063,7 +1331,7 @@ class GCEightballEyeball(_GoComics): path = 'eightball-eyeball' -class GCElCafdePoncho(_GoComics): +class GCElCafDePoncho(_GoComicsEs): path = 'espanol/poochcafeespanol' @@ -1075,7 +1343,7 @@ class GCElmo(_GoComics): path = 'elmo' -class GCElMundodeBeakman(_GoComics): +class GCElMundoDeBeakman(_GoComics): path = 'beakmanespanol' @@ -1087,15 +1355,15 @@ class GCEndtown(_GoComics): path = 'endtown' -class GCErictheCircle(_GoComics): +class GCEricTheCircle(_GoComics): path = 'eric-the-circle' -class GCEspressoCity(_GoComics): - path = 'Espresso-City' +class GCEyebeam(_GoComics): + path = 'eyebeam' -class GCFacesoftheNewsbyKerryWaghorn(_GoComics): +class GCFacesOfTheNewsByKerryWaghorn(_GoComics): path = 'facesinthenews' @@ -1103,6 +1371,10 @@ class GCFamilyTree(_GoComics): path = 'familytree' +class GCFamousAndNotSoFamousQuotes(_GoComics): + path = 'famous-and-not-so-famous-quotes' + + class GCFarcus(_GoComics): path = 'farcus' @@ -1115,14 +1387,18 @@ class GCFatCats(_GoComics): path = 'fat-cats' -class GCFleasonFlick(_GoComics): - path = 'fleasonflick' +class GCFatherOfTheBrood(_GoComics): + path = 'father-of-the-brood' -class GCFloandFriends(_GoComics): +class GCFloAndFriends(_GoComics): path = 'floandfriends' +class GCFloydAndTony(_GoComics): + path = 'floyd-and-tony' + + class GCFMinus(_GoComics): path = 'fminus' @@ -1131,7 +1407,7 @@ class GCFoolishMortals(_GoComics): path = 'foolish-mortals' -class GCForBetterorForWorse(_GoComics): +class GCForBetterOrForWorse(_GoComics): path = 'forbetterorforworse' @@ -1147,6 +1423,10 @@ class GCFourEyes(_GoComics): path = 'four-eyes' +class GCFowlLanguage(_GoComics): + path = 'fowl-language' + + class GCFoxTrot(_GoComics): path = 'foxtrot' @@ -1155,7 +1435,7 @@ class GCFoxTrotClassics(_GoComics): path = 'foxtrotclassics' -class GCFoxTrotenEspaol(_GoComics): +class GCFoxTrotEnEspaol(_GoComicsEs): path = 'espanol/foxtrotespanol' @@ -1164,17 +1444,13 @@ class GCFrancis(_GoComics): class GCFrankAndErnest(_GoComics): - path = 'frankandernest' + path = 'frank-and-ernest' class GCFrankAndSteinway(_GoComics): path = 'frank-and-steinway' -class GCFrankBlunt(_GoComics): - path = 'frankblunt' - - class GCFrankieComics(_GoComics): path = 'frankie-comics' @@ -1187,7 +1463,7 @@ class GCFredBasset(_GoComics): path = 'fredbasset' -class GCFredBassetenEspaol(_GoComics): +class GCFredBassetEnEspaol(_GoComicsEs): path = 'espanol/fredbassetespanol' @@ -1203,15 +1479,11 @@ class GCFriedCritter(_GoComics): path = 'fried-critter' -class GCFritzMurphyAndMulligan(_GoComics): - path = 'fritz-murphy-and-mulligan' - - class GCFrogApplause(_GoComics): path = 'frogapplause' -class GCFromtheMoWillemsSketchbook(_GoComics): +class GCFromTheMoWillemsSketchbook(_GoComics): path = 'from-the-mo-willems-sketchbook' @@ -1223,7 +1495,7 @@ class GCGarfield(_GoComics): path = 'garfield' -class GCGarfieldenEspaol(_GoComics): +class GCGarfieldEnEspaol(_GoComicsEs): path = 'espanol/garfieldespanol' @@ -1243,11 +1515,7 @@ class GCGasolineAlley(_GoComics): path = 'gasolinealley' -class GCGatorsAndSuch(_GoComics): - path = 'gators-and-such' - - -class GCGaturro(_GoComics): +class GCGaturro(_GoComicsEs): path = 'espanol/gaturro' @@ -1255,15 +1523,11 @@ class GCGeech(_GoComics): path = 'geech' -class GCGenerationMute(_GoComics): - path = 'generation-mute' - - class GCGentleCreatures(_GoComics): path = 'gentle-creatures' -class GCGetaLife(_GoComics): +class GCGetALife(_GoComics): path = 'getalife' @@ -1271,6 +1535,10 @@ class GCGetFuzzy(_GoComics): path = 'getfuzzy' +class GCGil(_GoComics): + path = 'gil' + + class GCGilThorp(_GoComics): path = 'gilthorp' @@ -1279,7 +1547,7 @@ class GCGingerMeggs(_GoComics): path = 'gingermeggs' -class GCGingerMeggsenEspaol(_GoComics): +class GCGingerMeggsEnEspaol(_GoComicsEs): path = 'espanol/gingermeggsespanol' @@ -1295,8 +1563,16 @@ class GCGlennMcCoy(_GoComics): path = 'glennmccoy' -class GCGoComicsontheRoad(_GoComics): - path = 'gocomics-on-the-road' +class GCGManWebcomics(_GoComics): + path = 'g-man-webcomics' + + +class GCGoats(_GoComics): + path = 'goats' + + +class GCGoComicsFanArt(_GoComics): + path = 'fan-art' class GCGraffiti(_GoComics): @@ -1319,6 +1595,10 @@ class GCGrannyAnny(_GoComics): path = 'granny-anny' +class GCGravy(_GoComics): + path = 'gravy' + + class GCGrayMatters(_GoComics): path = 'gray-matters' @@ -1331,6 +1611,10 @@ class GCGreenPieces(_GoComics): path = 'green-pieces' +class GCGunstonStreet(_GoComics): + path = 'gunston-street' + + class GCHaikuEwe(_GoComics): path = 'haikuewe' @@ -1339,26 +1623,34 @@ class GCHalfFull(_GoComics): path = 'half-full' -class GCHalfFullenEspaol(_GoComics): +class GCHalfFullEnEspaol(_GoComicsEs): path = 'espanol/half-full-espanol' +class GCHallEditorialCartoons(_GoComics): + path = 'hall-editorial-cartoons' + + class GCHamShears(_GoComics): path = 'ham-shears' -class GCHankandDalesOurWorld(_GoComics): +class GCHankAndDalesOurWorld(_GoComics): path = 'hank-and-dales-our-world' -class GCHanktheSock(_GoComics): - path = 'hank-the-sock' - - class GCHaphazardHumor(_GoComics): path = 'haphazard-humor' +class GCHappyBoyBobsAnimatedGifs(_GoComics): + path = 'happy-boy-bobs-animated-gifs' + + +class GCHarambeeHills(_GoComics): + path = 'harambeehills' + + class GCHeadcheese(_GoComics): path = 'headcheese' @@ -1367,7 +1659,7 @@ class GCHealthCapsules(_GoComics): path = 'healthcapsules' -class GCHeartoftheCity(_GoComics): +class GCHeartOfTheCity(_GoComics): path = 'heartofthecity' @@ -1375,7 +1667,7 @@ class GCHeathcliff(_GoComics): path = 'heathcliff' -class GCHeathcliffenEspaol(_GoComics): +class GCHeathcliffEnEspaol(_GoComicsEs): path = 'espanol/heathcliffespanol' @@ -1383,7 +1675,7 @@ class GCHenryPayne(_GoComics): path = 'henrypayne' -class GCHerbandJamaal(_GoComics): +class GCHerbAndJamaal(_GoComics): path = 'herbandjamaal' @@ -1391,14 +1683,10 @@ class GCHerman(_GoComics): path = 'herman' -class GCHermanenEspaol(_GoComics): +class GCHermanEnEspaol(_GoComicsEs): path = 'espanol/herman-en-espanol' -class GCHIP(_GoComics): - path = 'hip' - - class GCHipsterPicnic(_GoComics): path = 'hipster-picnic' @@ -1411,14 +1699,18 @@ class GCHolidayDoodles(_GoComics): path = 'holiday-doodles' -class GCHollywoodpecker(_GoComics): - path = 'hollywoodpecker' - - -class GCHomeandAway(_GoComics): +class GCHomeAndAway(_GoComics): path = 'homeandaway' +class GCHotComicsForCoolPeople(_GoComics): + path = 'hot-comics-for-cool-people' + + +class GCHubbel(_GoComics): + path = 'hubbel' + + class GCHUBRIS(_GoComics): path = 'hubris' @@ -1431,8 +1723,8 @@ class GCHumanCull(_GoComics): path = 'human-cull' -class GCHumblebeeandBob(_GoComics): - path = 'humblebee-and-bob' +class GCHurrieTheMisManager(_GoComics): + path = 'hurrie' class GCHutchOwen(_GoComics): @@ -1443,11 +1735,7 @@ class GCImagineThis(_GoComics): path = 'imaginethis' -class GCImTellingMom(_GoComics): - path = 'telling-mom' - - -class GCInherittheMirth(_GoComics): +class GCInheritTheMirth(_GoComics): path = 'inherit-the-mirth' @@ -1455,15 +1743,19 @@ class GCInkPen(_GoComics): path = 'inkpen' +class GCInkwellForest(_GoComics): + path = 'inkwell-forest' + + class GCInspectorDangersCrimeQuiz(_GoComics): path = 'inspector-dangers-crime-quiz' -class GCIntheBleachers(_GoComics): +class GCInTheBleachers(_GoComics): path = 'inthebleachers' -class GCIntheSticks(_GoComics): +class GCInTheSticks(_GoComics): path = 'inthesticks' @@ -1471,15 +1763,15 @@ class GCInvisibleBread(_GoComics): path = 'invisible-bread' -class GCIsleofEx(_GoComics): - path = 'isle-of-ex' +class GCIronyOr(_GoComics): + path = 'irony-or' class GCItsAllAboutYou(_GoComics): path = 'itsallaboutyou' -class GCItsjustJim(_GoComics): +class GCItsJustJim(_GoComics): path = 'its-just-jim' @@ -1495,6 +1787,10 @@ class GCJanesWorld(_GoComics): path = 'janesworld' +class GCJayAndBoneheadTheMunkysMrCowhide(_GoComics): + path = 'jayandbonehead' + + class GCJeffDanziger(_GoComics): path = 'jeffdanziger' @@ -1511,8 +1807,8 @@ class GCJerryHolbert(_GoComics): path = 'jerryholbert' -class GCJillpokeBohemia(_GoComics): - path = 'jillpoke-bohemia' +class GCJetpackJr(_GoComics): + path = 'jetpack-jr' class GCJimAndSarah(_GoComics): @@ -1551,15 +1847,11 @@ class GCJolleyStuffBrowser(_GoComics): path = 'jolleystuff-browser' -class GCJordanandBentley(_GoComics): - path = 'jordan-and-bentley' - - class GCJumpStart(_GoComics): path = 'jumpstart' -class GCJustoyFranco(_GoComics): +class GCJustoYFranco(_GoComicsEs): path = 'espanol/justo-y-franco' @@ -1567,11 +1859,15 @@ class GCJustSayUncle(_GoComics): path = 'just-say-uncle' +class GCKALEECHIKORNERS(_GoComics): + path = 'kaleechi-korners' + + class GCKartoonsByKline(_GoComics): path = 'kartoons-by-kline' -class GCKatetheGreat(_GoComics): +class GCKateTheGreat(_GoComics): path = 'kate-the-great' @@ -1599,10 +1895,6 @@ class GCKidTown(_GoComics): path = 'kidtown' -class GCKirbysTreehouse(_GoComics): - path = 'kirbys-treehouse' - - class GCKitchenCapers(_GoComics): path = 'kitchen-capers' @@ -1623,15 +1915,19 @@ class GCLaCucaracha(_GoComics): path = 'lacucaracha' -class GCLaCucarachaenEspaol(_GoComics): +class GCLaCucarachaEnEspaol(_GoComicsEs): path = 'espanol/la-cucaracha-en-espanol' +class GCLaffToons(_GoComics): + path = 'lafftoons' + + class GCLaloAlcaraz(_GoComics): path = 'laloalcaraz' -class GCLaloAlcarazenEspaol(_GoComics): +class GCLaloAlcarazEnEspaol(_GoComicsEs): path = 'espanol/laloenespanol' @@ -1639,15 +1935,11 @@ class GCLardsWorldPeaceTips(_GoComics): path = 'lards-world-peace-tips' -class GCLardWantsWorldPeace(_GoComics): - path = 'lard-wants-world-peace' - - class GCLarryvilleBlue(_GoComics): path = 'larryville-blue' -class GCLasHermanasStone(_GoComics): +class GCLasHermanasStone(_GoComicsEs): path = 'espanol/stonesoup_espanol' @@ -1659,11 +1951,15 @@ class GCLayLines(_GoComics): path = 'lay-lines' -class GCLearntoSpeakCat(_GoComics): +class GCLearnToSpeakCat(_GoComics): path = 'learn-to-speak-cat' -class GCLegendofBill(_GoComics): +class GCLEFTOVERS(_GoComics): + path = 'leftovers' + + +class GCLegendOfBill(_GoComics): path = 'legendofbill' @@ -1675,23 +1971,27 @@ class GCLibertyMeadows(_GoComics): path = 'libertymeadows' -class GCLIGHTERSIDE(_GoComics): - path = 'lighter-side' - - class GCLilAbner(_GoComics): path = 'lil-abner' -class GCLiliandDerek(_GoComics): +class GCLiliAndDerek(_GoComics): path = 'lili-and-derek' +class GCLilleysSillies(_GoComics): + path = 'lilleys-sillies' + + +class GCLimboRoad(_GoComics): + path = 'limbo-road' + + class GCLio(_GoComics): path = 'lio' -class GCLioenEspaol(_GoComics): +class GCLioEnEspaol(_GoComicsEs): path = 'espanol/lioespanol' @@ -1703,7 +2003,7 @@ class GCLittleDogLost(_GoComics): path = 'littledoglost' -class GCLittleFriedChickenandSushi(_GoComics): +class GCLittleFriedChickenAndSushi(_GoComics): path = 'little-fried-chicken-and-sushi' @@ -1715,19 +2015,23 @@ class GCLola(_GoComics): path = 'lola' -class GCLolaenEspaol(_GoComics): +class GCLolaEnEspaol(_GoComicsEs): path = 'espanol/lola-en-espanol' -class GCLooksGoodonPaper(_GoComics): +class GCLooksGoodOnPaper(_GoComics): path = 'looks-good-on-paper' +class GCLoose(_GoComics): + path = 'loose' + + class GCLooseParts(_GoComics): path = 'looseparts' -class GCLosOsorios(_GoComics): +class GCLosOsorios(_GoComicsEs): path = 'espanol/los-osorios' @@ -1735,7 +2039,7 @@ class GCLostSheep(_GoComics): path = 'lostsheep' -class GCLostSideofSuburbia(_GoComics): +class GCLostSideOfSuburbia(_GoComics): path = 'lostsideofsuburbia' @@ -1747,7 +2051,7 @@ class GCLuannAgainn(_GoComics): path = 'luann-againn' -class GCLuannenEspaol(_GoComics): +class GCLuannEnEspaol(_GoComicsEs): path = 'espanol/luannspanish' @@ -1763,10 +2067,14 @@ class GCLugNuts(_GoComics): path = 'lug-nuts' -class GCLumandAbner(_GoComics): +class GCLumAndAbner(_GoComics): path = 'lum-and-abner' +class GCLunarbaboon(_GoComics): + path = 'lunarbaboon' + + class GCMac(_GoComics): path = 'mac' @@ -1775,12 +2083,12 @@ class GCMadDogGhettoCop(_GoComics): path = 'maddogghettocop' -class GCMagicinaMinute(_GoComics): +class GCMagicInAMinute(_GoComics): path = 'magicinaminute' class GCMagnificatz(_GoComics): - path = 'magnificatz' + path = 'magnificatz-sherpa' class GCMaintaining(_GoComics): @@ -1799,7 +2107,7 @@ class GCMarmaduke(_GoComics): path = 'marmaduke' -class GCMarmadukeenEspaol(_GoComics): +class GCMarmadukeEnEspaol(_GoComicsEs): path = 'espanol/marmaduke-en-espanol' @@ -1807,6 +2115,10 @@ class GCMarshallRamsey(_GoComics): path = 'marshallramsey' +class GCMarysNature(_GoComics): + path = 'marys-nature' + + class GCMassiveFalls(_GoComics): path = 'massive-falls' @@ -1823,8 +2135,8 @@ class GCMattWuerker(_GoComics): path = 'mattwuerker' -class GCMaximus(_GoComics): - path = 'maximus' +class GCMazeToonsPuzzle(_GoComics): + path = 'mazetoons-puzzle' class GCMcArroni(_GoComics): @@ -1843,11 +2155,11 @@ class GCMichaelRamirez(_GoComics): path = 'michaelramirez' -class GCMick(_GoComics): - path = 'mick' +class GCMicrocosm(_GoComics): + path = 'microcosm' -class GCMikeduJour(_GoComics): +class GCMikeDuJour(_GoComics): path = 'mike-du-jour' @@ -1875,6 +2187,10 @@ class GCMindframe(_GoComics): path = 'mindframe' +class GCMinihahas(_GoComics): + path = 'vernscartoons' + + class GCMinimumSecurity(_GoComics): path = 'minimumsecurity' @@ -1887,11 +2203,19 @@ class GCMisterAndMe(_GoComics): path = 'mister-and-me' +class GCMockAll(_GoComics): + path = 'mock-all' + + class GCModeratelyConfused(_GoComics): path = 'moderately-confused' -class GCMollyandtheBear(_GoComics): +class GCMolebashed(_GoComics): + path = 'molebashed' + + +class GCMollyAndTheBear(_GoComics): path = 'mollyandthebear' @@ -1899,26 +2223,22 @@ class GCMomma(_GoComics): path = 'momma' +class GCMomsCancer(_GoComics): + path = 'moms-cancer' + + class GCMongrels(_GoComics): path = 'mongrels' -class GCMonstersR4Real(_GoComics): - path = 'monsters-r4-real' - - class GCMonty(_GoComics): path = 'monty' -class GCMontyDiaros(_GoComics): +class GCMontyDiaros(_GoComicsEs): path = 'espanol/monty-diarios' -class GCMortimer(_GoComics): - path = 'mortimer' - - class GCMortsIsland(_GoComics): path = 'noahs-island' @@ -1927,15 +2247,19 @@ class GCMotleyClassics(_GoComics): path = 'motley-classics' -class GCMrGigiandtheSquid(_GoComics): +class GCMrGigiAndTheSquid(_GoComics): path = 'mr-gigi-and-the-squid' +class GCMrLowe(_GoComics): + path = 'mr-lowe' + + class GCMulligan(_GoComics): path = 'mulligan' -class GCMustardandBoloney(_GoComics): +class GCMustardAndBoloney(_GoComics): path = 'mustard-and-boloney' @@ -1943,10 +2267,14 @@ class GCMuttAndJeff(_GoComics): path = 'muttandjeff' -class GCMyCageClassics(_GoComics): +class GCMyCageNewAndOld(_GoComics): path = 'mycage' +class GCMySonIsADog(_GoComics): + path = 'my-son-is-a-dog' + + class GCMythTickle(_GoComics): path = 'mythtickle' @@ -1959,7 +2287,7 @@ class GCNancyClassics(_GoComics): path = 'nancy-classics' -class GCNateelGrande(_GoComics): +class GCNateElGrande(_GoComicsEs): path = 'espanol/nate-el-grande' @@ -1967,6 +2295,10 @@ class GCNavyBean(_GoComics): path = 'navybean' +class GCNedAndLarry(_GoComics): + path = 'ned-and-larry' + + class GCNestHeads(_GoComics): path = 'nestheads' @@ -1975,7 +2307,7 @@ class GCNEUROTICA(_GoComics): path = 'neurotica' -class GCNewAdventuresofQueenVictoria(_GoComics): +class GCNewAdventuresOfQueenVictoria(_GoComics): path = 'thenewadventuresofqueenvictoria' @@ -1983,10 +2315,14 @@ class GCNickAnderson(_GoComics): path = 'nickanderson' -class GCNickandZuzu(_GoComics): +class GCNickAndZuzu(_GoComics): path = 'nick-and-zuzu' +class GCNoAmbiguity(_GoComics): + path = 'no-ambiguity' + + class GCNoBusinessIKnow(_GoComics): path = 'nobusinessiknow' @@ -1999,27 +2335,19 @@ class GCNoOrdinaryLife(_GoComics): path = 'no-ordinary-life' -class GCNoPlaceLikeHolmes(_GoComics): - path = 'no-place-like-holmes' - - class GCNorman(_GoComics): path = 'Norman' -class GCNothingisNotSomething(_GoComics): +class GCNothingIsNotSomething(_GoComics): path = 'nothing-is-not-something' -class GCOat(_GoComics): - path = 'oat' +class GCNotInventedHere(_GoComics): + path = 'not-invented-here' -class GCObamaandtheFatman(_GoComics): - path = 'obama-and-the-fatman' - - -class GCOfftheMark(_GoComics): +class GCOffTheMark(_GoComics): path = 'offthemark' @@ -2027,7 +2355,7 @@ class GCOhBrother(_GoComics): path = 'oh-brother' -class GCOllieandQuentin(_GoComics): +class GCOllieAndQuentin(_GoComics): path = 'ollie-and-quentin' @@ -2047,11 +2375,15 @@ class GCOrdinaryBill(_GoComics): path = 'ordinary-bill' -class GCOriginsoftheSundayComics(_GoComics): +class GCOriginsOfTheSundayComics(_GoComics): path = 'origins-of-the-sunday-comics' -class GCOutoftheGenePoolReRuns(_GoComics): +class GCOscarAndAnnie(_GoComics): + path = 'oscar-and-annie' + + +class GCOutOfTheGenePoolReRuns(_GoComics): path = 'outofthegenepool' @@ -2059,7 +2391,7 @@ class GCOverboard(_GoComics): path = 'overboard' -class GCOverboardenEspaol(_GoComics): +class GCOverboardEnEspaol(_GoComicsEs): path = 'espanol/overboardespanol' @@ -2067,11 +2399,11 @@ class GCOverQuirked(_GoComics): path = 'over-quirked' -class GCOvertheHedge(_GoComics): +class GCOverTheHedge(_GoComics): path = 'overthehedge' -class GCOzyandMillie(_GoComics): +class GCOzyAndMillie(_GoComics): path = 'ozy-and-millie' @@ -2079,8 +2411,8 @@ class GCPaddedCell(_GoComics): path = 'padded-cell' -class GCPamosWorld(_GoComics): - path = 'pamos-world' +class GCPainterly(_GoComics): + path = 'sparcomics' class GCPatOliphant(_GoComics): @@ -2095,14 +2427,10 @@ class GCPawsForThoughtComics(_GoComics): path = 'paws-for-thought-comics' -class GCPCandPixel(_GoComics): +class GCPCAndPixel(_GoComics): path = 'pcandpixel' -class GCPeanizles(_GoComics): - path = 'peanizles' - - class GCPeanuts(_GoComics): path = 'peanuts' @@ -2111,7 +2439,7 @@ class GCPeanutsBegins(_GoComics): path = 'peanuts-begins' -class GCPeanutsenEspaol(_GoComics): +class GCPeanutsEnEspaol(_GoComicsEs): path = 'espanol/peanuts-espanol' @@ -2123,11 +2451,15 @@ class GCPeeples(_GoComics): path = 'peeples' -class GCPeriquita(_GoComics): +class GCPeopleOfEarth(_GoComics): + path = 'frankblunt' + + +class GCPeriquita(_GoComicsEs): path = 'espanol/periquita' -class GCPerlasparalosCerdos(_GoComics): +class GCPerlasParaLosCerdos(_GoComicsEs): path = 'espanol/perlas-para-los-cerdos' @@ -2139,7 +2471,7 @@ class GCPhilHands(_GoComics): path = 'phil-hands' -class GCPhoebeandHerUnicorn(_GoComics): +class GCPhoebeAndHerUnicorn(_GoComics): path = 'phoebe-and-her-unicorn' @@ -2163,22 +2495,18 @@ class GCPicpakDog(_GoComics): path = 'picpak-dog' -class GCPicturesinBoxes(_GoComics): +class GCPicturesInBoxes(_GoComics): path = 'pictures-in-boxes' -class GCPigtimesCartoon(_GoComics): - path = 'pigtimes-cartoon' +class GCPieComic(_GoComics): + path = 'pie-comic' class GCPinkerton(_GoComics): path = 'pinkerton' -class GCPipethePelican(_GoComics): - path = 'pipe-the-pelican' - - class GCPirateMike(_GoComics): path = 'pirate-mike' @@ -2187,8 +2515,8 @@ class GCPlanB(_GoComics): path = 'planb' -class GCPlasticBabyHeadsfromOuterSpace(_GoComics): - path = 'plastic-babyheads' +class GCPleaseListenToMe(_GoComics): + path = 'please-listen-to-me' class GCPluggers(_GoComics): @@ -2215,6 +2543,10 @@ class GCPoptropica(_GoComics): path = 'poptropica' +class GCPotShots(_GoComics): + path = 'pot-shots' + + class GCPreTeena(_GoComics): path = 'preteena' @@ -2223,12 +2555,24 @@ class GCPricklyCity(_GoComics): path = 'pricklycity' -class GCPrimusthebadphilosopher(_GoComics): +class GCPrideland(_GoComics): + path = 'prideland' + + +class GCPrimusTheBadPhilosopher(_GoComics): path = 'primus-the-bad-philosopher' -class GCPuppets(_GoComics): - path = 'puppets' +class GCPromisesPromises(_GoComics): + path = 'promises-promises' + + +class GCQuestionableQuotebook(_GoComics): + path = 'questionable-quotebook' + + +class GCQuickDraw(_GoComics): + path = 'quickdraw' class GCRabbitsAgainstMagic(_GoComics): @@ -2243,14 +2587,18 @@ class GCRaisingDuncan(_GoComics): path = 'raising-duncan' -class GCRandolphItch2am(_GoComics): +class GCRandolphItch2Am(_GoComics): path = 'randolphitch' -class GCRandomActsofNancy(_GoComics): +class GCRandomActsOfNancy(_GoComics): path = 'random-acts-of-nancy' +class GCRandysRationale(_GoComics): + path = 'randys-rationale' + + class GCRealityCheck(_GoComics): path = 'realitycheck' @@ -2263,7 +2611,7 @@ class GCRebeccaHendin(_GoComics): path = 'rebecca-hendin' -class GCRedandRover(_GoComics): +class GCRedAndRover(_GoComics): path = 'redandrover' @@ -2271,10 +2619,6 @@ class GCRedMeat(_GoComics): path = 'redmeat' -class GCRegularCreatures(_GoComics): - path = 'regular-creatures' - - class GCReplyAll(_GoComics): path = 'replyall' @@ -2283,19 +2627,27 @@ class GCReplyAllLite(_GoComics): path = 'reply-all-lite' +class GCRichardsPoorAlmanac(_GoComics): + path = 'richards-poor-almanac' + + class GCRicigsToonTrivia(_GoComics): path = 'ricigs-toon-trivia' +class GCRingers(_GoComics): + path = 'ringers' + + class GCRipHaywire(_GoComics): path = 'riphaywire' -class GCRipleysBelieveItorNot(_GoComics): +class GCRipleysBelieveItOrNot(_GoComics): path = 'ripleysbelieveitornot' -class GCRipleysBelieveitorNotSpanish(_GoComics): +class GCRipleysBelieveItOrNotSpanish(_GoComicsEs): path = 'espanol/ripleys-en-espanol' @@ -2303,7 +2655,7 @@ class GCRisible(_GoComics): path = 'risible' -class GCRobbieandBobby(_GoComics): +class GCRobbieAndBobby(_GoComics): path = 'robbie-and-bobby' @@ -2319,18 +2671,14 @@ class GCRonWarren(_GoComics): path = 'ron-warren' -class GCRosaDominical(_GoComics): +class GCRosaDominical(_GoComicsEs): path = 'espanol/rosa-dominical' -class GCRoseisRose(_GoComics): +class GCRoseIsRose(_GoComics): path = 'roseisrose' -class GCRosy(_GoComics): - path = 'rosy' - - class GCRubes(_GoComics): path = 'rubes' @@ -2339,14 +2687,14 @@ class GCRudyPark(_GoComics): path = 'rudypark' +class GCRufus(_GoComics): + path = 'rufus' + + class GCSandSharkBeach(_GoComics): path = 'sandshark-beach' -class GCSantavsDracula(_GoComics): - path = 'santa-vs-dracula' - - class GCSarahsScribbles(_GoComics): path = 'sarahs-scribbles' @@ -2355,27 +2703,31 @@ class GCSavageChickens(_GoComics): path = 'savage-chickens' -class GCSCAIRYTALESTheNotSoScaryFairyTales(_GoComics): - path = 'Scairy-Tales:-the-not-so-scary-fairy-tales!' - - class GCScaryGary(_GoComics): path = 'scarygary' -class GCScorchedEarth(_GoComics): - path = 'scorched-earth' +class GCScenesFromAMultiverse(_GoComics): + path = 'scenes-from-a-multiverse' class GCScottStantis(_GoComics): path = 'scottstantis' -class GCScurvyville(_GoComics): - path = 'scurvyville' +class GCSharpCurveComics(_GoComics): + path = 'sharp-curve-comics' -class GCShirleyandSonClassics(_GoComics): +class GCSheldon(_GoComics): + path = 'sheldon' + + +class GCSherpaAid(_GoComics): + path = 'sherpaaid' + + +class GCShirleyAndSonClassics(_GoComics): path = 'shirley-and-son-classics' @@ -2403,8 +2755,16 @@ class GCSignGarden(_GoComics): path = 'signgarden' -class GCSincerelyBeatrice(_GoComics): - path = 'sincerely-beatrice' +class GCSignsOfAFrustratedGolfer(_GoComics): + path = 'signs-of-a-frustrated-golfer' + + +class GCSignsOfOurTimes(_GoComics): + path = 'signs-of-our-times' + + +class GCSketchyChics(_GoComics): + path = 'sketchy-chics' class GCSkinHorse(_GoComics): @@ -2415,6 +2775,10 @@ class GCSkippy(_GoComics): path = 'skippy' +class GCSkull(_GoComics): + path = 'skull' + + class GCSkylarking(_GoComics): path = 'skylarking' @@ -2423,16 +2787,16 @@ class GCSleepytownBeagles(_GoComics): path = 'sleepytown-beagles' -class GCSmallNerdyCreatures(_GoComics): - path = 'small-nerdy-creatures' - - class GCSmith(_GoComics): path = 'smith' +class GCSnowflakes(_GoComics): + path = 'snowflakes' + + class GCSnowSez(_GoComics): - path = 'snowsez' + path = 'snow-sez' class GCSoccerDude(_GoComics): @@ -2447,14 +2811,26 @@ class GCSOD(_GoComics): path = 'sod' +class GCSomethingAboutCeleste(_GoComics): + path = 'something-about-celeste' + + class GCSookyRottweiler(_GoComics): path = 'sooky-rottweiler' -class GCSouptoNutz(_GoComics): +class GCSoulmates(_GoComics): + path = 'soulmates' + + +class GCSoupToNutz(_GoComics): path = 'soup-to-nutz' +class GCSpaceport51(_GoComics): + path = 'spaceport-51' + + class GCSpectickles(_GoComics): path = 'abbotts-spectickles' @@ -2467,18 +2843,18 @@ class GCSpeedBump(_GoComics): path = 'speedbump' -class GCSpinCrazy(_GoComics): - path = 'spin-crazy' - - -class GCSportsbyVoort(_GoComics): +class GCSportsByVoort(_GoComics): path = 'sports-by-voort' -class GCSpottheFrog(_GoComics): +class GCSpotTheFrog(_GoComics): path = 'spot-the-frog' +class GCStaleCrackers(_GoComics): + path = 'clifton' + + class GCStankoAndTibor(_GoComics): path = 'stankotibor' @@ -2499,10 +2875,18 @@ class GCSteveKelley(_GoComics): path = 'stevekelley' +class GCStickyComics(_GoComics): + path = 'sticky-comics' + + class GCStoneSoup(_GoComics): path = 'stonesoup' +class GCStoneSoupClassics(_GoComics): + path = 'stone-soup-classics' + + class GCStrangeBrew(_GoComics): path = 'strangebrew' @@ -2535,6 +2919,10 @@ class GCSuperSiblings(_GoComics): path = 'super-siblings' +class GCSweetAndSourPork(_GoComics): + path = 'sweet-and-sour-pork' + + class GCSylvia(_GoComics): path = 'sylvia' @@ -2547,7 +2935,7 @@ class GCTarzan(_GoComics): path = 'tarzan' -class GCTarzanenEspaol(_GoComics): +class GCTarzanEnEspaol(_GoComicsEs): path = 'espanol/tarzan-en-espanol' @@ -2555,10 +2943,6 @@ class GCTeacherInk(_GoComics): path = 'teacher-ink' -class GCTeddyBearsKillingSpree(_GoComics): - path = 'teddy-bears-killing-spree' - - class GCTedRall(_GoComics): path = 'tedrall' @@ -2571,7 +2955,7 @@ class GCThatababy(_GoComics): path = 'thatababy' -class GCThatisPriceless(_GoComics): +class GCThatIsPriceless(_GoComics): path = 'that-is-priceless' @@ -2591,8 +2975,12 @@ class GCTheAcademiaWaltz(_GoComics): path = 'academiawaltz' -class GCTheAdventuresofHeromanGuy(_GoComics): - path = 'adventures-of-heroman-guy' +class GCTheAdventuresOfBusinessCat(_GoComics): + path = 'the-adventures-of-business-cat' + + +class GCTheAngryGamer(_GoComics): + path = 'the-angry-gamer' class GCTheArgyleSweater(_GoComics): @@ -2619,6 +3007,10 @@ class GCTheBentPinky(_GoComics): path = 'the-bent-pinky' +class GCTheBestMedicineCartoon(_GoComics): + path = 'the-best-medicine' + + class GCTheBigPicture(_GoComics): path = 'thebigpicture' @@ -2647,6 +3039,14 @@ class GCTheCity(_GoComics): path = 'thecity' +class GCTheComicStripThatHasAFinaleEveryDay(_GoComics): + path = 'the-comic-strip-that-has-a-finale-every-day' + + +class GCTheConjurers(_GoComics): + path = 'the-conjurers' + + class GCTheCreeps(_GoComics): path = 'the-creeps' @@ -2671,8 +3071,12 @@ class GCTheElderberries(_GoComics): path = 'theelderberries' -class GCTheFamilyBlend(_GoComics): - path = 'the-family-blend' +class GCTheEntrepiranha(_GoComics): + path = 'the-entrepiranha' + + +class GCTheFabulousBushPigs(_GoComics): + path = 'the-fabulous-bush-pigs' class GCTheFlyingMcCoys(_GoComics): @@ -2683,6 +3087,10 @@ class GCTheFuscoBrothers(_GoComics): path = 'thefuscobrothers' +class GCTheGrayZone(_GoComics): + path = 'the-gray-zone' + + class GCTheGreenMonkeys(_GoComics): path = 'thegreenmonkeys' @@ -2695,10 +3103,6 @@ class GCTheHumbleStumble(_GoComics): path = 'humble-stumble' -class GCTheInsolentLemon(_GoComics): - path = 'the-insolent-lemon' - - class GCTheKChronicles(_GoComics): path = 'thekchronicles' @@ -2711,10 +3115,6 @@ class GCTheLeftyBoscoPictureShow(_GoComics): path = 'leftyboscopictureshow' -class GCTheLightedLab(_GoComics): - path = 'the-lighted-lab' - - class GCTheLostBear(_GoComics): path = 'the-lost-bear' @@ -2723,7 +3123,7 @@ class GCTheMartianConfederacy(_GoComics): path = 'the-martian-confederacy' -class GCTheMeaningofLila(_GoComics): +class GCTheMeaningOfLila(_GoComics): path = 'meaningoflila' @@ -2731,6 +3131,22 @@ class GCTheMiddletons(_GoComics): path = 'themiddletons' +class GCTheMothManAndLarvaeBoy(_GoComics): + path = 'the-mothman-and-larvae-boy' + + +class GCTheNeighborhood(_GoComics): + path = 'the-neighborhood' + + +class GCTheNevilleYouKnow(_GoComics): + path = 'the-neville-you-know' + + +class GCTheNonsenseNewz(_GoComics): + path = 'the-nonsense-newz' + + class GCTheNorm40(_GoComics): path = 'the-norm-4-0' @@ -2755,10 +3171,6 @@ class GCTheQuixoteSyndrome(_GoComics): path = 'the-quixote-syndrome' -class GCTheSmileFile(_GoComics): - path = 'mid-life-with-alan' - - class GCTheSunshineClub(_GoComics): path = 'the-sunshine-club' @@ -2771,14 +3183,14 @@ class GCTheWanderingMelon(_GoComics): path = 'the-wandering-melon' -class GCTheWinyChild(_GoComics): - path = 'the-winy-child' - - -class GCTheWizardofIdSpanish(_GoComics): +class GCTheWizardOfIdSpanish(_GoComicsEs): path = 'espanol/wizardofidespanol' +class GCTheWorriedWell(_GoComics): + path = 'the-worried-well' + + class GCTheWorstThingIveEverDone(_GoComics): path = 'the-worst-thing-ive-ever-done' @@ -2787,7 +3199,7 @@ class GCThingsesque(_GoComics): path = 'thingsesque' -class GCThink(_GoComics): +class GCthink(_GoComics): path = 'think' @@ -2807,10 +3219,6 @@ class GCTinySepuku(_GoComics): path = 'tinysepuku' -class GCTnCComics(_GoComics): - path = 'tnc-comics' - - class GCTOBY(_GoComics): path = 'toby' @@ -2819,7 +3227,11 @@ class GCTodaysDogg(_GoComics): path = 'todays-dogg' -class GCTomtheDancingBug(_GoComics): +class GCTodaysTrump(_GoComics): + path = 'todays-trump' + + +class GCTomTheDancingBug(_GoComics): path = 'tomthedancingbug' @@ -2831,23 +3243,39 @@ class GCTooMuchCoffeeMan(_GoComics): path = 'toomuchcoffeeman' +class GCTopicToons(_GoComics): + path = 'topictoons' + + class GCToughTown(_GoComics): path = 'tough-town' +class GCToxicValues(_GoComics): + path = 'toxic-values' + + class GCTrivquiz(_GoComics): path = 'trivquiz' -class GCTrucutu(_GoComics): +class GCTrucutu(_GoComicsEs): path = 'espanol/trucutu' +class GCTruthBeKnown(_GoComics): + path = 'truth-be-known' + + class GCTruthFacts(_GoComics): path = 'truth-facts' -class GCTutelandia(_GoComics): +class GCTuesdaysWithCory(_GoComics): + path = 'tuesdays-with-cory' + + +class GCTutelandia(_GoComicsEs): path = 'espanol/tutelandia' @@ -2855,14 +3283,6 @@ class GCTwaggies(_GoComics): path = 'twaggies' -class GCTwitchyOToole(_GoComics): - path = 'twitchy-otoole' - - -class GCTwoBits(_GoComics): - path = 'two-bits' - - class GCUncleArtsFunland(_GoComics): path = 'uncleartsfunland' @@ -2879,7 +3299,7 @@ class GCUnstrangePhenomena(_GoComics): path = 'unstrange-phenomena' -class GCUpandOut(_GoComics): +class GCUpAndOut(_GoComics): path = 'up-and-out' @@ -2887,8 +3307,8 @@ class GCUSAcres(_GoComics): path = 'us-acres' -class GCVernscartoons(_GoComics): - path = 'vernscartoons' +class GCViewFromTheCouch(_GoComics): + path = 'view-from-the-couch' class GCViewsAfrica(_GoComics): @@ -2919,7 +3339,7 @@ class GCViewsMidEast(_GoComics): path = 'viewsmideast' -class GCViewsoftheWorld(_GoComics): +class GCViewsOfTheWorld(_GoComics): path = 'viewsoftheworld' @@ -2927,14 +3347,26 @@ class GCViiviAndWagner(_GoComics): path = 'viivi-and-wagner' +class GCVoicesInTheDark(_GoComics): + path = 'voices-in-the-dark' + + +class GCWallaceTheBrave(_GoComics): + path = 'wallace-the-brave' + + class GCWaltHandelsman(_GoComics): path = 'walthandelsman' -class GCWarpedAnddemented(_GoComics): +class GCWarpedAndDemented(_GoComics): path = 'warped-and-demented' +class GCWaskataskahiskewaskewan(_GoComics): + path = 'waskataskahiskewaskewan' + + class GCWatchYourHead(_GoComics): path = 'watchyourhead' @@ -2947,36 +3379,32 @@ class GCWayOutComics(_GoComics): path = 'way-out-comics' +class GCWeaselInk(_GoComics): + path = 'weasel-ink' + + class GCWeePals(_GoComics): path = 'weepals' -class GCWelcometoFriendly(_GoComics): - path = 'welcome-to-friendly' - - -class GCWendlesLife(_GoComics): - path = 'wendleslife' - - class GCWhiskeyFalls(_GoComics): path = 'whiskey-falls' +class GCWhiteouts(_GoComics): + path = 'whiteouts' + + +class GCWickedCrispy(_GoComics): + path = 'wicked-crispy' + + class GCWideOpen(_GoComics): path = 'wide-open' -class GCWillSays(_GoComics): - path = 'will-says' - - -class GCWillyWho(_GoComics): - path = 'willy-who' - - -class GCWindingRoads(_GoComics): - path = 'winding-roads' +class GCWindsock(_GoComics): + path = 'windsock' class GCWinLoseDrew(_GoComics): @@ -2987,7 +3415,7 @@ class GCWinston(_GoComics): path = 'winston' -class GCWitoftheWorld(_GoComics): +class GCWitOfTheWorld(_GoComics): path = 'witoftheworld' @@ -2995,11 +3423,11 @@ class GCWittOfWill(_GoComics): path = 'witt-of-will' -class GCWizardofId(_GoComics): +class GCWizardOfId(_GoComics): path = 'wizardofid' -class GCWizardofIdClassics(_GoComics): +class GCWizardOfIdClassics(_GoComics): path = 'wizard-of-id-classics' @@ -3011,11 +3439,11 @@ class GCWorkingItOut(_GoComics): path = 'workingitout' -class GCWorldofWonder(_GoComics): +class GCWorldOfWonder(_GoComics): path = 'world-of-wonder' -class GCWrobbertcartoons(_GoComics): +class GCWrobbertCartoons(_GoComics): path = 'wrobbertcartoons' @@ -3031,7 +3459,7 @@ class GCWuMo(_GoComics): path = 'wumo' -class GCWumoenEspaol(_GoComics): +class GCWumoEnEspaol(_GoComicsEs): path = 'espanol/wumoespanol' @@ -3039,7 +3467,7 @@ class GCWyatt(_GoComics): path = 'wyatt' -class GCYennyenEspaol(_GoComics): +class GCYennyEnEspaol(_GoComicsEs): path = 'espanol/yennyespanol' @@ -3047,7 +3475,7 @@ class GCYennyLopez(_GoComics): path = 'yenny-lopez' -class GCYouCanwithBeakmanandJax(_GoComics): +class GCYouCanWithBeakmanAndJax(_GoComics): path = 'beakman' @@ -3059,17 +3487,21 @@ class GCZenPencils(_GoComics): path = 'zen-pencils' -class GCZeroGravity(_GoComics): - path = 'zero-gravity' - - class GCZiggy(_GoComics): path = 'ziggy' -class GCZiggyenEspaol(_GoComics): +class GCZiggyEnEspaol(_GoComicsEs): path = 'espanol/ziggyespanol' +class GCZITO(_GoComics): + path = 'zito' + + +class GCZombieHeights(_GoComics): + path = 'zombie-heights' + + class GCZootopia(_GoComics): path = 'zootopia' diff --git a/scripts/gocomics.py b/scripts/gocomics.py index 5ccad62e1..ded106c77 100755 --- a/scripts/gocomics.py +++ b/scripts/gocomics.py @@ -1,36 +1,37 @@ #!/usr/bin/env python -# Copyright (C) 2012-2014 Bastian Kleineidam +# -*- coding: utf-8 -*- +# Copyright (C) 2013-2014 Bastian Kleineidam +# Copyright (C) 2016 Tobias Gruetzmacher """ Script to get a list of gocomics and save the info in a JSON file for further processing. """ -from __future__ import print_function +from __future__ import absolute_import, division, print_function + import codecs -import re import sys import os import requests -sys.path.append(os.path.join(os.path.dirname(__file__), "..")) -from dosagelib.util import tagre, getPageContent, asciify, unescape -from scriptutil import contains_case_insensitive, capfirst, save_result, load_result, truncate_name +from lxml import html + +sys.path.append(os.path.join(os.path.dirname(__file__), "..")) # noqa +from dosagelib.util import get_page +from scriptutil import contains_case_insensitive, format_name, save_result, load_result, truncate_name json_file = __file__.replace(".py", ".json") -#name -url_matcher = re.compile(tagre("a", "href", r'(/[^"]+)', after="alpha_list") + r"([^<]+)") - # names of comics to exclude exclude_comics = [ - "Angryprogrammer", # unavailable - "Complex", # "coming soon" - "Guinness", # "coming soon" - "Jabberwoncky", # "coming soon" - "KickyBrand", # unavailable - "Penmanship", # unavailable - "RandysRationale", # "coming soon" - "SaturdayMorningBreakfastCereal", # duplicate - "SignsOfOurTimes", # "coming soon" - "TheGagwriter", # "coming soon" - "Yaoyao", # "coming soon" + # "coming soon" + "Angryprogrammer", + "Guinness", + "Jabberwoncky", + "RandysRationale" + "SignsOfOurTimes", + "TheGagwriter", + "Yaoyao", + + # duplicate + "SaturdayMorningBreakfastCereal", ] @@ -38,27 +39,24 @@ def handle_url(url, session, res): """Parse one search result page.""" print("Parsing", url, file=sys.stderr) try: - data = getPageContent(url, session) + data = html.document_fromstring(get_page(url, session).text) except IOError as msg: print("ERROR:", msg, file=sys.stderr) return - for match in url_matcher.finditer(data): - shortname = match.group(1) - name = unescape(match.group(2)) - name = asciify(name.replace('&', 'And').replace('@', 'At')) - name = capfirst(name) - if name in exclude_comics: - continue + + for comiclink in data.cssselect('a.alpha_list'): + link = comiclink.attrib['href'] + name = format_name(comiclink.text) if contains_case_insensitive(res, name): # we cannot handle two comics that only differ in case print("INFO: skipping possible duplicate", repr(name), file=sys.stderr) continue - res[name] = shortname + res[name] = link def get_results(): """Parse all search result pages.""" - # store info in a dictionary {name -> shortname} + # store info in a dictionary {name -> uri} res = {} session = requests.Session() handle_url('http://www.gocomics.com/features', session, res) @@ -68,17 +66,22 @@ def get_results(): save_result(res, json_file) +def first_lower(x): + return x[0].lower() + + def print_results(args): """Print all comics that have at least the given number of minimum comic strips.""" min_comics, filename = args with codecs.open(filename, 'a', 'utf-8') as fp: - for name, shortname in sorted(load_result(json_file).items()): + data = load_result(json_file) + for name, uri in sorted(data.items(), key=first_lower): if name in exclude_comics: print("Excluded " + name) continue - fp.write(u"add(%r, %r)\n" % ( - str(truncate_name(name)), str(shortname)) - ) + fp.write(u"\n\nclass GC%s(_GoComics%s):\n path = %r\n" % ( + truncate_name(name), 'Es' if 'espanol/' in uri else '', + uri[1:])) if __name__ == '__main__':