# -*- coding: utf-8 -*- import email import traceback import amazon import banggood import hm import ikea import ingdiba import kickstarter import lieferservice import mytaxi import oebb import thomann import uber import wienerlinien import yipbee order_confirmation_parsers = [ amazon.parse_order_confirmation_mail, banggood.parse_order_confirmation_mail, hm.parse_order_confirmation_mail, ikea.parse_order_confirmation_mail, kickstarter.parse_order_confirmation_mail, lieferservice.parse_order_confirmation_mail, mytaxi.parse_order_confirmation_mail, oebb.parse_order_confirmation_mail, thomann.parse_order_confirmation_mail, uber.parse_order_confirmation_mail, wienerlinien.parse_order_confirmation_mail, yipbee.parse_order_confirmation_mail, ] def parse_order_confirmation_mail(mail): assert isinstance(mail, email.message.Message) tracebacks = {} for parser in order_confirmation_parsers: try: return parser(mail = mail) except: tracebacks['%s.%s' % (parser.__module__, parser.__name__)] = traceback.format_exc() raise Exception('\n'.join(['%s:\n%s' % (f, t) for (f, t) in tracebacks.items()]))