GitHunt
IN

ind4skylivey/IG-saver-tools

πŸ“Έ Instagram Highlights & Stories Backup Tool - CLI with smart incremental backup, progress tracking, and 2FA support / You're not Zuckerberg's lab ratβ€”escape the Meta maze.

IG Saver Banner

Your Personal Instagram Backup Solution

IG Saver Icon

Never lose your memories again.
Backup your Instagram highlights & stories with one simple command.
Fast β€’ Secure β€’ Open Source

Python Version License Stars

Forks Issues PRs Welcome

Features β€’ Quick Start β€’ Demo β€’ Usage β€’ Roadmap β€’ Contributing


🎯 Why IGsaver?

❌ The Problem

Problem



πŸ“‰ 48+ hours waiting for Instagram export

⏰ Stories disappear in 24h forever

πŸ”’ Memories locked in Instagram servers

πŸ’” Account issues = Lost content

βœ… The Solution

Solution



⚑ Instant backup, any time

🎯 Capture stories before expiration

πŸ’Ύ Store locally on YOUR device

πŸ›‘οΈ Full control of your data

./run.sh              # That's it! All your highlights backed up locally in seconds ⚑

✨ Features

Rocket

πŸš€ Smart & Fast

Performance:
  ⚑ Incremental Backup: Skip existing files
  πŸ“Š 90% faster on subsequent runs
  🎯 Batch Download: All at once
  ⏱️ Stories: Before 24h expiration

Speed
Efficient

Secure

πŸ” Safe & Secure

Security:
  πŸ”’ Zero password storage
  πŸ›‘οΈ 2FA Support built-in
  πŸ’Ύ 100% Local storage
  πŸ“– Open Source code

Privacy
Encrypted

Config

βš™οΈ Powerful & Flexible

Customization:
  πŸ“ YAML Configuration files
  πŸ” Advanced Filters (date/type/size)
  πŸ’» CLI with 15+ options
  πŸ“ˆ Detailed reports & stats

Flexible
Professional

Future

🎯 Coming Soon

v2.0.0 Roadmap:
  πŸ–₯️ Desktop App (Win/Mac/Linux)
  πŸ“… Scheduled Auto-backups
  ☁️ Optional Cloud Sync
  πŸ“Š Analytics Dashboard

Status
Roadmap


πŸ“¦ Demo & Output

Note: Live screenshots and demo GIF coming soon! The tool is fully functional and tested.

πŸ“‚ What You Get

πŸ“ backups/
└── πŸ“± your_username/
    β”œβ”€β”€ πŸ“Έ highlights/
    β”‚   β”œβ”€β”€ 🌍 Travel_2024/
    β”‚   β”‚   β”œβ”€β”€ 🎬 2024-01-20_01-56-19_UTC.mp4   (15.2 MB)
    β”‚   β”‚   β”œβ”€β”€ 🎬 2024-02-05_13-27-04_UTC.mp4   (23.8 MB)
    β”‚   β”‚   β”œβ”€β”€ πŸ“· 2024-03-10_08-15-30_UTC.jpg   (2.1 MB)
    β”‚   β”‚   └── πŸ“ metadata.json
    β”‚   β”œβ”€β”€ ❀️ Family_Moments/
    β”‚   β”‚   └── πŸ’« 25 items backed up
    β”‚   └── ⭐ Best_Memories/
    β”‚       └── πŸ’« 18 items backed up
    └── πŸŽͺ stories/ (if --stories flag used)
        └── πŸ’« Active stories (before 24h expiration)

πŸ–₯️ Example Terminal Output

$ ./run.sh

==================================================
Instagram Highlights Backup Tool
==================================================
Loading saved session for your_username...
βœ“ Session loaded successfully

Processing highlights: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 15/15 [02:30<00:00]

πŸ“ Travel 2024
  βœ“ 12 items, 0 failed

πŸ“ Family Moments
  βœ“ 25 items, 1 failed

============================================================
BACKUP SUMMARY
============================================================
Target: your_username
Duration: 2m 35s

Highlights:
  βœ“ Downloaded: 15
  ⊘ Skipped: 0
  ━ Total found: 15

Items:
  βœ“ Downloaded: 134
  ⊘ Skipped (already exist): 0
  ━ Total: 134

Downloaded: 2.1 GB

βœ“ BACKUP COMPLETED SUCCESSFULLY
============================================================

πŸš€ Quick Start

  1. Create virtual environment (optional but recommended):
python3 -m venv venv
source venv/bin/activate
  1. Install dependencies:
pip install -r requirements.txt
  1. (Optional) Configure username:
cp .env.example .env
# Edit .env with your Instagram username (optional)

Usage

Basic Usage

Download your highlights (with incremental backup):

./run.sh

Download active stories (24h):

./run.sh --stories

Download from another user:

./run.sh username

Force re-download everything:

./run.sh --force

Advanced Options

# Custom output directory
./run.sh -o /backup/location

# Quiet mode (minimal output)
./run.sh -q

# Verbose mode (debug info)
./run.sh -v

# Disable progress bars
./run.sh --no-progress

# See all options
./run.sh --help

Configuration File (Optional)

Create config.yaml to customize behavior:

download:
  only_videos: false      # Download only videos
  only_photos: false      # Download only photos
  min_date: 2024-01-01    # Download from this date
  max_date: null          # Download until this date

filters:
  exclude_patterns: []    # Skip items matching patterns
  min_size_mb: null       # Minimum file size

See config.example.yaml for all options.

Project Structure

IGsaver/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main.py           # Entry point
β”‚   β”œβ”€β”€ app.py            # Main application orchestrator
β”‚   β”œβ”€β”€ auth.py           # Authentication & session management
β”‚   β”œβ”€β”€ downloader.py     # Download logic
β”‚   β”œβ”€β”€ config.py         # Configuration management
β”‚   β”œβ”€β”€ logger.py         # Logging setup
β”‚   β”œβ”€β”€ ui.py             # User interface & output
β”‚   β”œβ”€β”€ exceptions.py     # Custom exceptions
β”‚   └── constants.py      # Constants and configuration
β”œβ”€β”€ igsaver.py            # Convenience entry point
β”œβ”€β”€ backups/              # Downloaded backups stored here
β”œβ”€β”€ .sessions/            # Session tokens (excluded from git)
β”œβ”€β”€ logs/                 # Process logs
β”œβ”€β”€ requirements.txt      # Python dependencies
β”œβ”€β”€ .env                  # Credentials (not included in git)
└── .env.example          # Configuration example

Architecture

The project follows Clean Code principles:

  • Separation of Concerns: Each module has a single responsibility
  • Type Hints: All functions are properly typed
  • Dependency Injection: Components receive dependencies
  • Custom Exceptions: Proper error handling with specific exceptions
  • Logging: Comprehensive logging for debugging and monitoring
  • UI Separation: Business logic separated from presentation

Security

3-Layer Authentication System:

  1. Session Tokens (primary method)

    • First time: Login with password
    • Instaloader saves a session token in .sessions/
    • Subsequent uses: Token is used automatically
  2. Interactive Prompt (fallback)

    • If no session exists or expired
    • Asks for password securely using getpass
    • Password is never displayed or saved
  3. Zero Password Storage

    • βœ… Encrypted session tokens (renewable)
    • βœ… Passwords only in temporary memory
    • ❌ Passwords are NEVER saved to files

Other considerations:

  • If you have 2FA enabled, consider disabling it temporarily
  • Instagram may rate-limit requests if you download too much at once
  • Session tokens are stored in .sessions/ (excluded from git)

πŸ—ΊοΈ Roadmap

See our complete ROADMAP.md for detailed plans!

Current Status: v1.0.0 βœ…

  • Advanced CLI with 15+ options
  • Smart incremental backup (90% faster!)
  • Download highlights & stories (24h)
  • Visual progress bars
  • Comprehensive reports
  • YAML configuration
  • 2FA support

Coming in v2.0.0 πŸš€

  • πŸ–₯️ Desktop App (Windows, Mac, Linux)
  • πŸ“… Scheduled Backups (Automatic daily sync)
  • ☁️ Cloud Sync (Optional backup to cloud)
  • πŸ“Š Analytics Dashboard (Visualize your content)
  • 🎨 Modern GUI (Dark/Light themes)
  • πŸ”” Notifications (Desktop alerts)

View Full Roadmap β†’


🀝 Contributing

We love contributions! Whether it's:

  • πŸ› Bug reports
  • πŸ’‘ Feature requests
  • πŸ“– Documentation improvements
  • πŸ”§ Code contributions
  • 🎨 UI/UX design for desktop app

Check out CONTRIBUTING.md to get started!

Special call: We're planning a desktop app! If you have experience with Electron, Tauri, or PyQt, we'd love your input via Issues.


⭐ Show Your Support

If IGsaver helped you backup your precious memories:

  • ⭐ Star this repo to show your support
  • 🐦 Share on social media to help others discover it
  • πŸ”— Tell your friends who might need it
  • 🀝 Contribute to make it even better

πŸ“„ License

MIT License - feel free to use, modify, and distribute!

See LICENSE for full details.


πŸ™ Acknowledgments

Built with:

  • Instaloader - Instagram API wrapper
  • tqdm - Progress bars
  • Love for preserving memories ❀️


Made with ❀️ by @il1v3y

For Instagram users who want to own their memories


Report Bug Request Feature View Repo



⭐ Star this repo if it helped you!

GitHub stars GitHub forks Follow



πŸ“§ Questions? Open an issue and we'll help you!

Built with Python 🐍 | Powered by Instaloader πŸ“Έ | Designed for Privacy πŸ”’

ind4skylivey/IG-saver-tools | GitHunt