dosage/scripts/gocomics.py
Tobias Gruetzmacher 1fbc844077 Update GoComics.
2016-04-17 18:40:09 +02:00

60 lines
1.8 KiB
Python
Executable file

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (C) 2004-2005 Tristan Seligmann and Jonathan Jacobs
# Copyright (C) 2012-2014 Bastian Kleineidam
# Copyright (C) 2015-2016 Tobias Gruetzmacher
"""
Script to get a list of gocomics and save the info in a JSON file for further
processing.
"""
from __future__ import absolute_import, division, print_function
from scriptutil import ComicListUpdater
class GoComicsUpdater(ComicListUpdater):
# names of comics to exclude
excluded_comics = [
# "coming soon"
"AngryProgrammer",
"Guinness",
"Jabberwoncky",
"Pi",
"RandysRationale",
"SignsOfOurTimes",
"TheGagwriter",
"Yaoyao",
# duplicate
"Dilbert",
"SaturdayMorningBreakfastCereal",
# not available
"BuffaloChips",
"Crawdiddy",
]
def handle_url(self, url):
"""Parse one search result page."""
data = self.get_url(url, expand=False)
for comiclink in data.cssselect('a.alpha_list'):
link = comiclink.attrib['href']
name = comiclink.text
self.add_comic(name, link)
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')
def get_classdef(self, name, url):
return u"class GC%s(_GoComics%s):\n path = %r" % (
name, 'Es' if 'espanol/' in url else '', url[1:])
if __name__ == '__main__':
GoComicsUpdater(__file__).run()