A network data usage monitor that generates beautiful HTML reports with interactive charts
Project description
Network Data Usage Monitor (IDU)
A cross-platform Python tool to monitor and analyze internet data usage. Generates beautiful HTML reports with interactive charts showing network usage statistics over the last 60 days. Works on Windows, macOS, and Linux.
Features
- ๐ Real-time Network Statistics - View current session download/upload data
- ๐ 60-Day Usage Analysis - Estimated daily breakdown based on usage patterns
- ๐ Interactive Charts - Line charts and bar charts using Chart.js
- ๐ Detailed Reports - Daily breakdown with visual usage bars
- ๐จ Beautiful HTML Reports - Dark theme with modern UI design
- ๐ Jupyter Notebook Support - Interactive analysis with Plotly visualizations
Installation
From PyPI
pip install idu-network-monitor
From Source
git clone https://github.com/yourusername/idu.git
cd idu
pip install -e .
Quick Start
Command Line
# Generate HTML report
idu-report
# Or run directly
python -m idu.report
Python API
from idu import generate_report
# Generate and open the HTML report
report_path = generate_report()
print(f"Report saved to: {report_path}")
Jupyter Notebook
Open examples/network_usage_analysis.ipynb for an interactive analysis experience with:
- Per-interface statistics
- Interactive Plotly charts
- Weekly and day-of-week analysis
Usage
Generate Report
idu-report
This will:
- Collect current network statistics using
psutil - Generate estimated daily usage for the past 60 days
- Create an HTML report with interactive charts
- Open the report in your default browser
Output
The tool generates:
network_usage_report.html- Interactive HTML report
Report Contents
Current Session Statistics
- Downloaded data since last boot
- Uploaded data since last boot
- Session duration
- Total data transferred
60-Day Analysis
- Estimated total data usage
- Daily average usage
- Peak usage day
- Download vs Upload breakdown
Visualizations
- Line Chart: Daily usage trend
- Stacked Bar Chart: Upload vs Download comparison
- Usage Bars: Visual comparison in the daily table
Requirements
- Python 3.8+
- psutil >= 5.9.0
Supported Platforms
- โ Windows
- โ macOS
- โ Linux
Dependencies
psutil>=5.9.0
For Jupyter Notebook analysis:
pandas>=1.3.0
plotly>=5.0.0
How It Works
- Data Collection: Uses
psutilto get network I/O counters since system boot - Estimation: Calculates average daily usage from current session
- Variation: Applies realistic daily/weekly variations to estimates
- Visualization: Generates HTML with Chart.js for interactive charts
Note: Most operating systems don't provide historical per-day network data. The daily breakdown is estimated based on current session usage patterns with realistic variations (weekends typically show higher usage).
Project Structure
idu/
โโโ src/ # Source code (package)
โ โโโ idu/
โ โโโ __init__.py # Package exports
โ โโโ __main__.py # CLI entry point
โ โโโ report.py # Main report generator
โ โโโ utils.py # Utility functions
โโโ examples/ # Usage examples
โ โโโ standalone_report.py # Standalone script example
โ โโโ network_usage_analysis.ipynb # Jupyter notebook
โโโ docs/ # Documentation
โ โโโ architecture.tex # Software architecture (LaTeX)
โ โโโ architecture.pdf # Compiled documentation
โโโ tests/ # Unit tests
โ โโโ test_report.py
โโโ dist/ # Built packages
โโโ README.md
โโโ LICENSE
โโโ pyproject.toml
โโโ .gitignore
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Created with โค๏ธ for network usage monitoring
Changelog
v0.1.0 (2026-01-10)
- Initial release
- HTML report generation
- 60-day usage estimation
- Interactive charts with Chart.js
- Jupyter notebook for analysis
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file idu_network_monitor-0.1.0.tar.gz.
File metadata
- Download URL: idu_network_monitor-0.1.0.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40ba1e7c8f9b738134efdd801d0fc3e3f98fb5fcba279f567be022d614283fb0
|
|
| MD5 |
f69627598c0627846e49da1307f43a03
|
|
| BLAKE2b-256 |
29503f36e2d2dafbc46ad731ddc049f149f436c21b9d427833425c4120e7e7f5
|
File details
Details for the file idu_network_monitor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: idu_network_monitor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fbf6e206915959e945b32ab7f6abc4161e53c6bf09c22e768d7554cba70ba15
|
|
| MD5 |
8dd0eda135771fa733c5b5d317116970
|
|
| BLAKE2b-256 |
f9bd340e67b5d5b1244b73a8361ae3552d29553cf725083c821f007175ffde58
|