1.기능을 만든 이유
카페 자동화 작업중 콘텐츠 본문 과 결론에 랜덤한 서비스 전,후 사진을 등록 해야했다.
우선 사진을 규칙적으로 명명 해야 할것 같아
서비스 전,후 사진을 아래와 같이 작업을 하였다 (총 48개의 사진)
서비스전 : 1_1.jpg,2_1.jpg,3_1.jpg...
서비스후 : 1_2.jpg,2_2.jpg,3_2.jpg...
2.코드작성 과정
GPT를 이용해 코드를 작성해달라고 하였다.
프롬프트는 아래와 같다
" 1부터 48개 랜덤한 숫자 4개를 뽑은후 그 숫자 뒤에 _1,_2로 해서 ,로 구분 짓게 만들어줘 예를 들어 랜덤 숫자 12,14,13,15 가 있으면12_1,12_2,14_1,14_2,13_1,13_2,15_1,15_2 이런식으로 작성되는 코드 만들어줘"
GPT가 출력한 베이스 코드
import random
# 1부터 48까지의 숫자 중에서 무작위로 4개를 선택
random_numbers = random.sample(range(1, 49), 4)
# 각 숫자 뒤에 '_1'과 '_2'를 붙이고, 모든 항목을 쉼표로 구분
result = ','.join(f"{num}_1,{num}_2" for num in random_numbers)
print(result)
이후 기존 작성한 사진 등록 하는 코드와 병합하여 함수를 만들어 사용 하였다
그러나 한가지 문제가 발생하였다..
카페 콘텐츠 작성시 본문에 한번 사진 등록후 결론에 한번더 사진을 등록해야 한다.
그러면 기존 본문에서 랜덤으로 가져온 사진과,결론에서 랜덤으로 가져온 사진이 중복될수 있으니 함수에서 해당 부분 중복 제거 를 해줘야 했다.
다시한번 GPT의 힘을 빌려 아래와 같이 프롬프트를 작성했다.
random_numbers = random.sample(range(1, 48), 2)
위 코드에서 numbers = [2,3] 변수에 있는 숫자는 제외후 랜덤출력 할 수 있도록 해줘
GPT가 출력한 코드
import random
# 제외할 숫자 목록
excluded_numbers = {2, 3}
# 10부터 48까지의 숫자 중에서 excluded_numbers에 포함되지 않은 숫자만 포함
available_numbers = list(set(range(1, 49)) - excluded_numbers)
# available_numbers 리스트에서 무작위로 2개를 선택
random_numbers = random.sample(available_numbers, 2)
print(random_numbers)
GPT가 set 자료형을 이용하여 범위 안에서 숫자를 제외 할 수 있다고 한다.
위 코드블럭을 입맛에 맛게 변형후 기존 코드와 병합 하였다
이미지는 추후 늘어날것을 대비 하여 DB에서 셋팅할 수 있도록 해주었다
최종 코드
def content_img_reg(self,excluded_numbers=None): #콘텐츠 이미지 랜덤 2세트로 넣기
#DB에서 셋팅 값 가져오기
DB = Common_DB()
row = DB.execute_read_query(f'select * from content_img_seting_info')
DB.close()
#변수 셋팅
start_img_name = int(row[0][0])
end_img_name = int(row[0][1])
img_reg_cnt = int(row[0][2])
# 콘텐츠 이미지 경로
project_path = os.path.dirname(os.path.realpath(__file__))
project_dir = os.path.abspath(os.path.join(project_path, "../.."))
content_image_path = os.path.join(project_dir, 'Resource','imgs', 'content')
#Basic Window info 값 handle 변수에 저장 #32770 다이얼로그 기본 값
handle = "[CLASS:#32770; TITLE:열기]"
autoit.win_wait_active("열기", 3)#타이틀(열기)인 다이얼로그 나오기까지 대기
#사진 클릭시 나오는 다이얼로그에서 이미지경로 전달
autoit.clip_put(content_image_path)
autoit.control_focus(handle, "Edit1")
sleep(1)
autoit.send("^v") # 붙여넣기
autoit.send("{ENTER}") # 앤터
sleep(1)
autoit.control_focus(handle, "Edit1") # Edit 컨트롤에 포커스
#제외할숫자가 None일경우 빈 집합으로 처리
if excluded_numbers is None:
excluded_numbers = set()
# start_img_name 부터 end_img_name 까지의 숫자 중에서 excluded_numbers에 포함되지 않은 숫자만 포함
available_numbers = list(set(range(start_img_name, end_img_name)) - excluded_numbers)
random_numbers = random.sample(available_numbers, img_reg_cnt)
#이미지 경로에 이미지명 선택하여 불러오기(각 숫자 뒤에 "_1"과 "_2"를 붙이고, 모든 항목을 공백으로 구분)
img_namgs = ' '.join(f'"{num}_1.jpg" "{num}_2.jpg"' for num in random_numbers)
autoit.clip_put(img_namgs)
autoit.send("^v")
sleep(0.5)
autoit.control_click(handle, "Button1")
return set(random_numbers)
3.느낀점
- 작년 4월부터 GPT를 처음 쓴것 같은데 지금은 GPT없으면 코드를 짤수 없을정도로 너무 의존하고 있는것 같다
- GPT를 사용하면 구글링하여 2~3시간 걸릴일을 불과 5~10분만에 해결해주니 신세계임은 틀림 없다..
- 시대에 맞춰 AI 잘 활용하면서 너무 의존하지 않도록 해보자
'회사 > ELB' 카테고리의 다른 글
[실무] 청소 서비스 신청 웹 페이지 제작(과정 기록) (0) | 2024.05.29 |
---|