46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
import logging
|
|
import time
|
|
import traceback
|
|
|
|
import requests
|
|
from fake_useragent import UserAgent
|
|
|
|
|
|
|
|
class Purchaser:
|
|
base_headers = {
|
|
"User-Agent": UserAgent().chrome
|
|
}
|
|
|
|
def __init__(self, roblosecurity):
|
|
self.roblosecurity = roblosecurity
|
|
self.base_cookies = {".ROBLOSECURITY": self.roblosecurity}
|
|
self.logger = logging.getLogger(__name__)
|
|
|
|
def request(self, url, method=requests.get, attempts=10, timeout=20, *args, **kwargs):
|
|
if "headers" not in kwargs:
|
|
kwargs["headers"] = {}
|
|
if "cookies" not in kwargs:
|
|
kwargs["cookies"] = {}
|
|
kwargs["headers"] = {**self.base_headers, **kwargs["headers"]}
|
|
kwargs["cookies"] = {**self.base_cookies, **kwargs["cookies"]}
|
|
|
|
for attempt in range(attempts):
|
|
try:
|
|
r = method(url=url, timeout=timeout, *args, **kwargs)
|
|
if 500 > r.status_code > 600:
|
|
print(f"Statuscode {r.status_code} for {url}...")
|
|
time.sleep(5)
|
|
continue
|
|
return r
|
|
except requests.RequestException:
|
|
traceback.print_exc()
|
|
time.sleep(5)
|
|
|
|
|
|
def get_asset_metadata(self, asset_id):
|
|
return self.request(url=f"https://catalog.roblox.com/v1/catalog/items/{asset_id}/details",
|
|
params={"itemType": "asset"}).json()
|
|
|
|
def get_asset_metadata_extended(self, asset_id):
|
|
return self.request(url=f"https://economy.roblox.com/v2/assets/{asset_id}/details").json() |