is-a / app.py
Kastg
Update app.py
8ef3879 verified
raw
history blame
2.13 kB
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/<filename>")
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)