Card data reading ok
This commit is contained in:
parent
c02f08a767
commit
3ef295339a
|
|
@ -54,9 +54,11 @@ class App:
|
|||
packs_last_regen_at = d.packs_last_regen_at
|
||||
|
||||
if packs_remaining == 10:
|
||||
packs_remaining, packs_last_regen_at = wm_client.open_pack(
|
||||
packs_remaining, packs_last_regen_at, cards = wm_client.open_pack(
|
||||
user.auth_cookies
|
||||
)
|
||||
for card in cards:
|
||||
logger.info("Pulled [{}] {} (uid={})", card.rarity, card.name, card._id)
|
||||
|
||||
# Does this math still works when we are opening the 9th pack ?
|
||||
next_pack_in = WikiMastersClient.ONE_PACK_TIME - (
|
||||
|
|
|
|||
|
|
@ -6,11 +6,47 @@ from loguru import logger
|
|||
from datetime import datetime, timedelta
|
||||
from ..lib.supabase_cookie import get_auth_cookies
|
||||
from typing import Self
|
||||
from enum import StrEnum
|
||||
# supabase ?
|
||||
# https://cyrxjeppjqsxxjayfrur.supabase.co/auth/v1/token?grant_type=password
|
||||
# https://cyrxjeppjqsxxjayfrur.supabase.co/auth/v1/user
|
||||
|
||||
# https://cyrxjeppjqsxxjayfrur.supabase.co/rest/v1/rpc/sync_profile_packs
|
||||
# POST /api/user-cards/${r.id}/discard
|
||||
|
||||
|
||||
class Rarity(StrEnum):
|
||||
Common = "C"
|
||||
LessCommon = "PC"
|
||||
Rare = "R"
|
||||
SuperRare = "SR"
|
||||
UltraRare = "UR"
|
||||
Legendary = "L"
|
||||
|
||||
|
||||
@dataclass
|
||||
class CardDataSubset:
|
||||
_id: str
|
||||
name: str
|
||||
summary: str | None
|
||||
url: str
|
||||
image_url: str | None
|
||||
category: str | None
|
||||
views: int
|
||||
rarity: Rarity
|
||||
|
||||
@staticmethod
|
||||
def from_json(d: dict) -> Self:
|
||||
return CardDataSubset(
|
||||
d["id"],
|
||||
d["wikipedia_title"],
|
||||
d["summary"],
|
||||
d["wikipedia_url"],
|
||||
d["image_url"],
|
||||
d["category"],
|
||||
d["pageviews"],
|
||||
Rarity(d["rarity"]),
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
@ -50,6 +86,10 @@ class UserSession:
|
|||
|
||||
return SyncDataSubset.from_json(response.data[0])
|
||||
|
||||
def pull(self) -> tuple[int, str, list[CardDataSubset]]:
|
||||
client = WikiMastersClient()
|
||||
return client.open_pack(self.auth_cookies)
|
||||
|
||||
|
||||
class WikiMastersClient:
|
||||
BASE_URL = "https://www.wiki-masters.com"
|
||||
|
|
@ -62,12 +102,11 @@ class WikiMastersClient:
|
|||
|
||||
def __init__(self) -> None:
|
||||
self.logger = logger.bind(service=self.__class__.__name__)
|
||||
self.users: dict[str, UserSession] = {}
|
||||
|
||||
def open_pack(self, cookies) -> tuple[int, str]:
|
||||
def open_pack(self, cookies) -> tuple[int, str, list[CardDataSubset]]:
|
||||
url = f"{self.BASE_URL}/api/packs/open"
|
||||
|
||||
logger.debug("trying to request a pull (cookies:{})", cookies)
|
||||
logger.debug("trying to request a pull")
|
||||
response = httpx.post(
|
||||
url,
|
||||
headers={"referer": f"{self.BASE_URL}/pulls"},
|
||||
|
|
@ -81,9 +120,12 @@ class WikiMastersClient:
|
|||
raise Exception("Could not pull :'(")
|
||||
|
||||
pull_data = response.json()
|
||||
logger.debug("trying to pull: {}", pull_data)
|
||||
|
||||
return (pull_data["packs_remaining"], datetime.fromisoformat(pull_data["packs_last_regen_at"]))
|
||||
return (
|
||||
pull_data["packs_remaining"],
|
||||
datetime.fromisoformat(pull_data["packs_last_regen_at"]),
|
||||
[CardDataSubset.from_json(c) for c in pull_data["cards"]],
|
||||
)
|
||||
|
||||
def login(self, email, password) -> UserSession:
|
||||
sb_client = create_client(self.SUPABASE_URL, self.SUPABASE_KEY)
|
||||
|
|
|
|||
Loading…
Reference in New Issue