Spaces:
Running
Running
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 | |
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 = {} | |
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) |