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