from flask import Flask, render_template_string, request, redirect, url_for from huggingface_hub import login, Dataset, hf_api import os from dotenv import load_dotenv from werkzeug.utils import secure_filename import shutil # Загрузка переменных окружения load_dotenv() HF_TOKEN = os.getenv("HF_TOKEN") # Логин в Hugging Face login(token=HF_TOKEN) # Загрузка датасета dataset = Dataset("Aleksmorshen/ruslankanc") # Параметры для загрузки изображений UPLOAD_FOLDER = 'static/uploads' ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'} os.makedirs(UPLOAD_FOLDER, exist_ok=True) # Функция для проверки расширений изображений def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS # Инициализация Flask app = Flask(__name__) app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER @app.route("/") def catalog(): # Получаем все товары из датасета catalog_data = dataset[:] # HTML-шаблон html_content = """ Интернет Каталог

Каталог товаров

Добавить товар """ return render_template_string(html_content, catalog_data=catalog_data) @app.route("/add", methods=["GET", "POST"]) def add_product(): if request.method == "POST": # Получаем данные формы name = request.form["name"] description = request.form["description"] price = request.form["price"] # Обработка файла изображения image_url = None if "image" in request.files: file = request.files["image"] if file and allowed_file(file.filename): filename = secure_filename(file.filename) filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(filepath) # Загружаем изображение в Hugging Face и получаем ссылку image_url = upload_image_to_hf(filepath, filename) # Добавление товара в датасет dataset.push({ 'name': name, 'description': description, 'price': float(price), 'image_url': image_url }) return redirect(url_for('catalog')) # HTML-шаблон для добавления товара html_content = """ Добавить товар

Добавить новый товар














Вернуться к каталогу """ return render_template_string(html_content) def upload_image_to_hf(filepath, filename): """Загружает изображение в Hugging Face и возвращает ссылку на него""" # Например, можно загружать изображение в Hugging Face Hub как артефакт (вместо этого используйте URL облачного сервиса) image_url = f"https://huggingface.co/{HF_TOKEN}/path/to/{filename}" # Здесь можно использовать API для загрузки в Hugging Face, если это необходимо. # Для примера, мы возвращаем путь, как будто оно загружено. shutil.move(filepath, os.path.join("hf_uploads", filename)) # Имитация загрузки в систему return image_url # Запуск приложения if __name__ == "__main__": app.run(debug=True, port=7860)