상세 컨텐츠

본문 제목

[파이썬] 매일 슬랙으로 뉴스를 받아보도록 자동화를 해보자. - 1

iOS 캐기/Tricks & Tips 캐기

by Atlas 2023. 12. 15. 15:43

본문

728x90
반응형

시나리오 : 떠먹여주길 바라는 심보로 뉴스피드 자동화를 해보기로 했다. 

 

 

작업환경 

맥 , 비쥬얼 스튜디오 

 

사용할 GeekNews의 RSS 주소 : http://feeds.feedburner.com/geeknews-feed 

 

 

1. feedparser 라이브러리를 설치해주자.

pip3 install feedparser

 

 

먼저 피드 리스트가 잘 받아 오는지 확인해 보자. 

import feedparser

parse_rss = feedparser.parse("http://feeds.feedburner.com/geeknews-feed")

for p in parse_rss.entries:
    print(p.title, p.link)

 

👍 벌써 반은 했다! 

 

 

2. 슬랙으로 보내는 작업을 해보자.

 

slack_sdk 라이르러리를 설치하자.

pip3 install slack_sdk

 

슬랫봇 토큰과 알림을 받을 채널의 ID를 입력하자. (토큰 발행 방법 등은 따로 정리해서 포스팅 하겠습니다.)
(ref. 슬랫봇 토큰 관련 링크 공유 https://miaow-miaow.tistory.com/148)

SLACK_TOKEN = '{슬랫 bot 토큰}'
SLACK_CHANNEL = '채널 ID'

client = slack_sdk.WebClient(token=SLACK_TOKEN)

 

 

로직을 짜보자. 

// 함수작성
def postTodayNews(title, link):
    client.chat_postMessage(
            channel=SLACK_CHANNEL,
            blocks=[
                {
                    "type": "header",
                    "text": {
                        "type": "plain_text",
                        "text": title,
                    }
                },
                {
                    "type": "section",
                    "text": {
                        "type": "mrkdwn",
                        "text": link
                    }
                }
            ],
            unfurl_links=False,
            unfurl_media=False,
            text=title,
        )

 

 

딕셔너리의 값이 없을 경우와 있는경우를 분기했다. 

    

if rss_dic:
    postTodayNews(rss_dic[0].get('title'),rss_dic[0].get('link'))
else:
    postTodayNews("뉴스가 없습니다.","-")

 

 

전체코드 

import feedparser
import slack_sdk

SLACK_TOKEN = '{슬랫 bot 토큰}'
SLACK_CHANNEL = '채널 ID'

client = slack_sdk.WebClient(token=SLACK_TOKEN)
parse_rss = feedparser.parse("http://feeds.feedburner.com/geeknews-feed")

rss_dic = []

for p in parse_rss.entries:
    rss_dic.append({'title':p.title, 'link': p.link})
    

def postTodayNews(title, link):
    client.chat_postMessage(
            channel=SLACK_CHANNEL,
            blocks=[
                {
                    "type": "header",
                    "text": {
                        "type": "plain_text",
                        "text": title,
                    }
                },
                {
                    "type": "section",
                    "text": {
                        "type": "mrkdwn",
                        "text": link
                    }
                }
            ],
            unfurl_links=False,
            unfurl_media=False,
            text=title,
        )
    

if rss_dic:
    postTodayNews(rss_dic[0].get('title'),rss_dic[0].get('link'))
else:
    postTodayNews("뉴스가 없습니다.","-")

 

 

 

결과화면 

알림도 잘오고 슬랙채널에도 메시지를 확인할 수 있다.

 

 

 

 

마무리 

- 파이썬은 처음이라 후다닥 해보긴했는데 더 좋은 코드경험이 있다면 언제든 편하게 말씀부탁드립니다! 

반응형

관련글 더보기

댓글 영역