개발/GitHub

Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (3)

쪼르뚜 2024. 7. 22. 17:07
728x90
반응형

이전 글 참고

2024.07.12 - [개발/GitHub] - Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (1)

 

Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (1)

항상 뭐든지 시작 전에 끝을 봐야 한다고 생각해 시작을 안 하는 병이 있다.그렇게 GitHub Profile Readme를 꾸며야지 해놓고 방치한지 어언 2년...도저히 미룰 수 없어 조금씩 꾸미자는 생각으로 오랜

jjrdd.tistory.com

 

2024.07.14 - [개발/GitHub] - Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (2)

 

Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (2)

이전 글 참고⭐2024.07.12 - [개발/GitHub] - Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (1) Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (1)항상 뭐든지 시작 전에 끝을 봐야 한다고 생각해 시작을

jjrdd.tistory.com

 

썸네일

 

원래는 티스토리에서 포스팅을 할 때마다 readme가 업데이트 되도록 완전 자동화를 하고 싶었다.

하지만 티스토리 오픈 API 종료와 무지한 웹 개발 실력으로 많은 시간이 걸릴거 같아 타협...🥲

그렇게 타협한 방식은 현재 상태에서 최근 업데이트 날짜와 시간 추가하기.

굉장히 간단하기 때문에 빠르게 코드 설명 쇼쇽하겠습니다.😎

 

수정 과정

728x90
CURRENT_DATE=$(TZ='Asia/Seoul' date "+%Y-%m-%d %H:%M:%S")
echo "" >> latest-post.md
echo "Last updated: $CURRENT_DATE KST" >> latest-post.md

 

현재 날짜와 시간을 'YYYY-MM-DD HH:MM:SS' 형식으로 가져온다.

추가로 TZ(타임존)을 한국으로 설정!

마지막 줄에 작성하기 위해 빈 줄 추가 후 CURRENT_DATE 변수까지 작성해주면 끝.

 

너무 쉽고 간단쓰~👍

블로그 최신 글 추가하는 섹션은 아마 여기서 마무리할거 같다.

 

최종 코드

name: Update README with Latest Blog Post
on:
  workflow_dispatch:

jobs:
  update-readme:
    name: Update README
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      
      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y curl jq libxml2-utils

      - name: Extract latest blog post
        run: |
          RSS_FEED="http://jjrdd.tistory.com/rss"
          XML_DATA=$(curl -s $RSS_FEED)
          if [[ $? -ne 0 ]]; then
            echo "Failed to download RSS feed"
            exit 1
          fi
          
          echo "<!-- BLOG-POST-LIST:START -->" > latest-post.md
          
          for ((i=1; i<=5; i++)); do
            TITLE=$(echo "$XML_DATA" | xmllint --xpath "string(/rss/channel/item[$i]/title)" - 2>/dev/null || echo "No title")
            LINK=$(echo "$XML_DATA" | xmllint --xpath "string(/rss/channel/item[$i]/link)" - 2>/dev/null || echo "No link")
            echo "- [$TITLE]($LINK)" >> latest-post.md
          done

          CURRENT_DATE=$(TZ='Asia/Seoul' date "+%Y-%m-%d %H:%M:%S")
          echo "" >> latest-post.md
          echo "Last updated: $CURRENT_DATE KST" >> latest-post.md

          echo "<!-- BLOG-POST-LIST:END -->" >> latest-post.md

          sed -i '/<!-- BLOG-POST-LIST:START -->/,/<!-- BLOG-POST-LIST:END -->/ {
            /<!-- BLOG-POST-LIST:START -->/ {
              r latest-post.md
            }
            d
          }' README.md

      - name: Commit and Push Changes
        run: |
          git config --global user.name 'JoHyeonJi0408'
          git config --global user.email '1692074@hansung.ac.kr'
          git add README.md
          git commit -m "Update README with latest blog post"
          git push
728x90
반응형