forked from ckh08045/AutoPercenty
62 lines
3.3 KiB
Python
62 lines
3.3 KiB
Python
import re, json
|
|
import logging
|
|
# 로거 인스턴스 가져오기
|
|
logger = logging.getLogger('default_logger')
|
|
|
|
def find_naver_code_ori(base_category):
|
|
logger.debug("네이버 카테고리 코드 찾기")
|
|
logger.debug(f"주어진 카테고리 : {base_category}")
|
|
category_parts = re.split(r'>|-', base_category)
|
|
logger.debug(f"카테고리 분리 : {category_parts}")
|
|
|
|
base_category1Name, base_category2Name, base_category3Name, base_category4Name = (category_parts + [None]*4)[:4]
|
|
|
|
with open("Percenty_SS_code.json", "r", encoding='utf-8') as file:
|
|
for line in file:
|
|
try:
|
|
item = json.loads(line)
|
|
if (item.get('category1Name') == base_category1Name and
|
|
item.get('category2Name') == base_category2Name and
|
|
item.get('category3Name') == base_category3Name and
|
|
item.get('category4Name') == base_category4Name):
|
|
logger.debug(f"찾은 카테고리 코드 : {item['Naver_code']}")
|
|
print(f"찾은 카테고리 코드 : {item['Naver_code']}")
|
|
return item['Naver_code'] # 조건에 맞는 첫 번째 코드를 반환하고 함수 종료
|
|
except json.JSONDecodeError as e:
|
|
logger.debug(f"Error decoding JSON: {e}", exc_info=True)
|
|
continue
|
|
return None # 조건에 맞는 코드를 찾지 못한 경우
|
|
|
|
def find_naver_code(base_category, json_naver_codes):
|
|
logger.debug("네이버 카테고리 코드 찾기")
|
|
logger.debug(f"주어진 카테고리 : {base_category}")
|
|
try:
|
|
category_parts = re.split(r'>|-', base_category)
|
|
logger.debug(f"카테고리 분리 : {category_parts}")
|
|
|
|
base_category1Name, base_category2Name, base_category3Name, base_category4Name = (category_parts + [None]*4)[:4]
|
|
|
|
for item in json_naver_codes:
|
|
try:
|
|
# category3Name과 category4Name가 없거나 NaN인 경우를 처리합니다.
|
|
category3Name_item = item.get('category3Name')
|
|
if isinstance(category3Name_item, dict) and '$numberDouble' in category3Name_item:
|
|
category3Name_item = None # NaN 값 처리
|
|
|
|
category4Name_item = item.get('category4Name')
|
|
if isinstance(category4Name_item, dict) and '$numberDouble' in category4Name_item:
|
|
category4Name_item = None # NaN 값 처리
|
|
|
|
# 조건에 따라 검색합니다.
|
|
if (item.get('category1Name') == base_category1Name and
|
|
item.get('category2Name') == base_category2Name and
|
|
(category3Name_item == base_category3Name or base_category3Name is None) and
|
|
(category4Name_item == base_category4Name or base_category4Name is None)):
|
|
logger.debug(f"찾은 카테고리 코드 : {item['Naver_code']}")
|
|
return item['Naver_code'] # 조건에 맞는 첫 번째 코드를 반환하고 함수 종료
|
|
except Exception as e:
|
|
logger.error(f"Error processing item: {e}", exc_info=True)
|
|
continue
|
|
return None # 조건에 맞는 코드를 찾지 못한 경우
|
|
except Exception as e:
|
|
logger.error(f"find_naver_code 함수 실행 중 에러 발생 : {e}", exc_info=True) |