from flask import Flask, request, jsonify from flask_cors import CORS from nudenet import NudeClassifier import requests from io import BytesIO from PIL import Image app = Flask(__name__) CORS(app) # CORSを全てのオリジンから許可 classifier = NudeClassifier() def is_image_safe(image_url): try: # 画像をURLから取得 response = requests.get(image_url) response.raise_for_status() img = Image.open(BytesIO(response.content)) # 画像を分類 result = classifier.classify(img) return result.get(image_url, {}).get('unsafe', 0) < 0.5 except Exception as e: print(f"Error processing image: {e}") return False @app.route('/predict', methods=['GET', 'POST']) def predict(): image_url = None if request.method == 'GET': image_url = request.args.get('imgurl') elif request.method == 'POST': data = request.get_json() image_url = data.get('imgurl') if not image_url: return jsonify({"error": "No image URL provided"}), 400 is_safe = is_image_safe(image_url) return jsonify({"safe": is_safe}) if __name__ == '__main__': app.run(host='0.0.0.0', port=7860, debug=True)