Controlador: app/Http/Controllers/Api/MusicSearchController.php (348 líneas)
Integra con la iTunes Search API para buscar canciones. Todos los endpoints son públicos.
/api/music/search (pública)Buscar canciones en iTunes.
Query params:
| Param | Tipo | Default | Descripción |
|—|—|—|—|
| query | string (required) | — | Término de búsqueda (min 2, max 100 chars) |
| limit | integer | 20 | Máximo resultados (1-50) |
| country | string | US | Código de país ISO (2 chars) |
Ejemplo:
GET /api/music/search?query=Blinding+Lights&limit=10&country=US
Response:
{
"success": true,
"data": [
{
"trackId": 1499885833,
"trackName": "Blinding Lights",
"artistName": "The Weeknd",
"collectionName": "After Hours",
"artworkUrl100": "https://is1-ssl.mzstatic.com/.../100x100bb.jpg",
"artworkUrl60": "https://is1-ssl.mzstatic.com/.../60x60bb.jpg",
"previewUrl": "https://audio-ssl.itunes.apple.com/.../30s_preview.m4a",
"trackViewUrl": "https://music.apple.com/us/album/.../1499885833",
"trackTimeMillis": 200040,
"country": "US",
"primaryGenreName": "Pop",
"releaseDate": "2020-03-20T...",
"artworkUrlHigh": "https://is1-ssl.mzstatic.com/.../600x600bb.jpg",
"duration": "3:20",
"hasPreview": true,
"appleMusicUrl": "https://music.apple.com/us/album/.../1499885833",
"spotifySearchUrl": "https://open.spotify.com/search/The%20Weeknd%20Blinding%20Lights"
}
],
"count": 10
}
Flujo interno (searchTracks):
md5(query + limit + country)HTTP GET https://itunes.apple.com/search con params:term, media=music, entity=song, limit, country, explicit=NoartworkUrlHigh: reemplaza 100x100 → 600x600 en la URL del artworkduration: formatea millis → "3:20"hasPreview: verifica si hay previewUrlspotifySearchUrl: https://open.spotify.com/search/{artist}+{track} (URL encoded)/api/music/track (pública)Obtener información de un track específico por ID.
Query params: trackId (required, integer)
GET /api/music/track?trackId=1499885833
Response: Un solo objeto track con la misma estructura que los resultados de search.
Cache: Individual por trackId, TTL 1 hora.