Home html파일을 md(마크다운)파일로 일괄 변환하기
Post
Cancel

html파일을 md(마크다운)파일로 일괄 변환하기

최근 티스토리를 떠나는 사람이 많은데 저도 티스토리에 올리던 게시글을 여기 깃 블로그로 쭉 백업하고 있습니다.

손으로요…

명색이 그래도 SW엔지니어인데 뭐하는가 싶어서 일괄적으로 크롤링이라도 해야하나 보니 다행이 일괄적으로 백업은 할 수 있는데

html파일이네요 그래도 금방 찾아보니 html파일을 md 마크다운 파일로 변경해주는 라이브러리가 있어서 여기에다가 몇 가지 코드만 수정을 해서 일괄적으로 마크다운 파일을 얻을 수 있게 코드를 짰습니다.

파일 변환만 필요하신 분들은 바로 2번으로 넘어가셔도 됩니다.

1. 티스토리 백업하기

Cap 2023-01-07 16-00-05-698

블로그 설정 관리

Cap 2023-01-07 16-00-10-130

데이터 관리하기

Cap 2023-01-07 16-00-02-834

티스토리 블로그 백업이 있습니다. 누르면 바로 되는 것은 아니고 파일이 생성되야 하는데 그렇게 오래 걸리지는 않습니다.

다 끝나면 블로그 알림으로 알려줍니다.

Cap 2023-01-07 16-43-21-582

압축파일 형태이고 이렇게 게시글 번호나 게시글 이름으로 각 폴더가 생성되고 안에 html파일과 이미지 파일이 들어 있습니다.

2. html파일을 마크다운으로 변환하기

파이썬은 3.9버전 이하로 준비해주시면 됩니다.

Cap 2023-01-07 15-59-03-361

기본 라이브러리에다가 두 가지 라이브러리가 더 필요한데

https://pypi.org/project/aspose-words/

aspose-words는 파일을 변환해주는 라이브러리고 (그냥 검색하니 제일 위에 올라온 라이브러리고 잘 작동하길래 가져왔습니다)
tqdm는 진행도를 알려주는 라이브러리입니다.

생각보다 하나 파일 컨버팅하는데 1~2초 정도로 수백개의 게시글이 있을 경우 그렇게 금방 끝나지는 않아서 진행상황을 보기 쉽게 할려고 넣었습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# !pip install aspose-words
# !pip install tqdm
import os
import aspose.words as aw
from tqdm import tqdm

#지정한 경로안에 있는 모든 html파일 읽어오기
dir_path = "./"
html_file_list = []
for (root, directories, files) in os.walk(dir_path):
    for d in directories:
        d_path = os.path.join(root, d)
    for file in files:
        file_path = os.path.join(root, file)
        html_path = file_path.split('.')[-1]
        if html_path == 'html':
            html_file_list.append(file_path)
            print(file_path)
            
print("done!")

#html파일을 마크다운으로 변경하기
for index, path in enumerate(tqdm(html_file_list)):
    new_string = (html_file_list[index].split('\\')[1][2:-5]+'.md')
    working_dir = (html_file_list[index].split('\\')[0]+'/')
    markdown = aw.Document(path)
    markdown.save(working_dir+new_string)

소스코드는 위와 같습니다.

주피터 노트북이나 파이썬 파일로 만들어서 위 코드를 작성한 파이썬 파일을 같은 폴더에 넣어주시거나 절대경로로 백업파일이 있는 곳을 지정해주면 알아서 모든 html파일을 같은 폴더안에 마크다운 파일을 새로 생성을 해주게 됩니다.

Cap 2023-01-07 16-24-26-095

끝났습니다.

다만 블로그 테마나 layout, 설정하는게 조금씩 달라서 자동으로 title나 date등의 metadata를 추가하지는 않았습니다. 어차피 이미지 경로 같은거는 전부다 수동으로 다 새로 셋팅해야해서….. 그래도 일이 조금 줄어든 것으로 만족합니다.

그래도 간단하게 코드를 만든김에 깃에도 정리해서 올려두겠습니다.

  • md파일에다가 자동으로 본인들의 라이브러리를 사용했다는 글을 추가를 하네요 나중에 이것도 다시 생각나면 지우는거까지 하겠습니다.
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.