EU-Utility/docs/MIGRATION_GUIDE.md

427 lines
9.1 KiB
Markdown

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