Crate chatpack

Crate chatpack 

Source
Expand description

§Chatpack

A Rust library for parsing and converting chat exports from popular messaging platforms into LLM-friendly formats.

§Overview

Chatpack provides a unified API for working with chat exports from:

  • Telegram - JSON exports from Telegram Desktop
  • WhatsApp - Text exports (both iOS and Android formats)
  • Instagram - JSON exports from Instagram data download
  • Discord - JSON/TXT/CSV exports from DiscordChatExporter

The library handles the complexity of different export formats and provides tools for filtering, merging, and outputting messages in formats optimized for use with Large Language Models.

§Feature Flags

Chatpack uses feature flags to minimize dependencies:

FeatureDescriptionDependencies
telegramTelegram parserserde_json
whatsappWhatsApp parserregex
instagramInstagram parserserde_json
discordDiscord parserserde_json, regex, csv
csv-outputCSV output writercsv
json-outputJSON/JSONL output writersserde_json
streamingStreaming parsers for large files(none)
fullEverything (default)all above

§Quick Start

The parser module provides a unified API with streaming support:

use chatpack::parser::{Parser, Platform, create_parser};
use chatpack::prelude::*;

// Parse a Telegram export
let parser = create_parser(Platform::Telegram);
let messages = parser.parse("telegram_export.json".as_ref())?;

// Merge consecutive messages from the same sender
let merged = merge_consecutive(messages);

// Write to JSON
write_json(&merged, "output.json", &OutputConfig::new())?;

§Streaming for Large Files

For files larger than 1GB, use the streaming API to avoid memory issues:

use chatpack::parser::{Parser, Platform, create_streaming_parser};

let parser = create_streaming_parser(Platform::Telegram);

// Process messages one at a time
for result in parser.stream("huge_export.json".as_ref())? {
    if let Ok(msg) = result {
        println!("{}: {}", msg.sender, msg.content);
    }
}

§Module Structure

Re-exports§

pub use error::ChatpackError;
pub use error::Result;
pub use message::Message;

Modules§

config
Configuration types for parsers and output.
core
Core processing logic for chatpack.
error
Unified error types for chatpack.
format
Output format types for the chatpack library.
message
Core message type for chatpack.
parser
Unified parser trait for chat exports.
parsers
Chat export parsers for various platforms.
parsing
Shared parsing utilities for all platforms.
prelude
Convenient re-exports for common usage.
progress
Progress reporting types for long-running operations.
streaming
Streaming parsers for memory-efficient processing of large chat exports.