import os
from flask import Flask, jsonify, send_from_directory, request, render_template_string
from werkzeug.utils import secure_filename
from database import db
from models import Video
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///metavideo.db"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
UPLOAD_FOLDER = "uploads"
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
db.init_app(app)
# -------------------
# HTML САЙТ (как YouTube простая версия)
# -------------------
HTML = """
Meta Video
🎥 Meta Video
📤 Upload
📺 Videos
"""
# -------------------
# ГЛАВНАЯ СТРАНИЦА
# -------------------
@app.route("/")
def home():
return render_template_string(HTML)
# -------------------
# ЗАГРУЗКА ВИДЕО
# -------------------
@app.route("/upload", methods=["POST"])
def upload():
file = request.files["file"]
title = request.form.get("title", "Untitled")
filename = secure_filename(file.filename)
path = os.path.join(UPLOAD_FOLDER, filename)
file.save(path)
video = Video(title=title, filename=filename)
db.session.add(video)
db.session.commit()
return "Uploaded! Go back"
# -------------------
# FEED (список видео)
# -------------------
@app.route("/api/feed")
def feed():
videos = Video.query.all()
return jsonify([
{
"title": v.title,
"url": f"/video/{v.filename}"
}
for v in videos
])
# -------------------
# СТРИМ ВИДЕО
# -------------------
@app.route("/video/")
def video(filename):
return send_from_directory(UPLOAD_FOLDER, filename)
# -------------------
# START
# -------------------
if __name__ == "__main__":
with app.app_context():
db.create_all()
port = int(os.environ.get("PORT", 7860))
app.run(host="0.0.0.0", port=port)