Last Seen is an offline VK dialog viewer that converts a downloaded VK message archive into a fully browsable local chat — with messages, media, search, and a clean UI.
No internet connection, no VK API, no authentication required.
- 📄 Parse VK HTML message archives into structured JSON
- 🖼 Download and store media attachments locally (photos, voice messages)
- 💬 Offline dialog viewer with chat-style layout
- 👤 Message authors and timestamps
- 📅 Grouping messages by day
- 🔍 Instant client-side message search with highlighting
- 🌙 Light / dark theme toggle (saved locally)
- ⬇️ User-controlled autoscroll and jump-to-bottom
- 🖥 Fully offline — works without internet access
- You download your VK data archive
- Last Seen parses message HTML pages
- Attachments are downloaded and saved locally
- Messages are exported into a normalized JSON format
- A static HTML viewer displays the dialog offline
All processing happens locally on your machine.
last-seen/
├── lastseen/ # Core package
│ ├── cli.py # Command-line interface
│ ├── parser/ # VK HTML parsing logic
│ ├── downloader/ # Media downloader
│ └── exporter/ # JSON export
├── viewer/ # Offline HTML viewer
├── inspector/ # Archive inspection utilities
├── tests/ # Tests
├── samples/ # Example dialogs (optional)
├── export/ # Generated output (JSON, media)
├── requirements.txt
└── README.md
Clone the repository:
git clone https://github.com/<your-username>/last-seen.git
cd last-seenInstall dependencies:
pip install -r requirements.txtpython -m lastseen.cli -i samples/<DIALOG_ID>python -m lastseen.cli -i samples/<DIALOG_ID> --no-mediaStart a local HTTP server:
python -m http.server 8000Then open in your browser:
http://localhost:8000/viewer/index.html
| Flag | Description |
|---|---|
-i, --input |
Path to dialog folder |
--no-media |
Skip media downloading |
- 🌙 Toggle light / dark theme
- 🔍 Search messages by text
- 📅 Messages grouped by day
- ⬇️ Autoscroll toggle (open dialog at the end)
- ⬇️⬇️ Double-click jump to last message
All viewer preferences are stored locally in the browser.
Last Seen supports detection and offline handling of the following attachment types:
- Photos
- Voice messages
- Videos (links)
- Files
- Stickers (metadata)
- Forwarded messages
- Wall posts
- Playlists
- Calls (metadata)
- Stories (metadata)
Attachment support depends on availability in the original VK archive.
Last Seen is designed to be local-first, simple, and transparent.
- No background services
- No external APIs
- No accounts or authentication
- No hidden network activity
Your data stays on your machine — always.
- No VK API usage
- No authentication
- No external requests (except local files)
- No tracking or telemetry
Last Seen is built for personal archives and private analysis.
Possible future improvements (no guarantees):
- Improved viewer performance for very large dialogs
- Optional analytics and statistics
- Additional export formats
Current version: v0.3.0
The project is stable and fully usable. Future versions may extend the viewer UI or export formats.
This project is licensed under a Personal Use License.
You are allowed to use the software for personal purposes, but copying, modifying, or reusing the source code is not permitted.
See the LICENSE file for full terms.
Arsenij Ingannamorte
Last Seen is not just a parser — it is a way to revisit conversations as they were, fully offline, without platforms, accounts, or servers.
A local memory. Nothing more. Nothing less.