From 9ba1f7e7f0f0d184bc93ec61943d1d9d2da99a80 Mon Sep 17 00:00:00 2001 From: filoxenace Date: Sat, 7 Mar 2026 12:57:21 -0500 Subject: [PATCH] fix: onsale now uses collectible_item_id via PATCH; add collectible_item_id to queue --- src/database.py | 11 ++++++++--- src/main.py | 17 +++++------------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/database.py b/src/database.py index a26a8a1..fa47acb 100644 --- a/src/database.py +++ b/src/database.py @@ -66,10 +66,15 @@ def init_db(): description TEXT NOT NULL, group_id INTEGER NOT NULL, asset_type TEXT NOT NULL, + collectible_item_id TEXT, retry_count INTEGER DEFAULT 0, next_retry DATETIME DEFAULT CURRENT_TIMESTAMP ) """) + try: + cursor.execute("ALTER TABLE onsale_queue ADD COLUMN collectible_item_id TEXT") + except sqlite3.OperationalError: + pass conn.commit() def get_uploaded_asset(image_hash: str, asset_type: int) -> Optional[int]: @@ -96,13 +101,13 @@ def save_uploaded_asset(image_hash: str, asset_type: int, original_asset_id: int ) conn.commit() -def add_to_onsale_queue(asset_id: int, original_asset_id: int, name: str, description: str, group_id: int, asset_type: str): +def add_to_onsale_queue(asset_id: int, original_asset_id: int, name: str, description: str, group_id: int, asset_type: str, collectible_item_id: str | None = None): """Adds an asset to the onsale retry queue.""" with sqlite3.connect(DB_PATH) as conn: cursor = conn.cursor() cursor.execute( - "INSERT INTO onsale_queue (asset_id, original_asset_id, name, description, group_id, asset_type) VALUES (?, ?, ?, ?, ?, ?)", - (asset_id, original_asset_id, name, description, group_id, asset_type) + "INSERT INTO onsale_queue (asset_id, original_asset_id, name, description, group_id, asset_type, collectible_item_id) VALUES (?, ?, ?, ?, ?, ?, ?)", + (asset_id, original_asset_id, name, description, group_id, asset_type, collectible_item_id) ) conn.commit() diff --git a/src/main.py b/src/main.py index 76f06a7..96ad9d4 100644 --- a/src/main.py +++ b/src/main.py @@ -97,12 +97,8 @@ async def process_onsale_queue(): f"Retrying onsale for asset {item['asset_id']} (Attempt {item['retry_count'] + 1})" ) try: - await roblox_onsale.onsale_asset( - item["asset_id"], - item["name"], - item["description"], - item["group_id"], - ) + collectible_item_id = item["collectible_item_id"] or await roblox_onsale.get_collectible_item_id(item["asset_id"]) + await roblox_onsale.onsale_asset(collectible_item_id) database.remove_from_onsale_queue(item["id"]) print( f"Successfully put asset {item['asset_id']} on sale via queue." @@ -206,13 +202,9 @@ async def reupload_asset(asset_id: int, _: str = Depends(verify_api_key)): ) await asyncio.sleep(5) + collectible_item_id = await roblox_onsale.get_collectible_item_id(new_asset_id) try: - await roblox_onsale.onsale_asset( - new_asset_id, - asset.name, - new_description, - int(TARGET), - ) + await roblox_onsale.onsale_asset(collectible_item_id) except RateLimitError: print( f"Rate limit hit for asset {new_asset_id}, adding to retry queue." @@ -227,6 +219,7 @@ async def reupload_asset(asset_id: int, _: str = Depends(verify_api_key)): new_description, int(TARGET), asset_type_name, + collectible_item_id, ) return { "uploaded": uploaded,