관리 메뉴

피터의 개발이야기

[github] GitHub Action으로 티스토리 블로그 코롤링하여 커밋하기 본문

Programming/GitHub

[github] GitHub Action으로 티스토리 블로그 코롤링하여 커밋하기

기록하는 백앤드개발자 2024. 2. 13. 13:48
반응형

ㅁ 들어가며

 ㅇ 티스토리의 글을 올리면 Git에도 반영되어 잔디밭을 조성하는 방법을 알게 되었다.

 ㅇ Github Action을 이용하여 하루에 한번 티스토리의 RSS를 기반으로 Github에 커밋이 된다.

 ㅇ 티스토리의 RSS와 Github와 연동하는 방법을 정리하였다.

 ㅇ 참조: [github] GitHub Action 이용해서 티스토리 게시글 깃허브에 업로드하기

 

 

ㅁ 블러그 RSS 추출

# feedparser 라이브러리 추가
$ pip install feedparser

 

import feedparser

feed = feedparser.parse("https://peterica.tistory.com/rss") 

for i in feed['entries']:
    print(i['link'], i['title'])

 ㅇ Jupyter nodebook을 이용하여 테스트 수행하였다.

 

ㅁ 블러그 내용 가공

import feedparser,datetime

# rss 추출
feed = feedparser.parse("https://peterica.tistory.com/rss") 

for i in feed['entries']:
    # date formation
    date = datetime.datetime.strptime(i['published'], "%a, %d %b %Y %H:%M:%S %z").strftime("%Y.%m.%d %H:%M")
    
    print(date, i['link'], i['title'])

 ㅇ 게시시간, 링크, 제목으로 가공하였다.

 

ㅁ README.md 만들기

import feedparser,datetime

# rss 추출
feed = feedparser.parse("https://peterica.tistory.com/rss") 

# README 양식
markdown_text = """
###  🐱 github stats  

<div id="main" align="center">
    <img src="https://github-readme-stats.vercel.app/api?username=peterica&count_private=true&show_icons=true&theme=radical"
        style="height: auto; margin-left: 20px; margin-right: 20px; padding: 10px;"/>
<!--         <img src="https://github-readme-stats.vercel.app/api/top-langs/?username=qpyu66&layout=compact"   
        style="height: auto; margin-left: 20px; margin-right: 20px; padding: 10px;"/>  -->
</div>

###  💁‍♀️ About Me  
<p align="center">
    <a href="https://peterica.tistory.com/"><img src="https://img.shields.io/badge/Blog-FF5722?style=flat-square&logo=Blogger&logoColor=white"/></a>
    <a href="mailto:ilovefran.ofm@gmail.com"><img src="https://img.shields.io/badge/Gmail-d14836?style=flat-square&logo=Gmail&logoColor=white&link=ilovefran.ofm@gmail.com"/></a>
</p>

<br>

### 📕 Latest Blog Posts   

""" # list of blog posts will be appended here

for i in feed['entries'][:5]:
    markdown_text += f"<a href =\"{i['link']}\"> {i['title']} </a> <br>"
    #print(i['link'], i['title'])

#print(markdown_text)
f = open("README.md",mode="w", encoding="utf-8")
f.write(markdown_text)
f.close()

 ㅇ README.md를 작성하기 위한 readme_update.py 생성하였다.

 

 ㅇ 생성된 README.md

 

ㅁ Git push

 ㅇ tistory-crawling에 커밋을 하였다.

 

 

ㅁ Githut Action Workflow 생성

 ㅇ Github의 Actions 탭으로 이동한다.

 ㅇ set up a workflow yourself를 클릭한다.

 

 ㅇ main.yml에 아래의 텍스트를 편집하여 붙여 넣었다.

 ㅇ 작성 완료 후 Comit changes를 클릭한다.

 

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

name: Readme Update

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
  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:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v3
      - name: Set up Python 3.10
        uses: actions/setup-python@v3
        with:
          python-version: '3.10'
      # 라이브러리 추가작업
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install feedparser
      - name: Update README
        run: |
          python readme_update.py

      - name: Commit README
        run: |          
          git add .
          git config --local user.email "@gmail.com"
          git config --local user.name "Peter Seo"
          git commit -m "Update README.md"
          git push

 ㅇ workflow 작동을 위해 main.yml을 만들었다.

 

ㅁ Git Action build 에러 확인

 ㅇ 403 Permission 오류가 발생하였다.

 

ㅁ workflow 권한 수정

 ㅇ GIT > Settings > Actions - General -> Workflow permisions로 이동

 ㅇ Read and write permisions를 선택 후 저장한다.

 

ㅁ 빌드 오류확인

error: failed to push some refs to 'https://github.com/peterica/tistory-crawling'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.

 ㅇ Git push 오류 해결을 위해 검색을 하였다.

 ㅇ 이곳에서 해결책을 찾아서 다시 시도하였다.

 

 - name: Commit README
        run: |
          git add .
          git config --local user.email "ilovefran.ofm@gmail.com"
          git config --local user.name "Peter Seo"
          git commit -m "Update README.md"
          git push origin +master   <==== 이부분 수정

 ㅇ workflow main.yml을 수정하였다.

 

 ㅇ job을 재시작 하였고, 문제가 되었던 Job: Commit README가 정상 작동하였다.

 ㅇ 결과는 이곳에서 확인.

 

ㅁ 함께 보면 좋은 사이트

blog-post-workflow

Tistory-Nodejs를-활용한-티스토리-글-작성-시-Github에-commit-하는-방법

[github] Git Action 이용해서 티스토리 게시글 깃허브에 업로드하기

Git push 오류 해결 (Updates were rejected because the tip of your current branch is behind its remote..) 

반응형
Comments