File size: 1,222 Bytes
24d394e
bb771da
 
24d394e
5b6bf85
 
24d394e
 
bb771da
24d394e
bb771da
24d394e
bb771da
24d394e
bb771da
 
5b6bf85
 
bb771da
 
 
24d394e
bb771da
 
24d394e
bb771da
 
 
5b6bf85
bb771da
 
24d394e
bb771da
 
 
 
 
 
 
24d394e
5b6bf85
bb771da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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)