41 lines
983 B
Python
41 lines
983 B
Python
|
import time
|
||
|
|
||
|
import requests
|
||
|
import bs4
|
||
|
from prometheus_client import start_http_server, Gauge
|
||
|
|
||
|
IN_STOCK = Gauge("valve_index_in_stock", "Valve index in stock?")
|
||
|
|
||
|
|
||
|
def fetch_in_stock():
|
||
|
resp = requests.get("https://store.steampowered.com/valveindex")
|
||
|
resp.raise_for_status()
|
||
|
|
||
|
soup = bs4.BeautifulSoup(resp.text, 'html.parser')
|
||
|
form = soup.find('form', attrs=dict(name='add_to_cart_354231'))
|
||
|
if not form:
|
||
|
raise Exception("couldn't find add to cart form")
|
||
|
price = form.parent.find('div', class_='game_purchase_price')
|
||
|
if not price:
|
||
|
raise Exception("couldn't find price")
|
||
|
green_btn = price.parent.find('span', class_='btn_disabled')
|
||
|
if green_btn:
|
||
|
return 0
|
||
|
return 1
|
||
|
|
||
|
|
||
|
def main(argv):
|
||
|
if argv:
|
||
|
raise Exception("too many arguments")
|
||
|
|
||
|
IN_STOCK.set_function(fetch_in_stock)
|
||
|
start_http_server(9998)
|
||
|
while True:
|
||
|
time.sleep(1000)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
import sys
|
||
|
|
||
|
main(sys.argv[1:])
|