Skip to content

bombsimon/hltv-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HLTV Livescore

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:

Might integrate with other Python libraries in the future, such as

Documentation

General documentation about the Socket.IO streams can be found in DOCUMENTATION.md

Live scoring

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.

This implementation

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. ✌🏼

Usage

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.