Skip to main content

A lightning-fast VCF contact extractor to CSV, TXT, JSON, or terminal preview

Project description

vcfzap

vcfzap is a high-performance, feature-rich command-line tool that extracts contact information from VCF (vCard) files and exports it into multiple formats: CSV, TXT, JSON, HTML, SQLite, or a color-coded terminal preview. Whether you're a developer, sysadmin, or power user, vcfzap makes contact extraction seamless and efficient.


✨ Key Features

  • 🚀 Multi-format Export: Convert .vcf files to CSV, TXT, JSON, HTML, or SQLite database.
  • 🧩 Field Selection: Choose exactly which fields to extract: name, phone, email, address, organization.
  • 🔍 Dry Run Mode: Simulate output without creating any files — perfect for testing.
  • 🌐 Encoding Detection: Automatically handles VCFs with different character encodings.
  • 🔐 Safe Overwriting: Built-in prompts to prevent accidental file overwrite and respect for permissions.
  • Performance-focused: Fast parsing with progress display — handles large files effortlessly.
  • Timestamp Support: Automatically append timestamps to output filenames.
  • 🧘 Automation-friendly: Flags like --no-color, --quiet, and --no-prompt are ideal for scripting and CI.
  • 💽 Rich Terminal Preview: View a beautiful table-rendered contact list directly in the terminal.
  • 🛠 Verbose Logging: Output logs to file and optionally enable debug mode for advanced insight.

⚙ Installation

📦 Install via PyPI

pip install vcfzap

🧬 Install from GitHub (latest)

git clone https://github.com/musaddiq/vcfzap.git
cd vcfzap
pip install .

🧪 Basic Usage

vcfzap <VCF_FILE> [OPTIONS]

✅ Examples

vcfzap contacts.vcf --preview --limit 5
vcfzap contacts.vcf --csv output.csv --timestamp
vcfzap contacts.vcf --json contacts.json --fields name,phone,email --pretty-json
vcfzap contacts.vcf --html contacts.html --fields email
vcfzap contacts.vcf --sqlite contacts.db --no-prompt
vcfzap --check-dependencies

⚙ Options & Arguments

📅 Input

  • vcf_file (positional): Path to your .vcf file.

🎯 Output Formats (choose one)

  • --csv <file>: Export to CSV file
  • --txt <file>: Export to plain text file
  • --json <file>: Export to JSON file
  • --html <file>: Export to styled HTML table
  • --sqlite <file>: Export to SQLite database
  • --preview: Show contacts in a color-coded terminal table (no file output)

🎛 Behavior & Customization

  • --fields name,phone,email: Comma-separated list of fields to extract
  • --limit N: Limit number of contacts
  • --timestamp: Add current timestamp to output filename
  • --max-size N: Warn if file is larger than N MB
  • --detect-encoding: Automatically detect file encoding
  • --csv-delimiter ";": Set custom delimiter for CSV export
  • --log-file <file>: Save detailed logs to specified file
  • --no-color: Disable colored CLI output
  • --quiet: Suppress non-essential messages
  • --no-logs: Disable logging entirely
  • --no-prompt: Disable all interactive prompts (force overwrite, large file warning)
  • --pretty-json: Enable human-readable indented JSON
  • --check-dependencies: Check for any missing Python dependencies
  • -v, --version: Show version information

🌐 Field Reference

Field Description
name Full name (e.g., John Doe)
phone Phone numbers with optional extensions
email Email addresses
address Full physical address
organization Company or organization name

📦 Output Format Overview

Format Description
CSV Clean spreadsheet with optional delimiter
TXT Readable text with labeled fields
JSON Compact or pretty-printed structure
HTML Styled responsive HTML table
SQLite Structured database with dynamic schema
Preview Terminal-based color table preview only

❗ Notes

  • Only one output format can be specified per command.
  • Use --dry-run to verify before exporting.
  • Ideal for automation pipelines via --no-prompt, --quiet, and --log-file.

🧑‍💻 Advanced Usage

vcfzap mycontacts.vcf \
  --csv contacts.csv \
  --fields name,email,address \
  --timestamp \
  --detect-encoding \
  --log-file logs/vcfzap.log \
  --quiet

🛡 License

MIT License

👨‍💻 Author

Crafted with intent by Mallik Mohammad Musaddiq 📧 musaddiqmalik@gmail.com 🔗 GitHub Repo


🔍 Like vcfzap?

If this tool made your workflow easier, consider ⭐️ starring the repository or sharing it with others in need.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vcfzap-1.0.0.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vcfzap-1.0.0-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file vcfzap-1.0.0.tar.gz.

File metadata

  • Download URL: vcfzap-1.0.0.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for vcfzap-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b3b85a82f193bfb7cb1aa047364a4abf3309f6e3d1e5f8af989d040fa76af598
MD5 3209a135175ca9517bd1e71f42c5258a
BLAKE2b-256 659dfdc88f9ca9d2fbdcd8a7a4434892833537a6a3b16964fb3f26e212d7e2e1

See more details on using hashes here.

File details

Details for the file vcfzap-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: vcfzap-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for vcfzap-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7c35676affa85aad359aa119968662ee0bd8e878b4cc7ee30e64eba9e80a26ca
MD5 cc519531059d23a64e9e28847ae0c23f
BLAKE2b-256 718c15824f8864a1cd078ee122f153ef140f11a6b23a80ae8c50ad9102d723cb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page