How harcicyang/hiro-qq works
Hiro QQ is a Python implementation of the NTQQ PC protocol. Its main workflow is to configure device, app, and session information; register and authenticate a client; exchange protocol packets; then send messages or receive server pushes that become typed events. The repository also includes friend/group operations, rich-message and media handling, and file transfers. The graph reflects documented features and relationships visible in the supplied excerpts or SOURCE INDEX; several subsystem internals are unsampled, so their detailed call paths are omitted.
Main entry points: client.py Client API · base.py Base client · decoder.py Message decoder · elems.py Message protocol models
Components 21
Session and transport
- Client API
lagrange/client/client.py - Base client
lagrange/client/base.py - WTLogin
lagrange/client/wtlogin/sso.py - Push service
lagrange/client/server_push/service.py - Network transport
lagrange/client/network.py - Packet handling
lagrange/client/packet.py - Device and session info
lagrange/info/__init__.py
Messaging and events
- Event dispatch
lagrange/client/event.py - Friend events
lagrange/client/events/friend.py - Group events
lagrange/client/events/group.py - Incoming message pushes
lagrange/client/server_push/msg.py - Message decoder
lagrange/client/message/decoder.py - Message encoder
lagrange/client/message/encoder.py - Message elements
lagrange/client/message/elems.py - Message protocol models
lagrange/pb/message/rich_text/elems.py
Media transfer
- Highway transfers
lagrange/client/highway/highway.py - File service models
lagrange/pb/service/file.py
Protocol foundations
- Protobuf codec
lagrange/utils/binary/protobuf/coder.py - Binary reader
lagrange/utils/binary/reader.py - Info serialization
lagrange/info/serialize.py
Other components
- Application
Connections 23
- Application → Client API: uses
lagrange/client/client.py - Client API → Base client: inherits
lagrange/client/client.py - Client API → Push service: binds pushes
lagrange/client/client.py - Client API → Highway transfers: uploads files
lagrange/client/client.py - Client API → Message encoder: builds messages
lagrange/client/client.py - Client API → Message protocol models: uses message models
lagrange/client/client.py - Client API → Device and session info: uses session info
lagrange/__init__.py - Base client → WTLogin: performs login
lagrange/client/base.py - Base client → Network transport: uses transport
lagrange/client/base.py - Base client → Packet handling: handles packets
lagrange/client/base.py - Push service → Event dispatch: emits events
lagrange/client/server_push/service.py - Incoming message pushes → Message decoder: decodes pushes
lagrange/client/message/decoder.py - Message decoder → Friend events: creates friend events
lagrange/client/message/decoder.py - Message decoder → Group events: creates group events
lagrange/client/message/decoder.py - Message decoder → Message protocol models: reads message models
lagrange/client/message/decoder.py - Message encoder → Message elements: encodes elements
lagrange/client/message/encoder.py - Message encoder → Message protocol models: builds protocol data
lagrange/client/message/encoder.py - Message elements → Group events: builds quotes
lagrange/client/message/elems.py - Highway transfers → File service models: uses file models
lagrange/client/highway/highway.py - Highway transfers → Message protocol models: uses media models
lagrange/client/highway/highway.py - Protobuf codec → Binary reader: decodes bytes
lagrange/utils/binary/protobuf/coder.py - Info serialization → Binary reader: reads binary data
lagrange/info/serialize.py - Info serialization → Protobuf codec: serializes info