def SEARCH_SONG(q="Tera Buzz", filters=[]): """Do the task by calling other functions.""" to_be_sorted = [] rest = [] metadata_providers = defaults.DEFAULT.METADATA_PROVIDERS GET_METADATA_ACTIONS = { 'itunes': get_from_itunes, 'gaana': get_from_gaana, 'deezer': get_from_deezer, 'saavn': get_from_saavn, 'lastfm': get_from_lastfm } broken_provider_counter = 0 for provider in metadata_providers: if provider in GET_METADATA_ACTIONS: data_provider = GET_METADATA_ACTIONS.get( provider, lambda _: None)(q) if data_provider: _extend_to_be_sorted_and_rest( data_provider, to_be_sorted, rest, filters) else: logger.warning( '"{}" isn\'t implemented. Skipping!'.format(provider) ) broken_provider_counter += 1 # to_be_sorted will be empty and it will return None anyway, no need # to do it here as well if broken_provider_counter == len(metadata_providers): logger.critical("{}".format( 'No metadata provider in the configuration is ' 'implemented. Please change it to something \ available or use the --skip-meta flag')) if not to_be_sorted: return None # Send the data to get sorted sorted_data = _search_tokens(q, to_be_sorted) # Add the unsorted data sorted_data += rest return sorted_data
def dwCover(song): """Download the song cover img from itunes.""" # Try to download the cover art as cover.jpg in temp logger.info("Preparing the album cover") try: imgURL = song.artwork_url_100 # Check if the passed imgURL is a local file # this is possible if the metadata was entered manually. imgURL = os.path.expanduser(imgURL) if os.path.exists(imgURL): # Probably a file, read it in binary and extract the data # then return. content = open(imgURL, "rb").read() with open(defaults.DEFAULT.COVER_IMG, 'wb') as f: f.write(content) return True # Else might be an URL try: # Try to get 512 cover art imgURL = imgURL.replace('100x100', '2048x2048') except Exception: pass r = requests.get(imgURL) with open(defaults.DEFAULT.COVER_IMG, 'wb') as f: f.write(r.content) return True except TimeoutError: prepend.PREPEND(2) print('Could not get album cover. Are you connected to internet?\a') return False except Exception as e: logger.warning( "Error while trying to download image, skipping!: {}".format(e)) return False else: return False