download gpx file attachments
This commit is contained in:
parent
184e13b698
commit
8868421671
23
main.py
23
main.py
@ -1,6 +1,8 @@
|
|||||||
import configparser
|
import configparser
|
||||||
from imaplib import IMAP4
|
from imaplib import IMAP4
|
||||||
import ssl
|
import ssl
|
||||||
|
import email
|
||||||
|
import os
|
||||||
|
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
|
|
||||||
@ -11,6 +13,7 @@ config.read('config.ini')
|
|||||||
db = create_engine(f"postgresql://{config['db']['username']}:{config['db']['password']}@{config['db']['host']}/{config['db']['database']}").connect()
|
db = create_engine(f"postgresql://{config['db']['username']}:{config['db']['password']}@{config['db']['host']}/{config['db']['database']}").connect()
|
||||||
|
|
||||||
mail = IMAP4(host=config['mail']['host'])
|
mail = IMAP4(host=config['mail']['host'])
|
||||||
|
fitotrack_msg_filter = '(OR SUBJECT "fitotrack" SUBJECT "Fitotrack" SUBJECT "FITOTRACK")'
|
||||||
|
|
||||||
|
|
||||||
def init_database():
|
def init_database():
|
||||||
@ -19,9 +22,29 @@ def init_database():
|
|||||||
|
|
||||||
|
|
||||||
def get_gpx_files_from_mail():
|
def get_gpx_files_from_mail():
|
||||||
|
try:
|
||||||
|
os.mkdir('gpx_files')
|
||||||
|
except FileExistsError:
|
||||||
|
pass
|
||||||
mail.starttls(ssl.create_default_context())
|
mail.starttls(ssl.create_default_context())
|
||||||
mail.login(config['mail']['username'], config['mail']['password'])
|
mail.login(config['mail']['username'], config['mail']['password'])
|
||||||
|
|
||||||
|
mail.create(config['mail']['mailbox_dir'])
|
||||||
|
mail.select()
|
||||||
|
(resp, ids) = mail.search(None, fitotrack_msg_filter)
|
||||||
|
ids = ids[0].split()
|
||||||
|
for i in ids:
|
||||||
|
resp, fetched = mail.fetch(i, '(RFC822)')
|
||||||
|
email_message = email.message_from_bytes(fetched[0][1])
|
||||||
|
for part in email_message.walk():
|
||||||
|
if part.get_content_maintype() == 'multipart' or part.get_content_disposition() is None:
|
||||||
|
continue
|
||||||
|
filename = part.get_filename()
|
||||||
|
|
||||||
|
if filename:
|
||||||
|
with open(os.path.join('gpx_files', filename), 'wb') as f:
|
||||||
|
f.write(part.get_payload(decode=True))
|
||||||
|
|
||||||
mail.logout()
|
mail.logout()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user