from flask import Flask, request, jsonify, send_from_directory import os import requests from PIL import Image from io import BytesIO app = Flask(__name__) BASE_URL = "https://kastg-cdn.hf.space" # Update this with your actual base URL IMAGE_FOLDER = "images" app.config["UPLOAD_FOLDER"] = IMAGE_FOLDER @app.route("/images/") def get_image(filename): return send_from_directory(app.config["UPLOAD_FOLDER"], filename) # Create folders to store uploaded images UPLOAD_FOLDER = "uploads" IMAGE_FOLDER = os.path.join(UPLOAD_FOLDER, "images") for folder in [UPLOAD_FOLDER, IMAGE_FOLDER]: os.makedirs(folder, exist_ok=True) # Create a dictionary to store available images available_images = {} @app.route("/upload", methods=["GET"]) def upload_image(): url = request.args.get("url") if not url: return jsonify({"message": "URL parameter is missing"}), 400 # Check if the URL is valid and get the image content try: response = requests.get(url) response.raise_for_status() except requests.exceptions.RequestException as e: return jsonify({"message": f"Error fetching image from URL: {str(e)}"}), 400 # Check if the response content is an image content_type = response.headers.get('content-type') if 'image' not in content_type: return jsonify({"message": "The provided URL does not lead to an image"}), 400 # Open the image using PIL try: img = Image.open(BytesIO(response.content)) except Exception as e: return jsonify({"message": f"Error processing image: {str(e)}"}), 400 # Save the image filename = os.path.basename(url) image_path = os.path.join(IMAGE_FOLDER, filename) img.save(image_path) # Update available images dictionary available_images[filename] = {"url": url, "name": filename} # Construct the full image URL including the site name full_image_url = f"{BASE_URL}/images/{filename}" return jsonify({"message": "File uploaded successfully", "image_url": full_image_url}) if __name__ == "__main__": app.run(host="0.0.0.0", port=7860, debug=True)