블로거들 주목! 블로그를 작성하다보면 이미지를 검색해서 다운로드 받아야 하는데, 수 많은 이미지 중에서 어떤 이미지를 골라야 하고, 어떤 사이트에서 어떻게 받아야 하는지 고민도 많이 되고 귀찮을 때가 있다. 그런 경우에 손 쉽게 사용할 수 있는 파이썬 프로그램을 ChatGPT에게 물어봐서 작성해보았다. 비개발자도 가능하다. 겁먹지 말고 함께 따라해보자.
들어가기 전에
이전 포스팅을 읽어보고 진행하면 더 좋을 것 같아서 링크를 걸어둔다. 첫 번째 링크에서는 ChatGPT prompt를 보완해주는 AIPRM을 설치 및 사용하는 방법을 볼 수 있고, 두 번째 링크에서는 실제 활용 예를 볼 수 있다.
2023.03.01 - [#개발 이야기 - 개발, IT 트렌드/AI 이야기] - ChatGPT와 함께 사용하면 좋은 확장 프로그램 2가지 | 프롬프트 지니, AIPRM
ChatGPT와 함께 사용하면 좋은 확장 프로그램 2가지 | 프롬프트 지니, AIPRM
ChatGPT. 마냥 편하기만 한 것은 아니다. 한국어로 ChatGPT를 사용하고 있다면 영어로 사용할 때보다 응답 시간이 느리다는 것을 눈치챘을 것이다. ChatGPT는 영어에 최적화되어 있고 이를 구동하는 알
drinkalonetogether.tistory.com
2023.03.02 - [#개발 이야기 - 개발, IT 트렌드/AI 이야기] - ChatGPT로 원하는 무료 이미지/비디오 다운로드 하는 프로그램 만들기 | 비개발자도 가능! | pexels, Pixabay
ChatGPT로 원하는 무료 이미지/비디오 다운로드 하는 프로그램 만들기 | 비개발자도 가능! | pexels, P
원하는 이미지 / 비디오를 다운로드 하려면 보통은 google이나 네이버 등에서 검색을 하여 오른쪽 버튼을 눌러 이미지 저장하여 사용할 것이다. 하지만, 이런 이미지를 잘못 사용했다가는 저작권
drinkalonetogether.tistory.com
요구사항 전달하기
먼저 AIPRM 확장 프로그램에서 "ULTRAcoder-1 click create app from Idea"라는 프롬프트를 찾아서 클릭하자. 잘 모르겠으면 위의 두 번째 포스팅 링크를 읽어보자. 그 다음 구글 번역기를 켜고 원하는 프로그램을 구체적으로 적어주고 ChatGPT에 전달하면 아래와 같이 파이썬 프로젝트 구조도와 각 파일에 어떤 코드가 들어가야 하는지 알려준다. 알려주는대로 작성하고, 궁금한 점이 있으면 ChatGPT에게 추가 질문을 하여 답을 얻어낸다. 예를 들면, "Pixabay의 API Key는 어떻게 얻는거야?" 정도가 있을 수 있겠다.
pixabay에서 인테리어 관련된 이미지를 검색한 후 가장 관련성이 높은 이미지를 보여주고 y나 n이나 x를 입력 받은 다음 y를 입력 받으면 다운로드 받은 후 프로그램을 종료하고, n을 입력 받으면 검색 결과 중 다음 이미지를 보여주면서 다시 입력을 받고, x를 입력 받으면 프로그램을 종료하는 프로그램
After searching for images related to interiors on pixabay, it shows the most relevant images, inputs y, n, or x, then inputs y to download and exits the program, and inputs n to display the next image among the search results. A program that receives input again and terminates the program when x is entered
실행 해보기
"main.py" 파일이 있는 폴더에서 마우스 오른쪽 버튼 > "명령프롬프트에서 열기" 혹은 "터미널에서 열기"를 누르면 명령을 입력할 수 있다. Python이 설치되어 있지 않다면, 아래 링크에서 다운로드하자. 설치 방법은 인터넷에 조금만 검색해도 알 수 있으니 따로 언급하지는 않겠다.
Download Python | Python.org
Download Python
The official home of the Python Programming Language
www.python.org
#아래와 같이 입력하면 실행된다.
python main.py
디버깅 하기
나는 아래와 같이 에러 메시지가 떴는데, 해결 방법은 간단하다. 이 에러 메시지를 복사해서 ChatGPT에게 입력하는 것. 그렇게 하면, ChatGPT가 에러를 해결하는 방법을 알려준다. 나의 경우에는 코드에서 PIL이라는 라이브러리를 사용하도록 하였는데, 해당 라이브러리가 설치되어 있지 않았던 것. 'pip install pillow'를 입력해서 설치하라는 ChatGPT의 말대로 해당 키워드를 입력하여 설치하였다. 설치 후 실행하면서 나오는 에러들도 같은 방법으로 해결 가능.
Traceback (most recent call last):
File "main.py", line 5, in <module>
from PIL import Image
ModuleNotFoundError: No module named 'PIL'
실행 결과
실행을 하면, 아래와 같이 인테리어와 관련된 이미지 중 가장 관련 있는 이미지를 보여준다. 우리가 전달한 요구사항 대로, 명령 프롬프트 창에서 y를 누르면 파일이 Images 폴더에 저장되면서 프로그램이 종료되고, n을 누르면 또 다른 이미지를 보여주고 다시 입력을 기다린다. x를 누르면 프로그램을 종료한다.
개선하기
몇 번 실행해보고 나서 나는 두 가지 문제점을 발견하였다. 첫 번째는 키워드를 변경할 수 없다는 점이고, 두 번째는 y를 눌러서 파일을 다운로드하고 저장하면, 다른 실행에서 저장한 파일과 이름이 같아서 파일이 덮어씌워진다는 점이다. 이 부분도 역시 ChatGPT에게 개선을 요구할 수 있다. 아래와 같이 말이다.
인테리어 대신 검색 키워드를 입력받고 싶어. 검색 키워드를 입력 받을 수 있도록 수정하려면 어떤 부분을 어떻게 수정해야해?
I want to receive search keywords instead of interior. What part do I need to edit to be able to input search keywords?
이미지를 다운로드 받아서 저장할 때 이름이 같아서 덮어쓰기가 되. 이미지 파일을 덮어쓰지 않도록 수정하려면 어디를 어떻게 수정해야해?
When you download and save an image, it is overwritten because the name is the same. Where and how do I fix it so that the image file is not overwritten?
가이드대로 반영하기
개선점을 요청하였으면, ChatGPT가 친절하게 알려주었을 것이다.
첫 번째 개선점
이 불편함은 input을 받고, 받은 input을 API의 검색어 부분에 넣어주는 방법을 추천해주었다. 코드는 아래와 같다.
import requests
import json
API_KEY = "your_api_key_here"
search_term = input("Enter a search term: ")
BASE_URL = f"https://pixabay.com/api/?key={API_KEY}&q={search_term}&image_type=photo"
def display_images():
# Rest of the code remains the same
두 번째 개선점
나도 질문하기 전에 염두해두고 있던 점인데, file 이름 뒤에 현재 timestamp를 붙이는 방법을 추천해주었다. 코드는 아래와 같이 추천해주었으나, 다른 부분은 다 필요 없고, 아래 코드 블럭에 필요한 부분이라고 표시한 부분만 따와서, 파일 이름을 지정해주는 것 같이 생긴 코드에 "_{timestamp}.jpg"와 같이 붙여주었다. 그랬더니 아래 이미지의 왼쪽과 같이 파일 이름이 잘 변경되어 나왔다.
import os
import time
def save_image(image_url):
response = requests.get(image_url)
timestamp = int(time.time())
image_name = f"{timestamp}.jpg"
path = os.path.join("images", image_name)
with open(path, "wb") as f:
f.write(response.content)
#필요한 부분
import time
timestamp = int(time.time())
마치며
나는 개발자이긴 하지만 python에 대해서 공부해보지 않았고, 이 코드에 대해서 고민을 해보지 않은 상황에서 요구사항을 술술 전달한 것만으로도 프로그램이 완성되었다. 물론 프롬프트를 잘 작성하거나 요구사항을 구체적으로 준다면 더 좋은 프로그램이 탄생할 것이지만, 실습 단계에서는 이 정도도 훌륭하다고 생각한다. 앞으로 ChatGPT를 이용해서 또 무엇을 해볼 수 있을지 기대되고 재밌어진다. 다음 번에는 다운로드 받은 이미지를 업로드 해보는 실습을 해볼까 하는데, 언제 준비될지 모르겠다. 최대한 빨리 준비해보겠다. :)
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif)
'#개발 이야기 - 개발, IT 트렌드 > AI 이야기' 카테고리의 다른 글
Google AI 모델 Bard로 Bard 소개글 쓰기(실험 버전) | 블로그 포스팅 날로 먹기 (0) | 2023.05.12 |
---|---|
구글 Bard 출시 임박! ChatGPT를 이길 수 있을까? | 대 AI 시대 (0) | 2023.04.04 |
GPT-4 나왔다! ChatGPT의 GPT-3.5와 달라진 점은? | OpenAI의 GPT-4 소개 페이지 리뷰 (0) | 2023.03.16 |
ChatGPT로 원하는 무료 이미지/비디오 다운로드 하는 프로그램 만들기 | 비개발자도 가능! | pexels, Pixabay (0) | 2023.03.02 |
ChatGPT와 함께 사용하면 좋은 확장 프로그램 2가지 | 프롬프트 지니, AIPRM (0) | 2023.03.01 |
댓글