Spaces:
Running
Running
File size: 1,431 Bytes
65aae53 | 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 | import requests
from fastapi import HTTPException
import logging
logger = logging.getLogger(__name__)
async def search_itunes_tracks(query: str, limit: int = 1):
"""
Search iTunes for tracks with 30-second previews
"""
base_url = "https://itunes.apple.com/search"
try:
params = {
"term": query,
"entity": "song",
"limit": limit
}
response = requests.get(base_url, params=params)
response.raise_for_status()
results = response.json().get('results', [])
logger.info(f"Total tracks found: {len(results)}")
tracks = []
for track in results:
track_info = {
"name": track.get('trackName'),
"artist": track.get('artistName'),
"preview_url": track.get('previewUrl'),
"full_track_url": track.get('trackViewUrl'),
"album_image": track.get('artworkUrl100'),
"genre": track.get('primaryGenreName'),
"album": track.get('collectionName')
}
if track_info['preview_url']:
tracks.append(track_info)
return tracks[0] if tracks else None
except requests.RequestException as e:
logger.error(f"Error searching iTunes: {e}")
return None |