Update ccc.py
Browse files
ccc.py
CHANGED
|
@@ -47,7 +47,7 @@ async def send_to_discord(session, asset_id, name, creator_id, creator_name, cre
|
|
| 47 |
async with session.post(discord_webhook_url, json=embed) as response:
|
| 48 |
if response.status != 204:
|
| 49 |
pass
|
| 50 |
-
except
|
| 51 |
pass
|
| 52 |
|
| 53 |
async def check_asset_batch(session, asset_ids):
|
|
@@ -60,10 +60,8 @@ async def check_asset_batch(session, asset_ids):
|
|
| 60 |
'Requester': 'Client',
|
| 61 |
'User-Agent': 'Roblox/WinInetRobloxApp'
|
| 62 |
}) as response:
|
| 63 |
-
|
| 64 |
if response.status == 200:
|
| 65 |
results = await response.json()
|
| 66 |
-
|
| 67 |
if not results or (isinstance(results, list) and all("errors" in result for result in results)):
|
| 68 |
return
|
| 69 |
|
|
@@ -73,35 +71,37 @@ async def check_asset_batch(session, asset_ids):
|
|
| 73 |
tasks.append(fetch_asset_info(session, asset_id))
|
| 74 |
|
| 75 |
await asyncio.gather(*tasks)
|
| 76 |
-
|
| 77 |
-
except Exception:
|
| 78 |
pass
|
| 79 |
|
| 80 |
async def fetch_asset_info(session, asset_id):
|
| 81 |
global assets_checked, valid_assets_found
|
| 82 |
-
|
| 83 |
-
assets_checked.
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
valid_assets_found.
|
| 104 |
-
|
|
|
|
|
|
|
|
|
|
| 105 |
|
| 106 |
def parse_iso8601(date_str):
|
| 107 |
try:
|
|
@@ -126,10 +126,13 @@ def generate_ids_batch(digit, batch_size=10000):
|
|
| 126 |
return ids_batch
|
| 127 |
|
| 128 |
async def run_scanner_instance(digit):
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
|
|
|
|
|
|
|
|
|
| 133 |
|
| 134 |
async def print_status_periodically():
|
| 135 |
while True:
|
|
|
|
| 47 |
async with session.post(discord_webhook_url, json=embed) as response:
|
| 48 |
if response.status != 204:
|
| 49 |
pass
|
| 50 |
+
except (aiohttp.ClientError, ConnectionError):
|
| 51 |
pass
|
| 52 |
|
| 53 |
async def check_asset_batch(session, asset_ids):
|
|
|
|
| 60 |
'Requester': 'Client',
|
| 61 |
'User-Agent': 'Roblox/WinInetRobloxApp'
|
| 62 |
}) as response:
|
|
|
|
| 63 |
if response.status == 200:
|
| 64 |
results = await response.json()
|
|
|
|
| 65 |
if not results or (isinstance(results, list) and all("errors" in result for result in results)):
|
| 66 |
return
|
| 67 |
|
|
|
|
| 71 |
tasks.append(fetch_asset_info(session, asset_id))
|
| 72 |
|
| 73 |
await asyncio.gather(*tasks)
|
| 74 |
+
except (aiohttp.ClientError, ConnectionError):
|
|
|
|
| 75 |
pass
|
| 76 |
|
| 77 |
async def fetch_asset_info(session, asset_id):
|
| 78 |
global assets_checked, valid_assets_found
|
| 79 |
+
try:
|
| 80 |
+
with assets_checked.get_lock():
|
| 81 |
+
assets_checked.value += 1
|
| 82 |
+
|
| 83 |
+
async with session.get(f"{asset_info_url}{asset_id}/details") as asset_info_response:
|
| 84 |
+
if asset_info_response.status == 200:
|
| 85 |
+
asset_info = await asset_info_response.json()
|
| 86 |
+
|
| 87 |
+
name = asset_info.get("Name", "Unknown")
|
| 88 |
+
asset_type = asset_info.get("AssetTypeId", "Unknown")
|
| 89 |
+
creator = asset_info.get("Creator", {})
|
| 90 |
+
creator_id = creator.get("Id", "Unknown")
|
| 91 |
+
creator_name = creator.get("Name", "Unknown")
|
| 92 |
+
creator_type = creator.get("CreatorType", "Unknown")
|
| 93 |
+
created_date_str = asset_info.get("Created", "Unknown")
|
| 94 |
+
created_date = parse_iso8601(created_date_str)
|
| 95 |
+
if created_date:
|
| 96 |
+
created_date_formatted = created_date.strftime("%Y-%m-%d %H:%M:%S")
|
| 97 |
+
else:
|
| 98 |
+
created_date_formatted = "Unknown"
|
| 99 |
+
|
| 100 |
+
with valid_assets_found.get_lock():
|
| 101 |
+
valid_assets_found.value += 1
|
| 102 |
+
await send_to_discord(session, asset_id, name, creator_id, creator_name, creator_type, asset_type, created_date_formatted)
|
| 103 |
+
except (aiohttp.ClientError, ConnectionError):
|
| 104 |
+
pass
|
| 105 |
|
| 106 |
def parse_iso8601(date_str):
|
| 107 |
try:
|
|
|
|
| 126 |
return ids_batch
|
| 127 |
|
| 128 |
async def run_scanner_instance(digit):
|
| 129 |
+
while True:
|
| 130 |
+
try:
|
| 131 |
+
async with aiohttp.ClientSession() as session:
|
| 132 |
+
batch = generate_ids_batch(digit)
|
| 133 |
+
await check_asset_batch(session, batch)
|
| 134 |
+
except (aiohttp.ClientError, ConnectionError):
|
| 135 |
+
continue
|
| 136 |
|
| 137 |
async def print_status_periodically():
|
| 138 |
while True:
|