# Migration Guide for EU-Utility **Guide for migrating from other Entropia Universe tools** --- ## Supported Migration Sources | Tool | Import Support | Status | |------|----------------|--------| | Entropia Tracker | Partial | Loot data only | | EU Helper | Full | All data | | Spreadsheet (CSV) | Full | Manual import | | Other EU Tools | Partial | JSON format | --- ## From Entropia Tracker ### What Can Be Imported - ✅ Loot tracking data - ✅ Session history - ⚠️ Settings (partial) - ❌ Hotkeys (manual setup required) ### Migration Steps 1. **Export from Entropia Tracker** - Open Entropia Tracker - Go to File → Export - Select "Export All Data" - Choose JSON format - Save to a known location 2. **Convert Format (if needed)** ```python # If exported as CSV, convert to JSON import pandas as pd import json # Read CSV df = pd.read_csv('entropia_tracker_export.csv') # Convert to EU-Utility format data = { 'loot_tracker': { 'sessions': df.to_dict('records') } } # Save with open('converted_data.json', 'w') as f: json.dump(data, f, indent=2) ``` 3. **Import to EU-Utility** - Open EU-Utility - Go to Settings → Import/Export - Click "Import from File" - Select your exported file - Choose which data to import - Click "Import" 4. **Verify Import** - Check Loot Tracker for imported sessions - Verify totals match - Review settings --- ## From EU Helper ### What Can Be Imported - ✅ All settings - ✅ Loot data - ✅ Skill tracking data - ✅ Price watch list ### Migration Steps 1. **Export from EU Helper** - Open EU Helper - Go to Settings → Data Management - Click "Export All Data" - Save the .json file 2. **Import to EU-Utility** - EU Helper format is directly compatible - Open EU-Utility Import/Export plugin - Select the exported file - Import all data 3. **Map Features** | EU Helper Feature | EU-Utility Plugin | |-------------------|-------------------| | Loot Tracker | Loot Tracker | | Skill Monitor | Skill Scanner | | Price Watch | Price Alerts | | Calculator | Calculator | --- ## From Spreadsheets (CSV) ### Preparing Your Data #### Loot Data Format Your CSV should have these columns: ```csv date,time,mob_name,item_name,tt_value,quantity 2025-01-15,10:30:45,Atrox,Animal Oil,0.05,1 2025-01-15,10:31:12,Atrox,Shrapnel,0.02,50 ``` #### Conversion Script ```python import pandas as pd import json from datetime import datetime # Read your CSV df = pd.read_csv('my_loot_data.csv') # Convert to EU-Utility format sessions = [] current_session = { 'start_time': df.iloc[0]['date'] + ' ' + df.iloc[0]['time'], 'items': [], 'total_tt': 0 } for _, row in df.iterrows(): item = { 'name': row['item_name'], 'value': float(row['tt_value']), 'quantity': int(row.get('quantity', 1)) } current_session['items'].append(item) current_session['total_tt'] += item['value'] sessions.append(current_session) # Save data = {'loot_tracker': {'sessions': sessions}} with open('import_ready.json', 'w') as f: json.dump(data, f, indent=2) ``` ### Import Process 1. Run the conversion script 2. Open EU-Utility Import/Export plugin 3. Select the generated JSON file 4. Import --- ## From Custom JSON ### Expected Format ```json { "loot_tracker": { "sessions": [ { "start_time": "2025-01-15T10:30:00", "items": [ {"name": "Animal Oil", "value": 0.05, "quantity": 1} ], "total_tt": 0.05 } ] }, "skill_scanner": { "skills": { "Rifle": {"value": 25.5, "gained": 0.5} } }, "settings": { "theme": "dark", "hotkeys": {...} } } ``` ### Schema Documentation #### Loot Tracker Schema ```json { "loot_tracker": { "sessions": [ { "start_time": "ISO datetime string", "end_time": "ISO datetime string (optional)", "mob_name": "string", "items": [ { "name": "string", "value": "number (PED)", "quantity": "integer" } ], "total_tt": "number", "total_markup": "number (optional)" } ] } } ``` #### Skill Scanner Schema ```json { "skill_scanner": { "skills": { "Skill Name": { "value": "number", "gained": "number (session gain)", "last_scan": "ISO datetime" } } } } ``` #### Settings Schema ```json { "settings": { "theme": "dark|light|eu_classic", "overlay_opacity": "number (0.0-1.0)", "hotkeys": { "toggle": "ctrl+shift+u", "search": "ctrl+shift+f" }, "enabled_plugins": ["plugin1", "plugin2"] } } ``` --- ## Manual Data Transfer ### Step-by-Step Manual Migration 1. **Document Current Setup** - Screenshot all current settings - Export any data possible - Note all custom configurations 2. **Install EU-Utility** - Follow installation guide - Run initial setup - Verify basic functionality 3. **Configure Settings** - Open Settings plugin - Manually recreate your configuration - Set up hotkeys to match your preferences 4. **Transfer Data** - For loot: Use spreadsheet method above - For skills: Re-scan in-game skills - For prices: Re-add to Price Alerts 5. **Verify Everything** - Test all features you use - Compare old and new data - Adjust as needed --- ## Troubleshooting Migration ### Issue: Import Fails **Solution:** 1. Check file format is valid JSON 2. Verify required fields are present 3. Check file encoding (should be UTF-8) 4. Try smaller chunks if file is large ### Issue: Data Looks Wrong **Solution:** 1. Check date/time formats 2. Verify PED values are numbers, not strings 3. Check for missing required fields 4. Validate JSON structure ### Issue: Settings Don't Transfer **Solution:** - Hotkeys must be manually configured - Some tool-specific settings have no equivalent - Review EU-Utility settings to find alternatives --- ## Post-Migration Checklist ### Data Verification - [ ] Loot history matches - [ ] Skill values are correct - [ ] Price alerts are set up - [ ] Sessions are imported ### Configuration - [ ] Hotkeys configured - [ ] Plugins enabled as needed - [ ] Theme selected - [ ] Notifications set up ### Testing - [ ] Test loot tracking - [ ] Test skill scanning - [ ] Test price alerts - [ ] Test all hotkeys - [ ] Verify Discord integration (if used) ### Cleanup - [ ] Uninstall old tool (optional) - [ ] Backup old data - [ ] Remove temporary files - [ ] Update any documentation --- ## Data Compatibility Matrix | Data Type | Import | Export | Notes | |-----------|--------|--------|-------| | Loot Sessions | ✅ | ✅ | Full support | | Skills | ✅ | ✅ | Full support | | Price Alerts | ✅ | ✅ | Full support | | Settings | ⚠️ | ✅ | Partial (tool-specific) | | Hotkeys | ❌ | ❌ | Manual setup | | Plugin Data | ✅ | ✅ | Per-plugin support | | Analytics | N/A | ✅ | EU-Utility only | --- ## Getting Help ### If Migration Fails 1. Check logs in `~/.eu-utility/logs/` 2. Verify source data format 3. Try importing smaller chunks 4. Ask in community Discord/Forums ### Custom Migration Scripts Need a custom script? Check the API Cookbook for examples, or ask the community for help. --- ## Examples ### Complete Migration Script ```python #!/usr/bin/env python3 """ Complete migration helper script. Adjust the CONFIG section for your needs. """ import json import csv from datetime import datetime # ==================== CONFIG ==================== SOURCE_TYPE = "csv" # Options: csv, json, tracker INPUT_FILE = "my_old_data.csv" OUTPUT_FILE = "eu_utility_import.json" # ================================================ def migrate_from_csv(): """Migrate from CSV file.""" sessions = [] with open(INPUT_FILE, 'r') as f: reader = csv.DictReader(f) current_session = None for row in reader: # Create new session if needed if current_session is None: current_session = { 'start_time': datetime.now().isoformat(), 'items': [], 'total_tt': 0 } # Add item item = { 'name': row.get('item', 'Unknown'), 'value': float(row.get('value', 0)), 'quantity': int(row.get('qty', 1)) } current_session['items'].append(item) current_session['total_tt'] += item['value'] if current_session: sessions.append(current_session) return {'loot_tracker': {'sessions': sessions}} def main(): # Migrate based on source type if SOURCE_TYPE == "csv": data = migrate_from_csv() else: print(f"Unsupported source type: {SOURCE_TYPE}") return # Save with open(OUTPUT_FILE, 'w') as f: json.dump(data, f, indent=2) print(f"Migration complete! Import {OUTPUT_FILE} into EU-Utility.") if __name__ == "__main__": main() ``` --- *Need help with a specific tool? Create an issue on GitHub!*