diff --git a/doc/changelog.txt b/doc/changelog.txt index d6f892c1b..cafd90a58 100644 --- a/doc/changelog.txt +++ b/doc/changelog.txt @@ -1,11 +1,12 @@ Dosage 2.5 (released xx.xx.2013) Features: -- comics: Added EatLiver, ICanBarelyDraw, JimBenton, MarriedToTheSea, NatalieDee. +- comics: Added EatLiver, ICanBarelyDraw, JimBenton, MarriedToTheSea + and NatalieDee. Closes: GH bug #37 Fixes: -- comics: Fixed GoblinsComic, KevinAndKell and other comics. +- comics: Fixed AxeCop, GoblinsComic, KevinAndKell and other comics. Dosage 2.4 (released 24.6.2013) diff --git a/dosagelib/plugins/a.py b/dosagelib/plugins/a.py index 96e1a0789..461357a75 100644 --- a/dosagelib/plugins/a.py +++ b/dosagelib/plugins/a.py @@ -362,11 +362,18 @@ class AxeCop(_BasicScraper): description = u'Axe Cop' url = 'http://axecop.com/' rurl = escape(url) - starter = indirectStarter(url, - compile(tagre("a", "href", r'(%sindex\.php/acepisodes/read/episode_\d+/)' % rurl))) - stripUrl = url + 'index.php/acepisodes/read/%s/' - firstStripUrl = stripUrl % 'episode_0' - imageSearch = compile(tagre("img", "src", r'(%simages/uploads/(?:axecop|AXE-COP|acmarried|nightmonster)[^"]+)' % rurl)) - prevSearch = compile(tagre("a", "href", r'(%sindex\.php/acepisodes/read/[^"]+)' % rurl) + - tagre("img", "src", r'http://axecop\.com/acimages/buttons/page_left\.png')) - help = 'Index format: stripname' + starter = bounceStarter(url, + compile(tagre("a", "href", r'(%scomic/episode-\d+/)' % rurl, after="navi-next"))) + stripUrl = url + 'comic/episode-%s/' + firstStripUrl = stripUrl % '0' + imageSearch = compile(tagre("img", "src", r'(http://mainsite\.axecop\.wpengine\.com/wp-content/uploads/sites/\d+/\d+/\d+/[^"]+)')) + prevSearch = compile(tagre("a", "href", r'(%scomic/episode-\d+/)' % rurl, after="navi-prev")) + help = 'Index format: number' + + @classmethod + def namer(cls, imageUrl, pageUrl): + extension = imageUrl.rsplit('.', 1)[1] + episode = pageUrl.rsplit('-', 1)[1] + episode = episode.strip('/') + return 'AxeCop-%s.%s' % (episode, extension) + diff --git a/dosagelib/plugins/arcamax.py b/dosagelib/plugins/arcamax.py index 794342b7f..3496c2915 100644 --- a/dosagelib/plugins/arcamax.py +++ b/dosagelib/plugins/arcamax.py @@ -29,7 +29,7 @@ def add(name, shortname): #add('9ChickweedLane', '/thefunnies/ninechickweedlane/') #add('Agnes', '/thefunnies/agnes/') #add('AndyCapp', '/thefunnies/andycapp/') -add('Archie', '/thefunnies/archie/') +#add('Archie', '/thefunnies/archie/') add('ArcticCircle', '/thefunnies/arcticcircle/') #add('AskShagg', '/thefunnies/askshagg/') #add('BC', '/thefunnies/bc/') @@ -91,7 +91,7 @@ add('Mutts', '/thefunnies/mutts/') #add('ReplyAll', '/thefunnies/replyall/') add('RhymeswithOrange', '/thefunnies/rhymeswithorange/') #add('Rubes', '/thefunnies/rubes/') -add('Rugrats', '/thefunnies/rugrats/') +#add('Rugrats', '/thefunnies/rugrats/') #add('ScaryGary', '/thefunnies/scarygary/') #add('SpeedBump', '/thefunnies/speedbump/') #add('StrangeBrew', '/thefunnies/strangebrew/') diff --git a/dosagelib/plugins/c.py b/dosagelib/plugins/c.py index 760e2ff68..ecc725faf 100644 --- a/dosagelib/plugins/c.py +++ b/dosagelib/plugins/c.py @@ -119,7 +119,8 @@ class ChainsawSuit(_BasicScraper): stripUrl = url + '%s/' firstStripUrl = stripUrl % '2008/03/12/strip-338' imageSearch = compile(tagre("img", "src", r'(%scomics/[^"]+)' % rurl)) - prevSearch = compile(tagre("a", "href", r'(%s\d+/\d+/\d+/[^"]+)' % rurl, after="prev")) + prevSearch = compile(tagre("a", "href", r'(%s\d+/\d+/\d+/[^"]+)' % rurl) + + tagre("img", "alt", r'previous')) help = 'Index format: yyyy/mm/dd/stripname' diff --git a/dosagelib/plugins/comicfury.py b/dosagelib/plugins/comicfury.py index aadb63689..14460cdd7 100644 --- a/dosagelib/plugins/comicfury.py +++ b/dosagelib/plugins/comicfury.py @@ -90,7 +90,6 @@ add('Boritom', 'http://boritom.webcomic.ws/', u'The scintillating adventures of add('Brickland', 'http://brickland.webcomic.ws/', u'Tales of Brickland centers around four groups of people: Kristy and Drew (adventurers who traveled to another continent for, well, adventures), Gina (a ninja), Captain Slade and his pirate crew, and Queen Toshiko, returned from the dead and bent on world domination. Again. A silly fantasy comic told with minifigs and bricks that updates every Monday, Wednesday, and Friday.') add('BrokenReality', 'http://BrokenReality.webcomic.ws/', u'This story revolves around two teenage boys who suddenly find themselves living in japan for no apparent reason. Joined by twin Japanese girls, The four of them now seem to be living their lives in a world where the rules of reality are constantly being broken in one way or another.') #add('Bulletproof', 'http://bulletproof.webcomic.ws/', u'In Junction City, there are men and women with strange powers and abilities, the Omega Humans. Ostracized by society, many turn to crime, while a few are employed by JCORP to keep the city safe. But can a corporation be trusted with law enforcement? Bulletproof is a B&W superhero comic set in a dystopian near-future city.') -add('Bunnysher', 'http://Bunnysher.webcomic.ws/', u'Lapin was meant to be featured in the official clip for the song Lucky Animals by The Devin Townsend Project. Sadly, his dance was rejected and the crushing pain made him endorse his favorite cosplay for good.. or bad.') add('Bustysolar', 'http://bustysolar.webcomic.ws/', u'The space adventures of Busty Solar and her space police team. Lots of strange jokes and naughty fun.') add('Cannonadeofhogwash', 'http://cannonadeofhogwash.webcomic.ws/', u'As the title suggests, this is a cannonade of hogwash. Updated almost daily.') add('CatHero', 'http://CatHero.webcomic.ws/', u"Cat Hero's epic Catventures as an Hero, starring Cat Hero as Cat Hero, by Cat Hero; is a graphical representation of the (mis)adventures of a cat-person named Cat Hero, whose arch-nemesis is CatoreH, a life-sized cardboard cutout of a (very) badly drawn cat-person. Half a quick comic, half an experiment to see if single-panel gag-a-day style can actually convey a story, and be good doing it.") @@ -149,7 +148,6 @@ add('Flickwit', 'http://flickwit.webcomic.ws/', u"What's to know? A ragtag bunch add('Foxtales', 'http://Foxtales.webcomic.ws/', u'A manga based on faerie folklore. After encountering a man who can change into a fox, a girl finds herself mixed up in a world of faeries and mythical creatures.') add('Fpk', 'http://fpk.webcomic.ws/', u'Imagine those badly-photocopied zines that were left on the tables at your local coffee shop got a shave and a haircut, finished their fine arts degrees, and turned out to have really odd Monty Python-esque senses of humor. Then they got married and had a kid. That kid is FPK.') add('Fraternit', 'http://fraterni-t.webcomic.ws/', u"A comic strip about life, love, long-lost brothers, and everything else a high school girl has to deal with! THIS COMIC STRIP IS SEMI-AUTOBIOGRAPHICAL, WHICH MEANS MOST OF IT IS BASED ON THE IMAGINATION OF THE AUTHOR. ANY CHARACTERS THAT MAY BE BASED ON REAL PEOPLE HAVE HAD THEIR NAMES CHANGED. Special thanks to Jimmy Gownley, author of Amelia Rules! and cofounder of Kids Love Comics. Also, thanks to Bill Wahl, Nikki, my parents and friends. I couldn't have done it without you!") -add('Freakingawfulpuns', 'http://freakingawfulpuns.webcomic.ws/', u'FAP is a most of the time very random, somewhat poorly drawn, and sometimes political webcomic. Check us out on Facebook! [url]http://www.facebook.com/pages/Freaking-Awful-Puns-Webcomic/189101684454482[/url] "Laim is pretty cool I guess" -DSW "It can be funny enough to get suscribers" -MattWL "a quasi-ripoff of Cyanide and Happiness" -MrWeatherby "In general your site design is good... Thank you for letting me review your comic." -Bill Kloppenburg "You get nothing! You lose! Good day sir!" -Willy Wonka') add('Friendshipisdragons', 'http://friendshipisdragons.webcomic.ws/', u"A screencap comic of My Little Pony: Friendship is Magic. Equestria is a custom campaign setting for Dungeons and Dragons, and the mane six are Player Characters. How will a party of six roleplayers fare in a world where the usual hack-'n'-slash high fantasy has been replaced by pastel-colored ponies?") add('Frontier2170', 'http://frontier2170.webcomic.ws/', u"Life as an independent spaceship crew isn't easy. In addition to the astronomical cost of fuel, supplies and repairs, it seems like the big corporate outfits get all the well-paying jobs, leaving the petty runs they don't want to people like you. Those jobs don't pay well enough to make ends meet, and there never seem to be enough of them, so sometimes you have to break the law to put fuel in the tanks and food on the table. If that wasn't bad enough, there's a war going on, and that means cargo inspections and surveillance...") add('Fullmetalbrothers', 'http://fullmetalbrothers.webcomic.ws/', u'') @@ -226,7 +224,6 @@ add('Mightymeteorite', 'http://mightymeteorite.webcomic.ws/', u"What would you d add('Mildlyamusing', 'http://mildlyamusing.webcomic.ws/', u'A comic about life, happiness, and flights of fantasy.') add('Minarga', 'http://minarga.webcomic.ws/', u"My longer-than-ever-anticipated Mass Effect fancomic, originally posted on deviantART, also available here. At the present time, I'm still working on the script, and will be posting first drafts of every chapter as I sketch them out. Finished pages will come when I've written the entire script and have layouts/rough drafts of all the pages. Again, just to cover all my bases, I do not own the Mass Effect universe; it's the creation of Bioware, and they own all the rights. I don't own a damn thing. More of my art is viewable at http://amethystsadachbia.deviantart.com/") add('Mirroredconversations', 'http://mirroredconversations.webcomic.ws/', u"There are things in life that often don't make sense. This comic highlights them.") -add('Mischeif', 'http://Mischeif.webcomic.ws/', u'//>LOADING INTERFACE;;;STOP RIGHT THERE READERS! Enter the semi auto-biography of my life drawn out for your entertainment! Enter Zeon the comic version of the me who is the same yet different, at the same time. (See what I did there?) Unemployed, lazy gaming, comic artist who finds entertainment in the little things. https://www.facebook.com/pages/Mischeif/267542906656329?fref=ts') add('MoaK', 'http://MoaK.webcomic.ws/', u"Morgan was not having a good day. Her singer flounced; her basist, and brother, got a better offer; her drummer was blown up by a dragon-- Wait, what's a dragon doing in Chicago? And what's with the orcs with guns? Updates Tuesdays and Fridays, 3pm Chicago time (Currently a mirror from Drunk Duck. You can read it here, about a chapter behind, but with no delays for Writer's block and computer issues, or there for the current story, but with the occasional filler page/missed updates.)") add('MoizmadComix', 'http://MoizmadComix.webcomic.ws/', u"Crack detective Riddick Q. Loss' never-ending quest to catch the villainous Sir Dimswitch in 1950's Vancouver.") add('Monstersoup', 'http://monstersoup.webcomic.ws/', u'A group of misfit monsters are sentenced to live under the same roof--a castle belonging to mad scientist, who is serving his own sentence for unethical experiments. The real question is, can a hodgepodge group of monsters live under the same roof? (Some comedy, horror, and a little bit of everything else.)') diff --git a/dosagelib/plugins/g.py b/dosagelib/plugins/g.py index dd7606d06..4befecd6d 100644 --- a/dosagelib/plugins/g.py +++ b/dosagelib/plugins/g.py @@ -136,7 +136,7 @@ class GoblinsComic(_BasicScraper): rurl = escape(url) stripUrl = url + '%s/' firstStripUrl = stripUrl % '06252005' - prevSearch = compile(tagre("a", "href", r'(%s\d+/)' % rurl, after="prev")) + prevSearch = compile(tagre("a", "href", r'(%s[-\d]+/)' % rurl, after="prev")) imageSearch = compile(tagre("img", "src", r'(%scomics/\d+\.[^"]+)' % rurl)) help = 'Index format: ddmmyyyy' diff --git a/dosagelib/plugins/m.py b/dosagelib/plugins/m.py index a784e4370..db79e5668 100644 --- a/dosagelib/plugins/m.py +++ b/dosagelib/plugins/m.py @@ -59,7 +59,7 @@ class MarriedToTheSea(_BasicScraper): description = u'comics by Drew & Natalie Dee - Updates daily at midnight' url = 'http://www.marriedtothesea.com/' rurl = escape(url) - stripUrl = url + 'index.php?date=%s' + stripUrl = url + '%s' firstStripUrl = stripUrl % '022806' imageSearch = compile(tagre("img", "src", r'(%s\d+/[^"]+)' % rurl, before="overflow")) prevSearch = compile(tagre("a", "href", r'([^"]+)') + "<< Yesterday") diff --git a/dosagelib/plugins/n.py b/dosagelib/plugins/n.py index c0534fc7a..d743cc092 100644 --- a/dosagelib/plugins/n.py +++ b/dosagelib/plugins/n.py @@ -37,7 +37,7 @@ class NatalieDee(_BasicScraper): description = u"America's Favorite Cracker" url = 'http://www.nataliedee.com/' rurl = escape(url) - stripUrl = url + 'index.php?date=%s' + stripUrl = url + '%s' firstStripUrl = stripUrl % '022806' imageSearch = compile(tagre("img", "src", r'(%s\d+/[^"]+)' % rurl, before="overflow")) prevSearch = compile(tagre("a", "href", r'([^"]+)') + "<< Yesterday") diff --git a/dosagelib/plugins/o.py b/dosagelib/plugins/o.py index 9f81a9327..0c0ec7671 100644 --- a/dosagelib/plugins/o.py +++ b/dosagelib/plugins/o.py @@ -92,7 +92,7 @@ class OnTheFasttrack(_BasicScraper): class OneQuestion(_BasicScraper): - url = 'http://onequestioncomic.com/' + url = 'http://www.onequestioncomic.com/' stripUrl = url + 'comic.php?strip_id=%s' firstStripUrl = stripUrl % '1' imageSearch = compile(tagre("img", "src", r'((?:\.\./)?istrip_files/strips/\d+\.\w{3,4})')) @@ -123,8 +123,8 @@ class OurHomePlanet(_BasicScraper): class OverCompensating(_BasicScraper): description = u'OVERCOMPENSATING: The Journal Comic With a Seething Disdain for Reality.' url = 'http://www.overcompensating.com/' - stripUrl = url + 'posts/%s.html' - firstStripUrl = stripUrl % '20040929' - imageSearch = compile(r']+?> \<\-  ') - help = 'Index format: yyyymmdd' + stripUrl = url + 'overcompensating/index.php?comic=%s' + firstStripUrl = stripUrl % '0' + imageSearch = compile(tagre("img", "src", r'(/overcompensating/comics/[^"]+)')) + prevSearch = compile(tagre("a", "href", r'(/overcompensating/index\.php\?comic=\d+)', after="go back")) + help = 'Index format: number' diff --git a/dosagelib/plugins/r.py b/dosagelib/plugins/r.py index 9fbb8d6c5..6f104e24b 100644 --- a/dosagelib/plugins/r.py +++ b/dosagelib/plugins/r.py @@ -2,7 +2,7 @@ # Copyright (C) 2004-2005 Tristan Seligmann and Jonathan Jacobs # Copyright (C) 2012-2013 Bastian Kleineidam -from re import compile +from re import compile, escape from ..scraper import _BasicScraper from ..helpers import bounceStarter from ..util import tagre @@ -17,12 +17,13 @@ class RadioactivePanda(_BasicScraper): class RealLife(_BasicScraper): - url = 'http://www.reallifecomics.com/' - stripUrl = url + 'archive/%s.html' + url = 'http://reallifecomics.com/' + rurl = escape(url) + stripUrl = url + 'comic.php?comic=%s' firstStripUrl = stripUrl % '991115' - imageSearch = compile(tagre("img", "src", r'(/comics/[^"]+)')) - prevSearch = compile(tagre("a", "href", r'(/comic\.php\?[^"]+)', after="nav-previous")) - help = 'Index format: yymmdd)' + imageSearch = compile(tagre("img", "src", r'(%swp-content/uploads/\d+/\d+/[^"]+)' % rurl)) + prevSearch = compile(tagre("a", "href", r'((?:%s)?comic\.php\?comic=[^"]+)' % rurl, after="nav-previous")) + help = 'Index format: monthname-dd-yyyy)' class RealmOfAtland(_BasicScraper): diff --git a/dosagelib/plugins/s.py b/dosagelib/plugins/s.py index 643f46adc..90656eda6 100644 --- a/dosagelib/plugins/s.py +++ b/dosagelib/plugins/s.py @@ -284,10 +284,10 @@ class SMBC(_BasicScraper): description = u"Saturday Morning Breakfast Cereal" url = 'http://www.smbc-comics.com/' rurl = escape(url) - stripUrl = url + 'index.php?db=comics&id=%s' + stripUrl = url + '?id=%s' firstStripUrl = stripUrl % '1' imageSearch = compile(tagre("img", "src", r"(%scomics/\d{8}(?:\w2?|-\d)?\.\w{3})\s*" % rurl, quote="'")) - prevSearch = compile(r'131,13,216,84"\n\s+href="(.+?)#comic"\n>', MULTILINE) + prevSearch = compile(tagre("a", "href", r'([^"]+)#comic', after="backRollover")) help = 'Index format: nnnn' def shouldSkipUrl(self, url): diff --git a/dosagelib/plugins/u.py b/dosagelib/plugins/u.py index 4f9b77918..1bedebc22 100644 --- a/dosagelib/plugins/u.py +++ b/dosagelib/plugins/u.py @@ -36,8 +36,7 @@ class Unsounded(_BasicScraper): stripUrl = url + 'comic/ch%s/ch%s_%s.html' firstStripUrl = stripUrl % ('01', '01', '01') rurl = escape(url) - imageSearch = compile(tagre("div", "id", r'comic') + - tagre("img", "src", r'(pageart/[^"]*)') ) + imageSearch = compile(tagre("img", "src", r'(pageart/[^"]*)')) prevSearch = compile(tagre("a", "href", r'([^"]*)', after='class="back')) starter = indirectStarter(url, compile(tagre("a", "href", r'(%scomic/[^"]*)' % rurl) + diff --git a/dosagelib/plugins/w.py b/dosagelib/plugins/w.py index 096eb826e..bce74e62d 100644 --- a/dosagelib/plugins/w.py +++ b/dosagelib/plugins/w.py @@ -109,10 +109,10 @@ class WhyTheLongFace(_BasicScraper): class Wigu(_BasicScraper): description = u'WIGU: A COMIC ON INTERNET' url = 'http://wigucomics.com/' - stripUrl = url + 'adventures/index.php?comic=%s' + stripUrl = url + 'mais/index.php?comic=%s' firstStripUrl = stripUrl % '1' - imageSearch = compile(tagre("img", "src", r'(/adventures/comics/[^"]+)')) - prevSearch = compile(tagre("a", "href", r'(/adventures/index\.php\?comic=\d+)', after="go back")) + imageSearch = compile(tagre("img", "src", r'(/mais/comics/[^"]+)')) + prevSearch = compile(tagre("a", "href", r'(/mais/index\.php\?comic=\d+)', after="go back")) help = 'Index format: n' diff --git a/dosagelib/plugins/z.py b/dosagelib/plugins/z.py index b55f24733..c0ca01086 100644 --- a/dosagelib/plugins/z.py +++ b/dosagelib/plugins/z.py @@ -20,11 +20,13 @@ class ZapComic(_BasicScraper): class Zapiro(_BasicScraper): url = 'http://www.mg.co.za/zapiro/' starter = bounceStarter(url, - compile(tagre("a", "href", r'(http://mg\.co\.za/cartoon/[^"]+)')+"Newer")) + compile(tagre("li", "class", r'nav_older') + + tagre("a", "href", r'(http://mg\.co\.za/cartoon/[^"]+)'))) stripUrl = 'http://mg.co.za/cartoon/%s' firstStripUrl = stripUrl % 'zapiro_681' imageSearch = compile(tagre("img", "src", r'(http://cdn\.mg\.co\.za/crop/content/cartoons/[^"]+)')) - prevSearch = compile(tagre("a", "href", r'(http://mg\.co\.za/cartoon/[^"]+)')+"Older") + prevSearch = compile(tagre("li", "class", r'nav_older') + + tagre("a", "href", r'(http://mg\.co\.za/cartoon/[^"]+)')) help = 'Index format: yyyy-mm-dd-stripname' @classmethod diff --git a/scripts/comicfury.py b/scripts/comicfury.py index d3ece6b9f..b484a2591 100755 --- a/scripts/comicfury.py +++ b/scripts/comicfury.py @@ -52,6 +52,7 @@ exclude_comics = [ "Brainfood", # unsuitable navigation "Bromosworld", # unsuitable navigation "BulletMythology", # unsuitable navigation + "Bunnysher", # page moved "BUXY", # unsuitable navigation "CafeGruesome", # unsuitable navigation "Castofmadness", # unsuitable navigation @@ -84,6 +85,7 @@ exclude_comics = [ "Fishbowl", # unsuitable navigation "Foe", # unsuitable navigation "Foreignterritory", # unsuitable navigation + "Freakingawfulpuns", # page is gone "Frigginrandom", # unsuitable navigation "Frostfire", # unsuitable navigation "Furnerdy", # unsuitable navigation @@ -139,6 +141,7 @@ exclude_comics = [ "Megamaiden", # unsuitable navigation "Minebreakers", # unsuitable navigation "Minecraft2b2t", # unsuitable navigation + "Mischeif", # unsuitable navigation "Mitadakesaga", # unsuitable navigation "Mlpfib", # unsuitable navigation "Monsterloverdp", # unsuitable navigation