관리 메뉴

솜씨좋은장씨

[GitHub] 내 블로그 최신글 깃헙 프로필에 자동으로 표시하는 방법! ( feat. Python / GitHub Actions ) 본문

유용한 정보/Git | GitHub

[GitHub] 내 블로그 최신글 깃헙 프로필에 자동으로 표시하는 방법! ( feat. Python / GitHub Actions )

솜씨좋은장씨 2021. 8. 22. 00:59
728x90
반응형

티스토리 블로그 스킨을 알아보던 중 heLLO라는 스킨을 만든 분의 GitHub 프로필에서

최신 블로그 포스팅 글이 자동으로 업데이트가 되는 것을 보았습니다.

안 그래도 블로그 유입을 늘릴 방법을 찾고 있던 차에 

이거다! 싶었습니다.

 

이 글에서는 Python과 GitHub Actions를 활용하여 GitHub 프로필에 최신 블로그 포스팅 글을 

업데이트 하는 방법에 대하여 적어보려합니다.

 

방법을 간단하게 요약해보면

블로그의 RSS 피드를 Python으로 가져와서

GitHub Actions를 활용해 자동으로 README.md를 업데이트하는 방식입니다.

1. RSS  피드 가져오는 Python 코드 작성

1-1. 필요 라이브러리 설치

$ pip install feedparser

먼저 필요한 파이썬 라이브러리를 설치합니다.

1-2. 내 RSS 피드 URL 파악하기

RSS 피드를 가져오기 위해서는 내 RSS 피드 주소가 무엇인지 알아야합니다.

티스토리의 경우에는 

https://somjang.tistory.com/rss

위처럼 블로그 주소 뒤에 /rss 를 붙이면 됩니다.

다른 블로그는 아래의 링크를 참고 부탁드립니다.

포스트형 블로그 ( 브런치, 포스타입, 1boon 등 )

국내 블로그 ( 티스토리, 네이버, 이글루스, 다음 등 )

해외 블로그 ( 워드프레스, 미디엄, 구글 )

1-3. Python 코드 작성하기

import feedparser

somjang_blog_rss_url = "https://somjang.tistory.com/rss"
rss_feed = feedparser.parse(somjang_blog_rss_url)

아까 설치한 feedparser 라이브러리를 import 합니다.

그리고 1-2 에서 만든 rss 주소를 feedparser.parse에 넣고 값을 받아옵니다.

{'feed': {'title': '솜씨좋은장씨', 'title_detail': {'type': 'text/plain', 'language': None, 'base': 'https://somjang.tistory.com/rss', 'value': '솜씨좋은장씨'}, 
'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'https://somjang.tistory.com/'}], 'link': 'https://somjang.tistory.com/', 
'subtitle': '세상 모든 개발 관련 지식을 담아보자!', 'subtitle_detail': {'type': 'text/html', 'language': None, 'base': 'https://somjang.tistory.com/rss', 
'value': '세상 모든 개발 관련 지식을 담아보자!'}, 'language': 'ko', 'published': 'Sat, 21 Aug 2021 23:06:49 +0900', 
'published_parsed': time.struct_time(tm_year=2021, tm_mon=8, tm_mday=21, tm_hour=14, tm_min=6, tm_sec=49, tm_wday=5, tm_yday=233, tm_isdst=0), 
'generator_detail': {'name': 'TISTORY'}, 'generator': 'TISTORY', 'ttl': '100', 'authors': [{'name': '솜씨좋은장씨'}], 'author': '솜씨좋은장씨', 
'author_detail': {'name': '솜씨좋은장씨'}, 'image': {'title': '솜씨좋은장씨', 'title_detail': {'type': 'text/plain', 'language': None, 
'base': 'https://somjang.tistory.com/rss', 'value': '솜씨좋은장씨'}, 'href': 'https://tistory1.daumcdn.net/tistory/1688928/attach/528283d8eb2445fa9f9b03728cd05631', 
'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'https://somjang.tistory.com'}], 'link': 'https://somjang.tistory.com', 
'subtitle': '세상 모든 개발 관련 지식을 담아보자!', 'subtitle_detail': {'type': 'text/html', 'language': None, 'base': 'https://somjang.tistory.com/rss', 'value': '세상 모든 개발 관련 지식을 담아보자!'}}}, 
'entries': [{'title': '[GitHub] commit 메세지에 이모티콘 넣는 방법!', 'title_detail': {'type': 'text/plain', 'language': None, 'base': 'https://somjang.tistory.com/rss', 
'value': '[GitHub] commit 메세지에 이모티콘 넣는 방법!'}, 'links': [{'rel': 'alternate', 
'type': 'text/html', 'href': 'https://somjang.tistory.com/entry/GitHub-commit-%EB%A9%94%EC%84%B8%EC%A7%80%EC%97%90-%EC%9D%B4%EB%AA%A8%ED%8B%B0%EC%BD%98-%EB%84%A3%EB%8A%94-%EB%B0%A9%EB%B2%95-%F0%9F%A4%A9'}], 'link': 'https://somjang.tistory.com/entry/GitHub-commit-%EB%A9%94%EC%84%B8%EC%A7%80%EC%97%90-%EC%9D%B4%EB%AA%A8%ED%8B%B0%EC%BD%98-%EB%84%A3%EB%8A%94-%EB%B0%A9%EB%B2%95-%F0%9F%A4%A9', 'summary': '<div class="revenue_unit_wrap ">\n               <div class="revenue_unit_item adsense  responsive" >\n

위와 같이 나오면 잘 동작을 하는 것입니다.

 

우리는 이 값들 중에서 'entries' 에 있는 값을 사용할 겁니다.

{'title': '[GitHub] commit 메세지에 이모티콘 넣는 방법!',
 'title_detail': {'type': 'text/plain',
  'language': None,
  'base': 'https://somjang.tistory.com/rss',
  'value': '[GitHub] commit 메세지에 이모티콘 넣는 방법!'},
 'links': [{'rel': 'alternate',
   'type': 'text/html',
   'href': 'https://somjang.tistory.com/entry/GitHub-commit-%EB%A9%94%EC%84%B8%EC%A7%80%EC%97%90-%EC%9D%B4%EB%AA%A8%ED%8B%B0%EC%BD%98-%EB%84%A3%EB%8A%94-%EB%B0%A9%EB%B2%95-%F0%9F%A4%A9'}],
 'link': 'https://somjang.tistory.com/entry/GitHub-commit-%EB%A9%94%EC%84%B8%EC%A7%80%EC%97%90-%EC%9D%B4%EB%AA%A8%ED%8B%B0%EC%BD%98-%EB%84%A3%EB%8A%94-%EB%B0%A9%EB%B2%95-%F0%9F%A4%A9',
 'summary': '<div class="revenue_unit_wrap ">\n               <div class="revenue_unit_item adsense  responsive" >\n                    <div class="revenue_unit_info">반응형</div>\n                    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>\n                    <ins class="adsbygoogle" style="display:block;" data-ad-host="ca-host-pub-9691043933427338" data-ad-client="ca-pub-5103686897205018" data-ad-format="auto"></ins>\n                    <script>(adsbygoogle = window.adsbygoogle || []).push({}); </script>\n               </div>\n            </div><p><figure class=\'imageblock alignCenter\' data-origin-width="800" data-origin-height="293" width="969" height="355" data-ke-mobilestyle="widthOrigin"><span data-url=\'https://blog.kakaocdn.net/dn/bX4jX1/btrcMGJYOSf/GY1r3lB8P5G3rJY0SNrpOK/img.jpg\' data-lightbox=\'lightbox\' data-alt=\'\'><img src=\'https://blog.kakaocdn.net/dn/bX4jX1/btrcMGJYOSf/GY1r3lB8P5G3rJY0SNrpOK/img.jpg\' srcset=\'https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX4jX1%2FbtrcMGJYOSf%2FGY1r3lB8P5G3rJY0SNrpOK%2Fimg.jpg\' data-origin-width="800" data-origin-height="293" width="969" height="355" data-ke-mobilestyle="widthOrigin"></span></figure></p>\n<p data-ke-size="size18">GitHub을 돌아다니다보면</p>\n<p><figure class=\'imageblock alignCenter\' data-origin-width="3360" data-origin-height="2100" data-filename="스크린샷 2021-08-21 오후 6.09.40.png" data-ke-mobilestyle="widthOrigin"><span data-url=\'https://blog.kakaocdn.net/dn/mk0oQ/btrcLBISKEE/Wc7qTvItAq38EHOjKMkVRk/img.png\' data-lightbox=\'lightbox\' data-alt=\'\'><img src=\'https://blog.kakaocdn.net/dn/mk0oQ/btrcLBISKEE/Wc7qTvItAq38EHOjKMkVRk/img.png\' srcset=\'https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmk0oQ%2FbtrcLBISKEE%2FWc7qTvItAq38EHOjKMkVRk%2Fimg.png\' data-origin-width="3360" data-origin-height="2100" data-filename="스크린샷 2021-08-21 오후 6.09.40.png" data-ke-mobilestyle="widthOrigin"></span></figure></p>\n<p data-ke-size="size18">위처럼 commit 메세지에 이모티콘이 들어가 있는 경우가 종종 보입니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">직접 이모티콘을 찾아 복사하거나 선택하여 넣거나 할 수도 있겠지만 더 쉬운 방법들이 있습니다.</p>\n<h4 data-ke-size="size20"><b>첫번째 방법</b></h4>\n<p data-ke-size="size18">이전에 gitmoji 를 활용하여 커밋하는 방법을 포스팅한 적이 있었습니다.</p>\n<p data-ke-size="size16"><a href="https://somjang.tistory.com/entry/Git-cli환경에서-gitmoji를-활용하여-커밋하는-방법- " target="_blank" rel="noopener">2021.06.22 - [유용한 정보/Git | GitHub] - [Git] cli환경에서 gitmoji를 활용하여 커밋하는 방법!  </a></p>\n<p data-ke-size="size18">이는 gitmoji 라는 것을 설치하여 git 명령어 대신 gitmoji 명령어를 통하여 커밋을 하는 방식입니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">특정 단어를 입력하면 그에 해당하는 이모티콘 목록을 쭉 보여주고 선택하여 진행하는 방법으로&nbsp;</p>\n<p data-ke-size="size18">설치하는게 조금 귀찮기는 하지만 한번 설치하면 가장 편하게 사용할 수 있는 방법이기도 합니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">자세한 내용은 위의 링크를 참고 부탁드립니다.</p>\n<h4 data-ke-size="size20"><b>두번째 방법</b></h4>\n<p data-ke-size="size18">두번째 방법으로는 commit 메세지에 이모티콘 대신 " : " 으로 묶여있는 특정 단어를 입력하는 방법입니다.</p>\n<p data-ke-size="size18">예를 들어</p>\n<pre id="code_1629537283412" class="shell" data-ke-language="shell" data-ke-type="codeblock"><code>$ git commit -m ":seedling: DAY411"</code></pre>\n<p data-ke-size="size18">위와 같이 commit 메세지 속에&nbsp;</p>\n<pre id="code_1629537334004" class="shell" data-ke-language="shell" data-ke-type="codeblock"><code>:seedling:</code></pre>\n<p data-ke-size="size18">:seeding: &lt;- 이와 같이 : 과 : 사이에 seedling이라는 단어를 넣은 값을 넣어주면</p>\n<p data-ke-size="size18">GitHub에서는 이를 인식하여</p>\n<p><figure class=\'imageblock alignCenter\' data-origin-width="2264" data-origin-height="164" data-filename="스크린샷 2021-08-21 오후 6.18.34.png" data-ke-mobilestyle="widthOrigin"><span data-url=\'https://blog.kakaocdn.net/dn/bpDPcH/btrcNmYyqgu/U7jkPe3Zb23cbkAkS2BAPk/img.png\' data-lightbox=\'lightbox\' data-alt=\'\'><img src=\'https://blog.kakaocdn.net/dn/bpDPcH/btrcNmYyqgu/U7jkPe3Zb23cbkAkS2BAPk/img.png\' srcset=\'https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpDPcH%2FbtrcNmYyqgu%2FU7jkPe3Zb23cbkAkS2BAPk%2Fimg.png\' data-origin-width="2264" data-origin-height="164" data-filename="스크린샷 2021-08-21 오후 6.18.34.png" data-ke-mobilestyle="widthOrigin"></span></figure></p>\n<p data-ke-size="size18">그에 해당하는 새싹 이모티콘   으로 변경이 되어 보여집니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">그럼 이 값들은 어떻게 알고 적는것인가? 라고 하면</p>\n<figure id="og_1629536808937" contenteditable="false" data-ke-type="opengraph" data-ke-align="alignCenter" data-og-type="website" data-og-title="Emoji cheat sheet for GitHub, Basecamp and other services" data-og-description="Emoji codes used by GitHub, Basecamp, Slack and other services. Searchable. With emoji meanings." data-og-host="www.webfx.com" data-og-source-url="https://www.webfx.com/tools/emoji-cheat-sheet/" data-og-url="https://www.webfx.com/tools/emoji-cheat-sheet/" data-og-image="https://scrap.kakaocdn.net/dn/LZhFU/hyLjK4YQSQ/4o6fAxfKG3eTy9fe5qzPGK/img.png?width=927&amp;height=690&amp;face=191_146_614_321"><a href="https://www.webfx.com/tools/emoji-cheat-sheet/" target="_blank" rel="noopener" data-source-url="https://www.webfx.com/tools/emoji-cheat-sheet/">\n<div class="og-image" style="background-image: url(\'https://scrap.kakaocdn.net/dn/LZhFU/hyLjK4YQSQ/4o6fAxfKG3eTy9fe5qzPGK/img.png?width=927&amp;height=690&amp;face=191_146_614_321\');">&nbsp;</div>\n<div class="og-text">\n<p class="og-title" data-ke-size="size16">Emoji cheat sheet for GitHub, Basecamp and other services</p>\n<p class="og-desc" data-ke-size="size16">Emoji codes used by GitHub, Basecamp, Slack and other services. Searchable. With emoji meanings.</p>\n<p class="og-host" data-ke-size="size16">www.webfx.com</p>\n</div>\n</a></figure>\n<p data-ke-size="size18">위의 링크를 참고하시면 좋을 것 같습니다.</p>\n<p><figure class=\'imageblock alignCenter\' data-origin-width="3360" data-origin-height="2100" data-filename="스크린샷 2021-08-21 오후 6.19.51.png" data-ke-mobilestyle="widthOrigin"><span data-url=\'https://blog.kakaocdn.net/dn/zylYS/btrcSta0pcY/voKuEF1JG4Thad2KIXd0A0/img.png\' data-lightbox=\'lightbox\' data-alt=\'\'><img src=\'https://blog.kakaocdn.net/dn/zylYS/btrcSta0pcY/voKuEF1JG4Thad2KIXd0A0/img.png\' srcset=\'https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzylYS%2FbtrcSta0pcY%2FvoKuEF1JG4Thad2KIXd0A0%2Fimg.png\' data-origin-width="3360" data-origin-height="2100" data-filename="스크린샷 2021-08-21 오후 6.19.51.png" data-ke-mobilestyle="widthOrigin"></span></figure></p>\n<p data-ke-size="size18">다양한 이모티콘의 텍스트 값을 가지고 있으며</p>\n<p data-ke-size="size18">각 이모티콘을 클릭하면 해당 값이 복사되어 그대로 붙여넣기만 하면되는 편한 사이트 입니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">본인의 메세지를 어떻게 구성할지 고민한 다음 위의 사이트에서 찾아 사용하면 좋을 것 같습니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">읽어주셔서 감사합니다.</p>            <div class="revenue_unit_wrap ">\n               <div class="revenue_unit_item adsense  responsive" >\n                    <div class="revenue_unit_info">반응형</div>\n                    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>\n                    <ins class="adsbygoogle" style="display:block;" data-ad-host="ca-host-pub-9691043933427338" data-ad-client="ca-pub-5103686897205018" data-ad-format="auto"></ins>\n                    <script>(adsbygoogle = window.adsbygoogle || []).push({}); </script>\n               </div>\n            </div>',
 'summary_detail': {'type': 'text/html',
  'language': None,
  'base': 'https://somjang.tistory.com/rss',
  'value': '<div class="revenue_unit_wrap ">\n               <div class="revenue_unit_item adsense  responsive" >\n                    <div class="revenue_unit_info">반응형</div>\n                    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>\n                    <ins class="adsbygoogle" style="display:block;" data-ad-host="ca-host-pub-9691043933427338" data-ad-client="ca-pub-5103686897205018" data-ad-format="auto"></ins>\n                    <script>(adsbygoogle = window.adsbygoogle || []).push({}); </script>\n               </div>\n            </div><p><figure class=\'imageblock alignCenter\' data-origin-width="800" data-origin-height="293" width="969" height="355" data-ke-mobilestyle="widthOrigin"><span data-url=\'https://blog.kakaocdn.net/dn/bX4jX1/btrcMGJYOSf/GY1r3lB8P5G3rJY0SNrpOK/img.jpg\' data-lightbox=\'lightbox\' data-alt=\'\'><img src=\'https://blog.kakaocdn.net/dn/bX4jX1/btrcMGJYOSf/GY1r3lB8P5G3rJY0SNrpOK/img.jpg\' srcset=\'https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX4jX1%2FbtrcMGJYOSf%2FGY1r3lB8P5G3rJY0SNrpOK%2Fimg.jpg\' data-origin-width="800" data-origin-height="293" width="969" height="355" data-ke-mobilestyle="widthOrigin"></span></figure></p>\n<p data-ke-size="size18">GitHub을 돌아다니다보면</p>\n<p><figure class=\'imageblock alignCenter\' data-origin-width="3360" data-origin-height="2100" data-filename="스크린샷 2021-08-21 오후 6.09.40.png" data-ke-mobilestyle="widthOrigin"><span data-url=\'https://blog.kakaocdn.net/dn/mk0oQ/btrcLBISKEE/Wc7qTvItAq38EHOjKMkVRk/img.png\' data-lightbox=\'lightbox\' data-alt=\'\'><img src=\'https://blog.kakaocdn.net/dn/mk0oQ/btrcLBISKEE/Wc7qTvItAq38EHOjKMkVRk/img.png\' srcset=\'https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmk0oQ%2FbtrcLBISKEE%2FWc7qTvItAq38EHOjKMkVRk%2Fimg.png\' data-origin-width="3360" data-origin-height="2100" data-filename="스크린샷 2021-08-21 오후 6.09.40.png" data-ke-mobilestyle="widthOrigin"></span></figure></p>\n<p data-ke-size="size18">위처럼 commit 메세지에 이모티콘이 들어가 있는 경우가 종종 보입니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">직접 이모티콘을 찾아 복사하거나 선택하여 넣거나 할 수도 있겠지만 더 쉬운 방법들이 있습니다.</p>\n<h4 data-ke-size="size20"><b>첫번째 방법</b></h4>\n<p data-ke-size="size18">이전에 gitmoji 를 활용하여 커밋하는 방법을 포스팅한 적이 있었습니다.</p>\n<p data-ke-size="size16"><a href="https://somjang.tistory.com/entry/Git-cli환경에서-gitmoji를-활용하여-커밋하는-방법- " target="_blank" rel="noopener">2021.06.22 - [유용한 정보/Git | GitHub] - [Git] cli환경에서 gitmoji를 활용하여 커밋하는 방법!  </a></p>\n<p data-ke-size="size18">이는 gitmoji 라는 것을 설치하여 git 명령어 대신 gitmoji 명령어를 통하여 커밋을 하는 방식입니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">특정 단어를 입력하면 그에 해당하는 이모티콘 목록을 쭉 보여주고 선택하여 진행하는 방법으로&nbsp;</p>\n<p data-ke-size="size18">설치하는게 조금 귀찮기는 하지만 한번 설치하면 가장 편하게 사용할 수 있는 방법이기도 합니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">자세한 내용은 위의 링크를 참고 부탁드립니다.</p>\n<h4 data-ke-size="size20"><b>두번째 방법</b></h4>\n<p data-ke-size="size18">두번째 방법으로는 commit 메세지에 이모티콘 대신 " : " 으로 묶여있는 특정 단어를 입력하는 방법입니다.</p>\n<p data-ke-size="size18">예를 들어</p>\n<pre id="code_1629537283412" class="shell" data-ke-language="shell" data-ke-type="codeblock"><code>$ git commit -m ":seedling: DAY411"</code></pre>\n<p data-ke-size="size18">위와 같이 commit 메세지 속에&nbsp;</p>\n<pre id="code_1629537334004" class="shell" data-ke-language="shell" data-ke-type="codeblock"><code>:seedling:</code></pre>\n<p data-ke-size="size18">:seeding: &lt;- 이와 같이 : 과 : 사이에 seedling이라는 단어를 넣은 값을 넣어주면</p>\n<p data-ke-size="size18">GitHub에서는 이를 인식하여</p>\n<p><figure class=\'imageblock alignCenter\' data-origin-width="2264" data-origin-height="164" data-filename="스크린샷 2021-08-21 오후 6.18.34.png" data-ke-mobilestyle="widthOrigin"><span data-url=\'https://blog.kakaocdn.net/dn/bpDPcH/btrcNmYyqgu/U7jkPe3Zb23cbkAkS2BAPk/img.png\' data-lightbox=\'lightbox\' data-alt=\'\'><img src=\'https://blog.kakaocdn.net/dn/bpDPcH/btrcNmYyqgu/U7jkPe3Zb23cbkAkS2BAPk/img.png\' srcset=\'https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpDPcH%2FbtrcNmYyqgu%2FU7jkPe3Zb23cbkAkS2BAPk%2Fimg.png\' data-origin-width="2264" data-origin-height="164" data-filename="스크린샷 2021-08-21 오후 6.18.34.png" data-ke-mobilestyle="widthOrigin"></span></figure></p>\n<p data-ke-size="size18">그에 해당하는 새싹 이모티콘   으로 변경이 되어 보여집니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">그럼 이 값들은 어떻게 알고 적는것인가? 라고 하면</p>\n<figure id="og_1629536808937" contenteditable="false" data-ke-type="opengraph" data-ke-align="alignCenter" data-og-type="website" data-og-title="Emoji cheat sheet for GitHub, Basecamp and other services" data-og-description="Emoji codes used by GitHub, Basecamp, Slack and other services. Searchable. With emoji meanings." data-og-host="www.webfx.com" data-og-source-url="https://www.webfx.com/tools/emoji-cheat-sheet/" data-og-url="https://www.webfx.com/tools/emoji-cheat-sheet/" data-og-image="https://scrap.kakaocdn.net/dn/LZhFU/hyLjK4YQSQ/4o6fAxfKG3eTy9fe5qzPGK/img.png?width=927&amp;height=690&amp;face=191_146_614_321"><a href="https://www.webfx.com/tools/emoji-cheat-sheet/" target="_blank" rel="noopener" data-source-url="https://www.webfx.com/tools/emoji-cheat-sheet/">\n<div class="og-image" style="background-image: url(\'https://scrap.kakaocdn.net/dn/LZhFU/hyLjK4YQSQ/4o6fAxfKG3eTy9fe5qzPGK/img.png?width=927&amp;height=690&amp;face=191_146_614_321\');">&nbsp;</div>\n<div class="og-text">\n<p class="og-title" data-ke-size="size16">Emoji cheat sheet for GitHub, Basecamp and other services</p>\n<p class="og-desc" data-ke-size="size16">Emoji codes used by GitHub, Basecamp, Slack and other services. Searchable. With emoji meanings.</p>\n<p class="og-host" data-ke-size="size16">www.webfx.com</p>\n</div>\n</a></figure>\n<p data-ke-size="size18">위의 링크를 참고하시면 좋을 것 같습니다.</p>\n<p><figure class=\'imageblock alignCenter\' data-origin-width="3360" data-origin-height="2100" data-filename="스크린샷 2021-08-21 오후 6.19.51.png" data-ke-mobilestyle="widthOrigin"><span data-url=\'https://blog.kakaocdn.net/dn/zylYS/btrcSta0pcY/voKuEF1JG4Thad2KIXd0A0/img.png\' data-lightbox=\'lightbox\' data-alt=\'\'><img src=\'https://blog.kakaocdn.net/dn/zylYS/btrcSta0pcY/voKuEF1JG4Thad2KIXd0A0/img.png\' srcset=\'https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzylYS%2FbtrcSta0pcY%2FvoKuEF1JG4Thad2KIXd0A0%2Fimg.png\' data-origin-width="3360" data-origin-height="2100" data-filename="스크린샷 2021-08-21 오후 6.19.51.png" data-ke-mobilestyle="widthOrigin"></span></figure></p>\n<p data-ke-size="size18">다양한 이모티콘의 텍스트 값을 가지고 있으며</p>\n<p data-ke-size="size18">각 이모티콘을 클릭하면 해당 값이 복사되어 그대로 붙여넣기만 하면되는 편한 사이트 입니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">본인의 메세지를 어떻게 구성할지 고민한 다음 위의 사이트에서 찾아 사용하면 좋을 것 같습니다.</p>\n<p data-ke-size="size18">&nbsp;</p>\n<p data-ke-size="size18">읽어주셔서 감사합니다.</p>            <div class="revenue_unit_wrap ">\n               <div class="revenue_unit_item adsense  responsive" >\n                    <div class="revenue_unit_info">반응형</div>\n                    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>\n                    <ins class="adsbygoogle" style="display:block;" data-ad-host="ca-host-pub-9691043933427338" data-ad-client="ca-pub-5103686897205018" data-ad-format="auto"></ins>\n                    <script>(adsbygoogle = window.adsbygoogle || []).push({}); </script>\n               </div>\n            </div>'},
 'tags': [{'term': 'Git | GitHub', 'scheme': None, 'label': None},
  {'term': 'github', 'scheme': None, 'label': None},
  {'term': 'GitHub 이모티콘', 'scheme': None, 'label': None},
  {'term': 'Github 이모티콘 사용', 'scheme': None, 'label': None},
  {'term': 'GitHub 이모티콘 사용방법', 'scheme': None, 'label': None},
  {'term': 'gitmoji', 'scheme': None, 'label': None},
  {'term': '깃모지', 'scheme': None, 'label': None},
  {'term': '깃헙', 'scheme': None, 'label': None},
  {'term': '깃헙 이모티콘', 'scheme': None, 'label': None},
  {'term': '깃헙 이모티콘 사용', 'scheme': None, 'label': None},
  {'term': '깃헙 이모티콘 사용방법', 'scheme': None, 'label': None}],
 'authors': [{'name': '사용자 솜씨좋은장씨'}],
 'author': '사용자 솜씨좋은장씨',
 'author_detail': {'name': '사용자 솜씨좋은장씨'},
 'id': 'https://somjang.tistory.com/884',
 'guidislink': False,
 'comments': 'https://somjang.tistory.com/entry/GitHub-commit-%EB%A9%94%EC%84%B8%EC%A7%80%EC%97%90-%EC%9D%B4%EB%AA%A8%ED%8B%B0%EC%BD%98-%EB%84%A3%EB%8A%94-%EB%B0%A9%EB%B2%95-%F0%9F%A4%A9#entry884comment',
 'published': 'Sat, 21 Aug 2021 18:23:42 +0900',
 'published_parsed': time.struct_time(tm_year=2021, tm_mon=8, tm_mday=21, tm_hour=9, tm_min=23, tm_sec=42, tm_wday=5, tm_yday=233, tm_isdst=0)}

그 값들 중에 하나를 꺼내오면 위와 같습니다.

 

여기서 link, published_parsed, title 이 세가지를 사용할겁니다.

link는 게시물의 주소

published_pared는 게시물이 작성된 날짜이면서 사용하기 편하게 파싱이 된 값

title은 게시물의 제목입니다.

 

이 값을 활용해서 markdown 문서에서 링크를 만드는 형식의 문자열을 만들어줍니다.

[설명](링크)

f-string을 활용하여 위의 모양처럼 링크를 만들어주면됩니다.

[게시물 날짜 - 제목](링크)

저는 위와 같이 만들려고 합니다.

이걸 만드는 코드는 다음과 같습니다.

MAX_POST_NUM = 10

latest_blog_post_list = ""

for idx, feed in enumerate(rss_feed['entries']):
    if idx > MAX_POST_NUM:
        break
    feed_date = feed['published_parsed']
    latest_blog_post_list += f"[{feed_date.tm_year}/{feed_date.tm_mon}/{feed_date.tm_mday} - {feed['title']}]({feed['link']}) <br>\n"

여기서 MAX_POST_NUM의 값은 최대 몇개의 게시물을 보여줄지를 정하는 값입니다.

여기서 주의할 점은 MAX_POST_NUM에 본인의 rss 피드에 들어있는 게시물의 개수보다 큰 값을 적으면 안됩니다.

 

마지막으로 바뀌지 않을 값에 붙여주고 README.md 파일로 만들어주면 됩니다.

markdown_text = """### Hi there 👋

📬  Contact Email : somjang@kakao.com

👨🏻‍💻  Tech & Daily Blog : https://somjang.tistory.com

[![github stats](https://github-readme-stats.vercel.app/api?username=SOMJANG&show_icons=true&hide_border=False)](https://somjang.tistory.com)

🤩 Latest Blog Post

"""

readme_text = f"{markdown_text}{latest_blog_post_list}"

with open("README.md", 'w', encoding='utf-8') as f:
    f.write(readme_text)

1-4. 전체 코드

import feedparser

somjang_blog_rss_url = "https://somjang.tistory.com/rss"
rss_feed = feedparser.parse(somjang_blog_rss_url)

MAX_POST_NUM = 10

latest_blog_post_list = ""

MAX_POST_NUM = 10

for idx, feed in enumerate(rss_feed['entries']):
    if idx > MAX_POST_NUM:
        break
    feed_date = feed['published_parsed']
    latest_blog_post_list += f"[{feed_date.tm_year}/{feed_date.tm_mon}/{feed_date.tm_mday} - {feed['title']}]({feed['link']}) <br>\n"
    
markdown_text = """기본으로 변하지 않을 README.md 값
"""

readme_text = f"{markdown_text}{latest_blog_post_list}"

with open("README.md", 'w', encoding='utf-8') as f:
    f.write(readme_text)

2. GitHub 에 파일 생성 후 코드 붙여넣기

기존의 프로필 Repository로 이동하여 Add file > Create new file 을 클릭합니다.

파일의 이름을 작성하고 아까 작성한 파이썬 코드를 붙여넣습니다.

Commit new file을 클릭하면 파일 생성이 완료 됩니다.


3. GitHub Actions 로 일정 시간마다 업데이트 하도록 하기

먼저 프로필 Repository에서 Actions를 선택합니다.

그럼 나오는 것들 중 Python application 을 선택하고 Set up this workflow를 선택하여 만들어줍니다.

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Python application

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
  schedule:
	- cron: "0 0 */1 * *"

jobs:
  build:

    runs-on: ubuntu-latest

    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 Script
      run: |
        python update_readme.py
    - name: Update README.md file
      run: |
        git pull
        git add .
        git diff
        git config --local user.email "GitHub@이메일주소"
        git config --local user.name "GitHub 계정 이름"
        git commit -m "Update README.md"
        git push

위처럼 코드를 수정하고 Start Commit > Commit changes 를 선택하여 실행합니다.

그렇게 실행하고 확인해보면 위와 같이 설정이 제대로 되어 프로필에 최신 포스팅 글이 보이는 것이 보일 겁니다.

 

그럼 모두 예쁘게 자기 개성을 살려 꾸미시기 바랍니다~

 

읽어주셔서 감사합니다.

Comments