Tweeter une image avec picamera / Twython

Rédigé par jeromef aucun commentaire


10 novembre 2014 Python, Raspberry aucun


Largement inspiré de :
- Cet article de la raspberry foundation (excellente rubrique make)
Et de l'utilisation de la librairie smtp pour envoi d'un mail en se servant (ici) de Gmail !

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from twython import Twython
import random
from picamera import PiCamera
import time
from datetime import datetime
import RPi.GPIO as GPIO

import smtplib
import mimetypes
import email
import email.mime.application
import sys

from auth import (
consumer_key,
consumer_secret,
access_token,
access_token_secret
)

GPIO.setmode(GPIO.BCM) # new
GPIO.setup(17, GPIO.IN, GPIO.PUD_UP) # new

messages = [
"Souriez MAINTENANT",
"Il est 19h , l'heure de sourire ",
"Ca roule ? photo ",
]

twitter = Twython(
consumer_key,
consumer_secret,
access_token,
access_token_secret
)

def main():
with PiCamera() as camera:
while True:
GPIO.wait_for_edge(17, GPIO.FALLING)
time.sleep(4)
# on dynamise le nom de l'img prise en ajoutant un timestant
# puis on la sauve dans un dossier "photos"
timestamp = datetime.now().isoformat()
photo_path = '/home/pi/tweet-img/photos/%s.jpg' % timestamp
camera.capture(photo_path)

# choice retourne un element d'une liste au hazard
message = random.choice(messages)
with open(photo_path, 'rb') as photo:
twitter.update_status_with_media(status=message, media=photo)

print("Tweeted: %s" % message)

# Create a text/plain message
msg = email.mime.Multipart.MIMEMultipart()
msg['Subject'] = 'Définissez ici le sujet du mail'
msg['From'] = 'blabla.... mail'
msg['To'] = 'blabla....mail'

# The main body is just another attachment
body = email.mime.Text.MIMEText("""Ajoutez ici un texte pour le contenu du mail""")
msg.attach(body)

directory = photo_path
spl_dir=directory.split('/')

filename=spl_dir[len(spl_dir)-1]

spl_type=directory.split('.')

type=spl_type[len(spl_type)-1]
fp=open(directory,'rb')
att = email.mime.application.MIMEApplication(fp.read(),_subtype=type)
fp.close()
att.add_header('Content-Disposition','attachment',filename=filename)
msg.attach(att)

s = smtplib.SMTP('smtp.gmail.com:587')
s.starttls()
s.login('blabla....mail','blabla....password')
s.sendmail('blabla....mail','blabla....@gmail.com', msg.as_string())
s.quit()

if __name__ == '__main__':
main()

Partager cet article sur :


Écrire un commentaire

Quelle est la quatrième lettre du mot yfbdbv ? :