본문 바로가기
Programming

[ GitHub ] TIL(Today I Learned) 자동 업로드 프로젝트 구현하기 #1

by 코뮤(commu) 2021. 12. 3.
728x90
반응형

깃허브 탐방을 하던 중,

TIL 레포지토리를 아주 멋지게 만들어놓으신 분들을 봤다.

나는 주로 티스토리 블로그에 포스팅을 하는데,

사실 개발하시는 분들은 블로그보다 깃허브 주소를 더 궁금해하시고, 더욱 시간을 들여서 보시기 때문에

어떻게 하면 티스토리 포스팅을 하면서도 깃허브와 연동을 시킬 수 있을까 고민했다.

 

그렇다고 이제부터 깃에 공부한 것들을 올리기도 귀찮고,

글을 쓸 때마다 하나하나 복붙하는건 너무 비효율적인 것 같아 더욱 싫었다.

 

그러던 도중에 CI/CD 툴들을 이용하면 특정한 시간에 파이썬코드를 실행시켜서

깃허브 이슈에 올릴 수 있지않을까, 생각이 들었다.

 

물론 내가 직접 클라우드 서버를 올려두고 자동화시켜도 되겠지만,

이왕 만드는거 Github Action(CI/CD 도구 중 하나)을 가지고 공부해보면서 자동화를 시켜놓으면

좀 더 의미있지않을까 싶었다.

 

마침 자동배포를 알아보며 찾아둔 좋은 자료도 있어서

곧바로 제작에 돌입했다.

 

아래 코드는 오늘 쓰여진 포스팅의 제목과 태그, 링크를 가져오는 코드이다.

 

 

import requests
from bs4 import BeautifulSoup

urls = ["https://ffoorreeuunn.tistory.com"]

def deco_parsing(function):
    def parsing(*args):
        data = requests.get(urls[-1])

        html = data.text
        soup = BeautifulSoup(html, 'html.parser')

        return function(soup)
    return parsing

@deco_parsing
def extract_post_title(soup):
    today_contents = ''
    today_posts = soup.select(".item_category")
    url_prefix = "https://ffoorreeuunn.tistory.com"
    
    # 포스팅은 항상 최신순으로 정렬되어 있기때문에 조건문에 맞지 않는것이 생기면 바로 반복 탈출.
    for today_post in today_posts:
        post_date = today_post.select(".date")[0].text
        if ":" in post_date:
            post_title = today_post.select("strong")[0].text
            url_suffix = today_post.select("a")[0].attrs['href']
            url = url_prefix + url_suffix
            urls.append(url)
            tags = extract_post_tag(urls)
            today_contents += f"<h2><a href={url}>{post_title}</a></h2>\n\n"
            for tag in tags:
                today_contents += f"#{tag}\n"
        break
            
    return today_contents

@deco_parsing
def extract_post_tag(soup):
    tags = soup.select(".tag_content")[0].text.split(',\r\n')
    return tags

print(extract_post_title(urls))

 

 

 

 

실행하면 이런식으로 나오게 된다.

 

이제 깃허브에 이슈를 남길 수 있게 설정을 해줘야하는데,

그전에 깃허브 액세스 토큰을 발급받아야 한다.

깃헙 우측 자신의 아이콘의 Settings 에 들어가보면

 

 

 

이렇게 Developer settings 가 나온다.

 

 

 

거기서 Personal access tokens - Generate new token 을 통해 새로운 토큰을 발급받자.

 

 

여러가지 권한이 있는데, 나는  repo 와 workflow 에 체크해줬다.

 

 

이렇게 만들어진 토큰의 값을 이제 우리가 원하는 레포지토리의 Setting 의 Secrets 값으로 넣어주면 된다.

 

 

 

 

 

 

 

이렇게 생성해주면 된다.

나는 TIL_TOKEN 이라는 이름으로 Secret을 생성했다.

 

이제 본격적으로 설정을 해줄 건데,

이것까지 한번에 포스팅하면 글이 너무 길어질 것 같아 다음 포스팅에서 소개하도록 하겠다.

 

 

 

 

 

 

728x90
반응형