創作內容

1 GP

Line Notify建立資料庫並提供不休息的服務 By.2022年版 (參)

作者:OKHand│2022-02-06 20:12:31│巴幣:2│人氣:831
這篇文章是我自己吸收後打出來的文章如果有錯記得跟我說!!

前情提要:
繼之前 讓我們用Python開發一個LineBot By.2022年版 (壹)Line Bot之利用Line Notify突破限制吧! By.2022年版 (貳) ,我們已經有了Line Bot 跟 Line Notify 還連結了,那我們之後就是要去紀錄這些 Access Token 是誰的,當需要傳送資料的時候就知道要傳給誰了!!

正題:

不睡覺的服務
身為一個慣老闆下的社畜我也想當一下慣老闆的滋味,於是我們的服務是一直運作也是理所當然的吧!!
這部分比較簡單原理大概就是因為 Heroku 每25分鐘如果沒人使用的話那個 APP 就會進入暫時性的休息,於是我們只要在24分的時候去戳一下自己的 APP 讓他以為有人叫他就可以讓他一直工作了
我們先安裝一個套件 APScheduler => pip install apscheduler
之後我們就可以製作我們的 Clock.py
當然你要定時的去傳送訊息或是做一些事也能打在裡面
from apscheduler.schedulers.blocking import BlockingScheduler
from linebot import LineBotApi
from linebot.models import TextSendMessage
import urllib.request

sched = BlockingScheduler()


#定時去搓url讓服務不中斷
@sched.scheduled_job('cron', day_of_week='mon-sun', minute='*/25')
def scheduled_job():
    url = "https://你的Heroku APP名字.herokuapp.com/"
    conn = urllib.request.urlopen(url)
    for key, value in conn.getheaders():
        print(key, value)
    print("戳一下")

sched.start()
我們有了 Clock 之後我們也要修改一下 Ex: requirements.txt and Procfile
requirements => 多加 APScheduler == 3.8.1
Procfile          => 多加 clock: python clock.py
加好之後上傳 Heroku 之後記得去開啟 Clock 才會啟用喔!!
之後就能去看 Log 觀察它是否一直有在運作

建立我們的資料庫
我遠本是想用 Heroku 內的資料庫可是我學了一下感覺很難用於是我就把目光轉到 Google Sheet 上了,對於我們只要儲存一些 Access Token 跟使用者名字是夠用的!!(如果想要用Heroku內的資料庫可以去看麥田捕手的文章連結在下面)
我們這邊就講要整麼利用 GoogleSheet 當我們的資料庫
先到 Google Cloud Platform 建立 Google Sheet 和 Google Sheet  的 API
然後再去申請一下金鑰讓我們後面可以跟我們的 Google Sheet 去做互動
申請憑證在:側邊欄裡的 API 和服務 => 憑證 => 服務帳戶旁邊的管理帳戶 => 建立服務帳戶
之後會給你下載一個 jason 檔就是之後要引用的金鑰
之後你會在服務帳戶那邊看到電子郵件之後我們去建立一個 GoogleSheet 並且分享編輯權限給這個 Email
之後就是安裝 pygsheets 套件 => pip3 install pygsheets
記得!第一篇有說的那些 Heroku 的設定檔也要加才能使用喔 Ex: requirements.txt
之後我們就可以開始使用 Google Sheet 當我們的資料庫去做使用了
之前練習的程式碼:
import pygsheets
#給憑證
gc = pygsheets.authorize(service_file='你的憑證位置')
#開啟googlesheet
sheet = gc.open_by_url(
'google sheet的連結(只要最後一個/前的連結就好)'
)
#找到下方"工作表1"分頁並在裡面操作
wks = sheet.worksheet_by_title("工作表1")

#暴力破解直列搜尋 (用來尋找這個人的userid並拿取相對應的accesstoken我們就能傳送訊息給指定的人)
Count = int( wks.cell( 'C1' ).value ) #人數 #在C1設定目前綁定人數並拿來當計數器
Userid = "" #先clear
for i in range(1,Count ) :
    Userid = str(wks.cell( 'A'+str(i) ).value)
    print(Userid)
    if Userid.value == "101112" : #找到1011112就做下面
        print("第"+str(i)+"個")    #顯示第幾個
        print( wks.cell( 'B'+str(i) ).value ) #顯示裡面得值
        print("ok")
        break #拿到並跳出

#新增資料方式 (新增綁定人資料並統計人數,並讓下次可以跑進迴圈)
wks.update_value('A6', 'asderrgte231231564gh') #新增資料
wks.update_value('C1', Count+1)  #人數+1
A = wks.cell( 'A6' )
print(A.value)       #檢查新資料
這些是大概整麼操做的程式碼跟上面的註冊詳細我一樣會把參考資料都放在下面(還不懂的可以看裡面教的比較詳細)

我知道我講的有點簡略如果都不行或是還有疑問就留言吧!如果我會,我就盡量回答!!
之後有時間我會有一篇總結裡面會把我現在的程式碼上傳到 Git Hub 上給大家參考!!

參考資料:
Line:

Google Sheet:
[資料庫筆記] Python 串接 GoogleSheet 新增、讀取、更新和刪除
Python 讀寫 Google Sheets 教學
[Python爬蟲教學]解析如何串接Google Sheet試算表寫入爬取的資料



引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5382054
Some rights reserved. 姓名標示-非商業性 2.5 台灣

相關創作

同標籤作品搜尋:Google Sheet|LineBot|LineNotify

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

1喜歡★az7899603 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Line Bot之利用L... 後一篇:開箱新鍵盤 Leopol...

追蹤私訊切換新版閱覽

作品資料夾

a9983107Lovelive 蓮團同好
[蓮之空心得]Lovelive 蓮之空 第七集 + 第八集 感想與心得(上篇)已更新。梢&綴理兩人過去的祕密將被揭開看更多我要大聲說昨天21:09


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】