Отправить видеофайл через PythonPython

Программы на Python
Anonymous
Отправить видеофайл через Python

Сообщение Anonymous »

Мне нужно придумать, как создать скрипт, который сканирует новые файлы в каталоге и при их появлении отправляет файл по электронной почте.

Кто-то продолжает воровать велосипеды в моем доме! Сначала это была моя вина (мне пришлось его запереть), теперь мошенник усовершенствовал, перерезав цепи. Он появился у меня после того, как мошенник украл мой второй велосипед, перерезав авиапроволоку на 1/2 дюйма.

В любом случае, используя Raspberry Pi в качестве камеры безопасности, активируемой движением, я хочу, чтобы она отправила мне видеофайл, как только видеопрограмма завершит его запись. Это на случай, если они украдут число Пи.

Я смотрю на эти примеры, но не могу понять, как заставить скрипт работать непрерывно (каждую минуту) или как это сделать. заставить его сканировать папку на наличие нового файла.

Как отправлять вложения с помощью SMTP?

ОК
Я отсканировал и попытался отправить по электронной почте. Не получается прикрепить видеофайл. Можете ли вы помочь? Вот исправленный код:

Ошибка:

msg = MIMEMultipart()
TypeError: объект LazyImporter не может быть вызван, строка 38


import time, glob
import smtplib
import email.MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders, MIMEMultipart
import os

#Settings:
fromemail= "Jose Garcia "
loginname="somerandomemail@gmail.com"
loginpassword="somerandomepassword"
toemail= "Jose Garcia "
SMTPserver='smtp.gmail.com'
SMTPort=587
fileslocation="/Users/someone/Desktop/Test/*.mp4"
subject="Security Notification"

def mainloop():
files=glob.glob(fileslocation) #Put whatever path and file format you're using in there.
while 1:
new_files=glob.glob(fileslocation)
if len(new_files)>len(files):
for x in new_files:
if x in files:
print("New file detected "+x)
print("about to call send email")
sendMail(loginname, loginpassword, toemail, fromemail, subject, gethtmlcode(), x, SMTPserver, SMTPort)

files=new_files
time.sleep(1)

def sendMail(login, password, to, frome, subject, text, filee, server, port):
# assert type(to)==list
# assert type(filee)==list

msg = MIMEMultipart()
msg['From'] = frome
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject

msg.attach( MIMEText(text) )

# #for filee in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(filee,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(filee))
msg.attach(part)

smtp = smtplib.SMTP(SMTPserver, SMTPort)
smtp.sendmail(frome, to, msg.as_string() )
server.set_debuglevel(1)
server.starttls()
server.ehlo()
server.login(login, password)
server.sendmail(frome, to, msg)
server.quit()

def gethtmlcode():
print("about to assemble html")
html = ''
html +='
A new video file has been recorded
'
html += ""
return(html)

#Execute loop
mainloop()


Подробнее здесь: https://stackoverflow.com/questions/256 ... via-python

Вернуться в «Python»