[Blog] 구글 블로그 에서 깃허브 블로그로 이전하는 방법 (3)

최대 1 분 소요

이전 포스트에서 구글 백업본 파일을 각각의 html 파일로 만드는데 까지 성공했다. 하지만 categories 각각의 html 파일들에게 categories 항목을 추가해줘야 됬다.

[github pages] 구글 블로그 에서 깃허브 블로그로 이전하는 방법 (2)

categories 항목은 직접 글내용을 보고 넣어줘야 되기 때문에 일괄적으로 처리할 수는 없다.

하지만 어느정도 글 내용만 알고있으면 **같은 categories인 글들만 따로 모아두어서 일괄적으로 넣을수는 있다. **

일일히 수백개의 같은 categories 글들을 수작업 할필요는 없다.

python으로 _posts 폴더에 일괄처리 작업할 같은 categories의 html 파일들을 넣어두고 실행하면 categories 가 삽입되도록 간단하게 코드를 짜보았다.

classes : wide

import os
 
def insert_categories(*categories):
    #카테고리 매개변수를 차례대로 입력받으면 그 카테고리들을 삽입하는 함수.
    #가변매개변수(가변인자) categories 사용
 
    file_list = os.listdir("./_posts")
    #폴더내의 전체 파일목록들 불러와서 list 변수에 저장.
 
    for file_name in file_list:
        # file_list의 길이만큼 실행. file_name에는 file_list 의 value 들이 들어감.
 
        path = "./_posts/" + file_name  # ./_posts/2021-0412-reflection.html 형식으로 파일경로 문자열 생성
        file = open(path, 'r', encoding="utf8")
 
        string = file.readlines()
        #파일 전체를 읽어옴. 리스트 형태로 저장.
 
        flag = False
        # --- 의 시작과 끝을 판별하는 플래그
 
        contains_categories = False
        # categories 항목이 존재하는지 확인하는 플래그. 항목이 있으면 on
 
        for line, text in enumerate(string):
            # string 안에있는 문자들을 1라인씩 line 넣어서 차례대로 검사한다
            # line 에는 반복문 횟수가 들어간다.
            # 우선 상단 속성 설정 전체를 훑으면서 categories 가 있는지 검사한다.
 
            if (("---" in text) and (flag == True)):
                #문서 상단의 --- 속성 설정부분 끝남.
                #문서 상단의 --- 속성 설정부분만 작업하는것이므로, 그 밑에줄은 더이상 작업할것이 없으니 반복문 중지.
                break
 
            if '---' in text:
                flag = True
                # 문단 상단의 --- 속성 설정부분 시작
 
            if "categories" in text:
                contains_categories = True
 
 
        if (contains_categories == False):
            #categories 가 없으면 삽입 작업 시작.
 
            file = open(path, 'w', encoding='utf8')
            # 저장모드로 파일 열음.
 
            for line, text in enumerate(string):
                # string 안에있는 문자들을 1라인씩 line에 넣어서 차례대로 검사한다
                # line 에는 반복문 횟수가 들어간다.
 
                if "date" in text:
                    #date 밑에다가 categories 삽입
 
                    string[line] = string[line] + "categories : "
                    # tags 바로 윗라인에 categories : 텍스트 추가
 
                    for count, args in enumerate(categories):
                        string[line] = string[line] + "\n- "+args
                        #categories 값들 추가
 
                    string[line] = string[line] + "\n"
                    break
                    # categories 삽입도 다 끝났고 더이상 작업할것이 없어서 작업중지
 
            file.writelines(string)
            # 수정한 전체내용 파일에다가 저장.
            string.clear()
            # 다음 파일 읽어올떄를 위해 string list 초기화
 
        file.close()
        # 파일 닫음
 
if __name__ == '__main__':
    insert_categories("github pages")
    #args 넣으면 넣은대로 categories 밸류 추가됨. insert_categories("android", "java", .....args)
 
cs



실행결과)

insert_categories


정상적으로 categories 항목이 새롭게 추가되었다는것을 알수 있다.