-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
147 lines (131 loc) · 5.24 KB
/
setup.sh
File metadata and controls
147 lines (131 loc) · 5.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/bin/bash
# Setup script for Raspberry Pi Auto-Ripper
# Run this after install.sh to configure the system
set -e
echo "⚙️ Configuring Raspberry Pi Auto-Ripper..."
# Copy scripts to system locations
echo "📄 Copying scripts..."
sudo cp auto-ripper.py /opt/auto-ripper/
sudo cp trigger-rip.sh /opt/auto-ripper/
sudo cp check-disc.sh /opt/auto-ripper/
sudo cp debug-cd-detection.sh /opt/auto-ripper/
sudo cp fix-optical-drive.sh /opt/auto-ripper/
sudo cp test-disc-read.sh /opt/auto-ripper/
sudo cp fix-permissions.sh /opt/auto-ripper/
sudo cp test-dependencies.sh /opt/auto-ripper/
sudo cp test-manual-rip.sh /opt/auto-ripper/
sudo cp test-permissions.sh /opt/auto-ripper/
sudo cp cleanup-locks.sh /opt/auto-ripper/
sudo cp test-single-track.sh /opt/auto-ripper/
sudo cp check-system-status.sh /opt/auto-ripper/
sudo cp fix-log-permissions.sh /opt/auto-ripper/
sudo cp test-disc-detection-contexts.sh /opt/auto-ripper/
sudo cp debug-dd-issue.sh /opt/auto-ripper/
sudo cp verify-deployment.sh /opt/auto-ripper/
sudo cp diagnose-stuck-rip.sh /opt/auto-ripper/
sudo cp check-duplicate-files.sh /opt/auto-ripper/
sudo cp check-mount-permissions.sh /opt/auto-ripper/
sudo cp abcde.conf /home/rsd/.abcde.conf
sudo cp abcde-offline.conf /opt/auto-ripper/
# Make scripts executable
sudo chmod +x /opt/auto-ripper/auto-ripper.py
sudo chmod +x /opt/auto-ripper/trigger-rip.sh
sudo chmod +x /opt/auto-ripper/check-disc.sh
sudo chmod +x /opt/auto-ripper/debug-cd-detection.sh
sudo chmod +x /opt/auto-ripper/fix-optical-drive.sh
sudo chmod +x /opt/auto-ripper/test-disc-read.sh
sudo chmod +x /opt/auto-ripper/fix-permissions.sh
sudo chmod +x /opt/auto-ripper/test-dependencies.sh
sudo chmod +x /opt/auto-ripper/test-manual-rip.sh
sudo chmod +x /opt/auto-ripper/test-permissions.sh
sudo chmod +x /opt/auto-ripper/cleanup-locks.sh
sudo chmod +x /opt/auto-ripper/test-single-track.sh
sudo chmod +x /opt/auto-ripper/check-system-status.sh
sudo chmod +x /opt/auto-ripper/fix-log-permissions.sh
sudo chmod +x /opt/auto-ripper/test-disc-detection-contexts.sh
sudo chmod +x /opt/auto-ripper/debug-dd-issue.sh
sudo chmod +x /opt/auto-ripper/verify-deployment.sh
sudo chmod +x /opt/auto-ripper/diagnose-stuck-rip.sh
sudo chmod +x /opt/auto-ripper/check-duplicate-files.sh
sudo chmod +x /opt/auto-ripper/check-mount-permissions.sh
# Set ownership
sudo chown rsd:rsd /home/rsd/.abcde.conf
sudo chown -R rsd:rsd /opt/auto-ripper/
# Install udev rules
echo "🔧 Installing udev rules..."
sudo cp 99-auto-ripper.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
# Create systemd service for manual control
echo "📋 Creating systemd service..."
sudo tee /etc/systemd/system/auto-ripper.service > /dev/null << EOF
[Unit]
Description=Auto CD/DVD Ripper
After=multi-user.target
[Service]
Type=simple
User=rsd
WorkingDirectory=/opt/auto-ripper
ExecStart=/usr/bin/python3 /opt/auto-ripper/auto-ripper.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# Enable the service (but don't start it yet)
sudo systemctl daemon-reload
sudo systemctl enable auto-ripper.service
# Create configuration file
echo "⚙️ Creating default configuration..."
sudo -u rsd python3 -c "
import json
import os
config = {
'output_dir': '/mnt/MUSIC',
'formats': ['flac', 'mp3'],
'eject_after_rip': True,
'notification_enabled': False,
'network_copy': False,
'network_path': '',
'max_retries': 3
}
os.makedirs('/opt/auto-ripper', exist_ok=True)
with open('/opt/auto-ripper/config.json', 'w') as f:
json.dump(config, f, indent=4)
"
# Set permissions on config
sudo chown rsd:rsd /opt/auto-ripper/config.json
echo "🔄 Reloading udev rules..."
sudo udevadm control --reload-rules
sudo udevadm trigger
echo "✅ Setup complete!"
echo ""
echo "🎵 Your auto-ripper is now configured!"
echo ""
echo "Usage options:"
echo "1. Automatic mode (udev triggered): Just insert a disc"
echo "2. Manual service mode: sudo systemctl start auto-ripper"
echo "3. Manual script mode: /opt/auto-ripper/auto-ripper.py"
echo ""
echo "Configuration file: /opt/auto-ripper/config.json"
echo "Log files: /var/log/auto-ripper/"
echo "Output directory: /mnt/MUSIC/"
echo ""
echo "To test: Insert a CD and check /var/log/auto-ripper/auto-ripper.log"
echo ""
echo "Troubleshooting:"
echo "- Verify deployment: /opt/auto-ripper/verify-deployment.sh"
echo "- Test dependencies: /opt/auto-ripper/test-dependencies.sh"
echo "- Check system status: /opt/auto-ripper/check-system-status.sh"
echo "- Test permissions: /opt/auto-ripper/test-permissions.sh"
echo "- Test single track: /opt/auto-ripper/test-single-track.sh"
echo "- Test manual rip: /opt/auto-ripper/test-manual-rip.sh"
echo "- Test disc detection contexts: sudo /opt/auto-ripper/test-disc-detection-contexts.sh"
echo "- Debug dd read issues: sudo /opt/auto-ripper/debug-dd-issue.sh"
echo "- Clean up stuck processes: /opt/auto-ripper/cleanup-locks.sh"
echo "- If log permission errors: sudo /opt/auto-ripper/fix-log-permissions.sh"
echo "- If optical drive not detected: sudo /opt/auto-ripper/fix-optical-drive.sh"
echo "- If permissions issues: sudo /opt/auto-ripper/fix-permissions.sh"
echo "- Test disc reading: /opt/auto-ripper/test-disc-read.sh"
echo "- Debug system: sudo /opt/auto-ripper/debug-cd-detection.sh"
echo "- Watch logs: tail -f /var/log/auto-ripper/trigger.log"