Init repo

This commit is contained in:
Leonardo Mortari
2025-07-31 19:29:14 -03:00
commit 55c7ccf316
7 changed files with 314 additions and 0 deletions

97
main.py Normal file
View File

@@ -0,0 +1,97 @@
import os
import requests
import threading
import glob
import shutil
os.environ["IMAGEIO_FFMPEG_EXE"] = "/usr/bin/ffmpeg"
from flask import Flask, request, jsonify
from components.video import process_full_video
app = Flask(__name__)
def process_and_call_webhook(url, video_id, times, webhook_url, row_number, filename, title):
try:
os.makedirs("videos", exist_ok=True)
os.makedirs("temp", exist_ok=True)
print(f"Working on video {filename}")
processed_files = process_full_video(filename, title, times)
payload = {
"videosProcessedQuantity": len(processed_files),
"filename": filename,
"processedFiles": processed_files,
"rowNumber": row_number,
"url": url,
"videoId": video_id,
"error": False,
}
try:
resp = requests.post(webhook_url, json=payload, timeout=30)
print(f"Webhook status: {resp.status_code}, content: {resp.text}")
except Exception as webhook_error:
print(f"Erro ao chamar webhook: {webhook_error}")
except Exception as e:
payload = {
"videosProcessedQuantity": 0,
"filename": filename,
"processedFiles": processed_files,
"rowNumber": row_number,
"url": url,
"videoId": video_id,
"error": str(e),
}
try:
resp = requests.post(webhook_url, json=payload, timeout=30)
print(f"Webhook send error status: {resp.status_code}")
print(str(e))
except Exception as webhook_error:
print(f"Erro ao chamar webhook: {webhook_error}")
print(f"Erro no processamento: {e}")
@app.route('/process', methods=['POST'])
def process_video():
data = request.get_json()
if not data or not ("url" in data or "videoId" in data):
return jsonify({"error": "Informe 'url' ou 'videoId'"}), 400
url = data.get("url")
video_id = data.get("videoId")
title = data.get("title", "")
times = data.get("times", [])
webhook_url = data.get("webhookUrl")
row_number = data.get("rowNumber")
if not webhook_url:
return jsonify({"error": "Informe 'webhookUrl'"}), 400
if not row_number:
return jsonify({"error": "Informe a linha da planilha"}), 400
filename = data.get("filename")
if not filename:
return jsonify({"error": "Informe 'filename'"}), 400
threading.Thread(
target=process_and_call_webhook,
args=(url, video_id, times, webhook_url, row_number, filename, title),
daemon=True
).start()
return jsonify({"message": f"{video_id if video_id else url}"}), 200
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000, debug=True)