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)






