link_inv = "https://steamcommunity.com/id/{}/inventory/json/730/2"
GUN_URL = "https://steamcommunity.com/market/priceoverview/?appid=730¤cy=1&market_hash_name={}"
async def get_inventory(steam_id):
r = requests.get(link_inv.format(steam_id)).json()
x = r["rgDescriptions"]
for item in x:
if x[item]["marketable"] == 1 and x[item]["tradable"] == 1:
task2 = asyncio.create_task(get_quantity(x[item]["classid"], r["rgInventory"]))
quantity = await task2
collection_data = [(x[item]["market_hash_name"], quantity) for item in x]
else:
continue
return collection_data
async def get_quantity(classid, inventory):
counter = 0
for item in inventory:
if inventory[item]["classid"] == classid:
counter += 1
return counter
async def get_price(skin):
total_price = 0
for item in skin:
async with aiohttp.ClientSession() as session:
async with session.get(GUN_URL.format(item[0])) as resp:
r = await resp.json()
if r is None:
continue
elif r["success"] is False:
continue
try:
if r["lowest_price"] and r["median_price"] is None:
continue
except KeyError:
continue
try:
lowest_price = str(r["lowest_price"])
except KeyError:
lowest_price = str(r["median_price"])
lowest_price = float(lowest_price.strip("$"))
total_price = total_price + (lowest_price * (float(item[1])))
return round(total_price, 2)
async def main():
steam_id = input("Enter your SteamID: ")
task = asyncio.create_task(get_inventory(steam_id))
await asyncio.gather(task)
xxx = task.result()
task1 = asyncio.create_task(get_price(xxx))
await asyncio.gather(task1)
print('$'+str(task1.result()))
if __name__ == "__main__":
asyncio.run(main())
Здраствуйте! В универе сказали сделать парсер цены инвентаря в стиме. Помогите, что в нем не так ? Когда я делаю дебаггинг шаг за шагом, желаемый результат выходит(цена инвентаря) , а когда запускаю код и ввожу стимайди, программа показывает результат, но так же внизу выходит вот такое
Enter your SteamID: silencers77
$0.51
Exception ignored in:
Traceback (most recent call last):
File "C:\Users\Ruslan\AppData\Local\Programs\Python\Python39\lib\asyncio\proactor_events.py", line 116, in __del__
self.close()
File "C:\Users\Ruslan\AppData\Local\Programs\Python\Python39\lib\asyncio\proactor_events.py", line 108, in close
self._loop.call_soon(self._call_connection_lost, None)
File "C:\Users\Ruslan\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 746, in call_soon
self._check_closed()
File "C:\Users\Ruslan\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 510, in _check_closed
raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Так же код не досчитывает цену инвентарей, в которых больше 100 вещей например, допустим цена 45$, но output показывает , что 7$..
Укажите ошибки, пожалуйста. Можно кодом, можно и словами. Буду благодарен. Всем добра!