Commit Graph
38 Commits
Author SHA1 Message Date
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
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
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
tiennm99 6726701d87 feat(proxy): add mtproxy support 2025-07-08 09:45:31 +07:00
tiennm99 7aab00b443 Update requirements.txt 2024-05-14 18:10:50 +07:00
tiennm99 d6251c0020 [Add] init 2024-03-29 22:31:46 +07:00