From 5711d4c2492fa947f4b570b6b1fd8e7486f340cf Mon Sep 17 00:00:00 2001 From: acid Date: Sat, 6 Mar 2021 15:57:56 +0000 Subject: [PATCH] Moved constants to config dict --- .vscode/settings.json | 4 ++- scrape.py | 58 ++++++++++++++++++++++++------------------- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 44dcc68..e48632d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,6 @@ { "python.pythonPath": "bin/python3", - "python.envFile": "${workspaceFolder}/.env" + "python.envFile": "${workspaceFolder}/.env", + "python.linting.pylintEnabled": true, + "python.linting.enabled": true } \ No newline at end of file diff --git a/scrape.py b/scrape.py index 7783f98..e15397a 100644 --- a/scrape.py +++ b/scrape.py @@ -1,36 +1,40 @@ -import requests -from twilio.rest import Client import os from sys import exit from pathlib import Path -from dotenv import load_dotenv import logging +import requests +from dotenv import load_dotenv +from twilio.rest import Client load_dotenv(verbose=True) -api_url = 'https://www.boden.co.uk/api/stock/v1/styles?market=UK&language=en-gb&id=y1357' -item_id = '40263442' # 40263447 low stock, 40263442 12-18m -message_sent_file = './sent.txt' -msg_to = '+447557447469' -website_url = 'https://www.boden.co.uk/en-gb/rainbow-3-in-1-printed-jacket/sty-y1357' +config = { + 'api_url': 'https://www.boden.co.uk/api/stock/v1/styles?market=UK&language=en-gb&id=y1357', + 'item_id': '40263442', # 40263447 low stock, 40263442 12-18m + 'message_sent_file': './sent.txt', + 'msg_to': '+447557447469', + 'website_url': 'https://www.boden.co.uk/en-gb/rainbow-3-in-1-printed-jacket/sty-y1357', + 'log_level': logging.WARN +} def get_logger(log_level=logging.WARN): log = logging.getLogger(__name__) - log.setLevel(logging.WARN) + log.setLevel(log_level) log_handler = logging.StreamHandler() - log_handler.setFormatter(logging.Formatter('[%(filename)s:(%(lineno)d)] %(levelname)s >> %(message)s')) + log_handler.setFormatter(logging.Formatter( + '[%(filename)s:(%(lineno)d)] %(levelname)s >> %(message)s')) log.addHandler(log_handler) return log def get_json_from_url(url: str) -> dict: - r = requests.get(url) - return r.json() + req = requests.get(url) + return req.json() -def send_sms(to: str, msg: str): +def send_sms(target: str, msg: str): account_sid = os.environ['TWILIO_ACCOUNT_SID'] auth_token = os.environ['TWILIO_AUTH_TOKEN'] messaging_sid = os.environ['TWILIO_MESSAGE_SID'] @@ -39,38 +43,42 @@ def send_sms(to: str, msg: str): message = client.messages.create( messaging_service_sid=messaging_sid, body=msg, - to=to + to=target ) log = logging.getLogger(__name__) log.debug(message.sid) + def stop_if_previous_action(lock_file: str): if os.path.isfile(lock_file): log = logging.getLogger(__name__) log.info("Script has already run it's action before") exit() + def action_taken(lock_file): Path(lock_file).touch() -def main(log): + +def main(config, log): # This script runs once, to avoid spamming SMS every time run - stop_if_previous_action(message_sent_file) + stop_if_previous_action(config['message_sent_file']) - j = get_json_from_url(api_url) + json = get_json_from_url(config['api_url']) - for id in j['Y1357']: - if id['edp'] == item_id: + for id in json['Y1357']: + if id['edp'] == config['item_id']: if id['stockStatus'] == 'OutOfStock': - log.info(f"Item is out of stock") + log.info("Item is out of stock") else: - log.info(f"Item is in stock") - send_sms(msg_to, 'The coat is in stock at ' + website_url) + log.info("Item is in stock") + send_sms(config['msg_to'], 'The coat is in stock at ' + config['website_url']) # Prevents it being run again - action_taken(message_sent_file) + action_taken(config['message_sent_file']) + if __name__ == '__main__': - log = get_logger(logging.WARN) - main(log) \ No newline at end of file + log = get_logger(config['log_level']) + main(config, log)