EU-Utility/docs/MIGRATION_GUIDE.md

9.1 KiB

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)

    # 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:

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

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

{
  "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

{
  "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

{
  "skill_scanner": {
    "skills": {
      "Skill Name": {
        "value": "number",
        "gained": "number (session gain)",
        "last_scan": "ISO datetime"
      }
    }
  }
}

Settings Schema

{
  "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

#!/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!