Initial CarPlay audio server implementation with file management, playlists, and album/single classification

This commit is contained in:
2025-12-07 22:27:47 +00:00
commit 58bb44dfb0
14 changed files with 1164 additions and 0 deletions

82
server-api-example.md Normal file
View File

@@ -0,0 +1,82 @@
# Server API Example
Your server should provide an API endpoint that returns audio track information. Here's what the app expects:
## Endpoint: GET /api/tracks
Returns a JSON array of audio tracks with their streaming URLs.
### Response Format:
```json
{
"tracks": [
{
"id": "unique-track-id-1",
"title": "Song Title",
"artist": "Artist Name",
"album": "Album Name",
"duration": 180,
"streamURL": "http://your-server.com/audio/track1.mp3",
"artworkURL": "http://your-server.com/artwork/track1.jpg"
},
{
"id": "unique-track-id-2",
"title": "Another Song",
"artist": "Another Artist",
"album": "Another Album",
"duration": 240,
"streamURL": "http://your-server.com/audio/track2.mp3",
"artworkURL": "http://your-server.com/artwork/track2.jpg"
}
]
}
```
### Field Descriptions:
- `id`: Unique identifier for the track
- `title`: Track title
- `artist`: Artist name
- `album`: Album name (optional)
- `duration`: Track duration in seconds
- `streamURL`: Direct URL to the audio file (mp3, m4a, etc.)
- `artworkURL`: URL to album artwork image (optional)
## Audio File Requirements:
- Supported formats: MP3, M4A, AAC, WAV
- Files should be accessible via HTTP/HTTPS
- Consider using HTTP range requests for better streaming performance
- HTTPS recommended for production
## Example Server Implementation (Node.js/Express):
```javascript
app.get('/api/tracks', (req, res) => {
const tracks = [
{
id: '1',
title: 'My Song',
artist: 'My Artist',
album: 'My Album',
duration: 180,
streamURL: 'http://localhost:3000/audio/song1.mp3',
artworkURL: 'http://localhost:3000/artwork/song1.jpg'
}
];
res.json({ tracks });
});
app.use('/audio', express.static('path/to/audio/files'));
app.use('/artwork', express.static('path/to/artwork/files'));
```
## Configuration:
Update the `baseURL` in `CarPlayAudioApp/Services/AudioService.swift`:
```swift
private let baseURL = "http://your-server.com/api"
```