alles,was sich so angesammelt hat

This commit is contained in:
hubobel 2017-12-01 18:51:46 +01:00
parent 9ea4115722
commit 82d39233eb
38 changed files with 1720 additions and 0 deletions

438
mpgScanner.py Normal file
View file

@ -0,0 +1,438 @@
import requests
import json
import time
import datetime
import os
import smtplib
import random
import shutil
try:
import telebot
telegram = True
except ImportError:
print('Librarie "telebot" ist nicht installiert. Keine Verwendung von Telegram!!!')
print('Installation über: "pip3 install pyTelegramBotAPI"')
telegram = False
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
def Download(url):
#return None
filename = pfad+'/mpg/'+url+'.pdf'
url = 'http://www.mpglu.de/vps/'+url+'.pdf'
req = requests.get(url, auth=(jsonpass['mpg_user'], jsonpass['mpg_pass']))
file = open(filename, 'wb')
for chunk in req.iter_content(100000):
file.write(chunk)
file.close()
return None
def modification_date(filename):
t = os.path.getmtime(filename)
return datetime.datetime.fromtimestamp(t)
def Nachricht(fradress, toadress, bccs=[], sub='I am ROOT',body='this comes from Hubobel', attach=[]):
fromaddr = fradress
toaddr = toadress
if bccs==[]:
bccs = toadress
pwd = jsonpass['gmail_pass']
acc = jsonpass['gmail_user']
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = sub
msg.attach(MIMEText(body, 'plain'))
for each in attach:
filename = each
attachment = open(pfad + '/mpg/'+each, 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename= %s' % filename)
msg.attach(part)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(acc, pwd)
text = msg.as_string()
server.sendmail(fromaddr, bccs, text)
server.quit()
return
def json_pass_holen(pfad):
with open(pfad+'/pass.json') as file:
passw = json.load(file)
passw['Uhrzeit'] = time.strftime("%H:%M:%S")
passw['Tag_Name'] = time.strftime('%A')
#passw['Tag_Nummer'] = time.strftime('%w')
passw['pfad']=pfad
with open(pfad+'/pass.json', 'w') as fp:
json.dump(passw, fp, sort_keys=True, indent=4)
return passw
def update():
global jsonpass
with open(pfad+'/pass.json') as file:
jsonpass=json.load(file)
if 'Tag_Nummer' in jsonpass or jsonpass['debug']=='True':
print (jsonpass['Tag_Nummer'])
if jsonpass['Tag_Nummer']!= wtag or jsonpass['debug']=="True":
print ('update json mit '+str(wtag))
jsonpass['Tag_Nummer']=str(wtag)
url_zitat = 'https://taeglicheszit.at/zitat-api.php?format=json'
resp_zitat = requests.get(url_zitat)
data_zitat = resp_zitat.json()
jsonpass['zitat']=data_zitat['zitat']
jsonpass['autor']=data_zitat['autor']
with open(pfad+'/pass.json', 'w') as fp:
json.dump(jsonpass, fp, sort_keys=True, indent=4)
return True, jsonpass
else:
print('kein Update')
return False
else:
jsonpass['Tag_Nummer']=''
with open(pfad+'/pass.json', 'w') as fp:
json.dump(jsonpass, fp, sort_keys=True, indent=4)
def Wetter():
url = 'http://api.wunderground.com/api/'+jsonpass['wetter_API']+'/conditions/lang:DL/q/Germany/pws:'+jsonpass['wetter_Ort']+'.json'
response = requests.get(url)
data_response = response.json()
temperatur=(data_response['current_observation']['temp_c'])
wetter=(data_response['current_observation']['weather'])
feuchte=(data_response['current_observation']['relative_humidity'])
if wetter=='Leichter Regen':
wetter='bedeckt und es herrscht leichter Regen....brrrrr!'
if wetter=='Regen':
wetter='voller Wolken und es regnet.'
return temperatur,wetter,feuchte
def Chuckfact():
url_zitat = 'http://api.hubobel.de/zufall'
resp_zitat = requests.get(url_zitat)
data_zitat = resp_zitat.json()
for i in data_zitat:
fact=(data_zitat[i])
return fact
def Lotto():
a = (sorted(random.sample(range(1, 49), 6)))
b = random.randrange(0, 9)
while b in a:
b = random.randrange(1, 49)
lotto = str(a) + ',Superzahl: ' + str(b)
return lotto
pfad = os.path.dirname(__file__)
mail = 0
jetzt = int(time.strftime('%j'))
tag = time.strftime('%d')
wtag = time.strftime('%w')
mailzusatz=""
ferien = False
ferien_morgen = False
feiertag = False
feiertag_morgen = False
fradress='carsten.richter77@gmail.com'
toadress='carsten@hubobel.de'
tage=['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag']
wtag1=wtag
heute_name=(tage[int(wtag)-1])
if int(wtag)>=5:
wtag1=0
morgen_name=(tage[int(wtag1)])
if os.path.isfile(pfad+'/pass.json') !=True:
print('"pass.json" scheint es nicht zu geben.')
print('Ich lege eine neue Datei "pass.json" an.')
passw={"gmail_pass": "","gmail_user": "",
"mpg_user": "",
"mpg_pass": "",
"Chat_ID": "","TOKEN": "",
"ccu_ip": "","Land": "rp",
"Wochentag": ""}
print(str(passw)+ ' bitte entsprechend befüllen.')
with open(pfad+'/pass.json', 'w') as fp:
json.dump(passw, fp, sort_keys=True, indent=4)
quit()
else:
jsonpass = json_pass_holen(pfad)
if jsonpass['TOKEN']=='' or jsonpass['Chat_ID']=='':
telegram=False
if telegram:
TOKEN = jsonpass['TOKEN']
chat_id = jsonpass['Chat_ID']
tb = telebot.TeleBot(TOKEN)
if os.path.isfile(pfad+'/mpg/adressen.txt'):
fobj = open(pfad + "/mpg/adressen.txt")
bcc = []
for line in fobj:
a = line.rstrip()
bcc.append(a)
fobj.close()
if jsonpass['ccu_ip']!='':
url_ferien_ccu = 'http://'+jsonpass['ccu_ip']+'/loksoft.exe?ret=dom.GetObject("Ferien").State('
ccu = True
else:
ccu = False
if os.path.isdir(pfad+'/mpg')!= True: #prüfen, ob das UNTERverzeichniss /mpg bereits existiert
os.makedirs(pfad+'/mpg')
print ('Downloadverzeichniss bei '+pfad +' /mpg/ created!!!')
if int(tag) == 1 and int(time.strftime('%H'))== 8: #Update einmal pro Monat (Ferien)
print("It´s Update Time!!!")
url_ferien = 'http://api.smartnoob.de/ferien/v1/ferien/?bundesland=' + jsonpass['Land']
url_feiertage = 'http://api.smartnoob.de/ferien/v1/feiertage/?bundesland=' + jsonpass['Land']
resp_ferien = requests.get(url_ferien)
resp_feiertage = requests.get(url_feiertage)
data_ferien = resp_ferien.json()
data_feiertage = resp_feiertage.json()
with open(pfad + '/mpg/json_ferien.data', 'w') as outfile:
json.dump(data_ferien, outfile)
with open(pfad + '/mpg/json_feiertage.data', 'w') as outfile:
json.dump(data_feiertage, outfile)
if os.path.isfile(pfad+'/mpg/json_ferien.data')!= True: #Download der jsons, falls diese lokal nicht existieren
print('The json_xxx.datas not found, will try to download them from the API')
url_ferien = 'http://api.smartnoob.de/ferien/v1/ferien/?bundesland=' + jsonpass['Land']
url_feiertage = 'http://api.smartnoob.de/ferien/v1/feiertage/?bundesland=' + jsonpass['Land']
resp_ferien = requests.get(url_ferien)
resp_feiertage = requests.get(url_feiertage)
data_ferien = resp_ferien.json()
data_feiertage = resp_feiertage.json()
with open(pfad+'/mpg/json_ferien.data','w') as outfile:
json.dump(data_ferien, outfile)
with open(pfad+'/mpg/json_feiertage.data','w') as outfile:
json.dump(data_feiertage, outfile)
with open(pfad+'/mpg/json_ferien.data') as file:
data_ferien=json.load(file)
with open(pfad+'/mpg/json_feiertage.data') as file:
data_feiertage=json.load(file)
a= len(data_ferien['daten'])
x = 0
while x <a:
beginn = data_ferien['daten'][x]['beginn']
beginn = datetime.datetime.fromtimestamp(beginn)
beginn = int(beginn.strftime('%j'))
ende = data_ferien['daten'][x]['ende']
ende = datetime.datetime.fromtimestamp(ende)
ende = int(ende.strftime('%j'))-1
if jetzt <= ende and jetzt >= beginn:
ferien = True
if jetzt-1 == beginn:
ferien_morgen = True
if jetzt >= beginn and jetzt <= ende-1:
ferien_morgen = True
x = x+1
if ferien and ccu: #setzen der CCU Variable
try:
requests.post(url_ferien_ccu+'1)')
except:
None
if ferien == False and ccu :
try:
requests.post(url_ferien_ccu+'0)')
except:
None
a= len(data_feiertage['daten'])
x = 0
while x <a:
beginn = data_feiertage['daten'][x]['beginn']
beginn = datetime.datetime.fromtimestamp(beginn)
beginn = int(beginn.strftime('%j'))
ende = data_feiertage['daten'][x]['ende']
ende = datetime.datetime.fromtimestamp(ende)
ende = int(ende.strftime('%j'))-1
if jetzt <= ende and jetzt >= beginn:
feiertag = True
if jetzt+1 == beginn:
feiertag_morgen = True
x = x+1
print('Es sind Ferien: '+ str(ferien))
print('Es sind morgen Ferien: '+ str(ferien_morgen))
print('Es ist ein Feiertag: '+str(feiertag))
print('Es ist morgen ein Feiertag: '+str(feiertag_morgen))
if feiertag_morgen:
mailzusatz = '\n \nMorgen ist ein Feiertag.\nNeue Nachrichten erst am nächsten Werktag wieder.\nGenießt die Zeit!'
############################################################
if ferien:
print('Es sind Ferien, also lass ich euch in Ruhe')
quit()
if feiertag_morgen:
print('Morgen ist Feiertag, also gibts auch nichts, was sich lohnt, anzuschauen.')
#quit()
try:
os.rename(pfad + '/mpg/heute.pdf', pfad +'/mpg/heute1.pdf')
url = 'heute'
Download(url)
x = os.stat(pfad+'/mpg/heute.pdf')
x = x.st_size
x1 = str(x)
y = os.stat(pfad+'/mpg/heute1.pdf')
y = y.st_size
y1 = str(y)
if x != y:
mail=mail+1
else:
print("Es gibt keine neuen Mals mit 'heute'")
d = modification_date(pfad+'/mpg/heute.pdf')
d = d.strftime('%H:%M:%S')
print("heute: " + d + ' '+ x1 + ' Bytes')
d = modification_date(pfad+'/mpg/heute1.pdf')
d = d.strftime('%H:%M:%S')
print("heute1: " + d + ' '+ y1 + ' Bytes')
except FileNotFoundError:
print("File Heute.PDF not found")
print("Will try to download it from the MPG-Server")
url = 'heute'
Download(url)
try:
os.rename(pfad+'/mpg/morgen.pdf', pfad+'/mpg/morgen1.pdf')
url = 'morgen'
Download(url)
x = os.stat(pfad+'/mpg/morgen.pdf')
x = x.st_size
x1 = str(x)
y = os.stat(pfad+'/mpg/morgen1.pdf')
y = y.st_size
y1 = str(y)
if x != y:
mail = mail + 2
else:
print("Es gibt keine neuen Mails mit 'morgen'")
d= modification_date(pfad+'/mpg/morgen.pdf')
d = d.strftime('%H:%M:%S')
print("morgen: " + d + ' ' + x1 + ' Bytes')
d = modification_date(pfad+'/mpg/morgen1.pdf')
d = d.strftime('%H:%M:%S')
print("morgen1: " + d + ' ' + x1 + ' Bytes')
except FileNotFoundError:
print("File Morgen.PDF not found")
print("Will try to download it from the MPG-Server")
url = 'morgen'
Download(url)
#sub='Hier kommt der Betreff rein'
#body = 'hier der Mailtext'
#anhang = ['adressen.txt','heute.pdf','morgen.pdf']
#Nachricht (fradress,toadress,bcc,sub,body,anhang)
if mail!=0 or jsonpass['debug']=='True':
if update():
print ('Neuer Tag, neues Gluck!')
if wtag == '1':
mailzusatz = '\n \nWillkommen in der ' + str(time.strftime('%W')) + '.Kalenderwoche.' + \
'\nNicht verzagen, nur Druck formt aus Kohle einen Diamanten!' \
'\nZitat des Tages:\n'+ jsonpass['zitat']+ \
'\nAutor: ' + jsonpass['autor'] + '\n'
if wtag == '2':
mailzusatz = '\n \nDer Montag liegt hinter uns.\nAb heuteb kann es nur noch aufwärts gehen!' \
'\nViel Spass, bei allem, was ihr so treibt\n'+ \
'\nZitat des Tages:\n'+ jsonpass['zitat']+ \
"\nAutor: " + jsonpass['autor'] + '\n'
if wtag == '3':
lotto=Lotto()
mailzusatz = '\n \nHallo Mittwoch!\nIch wünsche eine schöne Wochenmitte.\nKopf hoch! ' \
+ 'Wenn ich Lotto spielen würde, dann kämen heute folgende Zahlen zum Einsatz: ' +lotto +\
'\n\nZitat des Tages:\n'+ jsonpass['zitat']+ \
"\nAutor: " + jsonpass['autor'] + '\n'
if wtag == '4':
mailzusatz = '\n \nDer Donnerstag ist bekanntlich der \'kleine Freitag\'' \
'\nNur noch einmal (!) Gas geben!\n' '\nZitat des Tages:\n'+ jsonpass['zitat']+\
'\nAutor: '+jsonpass['autor']+'\n'
if wtag == '5':
lotto=Lotto()
mailzusatz = '\n \nEs ist Freitag!\nIch wünsche ein schönes Wochenende.' \
'\nNeue Nachrichten kommen erst am Montag wieder.\n'+'Vieleicht habt ihr ja am Samstag'\
' Glück beim Lotto. Probiert doch mal diese Zahlen: '+lotto+\
'\n\nZitat des Tages:\n'+ jsonpass['zitat']+\
'\nAutor: '+jsonpass['autor']+'\n'
else:
print ('im Westen nix neues')
if jsonpass['debug']=="True":
update()
print('DEBUG_MODE')
bcc=jsonpass['debug_adress']
TOKEN = jsonpass['debug_TOKEN']
chat_id = jsonpass['debug_Chat_ID']
tb = telebot.TeleBot(TOKEN)
mailzusatz = mailzusatz + '\n \nDies ist eine Testnachricht!\nDer Versand erfolgt nur an Hubobel und schneeschieben.\n\n' \
'Zitat des Tages:\n'+ jsonpass['zitat']+'\nAutor: '+jsonpass['autor']+'\n'
if 'wetter_API' in jsonpass:
if jsonpass['wetter_API']!='':
temperatur,wetter,feuchte=Wetter()
bericht='\nAktuell haben wir geschmeidige '+str(temperatur)+' Grad Celsius bei '+str(feuchte)\
+' Luftfeuchtigkeit.\nDer Himmel ist '+str(wetter)+'.\n'
else:
bericht = 'Wie das Wetter derzeit ist? Man(n) richte seinen Blick gen Himmel oder' \
' generiere einen API-Key unter https://www.wunderground.com/signup?mode=api_signup'
else:
bericht='Wie das Wetter derzeit ist? Man(n) richte seinen Blick gen Himmel oder' \
' generiere einen API-Key unter https://www.wunderground.com/signup?mode=api_signup'
fact='\nChuck-Norris-Fact:\n'+Chuckfact()
shutil.copy(pfad+'/mpg/morgen.pdf',pfad+'/mpg/'+morgen_name+'.pdf')
if mail == 1 or jsonpass['debug']=='True':
body = 'Es gibt eine aktuelle Version des heutigen Vertretungsplanes.'+mailzusatz+bericht+fact
anhang = ['heute.pdf']
sub = 'MPG-heute aktualisiert'
if os.path.isfile(pfad + '/mpg/adressen.txt'):
Nachricht(fradress, toadress, bcc, sub, body, anhang)
print (body+' ich versende das mal an: '+str(bcc))
if telegram:
document = open(pfad+'/mpg/heute.pdf', 'rb')
tb.send_document(chat_id, document, caption='Es gibt eine aktuelle Version des heutigen Vertretungsplanes.')
tb.send_message(chat_id, mailzusatz+bericht+fact)
if mail == 2 or jsonpass['debug']=='True':
body = 'Es gibt eine aktualisierte Version des Vertretungsplanes für '+morgen_name+mailzusatz+bericht+fact
anhang = [morgen_name+'.pdf']
sub = 'MPG-morgen aktualisiert'
if os.path.isfile(pfad + '/mpg/adressen.txt'):
Nachricht(fradress, toadress, bcc, sub, body, anhang)
print (body+' ich versende das mal an: '+str(bcc))
if telegram:
document = open(pfad + '/mpg/'+morgen_name+'.pdf', 'rb')
tb.send_document(chat_id, document, caption='Es gibt eine aktualisierte Version '
'des Vertretungsplanes für '+morgen_name+'.')
tb.send_message(chat_id, mailzusatz + bericht+fact)
if mail == 3 or jsonpass['debug']=='True':
body = 'Es gibt aktualisierte Versionen der MPG-Vertretungspläne.'+mailzusatz+bericht+fact
anhang = ['heute.pdf',morgen_name+'.pdf']
sub = 'MPG-Vertretungspläne aktualisiert'
if os.path.isfile(pfad + '/mpg/adressen.txt'):
Nachricht(fradress, toadress, bcc, sub, body, anhang)
print (body+' ich versende das mal an: '+str(bcc))
if telegram:
document = open(pfad + '/mpg/heute.pdf', 'rb')
tb.send_document(chat_id, document, caption='Es gibt aktualisierte Versionen der MPG-Vertretungspläne.')
document = open(pfad + '/mpg/'+morgen_name+'.pdf', 'rb')
tb.send_document(chat_id, document)
tb.send_message(chat_id, mailzusatz + bericht+fact)