import requests
from bs4 import BeautifulSoup as bs4
from threading import Thread
import json
import time
from datetime import datetime
import _thread
webhook = ("https://hooks.slack.com/services/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")
s = requests.session()
payload={"channel": "#bot-monitor", "username": "Astro-bot", "text": "<https://www.astro-bot.io/astro/buyme-asdf-j4wrj-ypzkf|Astro Bot Restock! Click to Purchase>", "icon_emoji": ":rocket:"}
response = s.get('https://www.astro-bot.io/api/commerce/inventory/stock/?crumb=BQXy6KNmMGWENWE3YWQzMTc3MDU5NzE1ODdkNDNiM2RmZTEyNjg4&itemId=5b0dc9172b6a283905dabe08')
data = json.loads(response.text)
stock = data['results'][0]['qtyInStock']
def checkstock():
response = s.get('https://www.astro-bot.io/api/commerce/inventory/stock/?crumb=BQXy6KNmMGWENWE3YWQzMTc3MDU5NzE1ODdkNDNiM2RmZTEyNjg4&itemId=5b0dc9172b6a283905dabe08')
data = json.loads(response.text)
stock = data['results'][0]['qtyInStock']
print(stock)
def post():
global stock
if stock in [0]:
print("Out of stock! LOL!")
time.sleep(3)
checkstock()
else:
if stock > (0):
s.post(webhook, json=payload)
def main():
checkstock()
post()
if __name__ == '__main__':
main()
代码运行一次,然后当它再次检查股票时,我得到了:
从无提升JSONDecodeError(“期望值”,s,err.value) json.decoder.JSONDecodeError:期望值:第1行第1列(字符0)。
请提个建议。
发布于 2018-06-03 05:28:08
我是出于礼貌,但代码片段是这样一个反模式的集合(全局变量、重复代码、函数外的代码、糟糕的流控制),因此很难激发进行调试的动力。越早、越深入地重构代码,对您的项目越有利。
话虽如此,我认为更短的代码可以完成所请求的任务,而且它没有JSONDecodeError
import requests
import time
ASTRO_URL = 'https://www.astro-bot.io/api/commerce/inventory/stock/?crumb=BQXy6KNmMGWENWE3YWQzMTc3MDU5NzE1ODdkNDNiM2RmZTEyNjg4&itemId=5b0dc9172b6a283905dabe08'
WEBHOOK_URL = 'https://hooks.slack.com/services/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'
def qty_in_stock(url):
data = requests.get(url).json()
return data['results'][0]['qtyInStock']
def do_something():
pass
def main():
stock = qty_in_stock(ASTRO_URL)
if stock == 0:
print('out ot stock!')
time.sleep(3)
stock = qty_in_stock(ASTRO_URL)
print(stock)
else:
do_something()
if __name__ == '__main__':
main()
https://stackoverflow.com/questions/50660600
复制相似问题