54 lines
1.5 KiB
Bash
54 lines
1.5 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# fromis_9 Photos 테이블에서 이미지 다운로드 스크립트
|
||
|
|
# 앨범별로 폴더 분류하여 저장
|
||
|
|
|
||
|
|
OUTPUT_DIR="/docker/fromis_9/downloaded_photos"
|
||
|
|
mkdir -p "$OUTPUT_DIR"
|
||
|
|
|
||
|
|
# MariaDB에서 데이터 가져오기
|
||
|
|
docker exec mariadb mariadb -u admin -p'auddnek0403!' fromis_9 -N -e "SELECT photo_id, album_name, photo FROM Photos;" | while IFS=$'\t' read -r photo_id album_name photo_url; do
|
||
|
|
# 앨범명에서 특수문자 제거하여 폴더명 생성
|
||
|
|
folder_name=$(echo "$album_name" | sed 's/[^a-zA-Z0-9가-힣 ]/_/g' | sed 's/ */_/g')
|
||
|
|
|
||
|
|
# 폴더 생성
|
||
|
|
mkdir -p "$OUTPUT_DIR/$folder_name"
|
||
|
|
|
||
|
|
# 파일명 생성 (photo_id 기반)
|
||
|
|
filename="${photo_id}.jpg"
|
||
|
|
filepath="$OUTPUT_DIR/$folder_name/$filename"
|
||
|
|
|
||
|
|
# 이미 다운로드된 파일은 건너뛰기
|
||
|
|
if [ -f "$filepath" ]; then
|
||
|
|
echo "Skip: $filepath (already exists)"
|
||
|
|
continue
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 다운로드
|
||
|
|
echo "Downloading: $album_name/$filename"
|
||
|
|
curl -s -L -o "$filepath" "$photo_url"
|
||
|
|
|
||
|
|
# 다운로드 실패 시 삭제
|
||
|
|
if [ ! -s "$filepath" ]; then
|
||
|
|
rm -f "$filepath"
|
||
|
|
echo "Failed: $filepath"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Rate limiting (0.2초 대기)
|
||
|
|
sleep 0.2
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "Download complete!"
|
||
|
|
echo "Saved to: $OUTPUT_DIR"
|
||
|
|
|
||
|
|
# 결과 요약
|
||
|
|
echo ""
|
||
|
|
echo "=== Summary ==="
|
||
|
|
for dir in "$OUTPUT_DIR"/*/; do
|
||
|
|
if [ -d "$dir" ]; then
|
||
|
|
count=$(ls -1 "$dir" 2>/dev/null | wc -l)
|
||
|
|
dirname=$(basename "$dir")
|
||
|
|
echo "$dirname: $count files"
|
||
|
|
fi
|
||
|
|
done
|