iOS 캐기/Tricks & Tips 캐기
[파이썬] 매일 슬랙으로 뉴스를 받아보도록 자동화를 해보자. - 1
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("뉴스가 없습니다.","-")
결과화면
알림도 잘오고 슬랙채널에도 메시지를 확인할 수 있다.
마무리
- 파이썬은 처음이라 후다닥 해보긴했는데 더 좋은 코드경험이 있다면 언제든 편하게 말씀부탁드립니다!
반응형