Skip to content

Releases: misiektoja/instagram_monitor

v3.1

07 Feb 18:55
ddd7c1c

Choose a tag to compare

Features and Improvements:

  • NEW: Implemented custom webhook configuration support allowing custom templates and headers, defaults to Discord compatibility (thanks @tomballgithub);
  • IMPROVE: Enhanced request jitter with exponential backoff and improved 429 error handling
  • IMPROVE: Improved webhook robustness with retries and custom User-Agent
  • IMPROVE: Updated human mode display to include verbosity option
  • IMPROVE: Updated webhook URL validation to accept both HTTP and HTTPS schemes

Bug fixes:

  • BUGFIX: Corrected timestamp issue in debug mode (fixes #62)
  • BUGFIX: Prevented deadlock in close_pbar by making STDOUT_LOCK re-entrant (fixes #60)
  • BUGFIX: Ensured verbose flags display messages independently of debug mode (fixes #59)
  • BUGFIX: Handled empty caption edges in mobile API to prevent index error in anonymous mode
  • BUGFIX: Added input validation bounds, safe thread cleanup and reels_count null checks

v3.0

23 Jan 00:52
e24b27f

Choose a tag to compare

Welcome to version 3.0 — our biggest and most ambitious release to date! This update introduces a completely redesigned experience with a powerful new Dual Dashboard system (Web and Terminal), Webhook / Discord notifications, native Color support, custom Output directory feature and advanced Follower Churn detection.

A huge thank you to our amazing contributors @Sha-Dox, @tomballgithub, @YouveGotMeowxy and @jl-nr for their invaluable code, ideas and testing that made this release possible.

Web dashboard screenshot

Features and Improvements:

  • NEW: Added a comprehensive dashboard system accessible in terminal and web, including a Rich-powered Terminal Dashboard and a Flask-powered Web Dashboard with real-time stats, activity feeds and interactive controls; check the Terminal Dashboard and Web Dashboard for more info
  • NEW: Added webhook notifications system compatible with Discord and other webhook services for all monitored events with support for sending local image files; check the Webhook Notifications for more info
  • NEW: Implemented native color output support for terminal, enhancing user experience with customizable color themes (see COLORED_OUTPUT and COLOR_THEME config options). You can still use the old grc method if you prefer to only color the logs
  • NEW: Added follower churn detection (--followers-churn flag or FOLLOWERS_CHURN_DETECTION config option) - forces the tool to download and compare the full list of followers/followings even if the total count hasn't changed, allowing the detection of user handle changes or simultaneous additions and removals; check the Follower Churn Detection for more info
  • NEW: Added custom output directory feature to organize all files into target-specific subdirectories (images, videos, logs, json, csvs) which significantly improves organization for multi-target monitoring; check the Output Directory for more info (closes #35)
  • NEW: Added skip follow changes option (--skip-follow-changes flag or SKIP_FOLLOW_CHANGES config option) - allows to completely silence and disable follow-related tracking (console prints, activity logs, email/webhook notifications and CSV saving) while still maintaining live statistics in the dashboards; note that enabling this automatically disables follower churn detection as detailed tracking is suppressed; check the Skipping Follow Changes for more info
  • NEW: Implemented debug mode (--debug flag or DEBUG_MODE config option) - provides full technical logging including every API request and internal state changes
  • NEW: Introduced verbose mode (--verbose flag or VERBOSE_MODE config option) - provides a middle-ground logging level that shows timing details, next check schedule and loop completion messages without the exhaustive detail of Debug Mode
  • NEW: Added support for 12-hour time format (TIME_FORMAT_12H config option) across the entire tool including dashboards, console output, activity logs and email notifications
  • NEW: Implemented HTML formatting for email notifications for better readability
  • NEW: Added dashboard view modes - toggle between 'User' and 'Config' modes across both dashboards with a single keypress ('m') or button click; includes synchronized state throughout the tool
  • NEW: Implemented per-target logging - in multi-target mode, each user gets their own log file; common messages (like the summary screen) are automatically broadcasted to all active logs
  • IMPROVE: Enhanced CSV path resolution - CSV files are now automatically placed in a csvs/ subdirectory when OUTPUT_DIR and relative path is used. In multi-target mode, the tool always enforces per-user files (even with absolute paths) to ensure data isolation
  • IMPROVE: Enhanced CHECK_POSTS_IN_HOURS_RANGE logic to support disabling hour ranges and updated status message (to disable any range, set both MIN and MAXto 0);

... and many other improvements (check the list of commits for the release if you are interested)

Bug fixes:

  • BUGFIX: Fixed recent post detection logic in anonymous mode (fixes #34)
  • BUGFIX: Expanded tabs to spaces in log files for consistent alignment

v2.0.4

04 Jan 17:26
309e3b3

Choose a tag to compare

Features and Improvements:

  • IMPROVE: standardized visual appearance of progress bar to unify its width in both terminal and log files

Bug fixes:

  • BUGFIX: Fixed progress bar display issues - Ensured close_pbar() is called before any print statements in the try block to prevent interleaved output and duplicate progress bars (thanks @tomballgithub)

v2.0.3

03 Jan 01:42
dd32756

Choose a tag to compare

Features and Improvements:

  • NEW: Multi-user monitoring in a single process - Monitor multiple Instagram users simultaneously without spawning separate processes. Simply pass multiple usernames as arguments or use the --targets flag with comma-separated values
  • NEW: Automatic request staggering - When monitoring multiple users, requests are automatically spread across the check interval to avoid triggering Instagram's anti-bot mechanisms. Configurable via MULTI_TARGET_STAGGER or --targets-stagger flag
  • NEW: Progress bar for downloading followers/followings - When fetching lists of followers or followings, a real-time progress bar is displayed showing download progress, statistics (names per request, total requests, elapsed time, estimated remaining time) and completion status. Progress updates are shown in the terminal only (to avoid log file clutter), with the final state written to the log file for reference (thanks @tomballgithub)
  • NEW: Per-user CSV files in multi-target mode - When monitoring multiple users, each user gets their own CSV file (e.g., instagram_data_user1.csv, instagram_data_user2.csv) using the configured CSV filename as a prefix. Single-user mode continues to use the exact filename specified
  • NEW: Improved log file naming - Multi-target log files now use sorted usernames joined with underscores (e.g., instagram_monitor_user1_user2_user3.log), preventing filename collisions when monitoring different user sets
  • NEW: Per-thread output buffer - Enhanced redirect detection to use thread-specific output buffers, ensuring accurate session error detection in multi-target mode
  • IMPROVE: Enhanced session error notifications - Session error emails now include both the session account (logged-in user or anonymous) and the target user that triggered the error, providing better context for debugging
  • NEW: Added MULTI_TARGET_STAGGER, MULTI_TARGET_STAGGER_JITTER, and MULTI_TARGET_SERIALIZE_HTTP configuration options for fine-tuning multi-target behavior
  • NEW: Added TARGET_USERNAMES configuration option to specify multiple targets in config file (CLI arguments take precedence)
  • IMPROVE: Thread-safe logging with lock protection to prevent interleaved output when multiple targets write simultaneously
  • IMPROVE: File save messages now include the username (e.g., "Story video saved for {user} to '{filename}'") for better clarity when monitoring multiple users
  • IMPROVE: Enhanced error messages for Instagram challenge/shadow ban detection - when Instagram requires a challenge/re-login or temporarily shadow bans the IP, error messages now provide clear, informative explanations instead of cryptic KeyError 'data' messages
  • IMPROVE: Follower/following count comparison - Enhanced display of reported vs actual follower/following counts with improved accuracy by refreshing profile data after fetching lists to ensure current reported counts are compared with actual fetched counts (thanks @tomballgithub)
  • IMPROVE: Enhanced initialization progress messages - During script initialization, progress messages now show what's happening during profile loading, including loading profile from username, fetching reels count (when applicable), checking for stories (when applicable) and loading own profile (when logged in). This provides better visibility into the initialization process and helps with debugging account ban issues (thanks @tomballgithub)
  • IMPROVE: Standardized formatting in print statements

Bug fixes:

  • BUGFIX: Fixed redirect detection buffer that was using broken shared/local variable logic, now properly uses per-thread output tracking
  • BUGFIX: Fixed follower/following count comparison logic - Removed inefficient helper functions that were fetching full lists just to get counts, simplified comparison function with proper type hints and fixed order of operations to ensure accurate reported vs actual count comparisons

Dependencies:

  • NEW: Added tqdm dependency for progress bar functionality

v1.9.1

18 Dec 19:36
62ae54c

Choose a tag to compare

Reverted the 1.9 due to a release issue and published 1.9.1 as the corrected version

Features and Improvements:

  • IMPROVE: Enhanced CHECK_POSTS_IN_HOURS_RANGE logic: hour ranges now gate fetching updates (not just posts/reels), covering additional monitored activity (thanks @tomballgithub)
  • NEW: Added HOURS_VERBOSE for debugging hour-based update gating (prints whether updates are fetched or skipped) (thanks @tomballgithub)
  • IMPROVE: Refactored hour-range calculations: de-duplicate overlapping ranges, ignore invalid hours and prevent crashes on misconfiguration
  • IMPROVE: Improved Be Human action probability when hour-range mode is enabled (scales to the configured active-hour window) (thanks @tomballgithub)
  • IMPROVE: Added messaging for sleep time if HOURS_VERBOSE is enabled to give insight into when next check will be (thanks @tomballgithub)
  • IMPROVE: Liveness check logic is now recomputed after config/env/CLI overrides are applied and after check-interval changes via signals
  • IMPROVE: Improved Firefox session import handling (safer SQLite connection usage; clarified error message; consistent session path handling)
  • IMPROVE: Enhanced sleep message output and refined hour range checks for updates

Bug fixes:

  • BUGFIX: Fixed missing current-hour (cur_h) assignment that could break hour-range gating
  • BUGFIX: Restored Python 3.9 compatibility in type hints (replaced datetime | None with Optional[datetime])

v1.8.1

01 Dec 02:31
9a9de41

Choose a tag to compare

Features and Improvements:

  • IMPROVE: Improved error handling for check intervals

Bug fixes:

  • BUGFIX: Corrected bug in compare_images() function (thanks @jl-nr)

v1.8

18 Jun 01:23

Choose a tag to compare

Features and Improvements:

  • NEW: Added mobile-web JSON fallback to restore post details fetching in mode 1 (no session); reel details still require mode 2 (session login)
  • IMPROVE: Added missing exception handling in several areas and included display of exception types for better debugging

Bug fixes:

  • BUGFIX: Guarded has_public_story behind login check due to recent Instagram API anonymous session changes

v1.7

13 Jun 00:36

Choose a tag to compare

Features and Improvements:

  • NEW: Introduced new experimental Be Human mode that makes the tool behave more like a real user to reduce bot detection by performing random feed / profile / hashtag / followee actions. It is disabled by default, check the Human Mode for more info.
  • NEW: Added new Jitter mode which allows to force every HTTP call made by Instaloader to go through a built-in jitter/back-off layer to look more human. It is disabled by default, check the Jitter Mode for more info.
  • NEW: Added config options and flags to set desktop and mobile Instagram user agent strings. Check User Agent for more info.
  • NEW: Ensured all Instagram requests now include the appropriate user agent, if not specified - they are randomly generated per session

Bug fixes:

  • BUGFIX: Fixed config file generation to work reliably on Windows systems

v1.6.2

22 May 18:02

Choose a tag to compare

Bug fixes:

  • BUGFIX: Extended try block to suppress full stack trace
  • BUGFIX: Corrected VERSION assignment syntax in source code

v1.6

21 May 21:27

Choose a tag to compare

Features and Improvements:

  • NEW: The tool can now be installed via pip: pip install instagram_monitor
  • NEW: Added support for external config files, environment-based secrets and dotenv integration with auto-discovery
  • NEW: Added full support for Instagram reels (not just video posts) and optimized post/reel fetching to reduce API calls
  • NEW: Added --import-firefox-session to load session from Firefox cookies with detection of all profiles (replaces old script)
  • IMPROVE: Improved detail extraction for posts and reels (via mobile API)
  • NEW: Added notification for follow-request acceptance and for removed posts/reels
  • NEW: Display access scope and session user info, including reels count
  • IMPROVE: Enhanced session-login logic to auto‐load or create Instaloader sessions
  • IMPROVE: Display whether the user can access all content of the monitored account
  • IMPROVE: Enhanced startup summary to show loaded config, dotenv and empty profile pic template file paths
  • IMPROVE: Auto detect and display availability of imgcat binary for profile picture preview
  • IMPROVE: Simplified and renamed command-line arguments for improved usability
  • NEW: Implemented SIGHUP handler for dynamic reload of secrets from dotenv files
  • NEW: Added configuration option to control clearing the terminal screen at startup
  • IMPROVE: Changed connectivity check to use Instagram API endpoint for better reliability
  • IMPROVE: Added check for missing pip dependencies with install guidance
  • IMPROVE: Allow disabling liveness check by setting interval to 0 (default changed to 12h)
  • IMPROVE: Improved handling of log file creation
  • IMPROVE: Refactored CSV file initialization and processing
  • NEW: Added support for ~ path expansion across all file paths
  • IMPROVE: Added validation for configured time zones
  • IMPROVE: Refactored code structure to support packaging for PyPI
  • IMPROVE: Enforced configuration option precedence: code defaults < config file < env vars < CLI flags
  • IMPROVE: Made empty profile picture template path configurable
  • IMPROVE: Only show profile picture template status if the file exists
  • IMPROVE: Renamed Caption to Description in logs and email bodies
  • IMPROVE: Email notifications now auto-disable if SMTP config is invalid
  • IMPROVE: Minimum required Python version increased to 3.9
  • IMPROVE: Removed short option for --send-test-email to avoid ambiguity

Bug fixes:

  • BUGFIX: Fixed data key error, however due to Instagram changes, post/reel details can no longer be fetched in mode 1 (no session), though count differences are still reported
  • BUGFIX: Fixed post location fetching after Instagram broke legacy endpoints
  • BUGFIX: Corrected public vs. private story checks and iteration (#9)
  • BUGFIX: Fixed rare issue with reporting changed profile pic even though timestamp is the same
  • BUGFIX: Fixed issue where manually defined LOCAL_TIMEZONE wasn't applied correctly
  • BUGFIX: Fixed imgcat command under Windows (use echo. & instead of echo ;)