| import json |
| import pandas as pd |
| from PIL import Image |
| from aiohttp import ClientSession |
| from io import BytesIO |
| import asyncio |
| from Data.data import * |
| from Data.model import uddoktaModel, marchentModel |
|
|
|
|
|
|
|
|
| |
| async def process_nagad_item(nagad_item, nbrtuDict, nagad): |
| if nagad_item in nbrtuDict: |
| n = {nagad_item: nbrtuDict[nagad_item]} |
| nagad.update(n) |
|
|
|
|
| |
| async def process_bkash_item(bkash_item, nbrtuDict, bkash): |
| if bkash_item in nbrtuDict: |
| b = {bkash_item: nbrtuDict[bkash_item]} |
| bkash.update(b) |
|
|
|
|
| |
| async def process_rocket_item(rocket_item, nbrtuDict, rocket): |
| if rocket_item in nbrtuDict: |
| r = {rocket_item: nbrtuDict[rocket_item]} |
| rocket.update(r) |
|
|
|
|
| |
| async def process_tap_item(tap_item, nbrtuDict, tap): |
| if tap_item in nbrtuDict: |
| t = {tap_item: nbrtuDict[tap_item]} |
| tap.update(t) |
|
|
|
|
| |
| async def process_upay_item(upay_item, nbrtuDict, upay): |
| if upay_item in nbrtuDict: |
| u = {upay_item: nbrtuDict[upay_item]} |
| upay.update(u) |
|
|
|
|
| async def getImage(img_url, session): |
| async with session.get(img_url) as response: |
| img_data = await response.read() |
| return BytesIO(img_data) |
| |
|
|
| async def detection(model,img_content,confidence): |
| img = Image.open(img_content) |
| |
| result = model(source=img,device=0,conf=confidence) |
| detection = {} |
| data = json.loads(result[0].tojson()) |
| if len(data) == 0: |
| res = {"AI": "No Detection"} |
| detection.update(res) |
| else: |
| df = pd.DataFrame(data) |
| name_counts = df['name'].value_counts().sort_index() |
| |
| for name, count in name_counts.items(): |
| res = {name: count} |
| detection.update(res) |
| return detection |
|
|
|
|
| async def combineAllResult(uddoktaData,marchentData): |
| all_result = {} |
| all_result.update(uddoktaData) |
| all_result.update(marchentData) |
| return all_result |
|
|
|
|
| async def prepareUddokta(uddoktaData): |
| all_uddokta = {} |
| for sku in uddoktaSKU: |
| if sku in uddoktaData: |
| all_uddokta.update({sku:uddoktaData[sku]}) |
| return all_uddokta |
|
|
|
|
| async def prepareMarchent(marchentData): |
| all_marchent = {} |
| for sku in marchentSKU: |
| if sku in marchentData: |
| all_marchent.update({sku:marchentData[sku]}) |
| return all_marchent |
|
|
|
|
| async def prepareResult(uddoktaData,marchentData): |
| uddokta = await prepareUddokta(uddoktaData) |
| marchent = await prepareMarchent(marchentData) |
| allResult = await combineAllResult(uddokta,marchent) |
| return allResult |
|
|
| async def mainDet(url): |
| async with ClientSession() as session: |
| image = await asyncio.create_task(getImage(url, session)) |
| Tasks = [ |
| asyncio.create_task(detection(uddoktaModel, image,0.7)), |
| asyncio.create_task(detection(marchentModel, image,0.8)) |
| ] |
| uddokta,marchent = await asyncio.gather(*Tasks) |
| nbrtuDict = await prepareResult(uddokta,marchent) |
| for val_item in NBRTU_val: |
| if val_item in nbrtuDict: |
| nbrtu_validation_single = {val_item: "yes"} |
| nbrtuDict.update(nbrtu_validation_single) |
| |
| for nagad_remove_item in ndel_items: |
| if nagad_remove_item in nbrtuDict: |
| del nbrtuDict[nagad_remove_item] |
| nagad = {} |
| bkash = {} |
| rocket = {} |
| tap = {} |
| upay = {} |
| |
| process_nagad_tasks = [process_nagad_item(nagad_item, nbrtuDict, nagad) for nagad_item in nagad_items] |
| process_bkash_tasks = [process_bkash_item(bkash_item, nbrtuDict, bkash) for bkash_item in bkash_items] |
| process_rocket_tasks = [process_rocket_item(rocket_item, nbrtuDict, rocket) for rocket_item in rocket_items] |
| process_tap_tasks = [process_tap_item(tap_item, nbrtuDict, tap) for tap_item in tap_items] |
| process_upay_tasks = [process_upay_item(upay_item, nbrtuDict, upay) for upay_item in upay_items] |
|
|
|
|
| await asyncio.gather(*process_nagad_tasks, *process_bkash_tasks, *process_rocket_tasks, *process_tap_tasks, *process_upay_tasks) |
|
|
|
|
| nagad_detection = { |
| 'nagad': nagad, |
| 'bkash': bkash, |
| 'rocket': rocket, |
| 'tap': tap, |
| 'upay': upay |
| } |
|
|
| nagad_result = json.dumps(nagad_detection) |
|
|
| |
| return nagad_result |