my-python-space / app.py
NoahH7's picture
Update app.py
d185874 verified
raw
history blame
3.47 kB
from transformers import DetrImageProcessor, DetrForObjectDetection
import torch
from PIL import Image
import requests
# Fonction pour envoyer l'email via Mailtrap
def send_email(api_key, inbox_id, subject, content, from_email, to_email):
url = f"https://mailtrap.io/api/v1/inboxes/{inbox_id}/messages"
headers = {
"Api-Token": api_key,
"Content-Type": "application/json"
}
data = {
"from": from_email,
"to": to_email,
"subject": subject,
"text": content
}
response = requests.post(url, headers=headers, json=data)
# Debug: Print the raw response
print(f"Response content: {response.text}")
# Check if response is empty or not JSON
try:
response_json = response.json()
except ValueError:
response_json = {}
return response.status_code, response_json
# Fonction pour générer du texte avec Gemini
def generate_text_with_gemini(api_key, prompt):
url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=AIzaSyCJVUr-76I4TL42X98d9U0THbRD3MKlB38'" # Remplacez par l'URL correcte de l'API Gemini
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
data = {
"prompt": prompt,
"max_tokens": 150, # Ajustez en fonction de vos besoins
"temperature": 0.7 # Ajustez en fonction de vos besoins
}
response = requests.post(url, headers=headers, json=data)
response_data = response.json()
return response_data.get('text', '')
# URL de l'image d'exemple
url = "https://www.saint-genes.com/wp-content/uploads/2019/10/DSC05405.jpg"
image = Image.open(requests.get(url, stream=True).raw)
# Téléchargement du modèle sans la dépendance 'timm'
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
# Préparer l'image pour le modèle
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
# Post-traitement des résultats pour obtenir les boîtes englobantes et les labels
target_sizes = torch.tensor([image.size[::-1]])
results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
# Compter le nombre de personnes détectées
persons = 0
for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
if model.config.id2label[label.item()] == 'person':
persons += 1
expected_number_of_persons = 10 # Nombre attendu de personnes
absents = expected_number_of_persons - persons
# Générer le contenu de l'email avec Gemini
prompt = f"Notifier de l'absence: Le nombre de personnes présentes est de {persons}. Le nombre d'absents est de {absents}."
gemini_api_key = "AIzaSyCJVUr-76I4TL42X98d9U0THbRD3MKlB38"
email_content = generate_text_with_gemini(gemini_api_key, prompt)
# Définir les variables pour l'email
email_subject = "Notification d'absents"
from_email = "your-email@example.com"
to_email = "recipient@example.com"
# Clés API Mailtrap et informations d'email
mailtrap_api_key = "0dfd557dc980d49b306ae8647a9fa585"
inbox_id = "3128145"
# Envoyer l'email
status_code, response_json = send_email(mailtrap_api_key, inbox_id, email_subject, email_content, from_email, to_email)
print(f"Email sent with status code {status_code}: {response_json}")