파비의 매일매일 공부기록

티스토리 자동 글 생성기 using Python #3 본문

Side Project (완료)/티스토리 자동 글 생성기 (2021)

티스토리 자동 글 생성기 using Python #3

fabichoi 2021. 9. 5. 23:30

오늘은 CSV 파일을 입력받아서 글 자동 생성하는 로직을 작성할 예정이다.

파이썬 내장 모듈 중 csv가 있어서 다른 거 안 찾아보고 그냥 이걸 쓰기로 함.

(https://docs.python.org/ko/3/library/csv.html)

 

다음과 같이 파일을 읽어서 배열 형태로 리턴하는 함수를 하나 만든다.

def get_csv_file(filename):
    data = []
    f = open(filename, 'r', encoding='utf-8')
    csv_reader = csv.DictReader(f)
    for line in csv_reader:
        data.append(line)
    f.close()

    return data

DictReader가 엄청 유용했다.

처음에는 그냥 Reader 써서 테스트를 해봤다.

그런데 첫 줄인 Header도 딸려오고 따로 어떻게 처리하면 좋을까 하면서 API 문서를 내리다 보니 발견!

 

get_csv_file 함수와 함께 main 쪽 호출 로직도 일부 변경했다.

if __name__ == '__main__':
    init_params = get_init_params()
    extra_params = get_csv_file('example.csv')
    params_list = make_posts(init_params, extra_params)

    for params in params_list:
        requests.post('https://www.tistory.com/apis/post/write', params=params)

get_init_params()에는 액세스 토큰, 출력 타입(json), 블로그 이름과 같이 변하지 않는 값들을 불러오도록 캡슐화했다.

 

make_posts() 함수의 경우에도

이전에 매우 지저분했던 반복문을 좀 더 간단히 리펙토링 했다.

def make_posts(init_params, extra_params):
    posts = []

    for params in extra_params:
        params.update(init_params)
        # 발행일 포맷 변환
        published = time.mktime(datetime.strptime(params.get('published'), '%Y-%m-%d %H:%M:%S').timetuple())
        params['published'] = published
        posts.append(params)

    return posts

발행일 포맷 변환 부분 가독성이 조금 떨어지긴 하는데..

딱히 어려운 로직은 아니라서(str type의 datetime 형식의 값을 받아서 datetime type으로 변환하고, 그걸 다시 unix time으로 변환하는 부분) 그냥 길게 내버려 두었다.

 

오늘은 왠지 소스만 복붙 하는 거 같네.

 

이제 남은 건 example.csv가 소스에 포함되어 있던걸

콘솔에서 파일명을 입력받아 처리하도록 구현하는 것과

Repo 소개 파일인 Readme.md 파일 추가가 남았다.

 

그 외에는 굳이 더 추가할 내용은 없는 듯? (아직까진..)

반응형
Comments