Python Script zum Download der wöchentlichen Zeit.de Epub Ausgabe

Seit ich ein 7,8 Zoll PocketBook Inkpad 3 besitze, lese ich auch die Zeit auf diesem Ebook-Reader. Um das wöchentlich erscheinde Epub auf den Reader zu bekommen, habe ich mir ein Download Python Script geschrieben.

Es versucht die Downlaod URL zu generieren und die Datei runterzuladen, im Fehlerfall schickt es mir eine E-Mail. Damit (und mit Hilfe meines alten Bash Scripts) bekomme ich die Zeit per Send-to-PocketBook auf meinen Reader.

Meine jetzige Lösung nutzt leider noch Server von dritten (Email über Sent-to-Pocket). Vielleicht bau ich es noch aus, um die Syncronisation über meine Nextcloud laufen zu lassen. Möglich scheint es zu sein.

 

# -*- coding: utf-8 -*-
"""
"""
import datetime

from email.mime.text import MIMEText
import requests
import smtplib
import sys
import os.path

email = sys.argv[1]
password = sys.argv[2]

def send_mail_to_me():
        msg = MIMEText('nt')
        msg['Subject'] = 'Zeit.de epub url does not exist'
        msg['From'] = email
        msg['To'] = email
        s = smtplib.SMTP('localhost')
        s.sendmail(msg['From'], [msg['To']], msg.as_string())

def download_file(url):
    local_filename = url.split('/')[-1]
    # NOTE the stream=True parameter
    r = requests.get(url, auth=(email, password), stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)
    return local_filename


if __name__ == '__main__':
    now = datetime.datetime.now()
    wk = now.isocalendar()[1]
    url = 'https://premium.zeit.de/system/files/{}-{}/epub/die_zeit_2018_{}.epub'.format(now.year, wk, wk+1)
    local_filename = url.split('/')[-1]
    full_script_path = os.path.dirname(os.path.abspath(__file__))
    full_zeit_path = full_script_path + '/' + local_filename
    if not os.path.isfile(full_zeit_path):
        url_exits = requests.get(url, auth=(email, password))
        if url_exits.status_code not in [200, 201]:
            send_mail_to_me()
            sys.exit(1)
        else:
            name = download_file(url)
            print name


 

Github Gist Link