카테고리 없음

Python과 Pixabay API 사용!!! 사용자 정의 HTML 이미지 갤러리를 만드는 방법

알세지 2024. 7. 29. 02:52
사용자 입력을 기반으로 Pixabay에서 이미지를 가져오고, 
그 결과 이미지를 보여주는 HTML 파일을 생성하는 Python 코드입니다.


Pixabay API를 활용해서 이미지를 불러오는 파이썬 코드입니다.

원하는 검색어는 직접 입력할 수 있게 했고, 파일은 별도로 저장됩니다.

 

만든 이유는 앞서 포스팅했던 썸네일 편집기에 이미지 컷을 불러오는 기능을 추가하기 위한 테스트 용입니다. 

2024.07.28 - 초간단 썸네일 편집기를 사용하여 멋진 썸네일을 쉽게 만드는 방법

 

아래 코드에서 
API 키값과 저장 경로는 별도로 설정하셔야 합니다. 

(궁금한건 댓글 또는 gpt에게 물어보셔요)

 

import os
import requests

# 사용자로부터 검색어를 입력받습니다.
query = input("검색어를 입력하세요: ")

API_KEY = '직접 받은 키'
url = f'https://pixabay.com/api/?key={API_KEY}&q={query}&image_type=photo'

response = requests.get(url)
data = response.json()

# 검색어를 파일 이름으로 사용하기 위해 안전한 문자열로 변환
safe_query = "".join([c if c.isalnum() else "_" for c in query])

# 명시된 데스크탑 경로
desktop_path = os.path.expanduser('~/Desktop')

# HTML 파일 경로 설정
file_path = os.path.join(desktop_path, f'pixabay_search_results_{safe_query}.html')

html_content = f'''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pixabay Search Results</title>
    <style>
        body {{ font-family: Arial, sans-serif; }}
        .image-container {{ display: flex; flex-wrap: wrap; gap: 20px; }}
        .image-item {{ border: 1px solid #ddd; padding: 10px; border-radius: 5px; }}
        img {{ max-width: 100%; height: auto; }}
        .tags, .user {{ margin-top: 10px; }}
    </style>
</head>
<body>
    <h1>Pixabay Search Results for "{query}"</h1>
    <div class="image-container">
'''

if data['hits']:
    for hit in data['hits']:
        html_content += f'''
        <div class="image-item">
            <img src="{hit['webformatURL']}" alt="{hit['tags']}">
            <div class="tags"><strong>Tags:</strong> {hit['tags']}</div>
            <div class="user"><strong>User:</strong> {hit['user']}</div>
        </div>
        '''
else:
    html_content += '<p>No images found.</p>'

html_content += '''
    </div>
</body>
</html>
'''

# 파일 생성
with open(file_path, 'w', encoding='utf-8') as file:
    file.write(html_content)

print(f'HTML file created successfully at {file_path}.')