Videos nach Chatreihenfolge statt nach Zeitstempel ordnen

WhatsApp stempelt beim Synchronisieren gelegentlich alte Nachrichten
neu, im echten Export mehrere Nachrichten am 19.08.26 um 13:17. Die
Position im Chat bildet die tatsächliche Reihenfolge verlässlich ab.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
ferdi2goandClaude Opus 5.5 committed 2026-09-29 09:29:43 +00:00
1 parent ce84e1103d
commit 6f583c8f5b
2 files changed
+30 -10

No files matched your search

+11 -7
View File
@@ -111,12 +111,16 @@ export function timestampFromFileName(name) {
return null;
}
// Die Chatreihenfolge ist verlässlicher als die Zeitstempel: WhatsApp stempelt
// beim Synchronisieren gelegentlich alte Nachrichten mit einer neuen Zeit.
function compareClips(a, b) {
return (
a.timestamp.localeCompare(b.timestamp) ||
a.order - b.order ||
a.file.localeCompare(b.file)
);
return a.order - b.order || a.file.localeCompare(b.file);
}
// Videos ohne Chatzeile werden per Zeitstempel zwischen die Nachrichten einsortiert.
function orderForTimestamp(messages, timestamp) {
const next = messages.find((message) => message.timestamp > timestamp);
return next ? next.index - 0.5 : messages.length;
}
// Doppelt gepostete Videos sind bytegleich; die Dateigröße genügt als Merkmal.
@@ -131,7 +135,7 @@ function markDuplicates(clips) {
}
// files: [{ name, size }] aus dem Export (Pfade erlaubt).
// Liefert die Videos chronologisch, dazu im Chat genannte, aber fehlende Dateien.
// Liefert die Videos in Chatreihenfolge, dazu im Chat genannte, aber fehlende Dateien.
export function collectClips(messages, files) {
const videos = new Map();
for (const file of files) {
@@ -176,7 +180,7 @@ export function collectClips(messages, files) {
timestamp,
sender: null,
caption: '',
order: Number.MAX_SAFE_INTEGER,
order: orderForTimestamp(messages, timestamp),
});
}