Update app.py
Browse files
app.py
CHANGED
@@ -1,32 +1,37 @@
|
|
1 |
-
from fastapi import FastAPI,
|
2 |
-
import
|
|
|
|
|
|
|
3 |
|
4 |
app = FastAPI()
|
5 |
|
6 |
-
#
|
7 |
-
|
8 |
|
9 |
-
@app.get("/
|
10 |
-
|
11 |
"""
|
12 |
-
|
13 |
"""
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
return {
|
25 |
-
"ip": location_data.get("ip", "Desconhecido"),
|
26 |
-
"city": location_data.get("city", "Desconhecida"),
|
27 |
-
"region": location_data.get("region", "Desconhecida"),
|
28 |
-
"country": location_data.get("country", "Desconhecido"),
|
29 |
-
"latitude": location_data.get("latitude", "Desconhecida"),
|
30 |
-
"longitude": location_data.get("longitude", "Desconhecida"),
|
31 |
-
"organization": location_data.get("org", "Desconhecida")
|
32 |
-
}
|
|
|
1 |
+
from fastapi import FastAPI, Query
|
2 |
+
from nsfw_detector import predict
|
3 |
+
from PIL import Image
|
4 |
+
import requests
|
5 |
+
from io import BytesIO
|
6 |
|
7 |
app = FastAPI()
|
8 |
|
9 |
+
# Carregar o modelo pré-treinado
|
10 |
+
model = predict.load_model("nsfw_mobilenet2.224x224.h5") # Baixe o modelo ao configurar
|
11 |
|
12 |
+
@app.get("/check-nsfw/")
|
13 |
+
def check_nsfw(image_url: str = Query(..., description="URL da imagem para análise")):
|
14 |
"""
|
15 |
+
Analisa uma imagem a partir de um URL e detecta conteúdo NSFW.
|
16 |
"""
|
17 |
+
try:
|
18 |
+
# Baixar a imagem a partir da URL
|
19 |
+
response = requests.get(image_url)
|
20 |
+
response.raise_for_status() # Lança erro se a URL for inválida
|
21 |
+
image = Image.open(BytesIO(response.content))
|
22 |
+
|
23 |
+
# Fazer a predição
|
24 |
+
predictions = predict.classify(model, {"image": image})
|
25 |
+
|
26 |
+
# Resultados
|
27 |
+
nsfw_score = predictions["image"]["porn"] + predictions["image"]["sexy"]
|
28 |
+
sfw_score = predictions["image"]["neutral"]
|
29 |
+
classification = "NSFW" if nsfw_score > sfw_score else "SFW"
|
30 |
|
31 |
+
return {
|
32 |
+
"image_url": image_url,
|
33 |
+
"classification": classification,
|
34 |
+
"scores": predictions["image"]
|
35 |
+
}
|
36 |
+
except Exception as e:
|
37 |
+
return {"error": str(e)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|