velog 24시간 숙제 감시 텔레그램 봇
개요
- 회사에서 사원급들 숙제를 내주고 있다.
- 숙제를 하고 나한테 url을 보내거나, 내가 직접 블로그에 들어가서 확인하기가 매우 귀찮았다.
- 5분에 한번씩 24시간 돌아가는 텔레그램 봇을 만들었다.
준비물
- 손가락
- 여유로운 마음
- 텔레그램 봇 토큰, chat id
import time
import requests
from bs4 import BeautifulSoup
import datetime
# 텔레그램 봇 API 토큰
telegram_bot_token = "토큰 입력"
# 텔레그램 채팅 ID
telegram_chat_id = "chat id 입력"
now_time = datetime.datetime.now()
# 특정 사이트의 글 리스트 URL들과 사이트 이름 수정.
site_urls = [
{"url": "https://벨로그 주소 입력", "name": "000님의 Velog"},
{"url": "https://벨로그 주소 입력", "name": "000님의 Velog"},
{"url": "https://벨로그 주소 입력", "name": "000님의 Velog"}
]
# 각 사이트의 가장 최근에 확인한 게시물의 URL을 저장할 변수
last_post_urls = {site_info["url"]: None for site_info in site_urls}
# 사이트의 변화를 모니터링하고 알림을 보내는 함수
def monitor_site_and_notify(site_info):
global last_post_urls
site_url = site_info["url"]
site_name = site_info["name"]
# 사이트의 글 리스트 페이지에 접속해서 HTML 가져오기
response = requests.get(site_url)
if response.status_code != 200:
print(f"Failed to fetch the site content for {site_name}.")
return
soup = BeautifulSoup(response.content, "html.parser")
# 최신 게시물의 정보 가져오기
latest_post_link = soup.find("h2").find_parent("a")
if not latest_post_link:
print(f"No posts found for {site_name}.")
return
latest_post_url = "https://velog.io" + latest_post_link["href"]
# 이전에 확인한 게시물과 비교하여 새로운 게시물이 있는지 확인
if last_post_urls[site_url] != latest_post_url:
last_post_urls[site_url] = latest_post_url
send_notification(f"{site_name}에 새로운 게시물이 등록되었습니다!\n" + last_post_urls[site_url])
else:
print(f"{now_time} ========== 새로 등록 된 게시물이 없습니다. ==========")
# 텔레그램 알림을 보내는 함수 (사이트별로 다른 이름으로 보내는 함수)
def send_notification(message):
telegram_url = f"https://api.telegram.org/bot{telegram_bot_token}/sendMessage"
data = {
"chat_id": telegram_chat_id,
"text": message
}
response = requests.post(telegram_url, data=data)
if response.status_code == 200:
print(f"{now_time} ========== 메세지가 전송되었습니다.==========")
else:
print(f"{now_time} ========== 메세지 전송 실패!!!!!!!!!!!!==========")
# 주기적으로 사이트 모니터링 및 알림
while True:
for site_info in site_urls:
monitor_site_and_notify(site_info)
time.sleep(300) # 5분마다 확인
24시간을 어떻게 돌리지 ?
- 겨우 이런거 때문에 이래저래 호스팅은 하기 싫었다. 마침 집에 공기계 남는게 굴러다녀서 플레이스토어에 파이썬 설치 후 계속 돌리고 있다.
Leave a comment