98 lines
2.8 KiB
Python
98 lines
2.8 KiB
Python
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)
|