add last fm similar artists to db table

+ add db methods for the above
+ try and discard last fm store
This commit is contained in:
mungai-njoroge
2023-07-01 01:39:39 +03:00
parent 4a9d6bc3e6
commit f5de09bd09
11 changed files with 209 additions and 49 deletions
+14 -5
View File
@@ -1,24 +1,33 @@
"""
Requests related to artists
"""
from pprint import pprint
import requests
from app import settings
from app.utils.hashing import create_hash
from requests import ConnectionError
import urllib.parse
def fetch_similar_artists(name: str):
"""
Fetches similar artists from Last.fm
"""
url = f"https://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist={name}&api_key=" \
f"{settings.Keys.LASTFM_API}&format=json&limit=250"
url = f"https://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist={urllib.parse.quote_plus(name, safe='')}&api_key={settings.Keys.LASTFM_API}&format=json&limit=250"
response = requests.get(url, timeout=10)
response.raise_for_status()
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
except ConnectionError:
return []
data = response.json()
artists = data["similarartists"]["artist"]
try:
artists = data["similarartists"]["artist"]
except KeyError:
return []
for artist in artists:
yield create_hash(artist["name"])