#!/usr/bin/env python # -*- coding: utf-8 -*- __license__ = 'GPL v3' __copyright__ = '2010, Lars Jacob jacob.lars at gmail.com' __docformat__ = 'restructuredtext de' ''' www.taz.de/digiabo ''' import os import zipfile from calibre.web.feeds.news import BasicNewsRecipe from calibre.ptempfile import PersistentTemporaryFile try: from urllib.request import HTTPBasicAuthHandler, build_opener, install_opener, urlopen from urllib.error import HTTPError except ImportError: from urllib2 import HTTPBasicAuthHandler, build_opener, install_opener, urlopen, HTTPError class TazDigiabo(BasicNewsRecipe): title = u'Taz Digiabo' description = u'Das EPUB DigiAbo der Taz' language = 'de' lang = 'de-DE' __author__ = 'Lars Jacob' needs_subscription = True conversion_options = { 'no_default_epub_cover': True } def build_index(self): domain = "http://dl.taz.de" url = domain + "/epub/" auth_handler = HTTPBasicAuthHandler() auth_handler.add_password(realm='TAZ-ABO', uri=url, user=self.username, passwd=self.password) opener = build_opener(auth_handler) install_opener(opener) try: f = urlopen(url) except HTTPError: self.report_progress(0, _('Can\'t login to download issue')) raise ValueError('Failed to login, check your username and' ' password') tmp = PersistentTemporaryFile(suffix='.epub') self.report_progress(0, _('downloading epub')) tmp.write(f.read()) tmp.close() zfile = zipfile.ZipFile(tmp.name, 'r') self.report_progress(0, _('extracting epub')) zfile.extractall(self.output_dir) tmp.close() index = os.path.join(self.output_dir, 'content.opf') self.report_progress(1, _('epub downloaded and extracted')) return index