diff --git a/resources/recipes/taz.recipe b/resources/recipes/taz.recipe index 45b414f3cd..93ce5fded0 100644 --- a/resources/recipes/taz.recipe +++ b/resources/recipes/taz.recipe @@ -8,8 +8,9 @@ __docformat__ = 'restructuredtext de' ''' www.taz.de/digiabo ''' -import os, urllib2, zipfile, tempfile +import os, urllib2, zipfile from calibre.web.feeds.news import BasicNewsRecipe +from calibre.ptempfile import PersistentTemporaryFile class TazDigiabo(BasicNewsRecipe): @@ -26,38 +27,39 @@ class TazDigiabo(BasicNewsRecipe): } def build_index(self): - if self.username is not None and self.password is not None: - domain = "http://www.taz.de" + domain = "http://www.taz.de" - url = domain + "/epub/" + url = domain + "/epub/" - auth_handler = urllib2.HTTPBasicAuthHandler() - auth_handler.add_password(realm='TAZ-ABO', - uri=url, - user=self.username, - passwd=self.password) - opener = urllib2.build_opener(auth_handler) - urllib2.install_opener(opener) + auth_handler = urllib2.HTTPBasicAuthHandler() + auth_handler.add_password(realm='TAZ-ABO', + uri=url, + user=self.username, + passwd=self.password) + opener = urllib2.build_opener(auth_handler) + urllib2.install_opener(opener) - try: - f = urllib2.urlopen(url) - except urllib2.HTTPError: - self.report_progress(0,_('Can\'t login to download issue')) - raise ValueError('Failed to login, check your username and' - ' password') + try: + f = urllib2.urlopen(url) + except urllib2.HTTPError: + self.report_progress(0,_('Can\'t login to download issue')) + raise ValueError('Failed to login, check your username and' + ' password') - tmp = tempfile.TemporaryFile() - self.report_progress(0,_('downloading epub')) - tmp.write(f.read()) + tmp = PersistentTemporaryFile(suffix='.epub') + self.report_progress(0,_('downloading epub')) + tmp.write(f.read()) + tmp.close() - zfile = zipfile.ZipFile(tmp, 'r') - self.report_progress(0,_('extracting epub')) + zfile = zipfile.ZipFile(tmp.name, 'r') + self.report_progress(0,_('extracting epub')) - zfile.extractall(self.output_dir) + zfile.extractall(self.output_dir) - tmp.close() - index = os.path.join(self.output_dir, 'content.opf') + tmp.close() + index = os.path.join(self.output_dir, 'content.opf') - self.report_progress(1,_('epub downloaded and extracted')) + self.report_progress(1,_('epub downloaded and extracted')) + + return index - return index diff --git a/src/calibre/web/feeds/input.py b/src/calibre/web/feeds/input.py index 32d9075465..9b9a34be7d 100644 --- a/src/calibre/web/feeds/input.py +++ b/src/calibre/web/feeds/input.py @@ -10,6 +10,7 @@ import os from calibre.customize.conversion import InputFormatPlugin, OptionRecommendation from calibre.constants import numeric_version +from calibre import walk class RecipeDisabled(Exception): pass @@ -111,6 +112,10 @@ class RecipeInput(InputFormatPlugin): if f.endswith('.opf'): return os.path.abspath(f) + for f in walk('.'): + if f.endswith('.opf'): + return os.path.abspath(f) + def postprocess_book(self, oeb, opts, log): if self.recipe_object is not None: self.recipe_object.postprocess_book(oeb, opts, log)