return prov_item_id
sql_query = '''SELECT item_id FROM provider_mappings
WHERE prov_item_id = ? AND provider = ? AND media_type = ?;'''
- cursor = await self._db.execute(sql_query,
- (prov_item_id, provider, media_type))
- item_id = await cursor.fetchone()
- if item_id:
- item_id = item_id[0]
- await cursor.close()
- return item_id
+ async with self._db.execute(
+ sql_query, (prov_item_id, provider, media_type)) as cursor:
+ item_id = await cursor.fetchone()
+ if item_id:
+ return item_id[0]
+ return None
async def search(self, searchquery, media_types: List[MediaType]):
''' search library for the given searchphrase '''
item_id = await self.mass.db.get_database_id(self.prov_id,
prov_item_id,
MediaType.Artist)
- if not item_id:
+ if item_id is not None:
# artist not yet in local database so fetch details
cache_key = f'{self.prov_id}.get_artist.{prov_item_id}'
artist_details = await cached(self.cache, cache_key,
track_artists = []
# we need to fetch track artists too
for track_artist in track_details.artists:
- db_track_artist = await self.artist(track_artist.item_id,
- lazy=False,
- ref_track=track_details)
+ if track_artist.provider == 'database':
+ db_track_artist = await self.mass.db.artist(
+ track_artist.item_id)
+ else:
+ db_track_artist = await self.artist(track_artist.item_id,
+ lazy=False,
+ ref_track=track_details)
if db_track_artist:
track_artists.append(db_track_artist)
track_details.artists = track_artists