This is a HLTV livescore implementation in Python. It feels super weird that I don't find any implementations for this but I might be bad at looking. The two JavaScript versions I found helped me understand and get inspiration.
Borrowed with pride from:
- Nols1000/hltv-scorebot
- andrewda/hltv-livescore (wraps above linked)
- osebrwn/csgo-livescore (wraps above linked)
Might integrate with other Python libraries in the future, such as
General documentation about the Socket.IO streams can be found in DOCUMENTATION.md
So HLTV uses Socket.IO to stream the data they get from Valve and ESL (I think?). This data is pushed on a socket. See DOCUMENTATION for server information.
I actually have a really (really) hard time finding any documentation at all regarding this socket. Is it official? Is it documented? How's it rate limited? What events are pushed, how and when, and with what data? Because of this I've tried to document my findings in DOCUMENTATION.md.
Luckily there's a great library named python-socketio which makes it easy for me to read from the socket. All I need to do after connecting is to parse the stream. ✌🏼
import asyncio
from scorebot import Livescore
async def on_kill(frag):
print("{} killed {}".format(frag.killer.name, frag.victim.name))
async def main():
ls = Livescore(123456)
ls.on(ls.EVENT_KILL, on_kill)
socket = await ls.socket()
await socket.wait()
if __name__ == "__main__":
asyncio.run(main())
See examples folder for an implementation creating a kill feed.