Dynamic type generation helpers.
This commit is contained in:
parent
4528894c05
commit
d4eee7719d
3 changed files with 10 additions and 87 deletions
|
@ -1,87 +0,0 @@
|
||||||
# -*- coding: iso-8859-1 -*-
|
|
||||||
# Copyright (C) 2004-2005 Tristan Seligmann and Jonathan Jacobs
|
|
||||||
# Copyright (C) 2012 Bastian Kleineidam
|
|
||||||
from re import compile, sub
|
|
||||||
|
|
||||||
from ..scraper import _BasicScraper
|
|
||||||
from ..util import tagre
|
|
||||||
|
|
||||||
def comicsDotCom(name, section):
|
|
||||||
baseUrl = 'http://www.gocomics.com/'
|
|
||||||
classname = sub("[^0-9a-zA-Z_]", "", name)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def namer(cls, imageUrl, pageUrl):
|
|
||||||
prefix, year, month, day = pageUrl.split('/', 3)
|
|
||||||
return "%s_%s%s%s.gif" % (name, year, month, day)
|
|
||||||
|
|
||||||
return type('GoComicsDotCom_%s' % classname,
|
|
||||||
(_BasicScraper,),
|
|
||||||
dict(
|
|
||||||
latestUrl=baseUrl + name,
|
|
||||||
name='GoComicsDotCom/' + classname,
|
|
||||||
stripUrl=baseUrl + name + '/%s',
|
|
||||||
imageSearch=compile(tagre("img", "src", r'(http://assets\.amuniversal\.com/[0-9a-f]+)')),
|
|
||||||
prevSearch=compile(tagre("a", "href", r'(/[^"]+/\d+/\d+/\d+)', after="prev")),
|
|
||||||
help='Index format: yyyy/mm/dd',
|
|
||||||
namer=namer)
|
|
||||||
)
|
|
||||||
|
|
||||||
# http://www.gocomics.com/features
|
|
||||||
# XXX
|
|
||||||
|
|
||||||
# http://www.gocomics.com/explore/editorial_list
|
|
||||||
# XXX
|
|
||||||
|
|
||||||
# http://www.gocomics.com/explore/sherpa_list
|
|
||||||
# XXX
|
|
||||||
|
|
||||||
agnes = comicsDotCom('agnes', 'creators')
|
|
||||||
andycapp = comicsDotCom('andycapp', 'creators')
|
|
||||||
barkeaterlake = comicsDotCom('barkeaterlake', 'comics')
|
|
||||||
bc = comicsDotCom('bc', 'creators')
|
|
||||||
ben = comicsDotCom('ben', 'comics')
|
|
||||||
betty = comicsDotCom('betty', 'comics')
|
|
||||||
bignate = comicsDotCom('bignate', 'comics')
|
|
||||||
bonanas = comicsDotCom('bonanas', 'wash')
|
|
||||||
thebornloser = comicsDotCom('the-born-loser', 'comics')
|
|
||||||
thebuckets = comicsDotCom('thebuckets', 'comics')
|
|
||||||
candorville = comicsDotCom('candorville', 'wash')
|
|
||||||
calvinandhobbes = comicsDotCom('calvinandhobbes', 'comics')
|
|
||||||
chickweed = comicsDotCom('9chickweedlane', 'comics')
|
|
||||||
committed = comicsDotCom('committed', 'comics')
|
|
||||||
dilbert = comicsDotCom('dilbert', 'comics')
|
|
||||||
drabble = comicsDotCom('drabble', 'comics')
|
|
||||||
floandfriends = comicsDotCom('floandfriends', 'creators')
|
|
||||||
frazz = comicsDotCom('frazz', 'comics')
|
|
||||||
geech = comicsDotCom('geech', 'comics')
|
|
||||||
getfuzzy = comicsDotCom('getfuzzy', 'comics')
|
|
||||||
graffiti = comicsDotCom('graffiti', 'comics')
|
|
||||||
grandave = comicsDotCom('grand-avenue', 'comics')
|
|
||||||
heathcliff = comicsDotCom('heathcliff', 'creators')
|
|
||||||
herman = comicsDotCom('herman', 'comics')
|
|
||||||
janesworld = comicsDotCom('janesworld', 'comics')
|
|
||||||
jumpstart = comicsDotCom('jumpstart', 'comics')
|
|
||||||
kitandcarlyle = comicsDotCom('kitandcarlyle', 'comics')
|
|
||||||
luann = comicsDotCom('luann', 'comics')
|
|
||||||
marmaduke = comicsDotCom('marmaduke', 'comics')
|
|
||||||
moderatelyconfused = comicsDotCom('moderately-confused', 'comics')
|
|
||||||
momma = comicsDotCom('momma', 'creators')
|
|
||||||
monty = comicsDotCom('monty', 'comics')
|
|
||||||
nancy = comicsDotCom('nancy', 'comics')
|
|
||||||
offthemark = comicsDotCom('offthemark', 'comics')
|
|
||||||
onebighappy = comicsDotCom('onebighappy', 'creators')
|
|
||||||
peanuts = comicsDotCom('peanuts', 'comics')
|
|
||||||
pearlsbeforeswine = comicsDotCom('pearlsbeforeswine', 'comics')
|
|
||||||
pibgorn = comicsDotCom('pibgorn', 'comics')
|
|
||||||
pickles = comicsDotCom('pickles', 'wash')
|
|
||||||
redandrover = comicsDotCom('redandrover', 'wash')
|
|
||||||
roseisrose = comicsDotCom('roseisrose', 'comics')
|
|
||||||
rubes = comicsDotCom('rubes', 'creators')
|
|
||||||
rudypark = comicsDotCom('rudypark', 'comics')
|
|
||||||
speedbump = comicsDotCom('speedbump', 'creators')
|
|
||||||
strangebrew = comicsDotCom('strangebrew', 'creators')
|
|
||||||
tarzan = comicsDotCom('tarzan', 'comics')
|
|
||||||
wizardofid = comicsDotCom('wizardofid', 'creators')
|
|
||||||
workingdaze = comicsDotCom('working-daze', 'comics')
|
|
||||||
workingitout = comicsDotCom('workingitout', 'creators')
|
|
|
@ -158,3 +158,8 @@ def check_scrapers():
|
||||||
name2 = d[name].get_name()
|
name2 = d[name].get_name()
|
||||||
raise ValueError('Duplicate scrapers %s and %s found' % (name1, name2))
|
raise ValueError('Duplicate scrapers %s and %s found' % (name1, name2))
|
||||||
d[name] = scraperclass
|
d[name] = scraperclass
|
||||||
|
|
||||||
|
|
||||||
|
def make_scraper(classname, **attributes):
|
||||||
|
"""Make a new scraper class with given name and attributes."""
|
||||||
|
return type(classname, (_BasicScraper,), attributes)
|
||||||
|
|
|
@ -324,3 +324,8 @@ def strtimezone():
|
||||||
else:
|
else:
|
||||||
zone = time.timezone
|
zone = time.timezone
|
||||||
return "%+04d" % (-zone//3600)
|
return "%+04d" % (-zone//3600)
|
||||||
|
|
||||||
|
|
||||||
|
def asciify(name):
|
||||||
|
"""Remove non-ascii characters from string."""
|
||||||
|
return re.sub("[^0-9a-zA-Z_]", "", name)
|
||||||
|
|
Loading…
Reference in a new issue