안녕하세요.
모공에 키즈노트 관련 글을 올렸는데 몇분께서 관심을 보여주셔서 ChatGPT로 만든 소스를 공유 드립니다.
기본적으로 파이썬,로만든키즈노트앨범전체다운로드파이썬코드사용하기클리앙 VS Code 설치, import 세팅은 가능하다는 전제에 사용 가능하십니다.
원본사이즈의 사진만을 출력하는 방식으로 기타 사이즈가 필요하다면 코드의 Key를 바꾸면 가능합니다.
ex) key = large, key = small
"""
준비작업
# json 파일로 만드는 법은 아래와 같습니다.
1. 키즈노트 PC버전 접속 및 로그인
2. 개발자도구 Open
3. https://www.kidsnote.com/service/album URL 접근
4. https://www.kidsnote.com/api/v1_2/children/#아이코드/albums/?tz=Asia%2FSeoul&page_size=12¢er=#어린이집코드&cls=#반코드&child=#아이코드
=> 개발자도구에 위 형태의 URL이 보여지는데 해당 URL 중 page_size만 대략 한 300으로 조정하고 브라우저에 붙여넣기
=> 실제 홈페이지 앨범 맨 마지막 사진과 해당 JSON URL의 맨 마지막 사진이 일치한다면 전체 목록 불러오는데 성공한겁니다.
5. 해당 URL의 내용을 VS Code 에서 list.json으로 소스코드와 동일 레벨에 저장합니다.
"""
위와 같은 준비 작업을 거쳐서아래 파이썬 소스를 VS Code에 붙여넣고 수정 및 실행합니다.
파일명의 형태는 downloaded_file_넘버링.jpg 입니다.
변경하고 싶다면 # 다운로드 경로 설정 및 파일명 변경에서 해주면 됩니다.
import json
import os
import requests
#URL에서 뽑은 JSON을 저장한 파일명
file_name = "list.json"
# 파일 읽기
with open(file_name, "r") as file:
# JSON 파싱
data = json.load(file)
# "original" 사진의 키의 값을 추출하는 함수
def extract_original_value(json_data):
original_values = []
if isinstance(json_data, dict):
for key, value in json_data.items():
if key == "original":
original_values.append(value)
elif isinstance(value, (dict, list)):
original_values.extend(extract_original_value(value))
elif isinstance(json_data, list):
for item in json_data:
original_values.extend(extract_original_value(item))
return original_values
# "original" 사진 키의 값을 추출
original_values = extract_original_value(data)
# 다운로드 폴더 생성
download_folder = "downloads"
os.makedirs(download_folder, exist_ok=True)
# 각 "original" 값에 대해 다운로드 진행
for index, original_value in enumerate(original_values):
response = requests.get(original_value)
# 파일 확장자 추출
file_extension = original_value.split(".")[-1]
# 다운로드 경로 설정 및 파일명 변경
download_path = os.path.join(download_folder, f"downloaded_file_{ index + 1}.{ file_extension}")
# 파일 저장
with open(download_path, "wb") as file:
file.write(response.content)
print(f"다운로드 완료: { download_path}")
그러면 아래와 같이 다운로드 되는것을 볼 수 있습니다.
GPT 만세....
감사합니다.