오늘도 즐거운 파이썬 생활~
파이썬과 텔레그램의 조합으로 필요한 정보를 모으는 법을 계속 찾아보고 있었습니다.
Vikas Jha라는 유투버가 만들어 놓은 프로그램이 활용성이 높아보여서 소개해보고자 합니다.
기본적인 골격은 google sheet에서 시간을 지정해 놓으면 해당 시간에 텔레그램으로 메세지를 보내주는 것입니다.
이게 유용한 이유는 구글 시트의 강력한 finanace 기능등과 조합하면 조금더 쉽게 메세지 알림을 관리하기 쉬울것으로 보이기 때문입니다.
* 방문해서 좋아요 한번씩 눌러주시면 좋을듯 합니다. ^^
https://www.youtube.com/watch?v=eoz-3lv8W2w
직접 따라해 보겠습니다.
1. 구글 Spreadsheet에 'telegram alarm'이라는 파일을 생성하고 message 내용과 시간을 지정할수 있도록 합니다.
2. 구글 spreadsheet를 쓰기 위해 'telegram alarm' 파일을 공유 시켜줍니다.
- 화면 우측 상단 '공유' 누르기 --> 링크 복사
예시 : https://docs.google.com/spreadsheets/d/1T14UCV5PlRDed4nx5gtNMr89oU8rt6CFKG65lc-IvMM/edit?usp=sharing
3. 위에서 저장한 sheet ID에서 정작 필요한 부분은 가운데 부분인 파일 이름입니다.
https://docs.google.com/spreadsheets/d/1T14UCV5PlRDed4nx5gtNMr89oU8rt6CFKG65lc-IvMM/edit?usp=sharing
--> 해당 부분만 분리해서 보관합니다.
1T14UCV5PlRDed4nx5gtNMr89oU8rt6CFKG65lc-IvMM
4. 저는 아직 별도의 서버를 구입해서 사용하는것이 아니므로 구름 IDE를 사용해서 진행해보겠습니다.
- 유튜버가 올린 원소스를 에러 수정하여 공유 합니다.
import pandas as pd
import requests
import time
while True:
sheet_id = "생성한 시트 아이디"
url = f"https://docs.google.com/spreadsheets/d/{sheet_id}/gviz/tq?tqx=out:csv"
df = pd.read_csv(url)
df["Schedule Datetime"] = pd.to_datetime(df["Schedule Datetime"])
df
previous_minute = pd.datetime.now() + pd.Timedelta(minutes=-1)
print(type(previous_minute))
current_time = pd.datetime.now()
print(type(current_time))
df = df[(df["Schedule Datetime"] > previous_minute) & (df["Schedule Datetime"] < current_time)]
df
def send_message(row):
bot_id = "텔레그램 token"
chat_id = "채팅 ID"
message = row[0]
url = f"https://api.telegram.org/bot{bot_id}/sendMessage?chat_id={chat_id}&text={message}"
return requests.get(url).json()
if not df.empty:
df['status'] = df.apply(send_message, axis=1)
time.sleep(60)
df
- 한글로 써있는 부분은 각자에 맞게 입력해주셔야 합니다.
참고로 텔레그램 bot 생성을 안하셨다면 아래 링크를 보고 해주세요.
https://spica910.tistory.com/172
- 구름 IDE를 사용한다면 '항상 켜두기' 기능을 이용하세요. 스프레드시트만 수정해서 알림을 만들수 있습니다.
https://spica910.tistory.com/185
다른 방법을 제시해주시는 분도 있으니 참조하세요.
https://medium.com/analytics-vidhya/python-telegram-bot-with-scheduled-tasks-932edd61c534
- 매일 자동으로 업데이트를 하기 위해서는 google sheet의 설정을 손봐야 합니다. 아래 링크 참조하세요.
https://spica910.tistory.com/225
'Engineering > Python' 카테고리의 다른 글
[python] API layer.com을 이용한 다양한 api 연결 (0) | 2023.01.07 |
---|---|
[python] 이미지 연달아 다운받기(ft. 차입공매도율) (0) | 2022.12.28 |
[python] schedule error "module 'schedule' has no attribute 'every' (0) | 2022.12.11 |
[python] schedule 함수 사용하여 지정시간에 실행하기 (0) | 2022.12.11 |
[python] 무료 서버 사용 (Feat. 구름 IDE 항상켜두기) (0) | 2022.07.17 |
댓글