mirror of
https://github.com/Dvorinka/swingmusic-extended.git
synced 2026-06-03 20:13:02 +00:00
4a9f804e70
+ port populate to new db interface
+ add genrehashes and hash info to tracks
+ properly structure new db table files
+ move helpers to dedicated utils file
+ move settings from db to config file
+ move artists, albums, auth and favorites endpoint to new db interface
+ use folder store to index filepaths
+ paginate favorite pages
+ 56 moretiny changes 😅
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
"""
|
|
Requests related to artists
|
|
"""
|
|
|
|
import urllib.parse
|
|
|
|
import requests
|
|
from requests import ConnectionError, HTTPError, ReadTimeout
|
|
|
|
from app.models.lastfm import SimilarArtistEntry
|
|
from app.utils.hashing import create_hash
|
|
|
|
|
|
def fetch_similar_artists(name: str):
|
|
"""
|
|
Fetches similar artists from Last.fm
|
|
"""
|
|
url = f"https://kerve.last.fm/kerve/similarartists?artist={urllib.parse.quote_plus(name, safe='')}&autocorrect=1&tracks=1&image_size=large&limit=250&format=json"
|
|
|
|
try:
|
|
response = requests.get(url, timeout=10)
|
|
response.raise_for_status()
|
|
except (ConnectionError, ReadTimeout, HTTPError):
|
|
return None
|
|
|
|
data = response.json()
|
|
|
|
try:
|
|
artists = data["results"]["artist"]
|
|
except KeyError:
|
|
return []
|
|
|
|
return [
|
|
SimilarArtistEntry(
|
|
**{
|
|
"artisthash": create_hash(artist["name"]),
|
|
"name": artist["name"],
|
|
"weight": artist["weight"],
|
|
"listeners": int(artist["listeners"]),
|
|
"scrobbles": int(artist["scrobbles"]),
|
|
}
|
|
)
|
|
for artist in artists
|
|
]
|