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()