Compare commits
No commits in common. "3141922d6f8d03f6e4e8feb1b2b3a45692c227a4" and "1456ddc2e509f44e3587731b0877e7ec42ca78e7" have entirely different histories.
3141922d6f
...
1456ddc2e5
31
main.py
31
main.py
@ -4,7 +4,6 @@ import ssl
|
||||
import email
|
||||
import os
|
||||
from glob import glob
|
||||
from email.message import Message
|
||||
|
||||
from sqlalchemy import create_engine, text
|
||||
from sqlalchemy.engine import Connection
|
||||
@ -26,18 +25,11 @@ def init_database():
|
||||
db.execute('\n'.join(f.readlines()))
|
||||
|
||||
|
||||
def _get_sender(msg: Message) -> str:
|
||||
sender: str = msg.get('from')
|
||||
if ' ' in sender:
|
||||
sender = sender.split(' ')
|
||||
for field in sender:
|
||||
if '@' in field and '<' in field and '>' in field:
|
||||
return field[1:-1]
|
||||
|
||||
return sender
|
||||
|
||||
|
||||
def get_gpx_files_from_mail():
|
||||
try:
|
||||
os.mkdir('gpx_files')
|
||||
except FileExistsError:
|
||||
pass
|
||||
mail.starttls(ssl.create_default_context())
|
||||
mail.login(config['mail']['username'], config['mail']['password'])
|
||||
|
||||
@ -48,18 +40,15 @@ def get_gpx_files_from_mail():
|
||||
for i in ids:
|
||||
_, fetched = mail.fetch(i, '(RFC822)')
|
||||
email_message = email.message_from_bytes(fetched[0][1])
|
||||
sender = _get_sender(email_message)
|
||||
sender = email_message.get('from')
|
||||
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:
|
||||
filename = f'{sender}_{filename}'
|
||||
if not os.path.exists(f'gpx_files/{filename}'):
|
||||
with open(f'gpx_files/{filename}', 'wb') as f:
|
||||
f.write(part.get_payload(decode=True))
|
||||
|
||||
if filename and not os.path.exists(f'gpx_files/{filename}'):
|
||||
with open(os.path.join('gpx_files', f'{sender}_{filename}'), 'wb') as f:
|
||||
f.write(part.get_payload(decode=True))
|
||||
mail.store(i, '+FLAGS', '\\Deleted')
|
||||
|
||||
mail.expunge()
|
||||
@ -107,10 +96,6 @@ def process_gpx_files(tx: Connection):
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
os.mkdir('gpx_files')
|
||||
except FileExistsError:
|
||||
pass
|
||||
init_database()
|
||||
get_gpx_files_from_mail()
|
||||
db.transaction(process_gpx_files)
|
||||
|
Loading…
x
Reference in New Issue
Block a user