Skip to content

About

A fast, accurate PyQt6 desktop application for extracting WhatsApp and Telegram contact information from thousands of websites.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

Chat Data Exporter — WhatsApp & Telegram Contact Parser

Python PyQt6 License

A fast, accurate PyQt6 desktop application for extracting WhatsApp and Telegram contact information from websites.

Features ✨

  • 🚀 High performance: async processing with aiohttp (≈0.5s per domain with default settings)
  • 🎯 High accuracy: strict validation to reduce false positives
  • 🎨 Modern UI: tabbed interface with light/dark theme support
  • 📁 Multiple input formats: TXT, CSV, XLSX, or paste directly
  • 💾 Multiple export formats: Excel (.xlsx), CSV, JSON
  • 🧵 Multi-threaded: configurable concurrent connections (default: 50)
  • ✅ Smart extraction: context-aware matching and filters for false positives

See IMPROVEMENTS.md for technical details and QUICKSTART.md for a usage guide.

Screenshots

Main Interface

Modern tabbed interface with input methods, settings, results, and logs.

Features in Action

  • Real-time progress tracking and live results display
  • Comprehensive logging

Installation

Quick Start

  1. Clone the repository:
git clone https://github.com/Erp4759/chat-data-exporter.git
cd chat-data-exporter
  1. Create a virtual environment and install dependencies:
python3 -m venv .venv
source .venv/bin/activate   # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
  1. Run the application:
python main.py

Usage

Input Methods

  1. File upload

    • Click "Browse" to select a file (supported: TXT, CSV, XLSX)
    • Drag and drop files onto the application
  2. Paste domains

    • Switch to the "Paste domains" tab and paste one domain per line

Processing Workflow

  1. Load domains via file upload or paste
  2. Configure settings if needed (threads, user-agent, proxy)
  3. Click "Start Processing" and monitor progress in the Results tab

Export Options

  • Excel (.xlsx) — default, includes all columns
  • CSV (.csv)
  • JSON (.json)
  • Options: auto-open after export, custom save location

Configuration

Settings tab options:

  • Threads: Adjust concurrent connections (1–100, default 50)
  • User-Agent: Toggle random user agents
  • Proxy: Optional proxy configuration

Validation Rules

WhatsApp Numbers

  • Must be 10–15 digits
  • Valid country codes only
  • No repeating or suspicious sequences (e.g., 1414, 0000)
  • Russian numbers: normalized to 79xxxxxxxxx when applicable
  • US numbers: expected length and format (11 digits where applicable)

Telegram Usernames

  • Only extracts from t.me links or when found near "telegram" keywords
  • Minimum 5 characters; blacklist filters reduce false positives

Technical Details

  • Framework: PyQt6 with QThread for background processing
  • HTTP client: aiohttp with connection pooling
  • HTML parser: BeautifulSoup4 with lxml backend
  • Data processing/export: pandas, openpyxl
  • Regex patterns and validators: patterns.py, validators.py

Project Structure

chat-data-exporter/
├── main.py                 # Application entry point
├── design.ui               # PyQt6 UI design file
├── requirements.txt        # Python dependencies
├── README.md               # This file
├── LICENSE                 # MIT License
├── STRUCTURE.md            # Detailed architecture docs
└── src/                    # Source modules
    ├── __init__.py
    ├── gui.py
    ├── worker.py
    ├── parser.py
    ├── extractors.py
    ├── validators.py
    ├── patterns.py
    └── styles.py

Requirements

  • Python 3.8+
  • PyQt6 >= 6.0
  • aiohttp >= 3.9.0
  • beautifulsoup4 >= 4.12.0
  • pandas >= 2.0.0
  • openpyxl >= 3.1.0
  • fake-useragent >= 1.4.0
  • lxml >= 4.9.0

See requirements.txt for the complete list.

Development

Run from source:

source .venv/bin/activate   # Linux/Mac
# or
.venv\Scripts\activate     # Windows
python main.py

Contributing

Contributions are welcome. Please follow the guidelines:

  1. Follow PEP 8
  2. Add type hints to new functions
  3. Include docstrings
  4. Add tests for new behavior
  5. Update documentation

License

This project is licensed under the MIT License — see the LICENSE file for details.

Acknowledgments

  • Built with PyQt6, aiohttp, and BeautifulSoup4

Changelog

Version 1.0.0 (Initial Release)

  • Modern tabbed UI with light/dark theme support
  • Multiple input formats (TXT, CSV, XLSX, paste)
  • Multiple export formats (Excel, CSV, JSON)
  • Async processing with configurable threads
  • Strict validation for phone numbers
  • Context-aware Telegram extraction
  • Real-time progress tracking and logging

Made with ❤️ for efficient contact extraction

About

A fast, accurate PyQt6 desktop application for extracting WhatsApp and Telegram contact information from thousands of websites.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages