250x250
250x250
JinSeopKim
Hello World!
JinSeopKim
전체 방문자
오늘
어제
  • 분류 전체보기 (168)
    • Artificial intelligence (14)
      • DeepDiveToAI (3)
      • Pytorch (3)
      • Etc (8)
    • Back-end (19)
      • Spring (10)
      • JPA (9)
    • Language (24)
      • Python (3)
      • Java (11)
      • Swift (10)
    • Math (4)
      • Linear Algebra (4)
    • CodingTest (79)
      • Algolithm (12)
      • Backjoon (25)
      • Programmers (42)
    • Etc (27)
      • Book Review (3)
      • Adsp (6)
      • Life (2)
      • Docker (1)
      • odds and ends (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • GitHub

인기 글

태그

  • ADsP
  • Python
  • JPA
  • 구현
  • 프로그래머스
  • 코딩테스트
  • 백준
  • 문제풀이
  • 머신러닝
  • 파이썬
  • 개발자
  • 카카오
  • uArm
  • AI
  • BOJ
  • 알고리즘
  • data
  • DP
  • 선형대수
  • swift
  • BFS
  • SpringMVC
  • ios
  • certificate
  • java
  • 브루트포스
  • 자바
  • JAVA8
  • 개발
  • Front-end

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
JinSeopKim
Etc/odds and ends

Tistory 블로그 글 쓰면 자동으로 GitHub에 올리기

Tistory 블로그 글 쓰면 자동으로 GitHub에 올리기
Etc/odds and ends

Tistory 블로그 글 쓰면 자동으로 GitHub에 올리기

2021. 11. 6. 04:13
728x90
728x90

동기

만들게된 계기..

오늘 Git을 열심히 꾸며주었다. 😊

꾸미면서 엄청난 사람들의 Git을 많이 구경하였는데 TIL이 눈에 들어왔다. 나도 TIL쓰고 싶다는 생각에 바로 Repository부터 만들었다.

Tistory에 공부한 자료도 올리고 TIL로 깃헙에 까지 매일 작성하면, 너무 귀찮다고 생각하여 생산성있게 Tistory로 올리면 자동으로 깃헙으로 넘어가는 프로그램을 만들어보자고 생각했다.


구현 방법

사용한 방법은 rss와 git Actions를 사용하는 것이다.

rss란? 쉽게 말하면 최근의 작성된 기사 혹은 블로그 글을 하나의 파일로 모아둔 것이다.

rss는 비교적 옛날 글과 같은 것들은 따로 모아두지 않는다.

 

git Actions를 사용하면 git에서의 간단한 동작을 처리할 수 있다.

Python의 feedparser를 사용하여 rss를 크롤링하고 해당 링크를 만들어 넣어주면 된다.

 

TiStory blog는 자신의 웹페이지 url/rss를 하면 rss를 구할 수 있다.

(필자의 웹페이지 rss는 https://cnu-jinseop.tistory.com/rss다)

 

우선 pip를 활용해 feedparser 라이브러리를 설치를 한다.

그 뒤 feedparser 라이브러리로 나의 rss를 파싱한다.

import feedparser  
with open("README.md", "r", encoding='utf-8') as f:
    content = f.read()
rss = feedparser.parse("https://cnu-jinseop.tistory.com/rss" )

여기서 content에 README.md 값을 넣어주는 이유는  과거 TIL을 유지하고, 동일한  TIL을 추가하지 않기 위함이다.

 

다음으로 rss의 데이터를 활용해 새로운 post를 만든다.

post = ""
for i, feed in enumerate(rss['entries']): 
    date = feed['published_parsed'] 
    check = f"{date.tm_year}.{date.tm_mon}.{date.tm_mday} : {feed['title']}"
    if(content.find(check)) == -1:
        post = f"[{date.tm_year}.{date.tm_mon}.{date.tm_mday} : {feed['title']}]({feed['link']}) <br>\n" + post
text = f"{content}{post}" 
with open("README.md", 'w', encoding='utf-8') as f:
    f.write(text)

README.md에 날짜, 제목, 블로그링크를 통해 넣어줄 것으로  'entries'에서만 확인하도록 한다.

check를 사용하는 이유는 과거에 내가 작성한 적이 있는지 확인하기 위함이다.

반복문을 돌며 '[날짜 : 이름](링크) <br>'의 형태로 만들어주어 README.md파일을 작성한다.

 

Python을 활용하는 코드는 위에서 보는 것처럼 간단하게 구현할 수 있다.

다음으로 Actions에서 workflow를 작성한다.

# This is a basic workflow to help you get started with Actions

name: Python

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
  schedule:
        - cron: "0 0 */1 * *"

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    - uses: actions/checkout@v2
    - name: Set up Python 3.9
      uses: actions/setup-python@v2
      with:
        python-version: 3.9
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install feedparser
    - name: Run Update Python
      run: |
        python updateReadMeAuto.py
    - name: Update README.md
      run: |
        git pull
        git add .
        git diff
        git config --local user.email "tjq2702@naver.com"
        git config --local user.name "kim-jin-seop"
        git commit -m "Update README.md"
        git push

schedule의 cron을 활용하여 적절히 반복할 시간을 정해주고

세팅, python실행, git 실행 순서로 구현하여 주기적으로 작업을 할 수 있게 구현하면 끝.

 


포스팅을 마치며

아쉬운점은 글을 삭제하면 자동으로 해당 글을 삭제할 수 없는 문제점이 있다.

 

다음에 기회가 되면 rss 트리 구조를 익히고 python의 태그를 읽어오는 방식으로 글과 제목을 크롤링하고 카테고리별로 묶어서 md파일을 자동으로 만드는 프로그램을 만들어보도록 하겠다. 

728x90
728x90
저작자표시 비영리

'Etc > odds and ends' 카테고리의 다른 글

URI? URL? URN?  (0) 2021.12.07
www.google.com url을 검색하면 일어나는 일  (0) 2021.12.06
마크다운(Markdown) 문법 정리  (0) 2021.07.15
Git Blog에 이미지 업로드 Tip  (1) 2021.07.15
uArm 예제를 응용해 바둑돌 두는 동작 구현  (2) 2019.01.10
  • 동기
  • 구현 방법
  • 포스팅을 마치며
'Etc/odds and ends' 카테고리의 다른 글
  • URI? URL? URN?
  • www.google.com url을 검색하면 일어나는 일
  • 마크다운(Markdown) 문법 정리
  • Git Blog에 이미지 업로드 Tip
JinSeopKim
JinSeopKim
기록📚

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.