Grinding Gear Games (GGG) has disabled inventory API access.
This tool cannot fetch inventory data until GGG re-enables the API. All loot tracking functionality is currently unavailable.
We are monitoring the situation and will update as soon as the API is restored.
Automatic loot tracking and session analytics for Path of Exile 2
Track your farming sessions effortlessly with hotkeys, real-time loot valuation via poe.ninja, and rich analytics. Features automatic map detection, Windows notifications, and OBS overlay support for streamers.
- Why Use DillaPoE2Stat?
- Key Features
- Quick Installation
- Usage Guide
- Features Explained
- Advanced Analysis Tools
- Screenshots
- Configuration
- Data & Logs
- Troubleshooting
- Advanced Topics
- Contributing
- License
- Acknowledgements
- Version Info
- ⌨️ Hotkey-Driven - Start/stop tracking with F2/F3
- 🤖 Auto-Detection - Automatically tracks map transitions
- 💰 Real-Time Valuation - Instant loot pricing via poe.ninja
- 🔔 Smart Notifications - Windows toasts with top drops
- 📊 Rich Analytics - Track efficiency, best maps, Divine Orb patterns
- 📺 OBS Ready - Built-in overlays for streaming
- 🔐 Secure - Modern OAuth 2.1 authentication
- 📍 Session-First Workflow - Track entire farming sessions with runtime, loot summaries, and value trends
- 🎯 Top Drops Analysis - See your 3 most valuable items per map and across sessions
- 🏆 Best Map Memory - Automatically remembers your highest-value map with full stats
- 🌀 Delirious % Tracking - Automatic extraction from waystone suffixes
- 🤖 Automatic Map Detection - Background monitoring triggers snapshots as you zone
- 🔮 Waystone Pre-Analysis - Inspect waystones before running them
- 💰 Price Intelligence - Cached poe.ninja data for fast lookups
- 🔔 Rich Notifications - Template-based Windows toasts with formatted values
- 📺 OBS Overlays - Flask server with Browser Source URLs for loot tables and session stats
- 🎨 Customizable Themes - ASCII footer themes and visual settings
- 💎 HasiSkull Banner - Colorful startup dashboard with config summary
- 📊 Efficiency Tiers - Color-coded strategies and performance metrics
- 📈 Run Analytics - Divine Orb patterns, delirious correlations, and waystone strategies
- 💾 Persistent Logging - JSON Lines format for easy parsing and export
- 🔄 Data Versioning - Upgrade utilities for format migrations
- Windows 10/11 (required for notifications and hotkeys)
- Python 3.10+ (Download here)
- Path of Exile 2 with access to
Client.txtlog file
1. Download the Project
git clone https://github.com/DoofDilla/dillapoe2stat.git
cd dillapoe2statOr download the latest release and extract it.
2. Install Dependencies
pip install -r requirements.txt3. Configure the Tracker
Edit config.py and set:
CHAR_TO_CHECK = "YourCharacterName" # Your PoE2 character name
CLIENT_LOG = "C:\\Path\\To\\Client.txt" # Path to your Client.txt logDefault log location:
C:\Users\YourName\Documents\My Games\Path of Exile 2\logs\Client.txt
4. Run the Tracker
python poe_stats_refactored_v2.pyFirst Run: Your browser will automatically open for OAuth 2.1 authorization. Just click "Authorize" and you're done! Tokens refresh automatically for 7 days.
| Key | Action |
|---|---|
F2 |
Start map tracking - Capture pre-map inventory snapshot |
F3 |
End map tracking - Capture post-map inventory, calculate loot value |
Ctrl+F6 |
Toggle auto-detection - Let the tracker monitor Client.txt automatically |
F5 |
Check inventory value - Quick snapshot of current stash value |
F7 |
Session dashboard - View session stats and last 5 maps |
| Key | Action |
|---|---|
Ctrl+F2 |
Analyze waystone (inspect tier, mods, Delirious % before running) |
F4 |
Toggle debug mode |
F6 |
End current session and start new one |
F8 |
Switch between normal and comprehensive output modes |
F9 |
Toggle OBS overlay server |
Ctrl+Esc |
Exit the tracker |
The Best Way to Track! Press Ctrl+F6 to enable automatic map detection and never worry about hotkeys again.
How It Works:
- You're in your hideout
- Enter a waystone portal → Auto F2 (pre-snapshot taken automatically)
- Complete the map
- Return to hideout → Auto F3 (post-snapshot + loot calculation)
- Repeat! The tracker handles everything.
What Gets Tracked Automatically:
- ✅ Hideout → Map transitions (triggers pre-snapshot)
- ✅ Map → Hideout returns (triggers post-snapshot)
- ✅ Respects Abyss/Breach detours (stays in map mode until you return home)
- ✅ Well of Souls waystone analysis - If you visit Well of Souls after a map, it automatically analyzes any waystone in slot 0,0
Waystone Analysis Integration:
When auto-detection is enabled, you can visit Well of Souls between maps to auto-analyze your next waystone:
- Complete map → Return to hideout (auto F3)
- Go to Well of Souls
- Tracker automatically analyzes waystone in slot 0,0
- Return to hideout and start next map (auto F2 with cached waystone data)
💡 Skip Well of Souls: Place next waystone in slot 0,0 before leaving your current map, then press Ctrl+F2 manually after returning to hideout.
Configuration:
Most hideouts are already configured! The tracker recognizes:
- All standard hideouts (Felled, Overgrown, Coral, Ritual)
- All town areas (Clearfell, Ogham, Nakuri Forest, Well of Souls)
If your hideout isn't detected, add it to config.py:
# Near the bottom of config.py
AUTO_HIDEOUT_AREAS = {
'HideoutFelled', # Felled Hideout
'HideoutOvergrown', # Overgrown Hideout
'HideoutCoral', # Coral Hideout
'HideoutRitual', # Ritual Hideout
'Hideout', # Generic hideout
# Add your hideout name here if needed
}
AUTO_TOWN_AREAS = {
'Clearfell', # Act 1 town
'Ogham', # Act 2 town
'NakuriForest', # Act 3 town
'WellOfSouls', # Well of Souls
# Add custom safe zones here
}
AUTO_WAYSTONE_TRIGGER_AREAS = {
'Abyss_Hub', # Well of Souls - auto-analyzes waystones
}Finding Your Area Name:
- Enable debug mode (press
F4) - Watch the console when entering your hideout
- Look for the area name in the output (e.g.,
"area": "HideoutFelled") - Add it to
AUTO_HIDEOUT_AREASinconfig.py
Other Settings:
AUTO_DETECTION_ENABLED = False # Or toggle with Ctrl+F6
AUTO_DETECTION_CHECK_INTERVAL = 1.0 # Check Client.txt every secondToggle Any Time:
Ctrl+F6- Turn auto-detection on/off- Works even mid-session
- Status shown in startup banner
- Real-time pricing via poe.ninja API
- Supports: Currency, Catalysts, Waystones, Fragments, Runes, Gems
- Values shown in: Chaos Orbs, Exalted Orbs, Divine Orbs
- Smart caching for fast lookups
💡 Important: Inventory is fetched from the PoE API. For accurate tracking:
- Zone changes refresh inventory - Enter/exit hideout, town, or waystone to update
- Press
F5after zoning to verify your current inventory value
Press Ctrl+F2 to analyze a waystone before running it:
⚠️ Requirement: Waystone must be in top-left inventory slot (position 0,0)- Shows: Tier, prefix count, suffix count, Delirious %
- Results are cached for the next
F2snapshot - Great for deciding if a waystone is worth running!
Two Workflows:
Method 1: Well of Souls Detour (Automatic)
- Complete your map
- Return to hideout →
F3triggers automatically - Go to Well of Souls (configured as waystone hub)
- Waystone analysis triggers automatically when you enter
- Return to hideout and start next map with
F2
Method 2: Manual Analysis (Faster)
- Before leaving your current map, place next waystone in slot 0,0
- Complete the map and return to hideout
- Press
Ctrl+F2manually to analyze the waystone - Start next map with
F2(analysis is already cached) - ✅ No detour needed!
💡 Pro Tip: Method 2 saves time by skipping the Well of Souls visit, but requires you to prepare your next waystone before finishing the current map.
- Efficiency tiers - Color-coded performance metrics
- Divine Orb patterns - Track when and where they drop
- Delirious correlation - See which % yields best results
- Strategy recommendations - Based on your best maps
Toast notifications for:
- Map start (session runtime, total value, ex/h)
- Map completion (map value, runtime, top 3 drops)
- Session milestones
- Waystone analysis results
Customize templates in notification_templates.py (40+ variables available)
Customizing Notifications:
Edit notification_templates.py to change what appears in your toast notifications!
Example - Change Map Completion Notification:
POST_MAP = {
'title': '✅ {map_name} ▷ {map_level} ◉ {map_value_fmt}💰',
'template': (
'Runtime: {map_runtime_fmt}\n'
'Best Drop: {map_drop_1_name} x{map_drop_1_stack}\n'
'Total Session Value: {session_total_value_fmt}💰'
)
}Available Variables (40+):
| Category | Variables |
|---|---|
| Map Info | map_name, map_level, map_value_fmt, map_runtime_fmt |
| Top Drops | map_drop_1_name, map_drop_1_value_fmt, map_drop_2_name, etc. |
| Waystone | waystone_tier, waystone_delirious, pack_size, magic_monsters |
| Session | session_total_value_fmt, session_maps_completed, session_value_per_hour_fmt |
| Best Map | best_map_name, best_map_value_fmt, best_map_tier |
See the full list of 40+ variables in notification_templates.py comments!
Disable Notifications:
# In config.py
NOTIFICATION_ENABLED = False- Press
F9to start the overlay server - Copy the URLs printed in the terminal:
http://localhost:5000/obs/item_table(600×400 recommended)http://localhost:5000/obs/session_stats(300×200 recommended)
- Add as Browser Source in OBS Studio
- Enable "Refresh when scene becomes active"
Test overlays with simulation hotkeys: Ctrl+Shift+F2 / Ctrl+Shift+F3
After farming some maps, analyze your data to find the most profitable strategies!
What it does:
- Analyzes waystone modifier impact (item quantity, pack size, delirious %, etc.)
- Finds your most efficient maps
- Tracks Divine Orb drop patterns
- Recommends optimal farming strategies
How to run:
python run_analyzer.pyWhat you'll see:
- 📊 Waystone modifier impact analysis
- ⚡ Map efficiency rankings
- 💎 Divine Orb drop patterns
- 🎯 Optimal farming strategies
What it does:
- Analyzes all your farming sessions
- Tracks value per hour across sessions
- Shows best sessions and character performance
- Provides long-term efficiency metrics
How to run:
python session_analyzer.pyWhat you'll see:
- 📊 Total sessions, maps, and value
- ⏱️ Average session runtime and efficiency
- 🏆 Best session by value
- 👤 Per-character statistics
- 🌟 Top 5 sessions ranked by value
Both analyzers support Exalted or Divine Orb display.
To change currency:
Edit the analyzer file (right-click → Edit with Notepad):
For Divine Orbs:
# In run_analyzer.py or session_analyzer.py
DEFAULT_CURRENCY_DISPLAY = "divine" # Shows values in Divine Orbs
DEFAULT_DIVINE_TO_EXALTED_RATE = 400.0 # Current exchange rateFor Exalted Orbs:
DEFAULT_CURRENCY_DISPLAY = "exalted" # Shows values in Exalted Orbs💡 Run analyzers regularly - After every 10-20 maps to spot trends
💡 Compare characters - See which build farms more efficiently
💡 Track modifiers - Learn which waystone mods give best returns
💡 Adjust strategy - Focus on maps and modifiers that work best for you
Click to view more screenshots
# Character and log file
CHAR_TO_CHECK = "YourCharacterName"
CLIENT_LOG = "C:\\Path\\To\\Client.txt"
# Output preferences
OUTPUT_MODE = "normal" # or "comprehensive"
DEBUG_ENABLED = False
# Notifications
NOTIFICATION_ENABLED = True
# OBS overlay server
OBS_ENABLED = False # Set to True to auto-start with tracker
OBS_PORT = 5000
# Auto-detection
AUTO_DETECTION_ENABLED = False # Toggle with Ctrl+F6 in-gameChoose your footer theme by setting ASCII_THEME in config.py:
minimal- Clean and simpleclassic- Traditional box styledouble- Double-line bordersrounded- Smooth rounded corners
Edit ascii_themes.json to create custom themes.
runs.jsonl- Per-map records with loot, runtime, and valuationssessions.jsonl- Session summaries with best maps and top dropstokens.json- OAuth tokens (auto-generated, gitignored)debug/- Debug exports (whenDEBUG_TO_FILE = True)
Current version: 2.1
- Adds delirious % field
- Full per-item chaos/exalted/Divine valuations
- Upgrade old data with
upgrade_runs_data.py
Hotkeys don't work
- Run terminal as Administrator
- Ensure no other app is capturing the same keys
- Check that
keyboardpackage installed correctly
Can't find Client.txt
- Default location:
Documents\My Games\Path of Exile 2\logs\Client.txt - Update
CLIENT_LOGinconfig.pywith correct path - Make sure the game has created the log file (run PoE2 first)
Inventory values seem wrong or outdated
- Inventory only refreshes when you change zones (enter/exit hideout, town, waystone)
- After picking up items, zone out and back in, then press
F5to check updated value - The PoE API caches inventory data until you change zones
Waystone analyzer says "no waystone found"
- Waystone must be in top-left inventory slot (position 0,0)
- Make sure you've zoned at least once after picking up the waystone
- Try moving it to another slot and back to top-left
No loot values showing
- poe.ninja might be rate-limiting or lacking data
- Check your league setting in
price_check_poe2.py - Wait a few minutes and try again
OAuth authorization fails
- Browser opens automatically on first run
- Click "Authorize" when prompted
- Tokens refresh automatically for 7 days
- After 7 days, browser re-opens for re-authorization
Toast notifications not appearing
- Requires Windows 10/11
- Check notification settings in Windows
- Set
NOTIFICATION_ENABLED = Falseinconfig.pyto disable
For technical details, architecture documentation, and extending the project, see:
- Technical Details - Architecture, modules, and internals
- Session Flow Documentation - Phase-based flow diagrams
- CHANGELOG.md - Detailed version history
- Wiki - Full documentation
Contributions are welcome! Feel free to:
- 🐛 Report bugs via GitHub Issues
- 💡 Suggest features or improvements
- 🔧 Submit pull requests
- 📝 Improve documentation
This project is open source and available under the MIT License.
- Grinding Gear Games for the Path of Exile API
- poe.ninja for economy data
- PoE Community for feedback and testing
- Built with ❤️ for Path of Exile 2 by DoofDilla
Current Version: 0.4.0 "OAuth 2.1 Migration"
Data Format Version: 2.1
Last Updated: October 22, 2025
- 🔐 Modern OAuth 2.1 with browser-based authorization
- 🔄 Automatic token refresh (10h access, 7d refresh)
- 🎨 Lightweight KISS overlay system
- ✨ Full pricing for Uncut Gems
- 🔒 Secure token storage (no manual secrets)






