Knugi
0056204d87
Merge pull request #206 from tang-vu/contribai/improve/quality/crash-in-timestamp-formatting-when-timez
...
✨ Quality: Crash in timestamp formatting when timezone_offset is None
2026-03-26 21:56:43 +08:00
KnugiHK
9e138d3a1f
Cache TimeZone object in Timing class
2026-03-26 21:31:52 +08:00
KnugiHK
18a0d822b3
Timezone offset should also accepts float
2026-03-26 21:30:10 +08:00
KnugiHK
bb860533d5
Add a default value for timezone_offset in Timing.__init__
2026-03-26 21:23:59 +08:00
Tang Vu
a2bcc39e63
refactor: crash in timestamp formatting when timezone_offset is none
...
In `Timing.format_timestamp`, if `self.timezone_offset` is `None` (which is explicitly allowed by the `Optional[int]` type hint), it instantiates `TimeZone(None)`.
When `datetime.fromtimestamp()` calls the `utcoffset()` method on this timezone object, it executes `timedelta(hours=self.offset)`, which evaluates to `timedelta(hours=None)`. This raises a `TypeError: unsupported type for timedelta hours component: NoneType`, causing the application to crash during export.
Affected files: data_model.py
Signed-off-by: Tang Vu <vuminhtang2212@gmail.com >
2026-03-26 03:25:44 +07:00
KnugiHK
a161993ab9
Normalize media path handling in handlers
2026-03-21 17:22:47 +08:00
KnugiHK
8dfced9d94
Avoid self-copy when no timestamp
2026-03-21 17:16:32 +08:00
KnugiHK
517fd2d3ac
Add back missing comma
2026-03-21 16:42:25 +08:00
SoLoHK525
37a52c0d7d
Add support for exif timestamp export
2026-03-21 16:25:19 +08:00
KnugiHK
a4d79c3892
Add backward compatibility to contact database processing
...
Because ZLID does not exist in the old schema
2026-03-21 15:46:00 +08:00
KnugiHK
daf6375966
Implement aliases for chat. For LID mapping
2026-03-21 15:36:32 +08:00
KnugiHK
b1886fd737
Better parse metadata message in iOS
2026-02-22 18:35:04 +08:00
KnugiHK
09a26dbe04
Add placeholder for Android on polls
2026-02-22 18:00:20 +08:00
Ingolf Becker
99474e65cc
iOS: Add poll support, fix contact name resolution, fix typos
...
- Add poll message decoding for iOS (ZMESSAGETYPE 46) using raw protobuf
parsing of ZWAMESSAGEINFO.ZRECEIPTINFO blobs (no external dependency).
Polls render with vote tallies and voter names in the HTML export.
- Fix iOS contact name resolution: pull ZFULLNAME from address book,
resolve LID-based group members, fall back to ZWAPROFILEPUSHNAME,
and avoid overwriting real names with phone numbers.
- Fix typo: 'expoter' -> 'exporter' in android_crypt.py and __main__.py.
- Add poll field to Message data model and update test fixtures.
2026-02-22 17:44:22 +08:00
KnugiHK
5fa0a613b0
Fix legacy call query
...
This add back the backward compatibility for the legacy schema, which is broken in 0.13.0
2026-02-22 16:52:04 +08:00
KnugiHK
322b12a5a4
Fix a crash in message counting if chat filter is in use
2026-01-24 18:02:30 +08:00
KnugiHK
28ba97d72f
Fix CI on Windows
2026-01-24 17:38:22 +08:00
KnugiHK
eab98ba0d6
Fix crash on pre-release versions and enable update checks for pre-releases
2026-01-24 17:20:07 +08:00
KnugiHK
f920ca82b4
Refactor the logging facility a bit
2026-01-24 17:05:14 +08:00
KnugiHK
4eed3ca321
Refactor CLEAR_LINE in a more pythonic way
...
So it is easier for contributor to write a logging line for this project.
2026-01-24 16:48:07 +08:00
KnugiHK
746e4e1ac5
Fix and improve the logging facility for incremental merge
2026-01-24 16:24:10 +08:00
KnugiHK
1694ae7dd9
Update utility.py
2026-01-24 01:47:45 +08:00
KnugiHK
f05e0d3451
Refactor incremental_merge
2026-01-24 01:33:18 +08:00
KnugiHK
0c5f2b7f13
Add a comment on SQLi in get_chat_condition
2026-01-24 01:19:55 +08:00
KnugiHK
db01d05263
Refactor get_chat_condition to increase maintainability
2026-01-24 00:50:06 +08:00
KnugiHK
95a52231be
Fix the returning string for empty filter list
2026-01-24 00:03:08 +08:00
KnugiHK
bf230db595
Gracefully handle bytes that can't be decoded from db ( #44 )
2026-01-20 23:35:05 +08:00
KnugiHK
242e8ee43a
Fix regressions introduced in 194ed29 (default template swap)
...
This commit restores the logic originally introduced in:
* 265afc1
* 8cf1071
* 177b936
2026-01-20 01:42:30 +08:00
lifnej
c32096b26b
Show sql errors if DEBUG flag is set.
2026-01-20 00:07:04 +08:00
lifnej
4aa1c26232
Missing newline in vcard info log.
2026-01-20 00:06:38 +08:00
KnugiHK
feca9ae8e0
Fix error on database without jid_map table
...
I realized the `jid_map` table might be missing after reviewing @lifnej's work in ee7db80 . This fix adds use the preflight check result for the table before querying it.
I plan to apply this same pattern to other sections where `jid_map` is used.
2026-01-19 22:59:19 +08:00
KnugiHK
92c325294c
Add preflight check to see if the jid_map table exists
2026-01-19 22:53:29 +08:00
KnugiHK
7dbd0dbe3c
Add preflight check to see if transciption column exists
2026-01-19 22:46:30 +08:00
KnugiHK
96d323e0ed
Fetch sender_timestamp for future use
...
WhatsApp doesn't show when a reaction was made, and I don't want to mess with a popup in the HTML yet. Let’s just fetch the data for now. It might come in handy later.
Credit to @tlcameron3 from #79
2026-01-19 21:28:50 +08:00
KnugiHK
8058ed8219
Add tqdm progress bar
2026-01-19 20:49:14 +08:00
KnugiHK
908d8f71ca
Fix merge conflict error
2026-01-19 20:41:45 +08:00
Knugi
f2b6a39011
Merge branch 'dev' into feature/export-reactions
2026-01-19 20:38:20 +08:00
KnugiHK
4f531ec52a
Reverting the __version__ handle
...
See my comment at https://github.com/KnugiHK/WhatsApp-Chat-Exporter/pull/193/changes
2026-01-19 20:36:18 +08:00
KnugiHK
b69f645ac3
Adopt the same lid mapping to all sql query
...
Because the chat filter needs it
2026-01-19 20:29:56 +08:00
KnugiHK
f8b959e1e1
Implement an on-the-fly fix of dot-ending files ( #185 )
2026-01-18 23:03:49 +08:00
KnugiHK
9be210f34a
Implement voice message transcription for Android ( #159 )
2026-01-18 21:59:03 +08:00
KnugiHK
ae7ba3da96
action_type 58 is actually shared with unblocking
2026-01-18 21:53:36 +08:00
KnugiHK
00e58ce2c9
Handle group message sender lid mapping ( #188 )
2026-01-18 21:25:40 +08:00
KnugiHK
4245ecc615
Update android_handler.py
2026-01-17 15:07:16 +08:00
KnugiHK
68dcc6abe0
Improve brute-force offsets with process pool
...
Refactored the brute-force offset search in `_decrypt_crypt14` to use `ProcessPoolExecutor` for better parallelism and performance. Improved progress reporting and clean shutdown on success or interruption.
2026-01-17 14:43:51 +08:00
KnugiHK
c05e76569b
Add more chat type
2026-01-17 13:55:16 +08:00
KnugiHK
a6fe0d93b1
Rename the obj variable to json_obj in telegram_json_format
2026-01-17 13:54:56 +08:00
KnugiHK
ea9675973c
Refactor Message class to accept pre-initialized Timing object
...
Pass the `Timing` object directly through `timezone_offset` to avoid repeated initialization of the same object within the `Message` class.
2026-01-17 13:42:11 +08:00
KnugiHK
064b923cfa
Convert time unit for progress
2026-01-17 13:22:56 +08:00
KnugiHK
cd35ffc185
Remove the prompt after user enter the password
2026-01-17 13:19:10 +08:00