# Introspect CLI Commands Demo This document demonstrates the usage and output of the new introspect CLI commands added to the soundtouch-cli tool. ## Available Commands The introspect functionality is available through three commands in the `source` command group: 1. `source introspect` - Get introspect data for any supported service 2. `source introspect-spotify` - Convenience command specifically for Spotify 3. `source introspect-all` - Get introspect data for all available services ## Command Examples and Expected Output ### 1. Basic Spotify Introspect ```bash $ soundtouch-cli --host 192.0.2.100 source introspect --source SPOTIFY ``` **Expected Output:** ``` ⠎⠕⠥⠝⠙⠤⠞⠕⠥⠉⠓ SoundTouch CLI v1.0.0 🔗 Connecting to SoundTouch device at 192.0.2.100:8090 Getting introspect data for SPOTIFY === SPOTIFY Service Introspect Data === State: InactiveUnselected User: SpotifyConnectUserName Currently Playing: ❌ No Current Content: Shuffle Mode: OFF Subscription Type: === Service State === ❌ Service is INACTIVE (Never been used) ⏸️ Not currently playing ➡️ Shuffle mode is OFF === Service Capabilities === ❌ ⏮️ Skip Previous ❌ 🎯 Seek within tracks ✅ ▶️ Resume playback ✅ 📊 Data collection: ENABLED === Spotify Content History === Max History Size: 10 items === Technical Details === Token Last Changed: 2023-12-14 10:48:15 MST Token Timestamp: 1702566495 seconds since Unix epoch Token Microseconds: 427884 Play Status State: 2 Received Playback Request: ❌ No ``` ### 2. Spotify Introspect with Account ```bash $ soundtouch-cli --host 192.0.2.100 source introspect --source SPOTIFY --account my_spotify_user ``` **Expected Output:** ``` ⠎⠕⠥⠝⠙⠤⠞⠕⠥⠉⠓ SoundTouch CLI v1.0.0 🔗 Connecting to SoundTouch device at 192.0.2.100:8090 Getting introspect data for SPOTIFY Source Account: my_spotify_user === SPOTIFY Service Introspect Data === State: Active User: my_spotify_user Currently Playing: ✅ Yes Current Content: spotify://track/4iV5W9uYEdYUVa79Axb7Rh Shuffle Mode: ON Subscription Type: Premium === Service State === ✅ Service is ACTIVE 🎵 Currently playing content 🔀 Shuffle mode is ON === Service Capabilities === ✅ ⏮️ Skip Previous ✅ 🎯 Seek within tracks ✅ ▶️ Resume playback 🚫 Data collection: DISABLED === Spotify Content History === Max History Size: 15 items === Technical Details === Token Last Changed: 2023-12-14 15:30:22 MST Token Timestamp: 1702583422 seconds since Unix epoch Token Microseconds: 123456 Play Status State: 1 Received Playback Request: ✅ Yes ``` ### 3. Spotify Convenience Command ```bash $ soundtouch-cli --host 192.0.2.100 source introspect-spotify ``` **Expected Output:** ``` ⠎⠕⠥⠝⠙⠤⠞⠕⠥⠉⠓ SoundTouch CLI v1.0.0 🔗 Connecting to SoundTouch device at 192.0.2.100:8090 Getting Spotify introspect data === Spotify Service Introspect Data === State: Active User: premium_user Currently Playing: ✅ Yes Current Content: spotify://playlist/37i9dQZF1DXcBWIGoYBM5M Shuffle Mode: ON Subscription Type: Premium === Spotify Service State === ✅ Service is ACTIVE 🎵 Currently playing content 🔀 Shuffle mode is ON === Spotify Service Capabilities === ✅ ⏮️ Skip Previous ✅ 🎯 Seek within tracks ✅ ▶️ Resume playback 🚫 Data collection: DISABLED 💡 Spotify Setup Recommendations: (None - service is properly configured and active) === Spotify Content History === Max History Size: 20 items === Technical Details === Token Last Changed: 2023-12-14 16:45:10 MST Token Timestamp: 1702587910 seconds since Unix epoch Token Microseconds: 789012 Play Status State: 1 Received Playback Request: ✅ Yes ``` ### 4. Inactive Service Example ```bash $ soundtouch-cli --host 192.0.2.100 source introspect-spotify ``` **Expected Output (when Spotify is not set up):** ``` ⠎⠕⠥⠝⠙⠤⠞⠕⠥⠉⠓ SoundTouch CLI v1.0.0 🔗 Connecting to SoundTouch device at 192.0.2.100:8090 Getting Spotify introspect data === Spotify Service Introspect Data === State: InactiveUnselected User: Currently Playing: ❌ No Current Content: Shuffle Mode: OFF Subscription Type: === Spotify Service State === ❌ Service is INACTIVE (Never been used) ⏸️ Not currently playing ➡️ Shuffle mode is OFF === Spotify Service Capabilities === ❌ ⏮️ Skip Previous ❌ 🎯 Seek within tracks ✅ ▶️ Resume playback ✅ 📊 Data collection: ENABLED 💡 Spotify Setup Recommendations: • Sign in to your Spotify account on the device • Use 'soundtouch-cli source select --source SPOTIFY' to activate Spotify • Ensure you have Spotify Premium for full functionality ``` ### 5. All Services Introspect ```bash $ soundtouch-cli --host 192.0.2.100 source introspect-all ``` **Expected Output:** ``` ⠎⠕⠥⠝⠙⠤⠞⠕⠥⠉⠓ SoundTouch CLI v1.0.0 🔗 Connecting to SoundTouch device at 192.0.2.100:8090 Getting introspect data for all services 🔍 Getting introspect data for SPOTIFY... ✅ SPOTIFY: Successfully retrieved introspect data State: Active (User: spotify_user) Playing: ✅ Yes | Content: spotify://track/4iV5W9uYEdYUVa79Axb7Rh Capabilities: Skip, Seek, Resume ────────────────────────────────────────────────── 🔍 Getting introspect data for PANDORA... ❌ PANDORA: Service not available on this device ────────────────────────────────────────────────── 🔍 Getting introspect data for TUNEIN... ✅ TUNEIN: Successfully retrieved introspect data State: Inactive Playing: ❌ No Capabilities: Resume ────────────────────────────────────────────────── 🔍 Getting introspect data for AMAZON... ❌ AMAZON: Failed to get introspect data - service not configured ────────────────────────────────────────────────── 🔍 Getting introspect data for DEEZER... ❌ DEEZER: Service not available on this device ══════════════════════════════════════════════════ 📊 Introspect Summary: ✅ Successful: 2 services ❌ Failed: 3 services 📡 Total checked: 5 services ✅ Successfully retrieved introspect data for 2 services ``` ### 6. Error Handling Examples #### Missing Source Parameter ```bash $ soundtouch-cli --host 192.0.2.100 source introspect ``` **Output:** ``` NAME: soundtouch-cli source introspect - Get introspect data for a music service USAGE: soundtouch-cli source introspect [command options] OPTIONS: --account value, -a value Source account name (optional) --source value, -s value Music service source (SPOTIFY, PANDORA, TUNEIN, etc.) --help, -h show help Required flag "source" not set ``` #### Missing Host Parameter ```bash $ soundtouch-cli source introspect --source SPOTIFY ``` **Output:** ``` host is required. Use --host flag or set SOUNDTOUCH_HOST environment variable ``` #### Invalid Service ```bash $ soundtouch-cli --host 192.0.2.100 source introspect --source INVALID_SERVICE ``` **Expected Output:** ``` ⠎⠕⠥⠝⠙⠤⠞⠕⠥⠉⠓ SoundTouch CLI v1.0.0 🔗 Connecting to SoundTouch device at 192.0.2.100:8090 ⚠️ Service INVALID_SERVICE may not be available, but continuing with introspect request... Getting introspect data for INVALID_SERVICE ❌ Error: failed to get introspect data: HTTP 404: endpoint not found or service not supported ``` ## Integration with Other Commands The introspect commands work well with other CLI commands: ### 1. Check Availability First ```bash # Check what services are available $ soundtouch-cli --host 192.0.2.100 source availability # Then introspect specific services $ soundtouch-cli --host 192.0.2.100 source introspect --source SPOTIFY ``` ### 2. Activate Service After Introspect ```bash # Check service status $ soundtouch-cli --host 192.0.2.100 source introspect-spotify # If inactive, activate it $ soundtouch-cli --host 192.0.2.100 source select --source SPOTIFY ``` ### 3. Compare Sources and Introspect Data ```bash # Compare configured sources vs available services $ soundtouch-cli --host 192.0.2.100 source compare # Get detailed introspect data for specific services $ soundtouch-cli --host 192.0.2.100 source introspect-all ``` ## Environment Variables The introspect commands respect the same environment variables as other CLI commands: - `SOUNDTOUCH_HOST` - Default device IP address - `SOUNDTOUCH_SKIP_AVAILABILITY_CHECK` - Skip service availability validation - `SOUNDTOUCH_TIMEOUT` - Request timeout duration **Example:** ```bash export SOUNDTOUCH_HOST=192.0.2.100 soundtouch-cli source introspect-spotify ``` ## Use Cases ### 1. Service Setup Verification Check if streaming services are properly configured and authenticated: ```bash soundtouch-cli --host $DEVICE source introspect-spotify soundtouch-cli --host $DEVICE source introspect --source PANDORA ``` ### 2. Troubleshooting Playback Issues Understand why certain playback controls aren't working: ```bash # Check if seek is supported soundtouch-cli --host $DEVICE source introspect --source SPOTIFY | grep -i seek # Check current playback state soundtouch-cli --host $DEVICE source introspect-spotify | grep -i playing ``` ### 3. Service Health Monitoring Monitor the health and status of streaming services: ```bash # Quick health check for all services soundtouch-cli --host $DEVICE source introspect-all # Detailed status for critical service soundtouch-cli --host $DEVICE source introspect-spotify ``` ### 4. Account Management Verify which accounts are associated with services: ```bash # Check current Spotify account soundtouch-cli --host $DEVICE source introspect-spotify | grep -i user # Check with specific account parameter soundtouch-cli --host $DEVICE source introspect --source SPOTIFY --account specific_user ``` ## Tips 1. **Use with grep**: Pipe output to `grep` to filter specific information: ```bash soundtouch-cli --host $DEVICE source introspect-spotify | grep -E "(State|User|Playing)" ``` 2. **JSON output**: While not currently implemented, future versions may support JSON output for scripting: ```bash # Future feature soundtouch-cli --host $DEVICE source introspect-spotify --format json ``` 3. **Batch operations**: Use shell scripting to check multiple devices: ```bash for device in 192.0.2.100 192.0.2.101; do echo "=== Device $device ===" soundtouch-cli --host $device source introspect-spotify done ``` 4. **Environment setup**: Set up your environment for easier usage: ```bash export SOUNDTOUCH_HOST=192.0.2.100 alias st='soundtouch-cli' st source introspect-spotify ```