Skip to content

Repository files navigation

OkLine

A high-level Python client / SDK for the LINE Chrome messaging API.

PyPIPythonLicense: MITTestsEndpoints

OkLine reproduces the API of the official LINE Chrome extension (CHROMEOS 3.7.2) — send and receive messages, log in by QR or e‑mail, and automate your own account from Python. The protocol is reproduced faithfully, including the mandatory X-Hmac signature (computed by LINE's real ltsm.wasm), so requests are byte‑for‑byte what the real client sends.

fromoklineimportOkLineapi=OkLine(access_token="…", refresh_token="…")
print(api.get_profile())
api.send_text("u0123456789abcdef0123456789abcdef", "hello from python")

Features

  • All 77 endpoints — typed methods, or call any of them generically.
  • QR & e‑mail login — QR rendered as ASCII right in your terminal.
  • X-Hmac signing — handled automatically via the bundled WASM module.
  • Bot framework@bot.on_message, typed models, session persistence.
  • Response recording — capture, redact and export every request/response.
  • CLIpython -m okline … to call any endpoint from the shell.

Install

pip install okline

The bundled ltsm.wasm (for X-Hmac signing) ships inside the wheel, so that's all you need from Python. Optionally pip install qrcode to render the QR-login code in your terminal.

Prerequisites

  • Python 3.9+
  • Node.js 18+ on your PATH — required to compute the mandatory X-Hmac request signature (the real ltsm.wasm runs through a tiny Node bridge; details). Check with node --version.

Verify it works:

python -m okline version
Install from source instead
git clone https://github.com/NiceDayZc/okline.git
cd okline
pip install -e .# editable install of the okline package + deps

First login (do this once; the session is then reusable):

okline login # scan the QR with the LINE app — saves tokens.json

Then just run okline for an interactive, menu-driven UI (pick actions by number), or use any of the ~30 subcommands directly:

okline # interactive menu (soft colours, no setup)
okline whoami
okline send <mid>"hello"
okline contacts --search soda
okline chatlog <chat-mid># reads and decrypts recent messages
okline -h # full command list

Quick start

fromoklineimportOkLine, Bot# log in once, reuse the session foreverapi=OkLine()
api.auth.qr_login(on_qr=print) # scan the QR with your phoneapi.save_tokens("session.json")
# next timeapi=OkLine.from_tokens_file("session.json")
api.send_text("c…group…mid", "hi from python")
# a 3-line echo botbot=Bot(api)
bot.on_message(lambdactx: ctx.reply(f"you said: {ctx.text}"))
bot.run()

From the shell — okline login once, then everything reuses the session:

okline login # scan the QR; saves tokens.json
okline send <mid>"hello"
okline call Talk.TalkService.getProfile "[2]"

Documentation

Full docs in docs/:

Guide
Getting startedinstall, okline login, the menu, first Python call
Authenticationtoken reuse, e‑mail (RSA), QR login, refresh, logout
Sending messagestext, stickers, location, contacts, flex, reactions
Media · E2EEsend images/files · encrypt & decrypt (1:1 + group)
Receiving events · Botsthe SSE stream · the bot framework
Recordingpaste / export every response
CLI · Cookbookevery okline command · copy‑paste recipes
Architecturethe protocol, X-Hmac, module map
Endpoint referenceall 77 endpoints with their fields
Troubleshooting · Contributing

Disclaimer

OkLine is unofficial and not affiliated with LINE Corporation. Use it only with your own account and in compliance with LINE's Terms of Service. Treat tokens like passwords — see SECURITY.md.

License

MIT

About

Unofficial Python client/SDK for the LINE Chrome messaging API — send/receive messages, QR & e-mail login, X-Hmac signing, full response recording.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages