Skip to content
This repository has been archived by the owner on Oct 19, 2024. It is now read-only.

Add auto promo code claim method #79

Open
mobinpo opened this issue Aug 7, 2024 · 1 comment
Open

Add auto promo code claim method #79

mobinpo opened this issue Aug 7, 2024 · 1 comment

Comments

@mobinpo
Copy link

mobinpo commented Aug 7, 2024

`def generate_client_id():
current_time = int(time.time() * 1000)
random_part = random.randint(100, 999)
random_first = int(str(current_time)[:10] + str(random_part))

return f"{random_first}-3472514666961597005"

def generate_event_id():
return str(uuid.uuid4())

async def get_promo_code(app_token: str,
promo_id: str,
promo_title: str,
max_attempts: int,
event_timeout: int,
session_name: str,
proxy: str):
headers = {
"Content-Type": "application/json; charset=utf-8",
"Host": "api.gamepromo.io"
}

proxy_conn = aiohttp_proxy.ProxyConnector().from_url(proxy) if proxy else None

async with aiohttp.ClientSession(headers=headers, connector=proxy_conn) as http_client:
    client_id = generate_client_id()

    json_data = {
        "appToken": app_token,
        "clientId": client_id,
        "clientOrigin": "deviceid"
    }

    response = await http_client.post(url="https://api.gamepromo.io/promo/login-client", json=json_data)

    response_text = await response.text()
    response_json = await response.json()
    access_token = response_json.get("clientToken")

    if not access_token:
        logger.debug(f"{session_name} | Can't login to api.gamepromo.io | Try with proxy | "
                     f"Response text: {escape_html(response_text)[:256]}...")
        return

    http_client.headers["Authorization"] = f"Bearer {access_token}"

    await asyncio.sleep(delay=1)

    attempts = 0

    while attempts < max_attempts:
        try:

            event_id = generate_event_id()
            json_data = {
                "promoId": promo_id,
                "eventId": event_id,
                "eventOrigin": "undefined"
            }

            response = await http_client.post(url="https://api.gamepromo.io/promo/register-event", json=json_data)

            response_json = await response.json()
            has_code = response_json.get("hasCode", False)

            if has_code:
                json_data = {
                    "promoId": promo_id
                }

                response = await http_client.post(url="https://api.gamepromo.io/promo/create-code", json=json_data)
                response.raise_for_status()

                response_json = await response.json()
                promo_code = response_json.get("promoCode")

                if promo_code:
                    logger.info(f"{session_name} | "
                                f"Promo code is found for <lm>{promo_title}</lm> game: <lc>{promo_code}</lc>")
                    return promo_code
        except Exception as error:
            logger.debug(f"{session_name} | Error while getting promo code: {error}")

        attempts += 1

        logger.debug(
            f"{session_name} | Attempt <lr>{attempts}</lr> was successful for <lm>{promo_title}</lm> game | "
            f"Sleep <lw>{event_timeout}s</lw> before <lr>{attempts + 1}</lr> attempt to get promo code")
        await asyncio.sleep(delay=event_timeout)

logger.debug(f"{session_name} | "
             f"Promo code not found out of <lw>{max_attempts}</lw> attempts for <lm>{promo_title}</lm> game ")`

can you add this to your code for get keys

@ItsAmirAT
Copy link

اینو لطفا اضافه کن واسه همه بازیا کلیدو بگیر و ریدیم کنه

https://github.com/ShafiqSadat/HamsterKeyGen

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants