def _search(self, query, context=None): """Search the iTunes API for an album track matching the provided query """ if context is not None: self.context.update(context) results = itunes.search_track(query) track = self._filter_results(results) LOGGER.info('iTunes Search Result: %s', str(track)) if track is None: LOGGER.error('{} not found in iTunes'.format(query)) return self.context.update(dict(Album=track.album, Genre=track.genre, contentID=track.id, Copyright=track.album.copyright)) # Albumart url = track.artwork.get('600', '') artwork = self.has_artwork(url.value) if artwork: self.context['Artwork'] = artwork self.context['Track #'] = '{}/{}'.format(self.context['Track #'], track.album.track_count) self.context['Release Date'] = track.album.release_date_raw self.context['Album Artist'] = self.context['Artist'] if track.json['trackExplicitness'].lower() == 'explicit': self.context['_explicit'] = 'Explicit'
def getiTunesTrack(search): results = itunes.search_track(query=search, limit=1) if results: # assume the first result is the best match data = results[0].json else: data = json.loads("{}") return data
def do_itunes_search(self, query): """This method uses the provided query for performing an iTunes audio track search """ self._update_progress() results = itunes.search_track(query) track = None for result in results: right_name = self.atoms['Name'] in result.get_name() right_artist = self.atoms['Artist'] == result.get_artist().name if right_name and right_artist: track = result break if track: # Album self.atoms['Album'] = track.get_album() # Albumart url = track.get_artwork() url = string.replace(url['60'], '60x60-50', '600x600-75') if self.has_artwork(url): pid = str(os.getpid()) art = os.path.abspath('.albumart{}.jpg'.format(pid)) self.atoms['Artwork'] = art.replace(' ', '\\ ') # Genre self.atoms['Genre'] = track.get_genre() album = track.get_album() self.atoms['Copyright'] = album.copyright self.atoms['Track #'] = '{}/{}'.format(self.atoms['Track #'], album.get_track_count()) self.atoms['Release Date'] = album.get_release_date_raw() self.atoms['Album Artist'] = self.atoms['Artist'] self.atoms['contentID'] = track.get_id() if track.json['trackExplicitness'].lower() == 'explicit': self.subler.explicitness = 'Explicit' self._update_progress() self.do_tagging() else: self.logger.error(u'{} not found in iTunes'.format(query)) self._update_progress()
def POST(self): data = web.input() search_terms = data["terms"] tracks = itunes.search_track(search_terms) playlist = [] for track in tracks[:MAX_TRACKS]: title = track.name artist = track.artist album = track.album if not artist or not album: continue for match in TITLE_BLACKLIST_PATTERN.findall(title): title = title.replace(match, "") minutes, seconds = divmod(track.duration, 60) duration = "%d:%02d" % (minutes, seconds) playlist.append([artist.name, album.name, title, duration]) return json.dumps(playlist)
def test_search_track_kind(): assert_equal( itunes.search_track('u2 achtung baby one')[0].get_type(), SONG_KIND)
def test_search_track(): assert_equal(itunes.search_track('u2 achtung baby one')[0].get_id(), U2_ONE_ID)
def test_search_track(): assert itunes.search_track('u2 achtung baby one')[0].id == U2_ONE_ID
def test_search_track_kind(): assert_equal(itunes.search_track('u2 achtung baby one')[0].get_type(), SONG_KIND)