직장인 조모씨 2024. 10. 22. 11:33
728x90
반응형

 

python으로 epub 목차 가져오기

 

처음에는 toc.ncx 을 읽어 하나 하나 파싱하려고 했는데

좋은 라이브러리가 있었다.

book 객체에 epub 정보 담아두고

book.toc 불러오면 바로 읽히더라 굿

import ebooklib
from ebooklib import epub
from bs4 import BeautifulSoup


# EPUB 파일의 목차를 리스트로 저장하는 함수 (book.toc 사용)
def get_toc(epub_file):
    book = epub.read_epub(epub_file)

    # book.toc을 통해 목차 정보 가져오기
    toc_list = []

    def parse_toc(toc_items):
        for item in toc_items:
            if isinstance(item, tuple):
                toc_list.append((item[0].title, item[0].href))  # 제목과 파일 경로 저장
                if item[1]:  # 하위 항목이 있는 경우 재귀적으로 처리
                    parse_toc(item[1])
            else:
                toc_list.append((item.title, item.href))

    parse_toc(book.toc)

    return toc_list, book

 

html 파일 순서 알아내는 방법

 

이건 content.opf 파일에 들어있는데, spine 항목을 보면 된다.

마찬가지로 book.spine을 이용하면 됨.

 

 

 

728x90
반응형