Spaces:
Running
Running
Update main.py
Browse files
main.py
CHANGED
|
@@ -118,6 +118,32 @@ async def predict_plant_disease(plant_name: str, file: UploadFile = File(...)):
|
|
| 118 |
JSON response with the predicted class and additional details from an external API.
|
| 119 |
"""
|
| 120 |
# Ensure the plant name is valid
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
if plant_name not in loaded_models:
|
| 122 |
raise HTTPException(status_code=400, detail=f"Invalid plant name or model not loaded: {plant_name}")
|
| 123 |
|
|
|
|
| 118 |
JSON response with the predicted class and additional details from an external API.
|
| 119 |
"""
|
| 120 |
# Ensure the plant name is valid
|
| 121 |
+
if len(plant_disease_dict.get(plant_name, [])) == 1:
|
| 122 |
+
single_disease = plant_disease_dict[plant_name][0] # Get the only class available
|
| 123 |
+
|
| 124 |
+
# 🔥 Fetch external data directly
|
| 125 |
+
try:
|
| 126 |
+
response = requests.get(f"https://navpan2-sarva-ai-back.hf.space/kotlinback/{single_disease}")
|
| 127 |
+
external_data = response.json() if response.status_code == 200 else {"error": "Failed to fetch external data"}
|
| 128 |
+
except Exception as e:
|
| 129 |
+
external_data = {"error": str(e)}
|
| 130 |
+
|
| 131 |
+
return JSONResponse(content={
|
| 132 |
+
"plantName": external_data.get("plantName", plant_name),
|
| 133 |
+
"botanicalName": external_data.get("botanicalName", "Unknown"),
|
| 134 |
+
"diseaseDesc": {
|
| 135 |
+
"diseaseName": external_data.get("diseaseDesc", {}).get("diseaseName", single_disease),
|
| 136 |
+
"symptoms": external_data.get("diseaseDesc", {}).get("symptoms", "Not Available"),
|
| 137 |
+
"diseaseCauses": external_data.get("diseaseDesc", {}).get("diseaseCauses", "Not Available")
|
| 138 |
+
},
|
| 139 |
+
"diseaseRemedyList": [
|
| 140 |
+
{
|
| 141 |
+
"title": remedy.get("title", "Unknown"),
|
| 142 |
+
"diseaseRemedyShortDesc": remedy.get("diseaseRemedyShortDesc", "Not Available"),
|
| 143 |
+
"diseaseRemedy": remedy.get("diseaseRemedy", "Not Available")
|
| 144 |
+
} for remedy in external_data.get("diseaseRemedyList", [])
|
| 145 |
+
]
|
| 146 |
+
})
|
| 147 |
if plant_name not in loaded_models:
|
| 148 |
raise HTTPException(status_code=400, detail=f"Invalid plant name or model not loaded: {plant_name}")
|
| 149 |
|