
Research
2025 Report: Destructive Malware in Open Source Packages
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.
async-faceit-api
Advanced tools
Async wrapper for the faceit API.
If you dont already have a loop in your programm you need to create one. Here is a basic example which will search players by the username and prints out a dict with the nicknames and player_ids:
import asyncio
from src.async_faceit_api import FaceitAPI
async def my_task():
api_key = "..."
api = FaceitAPI(api_key)
players = await api.search_players("username")
print({player.nickname: player.player_id for player in players.items})
if __name__ == "__main__":
loop = asyncio.new_event_loop()
loop.run_until_complete(my_task())
loop.close()
Its recomended to store the api_key somewhere safe (e.g .env file)! Here is another example on how you can implement the api:
class MyApi(FaceitAPI):
def __init__(self):
api_key = os.getenv('faceit_api_key')
super().__init__(api_key)
async def get_played_maps_parallel(self, player_id):
matches = await self.player_history(player_id, Game.CS_GO)
all_match_stats = await asyncio.gather(*[self.match_stats(match.match_id) for match in matches.items])
maps = {}
for match_stat in all_match_stats:
match_stat: MatchStats
map = match_stat.rounds[0].round_stats['Map']
if map in maps:
maps[map] += 1
else:
maps[map] = 1
return maps
async def my_task():
api = MyApi()
player_id = "..."
print(await api.get_played_maps_parallel(player_id))
if __name__ == "__main__":
loop = asyncio.new_event_loop()
loop.run_until_complete(my_task())
loop.close()
Note that the async api methods return an object of type FaceitApiError if the request was not successful. To distinguish between a successful response and an error, you can easily use the object as a boolean expression:
games = await api.games()
if games:
print('success')
else:
print('error')
FAQs
Async wrapper for the faceit API
We found that async-faceit-api demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.

Research
/Security News
A five-month operation turned 27 npm packages into durable hosting for browser-run lures that mimic document-sharing portals and Microsoft sign-in, targeting 25 organizations across manufacturing, industrial automation, plastics, and healthcare for credential theft.