⌨️
入荷通知システム
はじめに
HHKB Studioがすぐに売り切れてしまうので,入荷したら通知をするシステムを作る.
自己責任でお願いします.
概要
楽天市場の商品情報を取得して,商品が入荷されているかを通知する.
開発環境
- Windows10 home
- PyCharm Community
- Python 3.11.6
Slackの機能を利用するための設定
この方のページを参考にしてWebhook URLを取得した.
モジュールのインストール
pip install schedule
pip install requests
pip install bs4
ソースコード
import json
import re
import ast
import time
import schedule
import requests
from bs4 import BeautifulSoup
ITEM_URL = "https://item.rakuten.co.jp/pfudirect/pd-id120b/" #楽天市場の商品URL
SLACK_URL = "取得したSlackのURL"
is_stock = False
def get_stock(url):
params = {
"format": "json",
}
res = requests.get(url, params=params)
if res.status_code != 200:
res.close()
return None
soup = BeautifulSoup(res.text, "html.parser")
res.close()
item_info = re.sub(r"^<.*>$", "", soup.find(id="item-page-app-data").getText())
item_info = json.loads(item_info)
custom_parameter = ast.literal_eval(item_info["rat"]["customParameter"])
if custom_parameter["soldout"][0]:
return False
return True
def notify():
global is_stock
print(is_stock)
if get_stock(ITEM_URL) and not is_stock:
send_message = "HHKB Studio在庫あります."
requests.post(SLACK_URL, data=json.dumps({'text': send_message}))
is_stock = True
elif get_stock(ITEM_URL):
pass
else:
is_stock = False
def main():
schedule.every(5).minutes.do(notify) #ここを変えれば実行間隔を変更できる
while True:
try:
schedule.run_pending()
time.sleep(1)
except KeyboardInterrupt:
return
if __name__ == "__main__":
main()
Discussion