427 lines
9.1 KiB
Markdown
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!*
|