Changes the internal ratelimiting scheme.
Rather than ratelimit to one request per-second, attempt to detect the MusicBrainz API ratelimiting. The API will return HTTP 503 errors once ratelimiting has begun. Once this has been detected, the script will wait 1 second before continuing processing.
This commit is contained in:
parent
ea7396ff53
commit
386f17779b
47
api_calls.py
47
api_calls.py
@ -1,47 +0,0 @@
|
||||
import requests
|
||||
import os
|
||||
|
||||
def get_mb_id(artist_name, mb_confidence):
|
||||
artist_name = artist_name.strip('_')
|
||||
mb_url = f'https://musicbrainz.org/ws/2/artist?query=artist:"{artist_name}"&fmt=json'
|
||||
header = {'User-Agent': 'get_artist_art.py/1.0'}
|
||||
response = requests.get(mb_url, headers=header)
|
||||
if response.status_code == 200:
|
||||
mb_data = response.json()
|
||||
if mb_data['count'] > 0:
|
||||
if mb_data['artists'][0]['score'] > mb_confidence:
|
||||
return True, mb_data['artists'][0]['id']
|
||||
else:
|
||||
print("No artist found of hight enough confidance.")
|
||||
else:
|
||||
print("No artist found.")
|
||||
return False, ""
|
||||
else:
|
||||
print(f"Error: {response.status_code}")
|
||||
return False, ""
|
||||
|
||||
def get_image(mb_id, ftv_api_key, artist_path):
|
||||
ftv_api_url = f'https://webservice.fanart.tv/v3/music/{mb_id}?api_key={ftv_api_key}'
|
||||
response = requests.get(ftv_api_url)
|
||||
ftv_data =response.json()
|
||||
if not ('status' in ftv_data):
|
||||
if ('artistthumb' in ftv_data):
|
||||
art_url = ftv_data['artistthumb'][0]['url']
|
||||
print(art_url)
|
||||
response = requests.get(art_url)
|
||||
if response.status_code == 200:
|
||||
with open(os.path.join(artist_path, 'artist.jpg'), 'wb') as f:
|
||||
f.write(response.content)
|
||||
elif ('hdmusiclogo' in ftv_data):
|
||||
art_url = ftv_data['hdmusiclogo'][0]['url']
|
||||
response = requests.get(art_url)
|
||||
if response.status_code == 200:
|
||||
with open(os.path.join(artist_path, 'artist.png'), 'wb') as f:
|
||||
f.write(response.content)
|
||||
else:
|
||||
print("Error downloading: ", response.status_code)
|
||||
else:
|
||||
print("Thumb not found.")
|
||||
else:
|
||||
error_msg = ftv_data['error message']
|
||||
print(f"Error: {error_msg}")
|
@ -39,4 +39,4 @@ for artist in dir_list:
|
||||
print(e)
|
||||
|
||||
count += 1
|
||||
sleep(1)
|
||||
#sleep(1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user