전자책 ePub 관리 도구 (일괄 이름 변경, 압축)
2025.12.06 11:19
구글 gemini AI를 이용해 CMD 런처+PS1 조합으로 만들어 보았습니다.
전자책 안에 있는 메타데이터인 책 이름과 저자를 추출해 파일 이름을 자동 정리합니다.
전자 책 폴더를 선택하면 서브 폴더까지 ePub 파일들을 검색하고 작업이 필요한 파일들만 골라 확인 후, 작업을 계속 할 것인지 물어봅니다.
파일 하나만 선택하면 개별 작업도 가능합니다.
1번 메뉴의 파일 이름 변경은 형식(현재 '책제목 (저자)' 형식)을 바꾸려면 스크립트 내부에 변수로 지정되어 있으니 필요시 수정할 수 있습니다.
ePub 파일의 메타 정보를 이용해 이름을 변경하기 떄문에 폴더나 파일만 선택하면 모든 것이 깔끔하게 자동 처리됩니다.
2번 메뉴의 압축은 비압축 패킹 방식으로 만들어진 epub 파일을 입축 패킹 방식으로 다시 만들어 저장 공간을 늘려줍니다.
보너스로 ePub 메타정보 뷰어도 포함되어 있습니다.
gemini AI를 코딩에 이용한 이유는 무료 버전에서 업로드 스크립트 파일 용량에 비교적 제한이 적고, 속도도 비교적 빠릅니다.
가끔 gemini AI가 멍청한 짓만 하면 DeepSeek AI를 잠깐 활용했습니다. ChatGPT는 무료 버전에 대한 제한이 커서 사용하지 않습니다.
EPUB 파일 일괄 처리 및 관리 ps1 스크립트 설명서
이 스크립트는 윈도우10 이상 환경에서 실행되는 도구로, EPUB 전자책 파일의 **메타데이터를 자동으로 추출**하여 파일명을 정리하거나, **압축률을 최적화**하여 파일 크기를 줄이는 두 가지 주요 기능을 제공합니다. 특히 콘솔 환경에서 진행 상황을 깔끔하게 **줄바꿈 없이 덮어쓰기**로 표시하는 기능이 구현되어 있습니다.
1. 주요 기능
1-1. 메뉴 1번 - '파일 이름 정리': '책 이름 (저자)' 형식
- 변경된 파일 이름 형식은 스크립트 소스 첫부분인 '환경 설정 및 변수 정의' 색션에서 변경 가능합니다.
- **메타데이터 추출:**
ExifTool과 EPUB 내부의content.opf파일 파싱을 병행하여 책 제목(Title)과 저자(Author) 정보를 추출합니다. - **이름 형식 적용:** 추출된 정보를 바탕으로 파일 이름을
{Title} ({Author}).epub형식으로 변경합니다. - **BOM 및 인코딩 오류 복구:** 메타데이터 추출 중 **BOM(Byte Order Mark) 또는 인코딩 오류**가 발생하는 파일을 자동으로 OPF 파싱 방법으로 추출 후 수정하여 압축(복구)합니다.
- **중복 처리:** 동일한 폴더 내에 변경될 이름이 이미 존재할 경우, 이름 뒤에
_1,_2등의 숫자를 붙여 중복을 회피합니다.
1-2. 메뉴 2번 - '압축: 저장공간 확보'
- **압축률 분석 대상 선정:** EPUB 표준에 따라 압축하지 않아야 하는
mimetype파일 외의 파일 중, **META-INF/container.xml** 파일이 **비압축 상태**인 파일을 압축 대상으로 선정합니다. (이는 EPUB 파일 생성 시 ZIP 규격을 제대로 따르지 않아 압축 효율이 낮을 가능성이 높은 파일을 의미합니다.) - **최적화 압축:** 파일을 해제한 후, **Optimal Compression** 레벨로 다시 ZIP 압축하여 파일 크기를 최적화합니다.
- **원본 교체:** 압축이 완료되고 유효성 검증을 통과한 새 파일로 원본 파일을 안전하게 대체합니다.
2. 핵심 구현 및 기술
2-1. 메타데이터 추출 로직
메타데이터 추출의 안정성을 높이기 위해 두 가지 방법을 사용합니다.
- 1차 시도: ExifTool
외부 도구인exiftool.exe를 사용하여 EPUB 파일에서 Title 및 Creator 메타데이터를 빠르게 추출합니다. - 2차 시도: OPF 파싱
ExifTool이 실패하거나 유효한 데이터를 반환하지 않을 경우, EPUB 파일을 ZIP 해제하지 않고 바로 읽어 내부의META-INF/container.xml을 통해content.opf파일의 경로를 찾은 후, 해당 OPF 파일에서 직접dc:title및dc:creator태그를 파싱하여 메타데이터를 추출합니다.
2-2. BOM 복구 및 인코딩 수정 후 압축 기술
BOM 복구(Repair-EpubBom) 및 압축(Recompress-Epub) 함수는 안정적인 파일 처리를 위해 다음 단계를 따릅니다.
System.IO.Compression.FileSystem어셈블리를 사용하여 PowerShell 내에서 ZIP 압축/해제 기능을 직접 사용합니다.- BOM 복구 시, OPF 파일을 읽어들여 **BOM 없는 UTF-8 인코딩**으로 다시 저장하여 호환성 문제를 해결합니다.
- 압축 시, EPUB 표준에 따라
mimetype파일은 **압축 없이(NoCompression)** 저장하고, 나머지 콘텐츠 파일은 **최적 압축(Optimal Compression)** 레벨로 저장합니다. - 원본 파일은
.bak.epub확장자로 **안전하게 백업**된 후, 새 파일 무결성 확인한 다음 삭제됩니다.
3. 스크립트 실행 환경
| 항목 | 설명 |
|---|---|
| 운영체제 및 환경 | Windows 10 이상 내장된 PowerShell 5.1 환경에서 CMD 런처로 실행 |
| 필수 외부 도구 포함됨 | .\exiftool 폴더에 **exiftool.exe** 파일이 포함됨. |
| 인코딩 | PowerShell 콘솔 및 출력 인코딩이 **UTF-8 (65001)**로 설정. |
| 경로 설정 | 팝업되는 폴더/파일 선택 창(System.Windows.Forms)을 통해 지정. |