Ftp python error

Résolu
hello,

J'ai une urgence pour ce week-end, un anniversaire 70 ans
Et on me demande de mettre en place un photomaton...Merci c'est sympa les gars

Alors j'ai quoi ?
Un raspberry et sa camera, c'est déjà bien
Une recherche sur le net pour un truc simple et je tombe sur ça:
http://fablab-chalon.fr/tuto-realiser-photomaton/
un bouton sur le Pi et ça marche, une photo est enregistrée.
Le script en python:
http://fablab-chalon.fr/tuto-realiser-photomaton/

Je voulais prendre cette photo et une fois prise l'envoyer en ftp, mais moi, le python, je connais pas.
Je cherche un script sur le net, et je trouve ça:
https://openclassrooms.com/forum/sujet/python-envoi-ftp-98860

Bien sur, ça ne fonctionne pas avec une erreur:

host = "ftp.cluster.hosting.ovh.net"
^
IndentationError: unexpected unindent



le script python avec ma modif, j'ai mis entre des ------ ce que j'ai rajouté: Ligne 10 et à partir de la ligne 93
La connexion au ftp fonctionne, j'ai testé dans le navigateur web

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*
import RPi.GPIO as GPIO
import time
from datetime import datetime
from PIL import Image
import pygame
from pygame.locals import *
import os
------import ftplib as ftp------

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

pygame.init()
screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
width, height = screen.get_size()


def takepic(imageName): #prend une photo (note: il faut selectionner la ligne qui correspond à votre installation en enlevant le premier # )
    # command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -q 80" #prend une photo
    # command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 90 -q 80" #prend une photo et la tourne de 90°
    command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 180 -q 80" #prend une photo et la tourne de 180°
    # command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 270 -q 80" #prend une photo et la tourne de 270°
    os.system(command)

def loadpic(imageName): # affiche imagename
    print("loading image: " + imageName)
    background = pygame.image.load(imageName);
    background.convert_alpha()
    background = pygame.transform.scale(background,(width,height))
    screen.blit(background,(0,0),(0,0,width,height))
    pygame.display.flip()


def minuterie():
  writemessage("      3")
  time.sleep(1)
  writemessage("      2")
  time.sleep(1)
  writemessage("      1")
  time.sleep(1)
  writemessage("souriez")


def writemessage(message): # pour pouvoir afficher des messages sur un font noir 
    screen.fill(pygame.Color(0,0,0))
    font = pygame.font.SysFont("verdana", 250, bold=1)
    textsurface = font.render(message, 1, pygame.Color(255,255,255))
    screen.blit(textsurface,(35,40))
    pygame.display.update()


def writemessagetransparent(message): # pour pouvoir afficher des messages en conservant le font 
    font = pygame.font.SysFont("verdana", 50, bold=1)
    textsurface = font.render(message, 1, pygame.Color(255,255,255))
    screen.blit(textsurface,(35,40))
    pygame.display.update()



if (os.path.isdir("/home/pi/Desktop/photos") == False): # si le dossier pour stocker les photos n'existe pas       
   os.mkdir("/home/pi/Desktop/photos")                  # alors on crée le dossier (sur le bureau)
   os.chmod("/home/pi/Desktop/photos",0o777)            # et on change les droits pour pouvoir effacer des photos


while True : #boucle jusqu'a interruption
  try:
        print "\n attente boucle"
        
        #on attend que le bouton soit pressé
        GPIO.wait_for_edge(18, GPIO.FALLING)
        # on a appuyé sur le bouton...


        #on lance le decompte
        minuterie()


        #on genere le nom de la photo avec heure_min_sec
        date_today = datetime.now()
        nom_image = date_today.strftime('%d_%m_%H_%M_%S')

       
        #on prend la photo
        #chemin_photo = '/home/pi/Desktop/photos/image.jpeg'
        #takepic(chemin_photo) #on prend la photo 

        #on affiche la photo
       # loadpic(chemin_photo)


---------host = "ftp.cluster.hosting.ovh.net"
user = "xxxxxxxx"
password = "xxxxxxxx"
connect = (ftp.FTP(host, user, password))
 
# Connexion
print "Connexion a " +host
etat = connect.getwelcome()
print "Etat : ",etat
raw_input("------------")
 
# Ouverture Fichier
fichier = "/home/pi/Desktop/photos/image.jpg"
file = open(fichier,'rb')
 
# Envoi Fichier
connect.storbinary('STOR '+'image.jpg', file)
connect.retrlines('LIST')
 
raw_input("eof")-------

        #on affiche un message
        writemessagetransparent("et voila...")

        if (GPIO.input(18) == 0): #si le bouton est encore enfoncé (sont etat sera 0)
              print("bouton  appuye, je dois sortir")
              break # alors on sort du while 
 
               

  except KeyboardInterrupt:
    print 'sortie du programme!'
    raise

GPIO.cleanup()           # reinitialisation GPIO lors d'une sortie normale


Ce qui me gène le plus c'est le temps qu'il me reste, je pars demain après midi dans le Midi :)
Donc, une grosse aide serait la bienvenue
Merci

1 réponse

  1. Une histoire de tabulation devant les codes ajoutés....
    1. ça fonctionne pour le ftp, mais comme je voulais en plus remplir une bdd ovh en pithon, c'est mort, sur un serveur ovh mutualisé...