개발 / 자작

전자책 ePub 관리 도구 (일괄 이름 변경, 압축)

2025.12.06 11:19

오호라7 조회:441 추천:6

구글 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. 1차 시도: ExifTool
    외부 도구인 exiftool.exe를 사용하여 EPUB 파일에서 Title 및 Creator 메타데이터를 빠르게 추출합니다.
  2. 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)을 통해 지정.
번호 제목 글쓴이 조회 추천 등록일
[공지] 개발 / 자작 게시판 이용 안내 gooddew - - -
103 ColorPicker_pro - 색상 코드 [1] 제나비 523 8 12-16
102 [20251215] YouTubeDownloader_ver1.82 [4] 록시2 719 25 12-15
101 바탕 화면에 글쓰기 2 [4] bangul 987 12 12-12
100 폴더 List_0.5 (최종 수정) [5] 제나비 825 17 12-12
99 ColorPicker -색상 코드 추출기.(수정) [2] 제나비 352 10 12-12
98 마우스 꼬리 에니메이션 GoPoint [7] 고버스TV 714 12 12-11
97 OCR 실행기 (이미지에서 텍스트 추출) [6] 제나비 785 17 12-06
96 유튜브 다운로드 프로그램 쓰실분 ^^ [8] 제나비 1314 30 12-06
» 전자책 ePub 관리 도구 (일괄 이름 변경, 압축) 오호라7 441 6 12-06
94 Sysprep Toolkit [추가해서 재업] [8] 헌터밤 952 19 12-03
93 바탕 화면에 글쓰기(기본 값 변경 저장) [9] bangul 1107 15 12-01
92 [20251205] 하루의 기록 ver1.6 - 업데이트완료! 록시2 1126 11 11-25
91 Windows 11 PC SID 변경 스크립트 제작 입니다. [5] Airbrone13 901 5 11-25
90 내 컴퓨터 들여다 보기 -아래 부족분 보강 [6] 솔낭구 1090 22 11-21
89 인텔 irst 드라이버 추출 [7] 수리수리 713 14 11-21
88 VHDman2.4.9 [8] 카멜 756 22 11-21
87 내 컴퓨터 들여다 보기 [6] 솔낭구 942 22 11-19
86 ✔ 유투브다운로더_v4.5 (공유) [18] 까치와대구 1308 31 11-17
85 install.wim 파일 unattend.xml 파일 교체 배치파일 [9] gooddew 888 21 11-16
84 VHDman2.4.6 - 버그추가 [3] 카멜 728 35 11-12
XE1.11.6 Layout1.4.8