Я хочу, чтобы моя программа что-то делала при изменении страницы.
У меня сейчас есть запрос python, который выполняет много запросов с 2400 threads
. Всего 25000 requests
В МИНУТУ .
Есть ли способ не делать много запросов и по-прежнему узнавать, когда страница изменяется в python?
Он отправляет 25000
запросов в общей сложности ~200
страниц. Эти страницы return json (it's an API yes)
. Речь идет о том, чтобы первым увидеть происходящее изменение. Но почему-то есть кто-то намного быстрее, чем я.
Как мне заставить мою программу работать быстрее?
Вот мой текущий код:
import requests
import time
from multiprocessing.dummy import Pool as ThreadPool
from discord_webhook import DiscordWebhook, DiscordEmbed
import time
cookie = ''
userids = [15189, 80254, 6459069]
typeids = [8, 41, 42, 43, 44, 45, 46, 47]
blacklist = [23705521]
seen = {}
session = requests.session()
session.cookies.set_cookie(requests.cookies.create_cookie(domain='.roblox.com', name='.ROBLOSECURITY', value=cookie))
def buy(id, price):
print(id)
try:
if seen[str(id)] <= (round(time.time()) - 300):
del(seen[str(id)])
else:
return
except:
seen[str(id)] = round(time.time())
discordSignals = DiscordWebhook(url='https://discordapp.com/api/webhooks/0/A')
embed = DiscordEmbed(title='New snipe', description='A new snipe with a price of less then 150R$', color=0xebedef)
embed.set_author(name='', url='', icon_url='https://cdn.discordapp.com/avatars/0/a.png?size=128')
embed.add_embed_field(name='Link', value="https://web.roblox.com/catalog/"+str(id))
embed.add_embed_field(name="Price", value=str(price)+" R$")
imgurl = session.get("https://thumbnails.roblox.com/v1/assets?assetIds="+str(id)+"&format=png&size=150x150").json()['data'][0]['imageUrl']
embed.set_thumbnail(url=imgurl)
discordSignals.add_embed(embed)
response = discordSignals.execute()
print(response)
checks = 0
def check(info):
global blacklist
global checks
userid = info[0]
typeid = info[1]
cursor = ""
goon = True
req = session.get('https://www.roblox.com/users/inventory/list-json?assetTypeId='+str(typeid)+'&itemsPerPage=100&userId='+str(userid)+'&sortOrder=Desc&cursor='+cursor).json()
while goon:
for item in req['Data']['Items']:
if item['Product'] != None:
if item['Product']['IsLimited'] or item['Product']['IsLimitedUnique']:
checks += 1
print("CHECKS => " + str(checks) + " | ID => " + str(item['Item']['AssetId']))
if item['Product']['PriceInRobux'] is not None and item['Product']['PriceInRobux'] <= 150 and item['Item']['AssetId'] not in blacklist:
buy(item['Item']['AssetId'], item['Product']['PriceInRobux'])
if req['Data']['nextPageCursor'] is None:
goon = False
else:
cursor = req['Data']['nextPageCursor']
req = session.get('https://www.roblox.com/users/inventory/list-json?assetTypeId='+str(typeid)+'&itemsPerPage=100&userId='+str(userid)+'&sortOrder=Desc&cursor='+cursor).json()
counter = 0
def starter(userid):
global typeids
global counter
payl = []
for typeid in typeids:
payl.append([userid,typeid])
pool = ThreadPool(len(payl))
pool.map(check, payl)
def start(dab):
global userids
starter(userids[2])
starter(userids[1])
starter(userids[0])
dabs = []
for _ in range(1000):
dabs.append("dab")
while True:
pool = ThreadPool(100)
pool.map(start, dabs)
Спасибо за ваше время,