tiennm99
56d71a0e79
refactor(store): drop the Telethon session import
...
The Go session is already stored, so the one-time conversion from the
Python version's Telethon session is no longer needed. Remove it along
with its tests and the README upgrade section.
2026-10-15 14:38:28 +07:00
tiennm99
d041503a47
feat: port the tool to Go
...
Replace the Python scripts with Go commands run as go run ./cmd/<name>:
configure, crawl, compare, compare-groups, and export, each with the
same arguments and output as before.
Telegram access uses gotd/td and the code is pure Go. Redis keys and
JSON keep the Python format, so existing crawls stay readable. The
Telethon login session is converted once into a separate gotd session
key, so upgrading needs no new login code and never changes the old key.
Tests run offline with miniredis.
2026-10-15 14:22:22 +07:00
tiennm99
73f8cf1bb3
Update main.go
2025-12-15 20:55:15 +07:00
tiennm99
b9e0a1148c
Update main.go
2025-12-15 20:37:27 +07:00
tiennm99
7898f04bb5
refactor(core): parse groupIds
2025-12-15 20:18:19 +07:00
tiennm99
cc56e90fd1
feat(core): echo bot
2025-12-11 23:04:08 +07:00
tiennm99
e95935e440
feat(core): add reply function
2025-12-11 22:31:33 +07:00
tiennm99
f5d90bb9ea
feat(go): cleanup
2025-12-11 22:22:49 +07:00
dependabot[bot]
0d49e3dc8c
build(deps): bump golang.org/x/crypto from 0.19.0 to 0.45.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.19.0 to 0.45.0.
- [Commits](https://github.com/golang/crypto/compare/v0.19.0...v0.45.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.45.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-28 15:26:24 +00:00
tiennm99
e1bf670553
feat(go): rewrite in Go
2025-11-28 22:25:09 +07:00
tiennm99
e8690755e3
feat(compare): compare members of two groups fetched live
...
Add compare_groups.py, which fetches two groups from Telegram and lists
members in both, only in the first, and only in the second. No crawl is
saved to Redis. Login and member fetching move into shared crawl.py
helpers so both commands use one implementation.
2026-10-15 13:48:24 +07:00
tiennm99
35f61f4e97
feat(crawl): accept group ids as arguments for one-off crawls
...
Command-line group ids replace the configured Redis list for that run only; with no arguments the configured list is used as before.
2026-10-06 13:27:57 +07:00
tiennm99
3344e6b2d1
Revert "Merge branch '001-export-telegram-members' into main"
...
Keeps the branch in history only; main's content is unchanged.
2026-09-30 20:04:07 +07:00
tiennm99
e3f51910d8
Merge branch '001-export-telegram-members' into main
2026-09-30 20:04:07 +07:00
tiennm99
2c820a07a3
feat(crawl): use configured group ids from redis
2026-08-06 20:18:18 +07:00
tiennm99
b9e038d718
docs(journal): record Redis CSV export
2026-07-25 11:25:17 +07:00
tiennm99
ca93d12b83
docs(journal): record explicit crawl group ids
2026-07-24 16:38:40 +07:00
tiennm99
2543260a50
feat(crawl): require explicit group ids
2026-07-24 16:38:40 +07:00
tiennm99
72e16da6f7
docs(journal): record default compare group change
2026-07-16 08:54:14 +07:00
tiennm99
25a965bfd6
feat(compare): default to first configured group
2026-07-16 08:54:02 +07:00
tiennm99
bd940799ca
refactor: simplify project, no behavior change
...
- requirements.txt: drop pinned transitive deps (pyaes, pyasn1, rsa)
- .gitignore: trim from 166 to 19 lines (drop unused template cruft)
- crawl.py: remove no-op client.start(phone) after explicit sign-in
- common.py: inline single-use latest_two_group_exports into compare.py;
simplify _member_index
- compare.py: use list_group_exports + slice; add lazy-import comment
- configure.py: add lazy-import comment
- config.py: lowercase error messages to match the rest of the project
2026-06-10 11:30:19 +07:00
tiennm99
2909df9b07
revert(compare): remove side-by-side compare UI
...
Removes compareui.py and its README entry; the side-by-side diff
output is no longer needed.
2026-06-10 11:09:16 +07:00
tiennm99
3254093d1f
feat(compare): add side-by-side compare UI
2026-06-10 10:28:38 +07:00
tiennm99
d932770c6a
fix(redis): remove temporary migration script
2026-06-10 10:08:50 +07:00
tiennm99
9f867b342e
feat(redis): rename run export keys to group
2026-06-10 09:58:03 +07:00
tiennm99
c24b1a9770
feat(redis): store runs by group then time
2026-06-10 09:47:23 +07:00
tiennm99
24bf801656
feat(compare): render git diff style output
2026-06-10 09:32:42 +07:00
tiennm99
10298f4f5e
feat(config): prompt for setup values
2026-06-10 09:12:31 +07:00
tiennm99
3d655ea020
fix(redis): remove phone key migration script
2026-06-10 09:04:54 +07:00
tiennm99
cd1115ab68
feat(redis): add phone key migration script
2026-06-10 09:01:43 +07:00
tiennm99
4f565728da
feat: store telegram config in redis
2026-06-09 16:54:01 +07:00
tiennm99
fb9384d965
feat: add crawl comparison command
2026-06-09 14:10:05 +07:00
tiennm99
834ad56f65
feat: add one-off migration of local CSV exports to redis
...
Imports the 27 timestamped CSV export folders into the redis keyspace
(<prefix>:run:<phone>:<yyyymmddhhmmss>:<group_id>), mapping each sanitized
CSV filename to its group_id + real title and normalizing empty fields to
null to match live exports. Idempotent.
2026-06-08 16:57:23 +07:00
tiennm99
f03099a18e
feat: store session and exports in redis for cross-device portability
...
Replace the device-bound Telethon .session file and local CSV folders with
Redis-backed storage so the tool runs on any device from just .env.
- StringSession persisted at <prefix>:session:<phone> (no re-login per device)
- each group export saved as one self-contained JSON key per run:
<prefix>:run:<phone>:<yyyymmddhhmmss>:<group_id>
- REDIS_PREFIX namespaces all keys; applied via a single key() helper
- no cross-key references: deleting any key cannot corrupt another's state
- list_exports() lists history, tolerant of deleted/corrupt keys
2026-06-08 16:49:34 +07:00
tiennm99
294ecf571f
docs(readme): add output format, CSV columns, rate-limit and visibility notes
2026-05-11 21:45:51 +07:00
dependabot[bot]
fc9b70349f
build(deps): bump python-dotenv from 1.2.1 to 1.2.2 ( #5 )
...
Bumps [python-dotenv](https://github.com/theskumar/python-dotenv ) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/theskumar/python-dotenv/releases )
- [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md )
- [Commits](https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2 )
---
updated-dependencies:
- dependency-name: python-dotenv
dependency-version: 1.2.2
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:13 +07:00
dependabot[bot]
186f253f38
build(deps): bump pyasn1 from 0.6.2 to 0.6.3 ( #4 )
...
Bumps [pyasn1](https://github.com/pyasn1/pyasn1 ) from 0.6.2 to 0.6.3.
- [Release notes](https://github.com/pyasn1/pyasn1/releases )
- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst )
- [Commits](https://github.com/pyasn1/pyasn1/compare/v0.6.2...v0.6.3 )
---
updated-dependencies:
- dependency-name: pyasn1
dependency-version: 0.6.3
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-11 08:10:14 +07:00
tiennm99
db8fcbd2ad
feat(proxy): remove proxy support
2026-02-26 12:24:21 +07:00
tiennm99
2223780de2
feat: update requirements
2026-02-26 11:51:11 +07:00
tiennm99
1073e06d15
feat: use id instead of name and predefined value instead of iterate over dialogs
2026-02-26 11:39:13 +07:00
tiennm99
685711d7b8
Update .gitignore
2026-02-26 11:28:42 +07:00
Tien Nguyen Minh
e31fd64f35
Merge pull request #3 from tiennm99/dependabot/pip/cryptography-46.0.5
...
Bump cryptography from 45.0.5 to 46.0.5
2026-02-11 17:58:29 +07:00
dependabot[bot]
38203f4d67
Bump cryptography from 45.0.5 to 46.0.5
...
Bumps [cryptography](https://github.com/pyca/cryptography ) from 45.0.5 to 46.0.5.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst )
- [Commits](https://github.com/pyca/cryptography/compare/45.0.5...46.0.5 )
---
updated-dependencies:
- dependency-name: cryptography
dependency-version: 46.0.5
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-02-11 02:25:11 +00:00
tiennm99
3a027ec6c9
feat(claude): stash
...
Try to fix but still not runnable
2025-12-06 22:25:31 +07:00
tiennm99
921f11baf1
feat(speckit): implement
2025-12-06 17:52:39 +07:00
tiennm99
a0866937b9
feat(speckit): tasks
2025-12-06 17:33:22 +07:00
tiennm99
c0c09fb3e1
feat(/speckit): plan
2025-12-06 17:30:37 +07:00
tiennm99
91fe241d72
feat(speckit): specify
2025-12-06 17:16:37 +07:00
tiennm99
185156d687
feat(speckit): constitution
2025-12-06 16:40:28 +07:00
tiennm99
9400bdcd93
feat(claude): init claude & speckit
2025-12-06 16:36:12 +07:00