본문 바로가기
IT인터넷/윈도우

자동으로 변경되는 NASA 바탕 화면 만들기

by InspiredBy 2024. 5. 28.
반응형

******************************
자동으로 변경되는 NASA 바탕 화면 만들기

Image: Tom's Hardware
(이미지 출처: Tom's Hardware)

우리 위의 별들은 항상 경이로움과 지식의 원천이었습니다. 나는 어렸을 때부터 인간을 달에 보내는 아폴로 프로그램에 대해 배웠고, 아폴로 13호를 안전하게 지구로 귀환시키는 데 성공했습니다. 

우주는 아름다운 성운, 별, 행성 및 기타 천체로 가득 차 있습니다. 운 좋게도 NASA에는 전파 망원경, 천문대 및 위성에서 촬영한 매일 이미지를 보는 데 사용할 수 있는 무료 리소스가 있습니다. 이 방법에서는 NASA의 무료 서비스를 사용하여 Windows 10 및 11 배경 화면을 최신 천문 이미지로 변경하는 방법을 알아봅니다.

NASA API 키 받기

NASA에서는 리소스를 매우 쉽게 사용할 수 있지만 리소스를 최대한 활용하려면 API 키가 필요합니다. API(응용 프로그래밍 인터페이스)는 응용 프로그램이 회사(또는 우리의 경우 NASA)에서 제공하는 리소스를 사용하기 위한 수단입니다. 인터페이스를 통해 두 개 이상의 컴퓨터가 서로 대화하고 요청을 할 수 있습니다. 이 프로젝트에서는 NASA API를 사용하여 매일 APOD(오늘의 천문학 사진)를 가져옵니다.

1. 브라우저에서 NASA의 API 페이지 로 이동하여 API 키를 등록하세요. 무료이며 수천 개의 NASA 리소스에 액세스할 수 있습니다.

 

Image: Tom's Hardware
(이미지 출처: Tom's Hardware)

2. 이메일에서 API 키를 확인하세요. 이 키를 가까이에 보관하되 누구와도 공유하지 마세요.

Python 환경 설정

프로젝트 코드에 추가 기능을 제공하려면 두 개의 추가 Python 라이브러리(모듈)를 설치해야 합니다. 첫 번째는 앱이 실행될 때 성공/실패 메시지를 표시하는 데 사용하는 Windows 10 및 11용 팝업 알림 도구 인 Win11Toast 입니다. 두 번째 라이브러리는 Python 프로젝트와 해당 종속성을 단일 실행 파일로 패키징하는 매우 편리한 도구 인 pyinstaller 입니다. 이전에는 실행 파일을 만들기 위해 이 앱의 GUI인 Auto Py to Exe를 사용했지만 이 방법에서는 간단한 실행 파일만 필요합니다.

이 방법을 시작하기 전에 Windows 10/11 컴퓨터에 Python이 설치되어 있는지 확인하십시오.
==> 윈도우에 파이썬 설치하는 방법

 

1. 명령 프롬프트를 엽니다. Windows 키를 누르고 CMD를 입력한 후 Enter를 누르세요.

2. Python 패키징 도구인 pip를 사용하여 두 라이브러리를 설치합니다.

pip install win11toast
pip install pyinstaller

프로젝트 코드 작성

API 키와 Python 환경 설정을 통해 이제 프로젝트 코드 작성을 시작할 수 있습니다. 우리는 Thonny Python 편집기를 사용하고 있지만 어떤 편집기든 사용할 수 있습니다. Notepad++와 Microsoft 의 VS Code는 모두 훌륭한 대안입니다.

1. 빈 프로젝트 페이지에서 세 개의 라이브러리를 가져오는 것으로 시작합니다. 요청은 NASA API에서 데이터를 요청하는 데 사용됩니다. Ctype을 사용하면 코드를 통해 Windows DLL을 변경할 수 있습니다. "toast"만 가져오는 Win11toast는 Windows에서 팝업 알림을 만드는 데 사용됩니다.

import requests
import ctypes
from win11toast import toast

2. "url"이라는 객체를 생성하고 거기에 API 키와 함께 API 요청 URL을 저장합니다. 키는 URL에서 = 뒤에 와야 합니다.

url = "https://api.nasa.gov/planetary/apod?api_key=YOUR_API_KEY_HERE”

3. 객체 "r"을 생성하고 이를 사용하여 NASA API에 요청하여 반환된 데이터를 저장합니다.

r = requests.get(url)

4. "r" 객체에 데이터가 있는지 확인하는 첫 번째 조건 테스트를 생성합니다. 이것이 사실이라면 일련의 작업이 수행됩니다.

if r:

5. "APOD"라는 개체를 생성하고 이를 사용하여 APOD에 대한 JSON 데이터를 저장합니다. 기본적으로 이는 JSON 개체에 값으로 저장되는 오늘의 APOD 이미지에 대한 URL을 제공합니다.

   APOD = r.json()['url']

6. "pic"이라는 개체를 만들고 APOD 개체를 사용하여 NASA API에서 이미지를 요청합니다. 이렇게 하면 파일이 메모리에 다운로드되지만 아직 디스크에 파일로 기록되지는 않습니다.

pic = requests.get(APOD, allow_redirects=True)

7. APOD 업데이트가 비디오가 아닌 JPEG 이미지인지 확인하기 위해 추가 조건부 테스트를 추가합니다. 해당 날짜의 이미지가 없으면 Windows에 알림 팝업이 표시되어 사용자에게 알립니다. NASA는 매일 APOD를 업데이트하지만 어떤 날에는 YouTube 동영상으로 업데이트됩니다. 이 오류 처리 테스트가 없으면 비디오 업데이트가 제공될 때 코드가 실패합니다.

   if  "jpg" not in APOD:
       toast("No image for today, must be a YouTube video 📺") 

8. else 조건을 사용하여 사용자 계정의 Pictures 디렉터리에서 APOD.jpg라는 파일을 연 다음 메모리에 저장된 이미지를 파일에 씁니다. 사용자 계정 이름을 귀하의 이름과 일치하도록 변경하십시오. 우리는 lespo입니다. 파일 경로에 이중 백슬래시(\\)를 포함하는 것을 기억하십시오. 그렇지 않으면 Python은 우리가 이스케이프 문자를 사용하고 싶다고 생각할 것입니다.

   else:
       open("C:\\Users\\lespo\\Pictures\\APOD.jpg", "wb").write(pic.content)

9. ctypes를 사용하여 DLL을 업데이트하여 배경 화면을 APOD.jpg 파일로 설정합니다. 전체 파일 경로를 사용해야 합니다.

       ctypes.windll.user32.SystemParametersInfoW(20, 0, "C:\\Users\\lespo\\Pictures\\APOD.jpg", 3)

10. 토스트를 사용하여 이미지가 변경되었음을 사용자에게 알리는 팝업 메시지를 만듭니다. 알림에 이모지를 사용할 수 있으며 Emojipedia에서 이모지를 제공했습니다.

       toast("Enjoy the latest image from NASA 🚀")

11. 원래 if..else 조건문(APOD가 이미지인지 비디오인지 처리하는 명령문)으로 돌아가서 else 조건을 추가하고 이를 사용하여 Python REPL에 "Error"를 인쇄합니다.

else:
print("Error")

12. 코드를 apod.py로 저장한 다음 편집기에서 작동하는지 테스트합니다. Thonny에서 실행을 클릭하면 이미지가 변경되는 것과 함께 알림 팝업이 표시되는 것을 볼 수 있습니다.

알림을 볼 수 없어요!

코드를 실행할 때 Python REPL은 "win11toast (<winsdk Windows Foundation.HResult object at 0x0000025163E315F0>,)" 라는 오류를 생성했는데 이는 큰 의미가 없었습니다. Github에서 Win11Toast 문제를 확인하면서 팝업 알림을 억제하도록 선택했을 때 이 오류가 발생했음을 발견했습니다. 수정은 쉬웠습니다.

1. 설정으로 이동하여 시스템을 선택합니다.

 

(이미지 출처: Tom's Hardware)

2. 알림 및 작업을 선택한 다음 알림을 켭니다. 수신하는 알림의 세부 수준은 확인란을 사용하여 조정할 수 있습니다.

 

(이미지 출처: Tom's Hardware)

3. 애플리케이션 창을 닫고 코드를 다시 시도하여 알림이 나타나는지 확인하세요.

실행 파일 만들기

프로젝트 코드를 테스트하고 작업하면서 우리의 관심은 실행 파일 생성에 쏠립니다. 이렇게 하면 모든 Windows 컴퓨터에 파일을 놓을 수 있으며 제대로 작동합니다. 이를 수행하는 방법은 애플리케이션이 실행될 Python 환경의 스냅샷을 찍는 pyinstaller를 사용하는 것입니다. 그런 다음 실행 파일 내부에 자체 환경을 만듭니다. 따라서 우리가 사용한 모든 라이브러리(요청, ctypes, win11toast 등)가 파일에 패키지되어 있으므로 대상 시스템에 설치할 필요가 없습니다. 또한 실행 파일을 시작 디렉터리에 놓을 수 있다는 뜻이기도 하지만 이에 대해서는 나중에 자세히 설명합니다.

1. 명령 프롬프트를 엽니다. Windows 키를 누르고 CMD를 입력한 후 Enter를 누르세요.

2. 프로젝트 코드가 있는 디렉터리로 이동합니다.

3. -F 인수를 사용하여 pyinstaller를 실행하고 프로젝트 파일 이름을 전달합니다. -F를 사용하면 모든 Python 환경이 하나의 파일로 압축됩니다.

pyinstaller -F apod.py

 

(이미지 출처: Tom's Hardware)

4. 프로세스가 완료될 때까지 기다린 다음 명령 프롬프트를 닫습니다.

 

(이미지 출처: Tom's Hardware)

5. 프로젝트 코드가 저장된 디렉터리를 열고 “dist” 디렉터리를 찾아 엽니다. 그 안에는 실행 파일이 있습니다.

6. 테스트할 파일을 더블클릭하세요. 이미지가 변경되었음을 알리는 알림 팝업이 표시됩니다/유튜브 영상입니다. 이는 파일이 작동한다는 것을 증명합니다.

배경화면 자동 변경

배경 화면을 변경하기 위해 실행 파일을 두 번 클릭하는 것은 그리 어렵지 않습니다. 하지만 Windows가 이를 대신해 줄 수 있다면 어떨까요? 실행 파일을 Windows가 시작될 때마다 실행되는 시작 디렉터리로 이동하겠습니다.

1. Windows와 R을 눌러 실행 대화 상자를 열고 shell:startup을 입력합니다.

 

(이미지 출처: Tom's Hardware)

2. dist 폴더의 apod.exe 파일을 시작 폴더에 복사합니다. 그러면 Windows가 시작될 때 실행되도록 응용 프로그램이 설정됩니다.

 

(이미지 출처: Tom's Hardware)

3. 창을 닫고 Windows를 재부팅한 후 패널에서 알림을 확인합니다.

 

(이미지 출처: Tom's Hardware)

더 많은 튜토리얼

Les Pounder는 Tom's Hardware의 편집장입니다. 그는 창의적인 기술자이며 7년 동안 젊은이와 노인 모두의 마음을 교육하고 영감을 주는 프로젝트를 만들어 왔습니다. 그는 Raspberry Pi Foundation과 협력하여 교사 교육 프로그램 "Picademy"를 작성하고 제공했습니다.

 

https://www.tomshardware.com/software/windows/how-to-build-an-automated-nasa-wallpaper-switcher

728x90
반응형