diff --git a/API/candidate.py b/API/candidate.py index 7ec6743..7e612fb 100644 --- a/API/candidate.py +++ b/API/candidate.py @@ -7,7 +7,7 @@ import argparse from configurations.secrets import OpenDataPortalSecrets -from .utils import save_to_excel +from .utils import save_to_excel, getLocalMetroMap BASE_URL = "http://apis.data.go.kr/9760000/PofelcddInfoInqireService/getPofelcddRegistSttusInfoInqire" diff --git a/API/elected.py b/API/elected.py index 7fbeb8b..dd91346 100644 --- a/API/elected.py +++ b/API/elected.py @@ -3,10 +3,10 @@ import argparse import requests import xml.etree.ElementTree as ET -from typing import List +from typing import List, Dict from configurations.secrets import OpenDataPortalSecrets -from .utils import save_to_excel, save_to_mongo +from .utils import save_to_excel, save_to_mongo, getLocalMetroMap BASE_URL = "http://apis.data.go.kr/9760000/WinnerInfoInqireService2/getWinnerInfoInqire" @@ -82,7 +82,6 @@ def fetch_all_data( drop_columns = args.drop_columns.split(",") if args.drop_columns else [] data_list = fetch_all_data(sgIds, args.sgTypecode, drop_columns=drop_columns) - if args.save_method == "excel": save_to_excel(data_list, args.sgTypecode, is_elected=True) elif args.save_method == "mongo": diff --git a/API/utils.py b/API/utils.py index 0e8f33e..c7994b5 100644 --- a/API/utils.py +++ b/API/utils.py @@ -1,7 +1,7 @@ import os import requests import pandas as pd -from typing import List, Optional +from typing import List, Optional, Dict from . import BASE_DIR, SG_TYPECODE, SG_TYPECODE_TYPE from configurations.secrets import MongoDBSecrets @@ -58,3 +58,35 @@ def save_to_mongo(data: List[dict], sgTypecode: str) -> None: raise NotImplementedError("현재 구시군의회의원(6)만 구현되어 있습니다.") print(f"데이터를 성공적으로 MongoDB '{main_collection.name}' 컬렉션에 저장하였습니다.") + + +def getLocalMetroMap() -> Dict[str, str]: + db = client["district"] + result = db["local_district"].aggregate( + [ + { + "$lookup": { + "from": "metro_district", + "localField": "sdName", + "foreignField": "name_ko", + "as": "productInfo", + } + }, + {"$unwind": "$productInfo"}, + { + "$project": { + "cid": 1, + "metro_id": "$productInfo.metro_id", + "sdName": 1, + "wiwName": 1, + } + }, + ] + ) + return { + (item["sdName"], item["wiwName"]): { + "local_id": item["cid"], + "metro_id": item["metro_id"], + } + for item in result + }