CoolFace
Apppublic

Amamiya-Kun/PalmScan

sourceHugging Facemitupdated 4mo agoView on Hugging Face
0likes
db.py162 linesDownload Raw Back to root
1from pymongo import MongoClient2from dotenv import load_dotenv3import os4from bson.objectid import ObjectId5from bson.json_util import dumps  # untuk convert ke JSON6 7load_dotenv()8# Koneksi ke MongoDB9MONGO_URI = os.getenv("MONGODB_URI", "@aimer.wngbxyv.mongodb.net")10mongo_user = os.getenv("MONGO_USER")11db_pass = os.getenv("MONGO_PASS")12db_name = os.getenv("MONGO_NAME", "leafClassify")13 14# Buat client secara dinamis berdasarkan variabel yang tersedia15if mongo_user and db_pass and MONGO_URI:16    # Memastikan format MONGO_URI diawali dengan '@' jika belum ada17    uri_part = MONGO_URI18    if not uri_part.startswith("@"):19        uri_part = "@" + uri_part20    client = MongoClient(f"mongodb+srv://{mongo_user}:{db_pass}{uri_part}?retryWrites=true&w=majority&appName=aimer")21elif MONGO_URI and MONGO_URI.startswith("mongodb"):22    client = MongoClient(MONGO_URI)23else:24    # Fallback to localhost if no environment variables are defined25    print("Warning: MongoDB environment variables not found. Connecting to localhost.")26    client = MongoClient("mongodb://localhost:27017/")27 28db = client[db_name]29 30users_collection = db['users']31scan_logs_collection = db['scan_logs']32scan_result_collection = db['scan_result']33diseases_collection = db['diseases']34logs_collection = db['logs']35 36users = {37    'name' : '',38    'email' : '',39    'ficture' : '',40    'create_at' : ''41}42 43scan_logs = {44    '__id__' : '',45    'user_id' : '',46    'image_url' : '',47    'scan_result_id' : '',48    'timestamp' : ''49}50 51disease = [52    {53        'name': 'Anthracnose',54        'description': (55            'Penyakit ini disebabkan oleh jamur *Colletotrichum gloeosporioides*. '56            'Gejalanya berupa bercak nekrotik berwarna coklat kehitaman pada daun muda dan pelepah, '57            'yang lama-lama dapat menyebabkan kerusakan jaringan.'58        ),59        'solution': (60            'Pemangkasan dan pemusnahan daun yang terinfeksi, '61            'meningkatkan sanitasi kebun, serta aplikasi fungisida berbahan aktif seperti mankozeb atau tembaga hidroksida.'62        )63    },64    {65        'name': 'Yellow Stripe',66        'description': (67            'Penyakit ini ditandai dengan munculnya garis-garis kuning sejajar tulang daun, '68            'terutama pada daun muda. Bisa disebabkan oleh kekurangan unsur hara atau infeksi patogen tertentu.'69        ),70        'solution': (71            'Lakukan analisis tanah dan daun untuk memastikan defisiensi unsur hara, lalu aplikasikan pupuk sesuai kebutuhan. '72            'Perbaiki drainase dan lakukan rotasi fungisida bila penyebabnya infeksi.'73        )74    },75    {76        'name': 'Leaf Rust',77        'description': (78            'Penyakit karat daun disebabkan oleh jamur *Puccinia*. Muncul sebagai bintik-bintik jingga atau coklat kemerahan '79            'seperti karat pada permukaan daun kelapa sawit, mengurangi efisiensi fotosintesis.'80        ),81        'solution': (82            'Aplikasi fungisida berbahan aktif tembaga atau fungisida sistemik golongan triazol, meningkatkan kebersihan kebun '83            'dengan membuang daun gulma, dan menjaga sirkulasi udara yang baik.'84        )85    },86    {87        'name': 'Healthy',88        'description': (89            'Daun kelapa sawit berada dalam kondisi sehat, tidak menunjukkan gejala penyakit, kekurangan hara, atau '90            'kerusakan patogen fisik. Fotosintesis berjalan dengan optimal.'91        ),92        'solution': (93            'Lakukan perawatan rutin berupa pemupukan seimbang, penyiraman teratur, serta pembersihan area kebun secara berkala '94            'untuk pencegahan hama dan penyakit.'95        )96    }97]98 99scan_result = [100    {101        "prediction_label": "Leaf Spot",102        "confidence": 0.92,103        "status": "diseased",104        "disease_id": ObjectId('68620c8c4500c7df28c4c70e')105    },106    {107        "prediction_label": "Anthracnose",108        "confidence": 0.89,109        "status": "diseased",110        "disease_id": ObjectId("68620c8c4500c7df28c4c70d")111    },112    {113        "prediction_label": "Healthy",114        "confidence": 0.97,115        "status": "healthy",116        "disease_id": ObjectId("6863394e06baaecd9abd4afe")117    },118    {119        "prediction_label": "Leaf Spot",120        "confidence": 0.85,121        "status": "diseased",122        "disease_id": ObjectId("68620c8c4500c7df28c4c70e")123    },124    {125        "prediction_label": "Yellow Stripe",126        "confidence": 0.88,127        "status": "diseased",128        "disease_id": ObjectId('68620c8c4500c7df28c4c70f')129    },130    {131        "prediction_label": "68620c8c4500c7df28c4c70f",132        "confidence": 0.94,133        "status": "healthy",134        "disease_id": ObjectId('68620c8c4500c7df28c4c70f')135    },136    {137        "prediction_label": "Yellow Stripe",138        "confidence": 0.90,139        "status": "diseased",140        "disease_id": ObjectId('68620c8c4500c7df28c4c70f')141    }142]143logs = {144    '__id__' : 1,145    'user_id' : '',146    'activity' : '',147    'timestamp' : ''148}149 150 151if __name__ == '__main__':152    print("Menginisialisasi ulang koleksi penyakit (diseases) di MongoDB...")153    try:154        # Bersihkan koleksi penyakit yang lama155        diseases_collection.delete_many({})156        # Masukkan penyakit baru157        result = diseases_collection.insert_many(disease)158        print(f"Berhasil memasukkan {len(result.inserted_ids)} data penyakit:")159        for doc in diseases_collection.find():160            print(f" - {doc['name']} (ID: {doc['_id']})")161    except Exception as e:162        print("Gagal menginisialisasi database:", e)