How can I check a webscraping page with requests realtime (always), (autoupdate)? Python

Viewed 48

I'm a fellow young programmer and I have a question about,

I have a code checking percentages on https://shadowpay.com/en?price_from=0.00&price_to=34.00&game=csgo&hot_deal=true And I want to make it happen in real-time.

Questions: Is there a way to make it check in real-time or is it just by refreshing the page? if refreshing page: How can I make it refresh the page, I saw older answers but they did not work for me because the answers only worked in their code.

(I tried to request get it every time the while loop happens, but it doesn't work, or should it?)

This is the code:

import json
import requests
import time
import plyer
import random
import copy
min_notidication_perc = 26; un = 0; us = ""; biggest_number = 0;
r = requests.get('https://api.shadowpay.com/api/market/get_items?types=[]&exteriors=[]&rarities=[]&collections=[]&item_subcategories=[]&float={"from":0,"to":1}&price_from=0.00&price_to=34.00&game=csgo&hot_deal=true&stickers=[]&count_stickers=[]&short_name=&search=&stack=false&sort=desc&sort_column=price_rate&limit=50&offset=0', timeout=3)
while True:
    #Here is the place where I'm thinking of putting it
    time.sleep(5); skin_list = [];perc_list = []
    for i in range(len(r.json()["items"])):
        perc_list.append(r.json()["items"][i]["discount"])
        skin_list.append(r.json()["items"][i]["collection"]["name"])
    skin = skin_list[perc_list.index(max(perc_list))]; print(skin)
    biggest_number = int(max(perc_list))
    if un != biggest_number or us != skin:
        if int(max(perc_list)) >= min_notidication_perc:
            plyer.notification.notify(
                title=f'-{int(max(perc_list))}% ShadowPay',
                message=f'{skin}',
                app_icon="C:\\Users\\<user__name>\\Downloads\\Inipagi-Job-Seeker-Target.ico",
                timeout=120,
            )
        else:
            pass
    else:
        pass
    us = skin;un = biggest_number
    print(f'id: {random.randint(1, 99999999)}')
    print(f'-{int(max(perc_list))}% discount\n')
1 Answers

When using requests.get() you are retrieving the page source of that link then closing it. As you are waiting on the response you don't need the time.sleep(5) line as that is handled by requests.

In order to get the real-time value you'll have to call the page again, this is where you can use time.sleep() so as not to abuse the api.

Related