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

2021. 12. 3. 15:45·Archive/Develop
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
반응형

'Archive > Develop' 카테고리의 다른 글

[ Error / 해결됨 ] RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods  (0) 2021.12.06
[ GitHub ] TIL(Today I Learned) 자동 업로드 프로젝트 구현하기 #2  (0) 2021.12.03
[ CI/CD ] Github Action | yml 파일 뜯어보기  (0) 2021.12.03
개발 프로세스 모델  (0) 2021.12.02
[ Django ] Admin 페이지에 모델 등록하기  (0) 2021.11.22
'Archive/Develop' 카테고리의 다른 글
  • [ Error / 해결됨 ] RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
  • [ GitHub ] TIL(Today I Learned) 자동 업로드 프로젝트 구현하기 #2
  • [ CI/CD ] Github Action | yml 파일 뜯어보기
  • 개발 프로세스 모델
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    백준 파이썬
    카카오 100일 프로젝트
    백준 문제풀이
    Codeup
    보안뉴스
    비박스
    자바스크립트
    백준
    파이썬 문제
    C++
    자바스크립트 API
    코드업
    파이썬
    파이썬 기초 문제
    Django
    오라클
    백준 풀이
    oracle db
    Git
    코드업 기초
    Oracle
    파이썬 알고리즘
    장고
    Python
    자바스크립트 객체
    docker
    코드업 파이썬 기초 100제
    파이썬 백준
    javascript
    파이썬 기초
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ GitHub ] TIL(Today I Learned) 자동 업로드 프로젝트 구현하기 #1
상단으로

티스토리툴바