9 Commits

Author SHA1 Message Date
20xd6 883f594f4f Fix the output path of Artist Background.
The artist background had been saving to the folder the script was run from. This has now been resolved.
2024-10-14 11:08:17 -04:00
20xd6 c5ffadd1f0 Get the artist background.
Adds the artist background as a possible source of artist image.
2024-10-14 10:34:43 -04:00
20xd6 ea7396ff53 Sleep timer added.
A dely of 1 second has been added to keep the MusicBrainz API from dropping requests (503 errors).
2024-09-30 22:06:30 -04:00
20xd6 c01b4cdcdd Send a useragent in the request header to MB.
MusicBrainz desires an identifying header in the requests made to its API. This is now included.
2024-09-30 22:05:31 -04:00
20xd6 66ce579992 Add check for config in .local directory 2024-09-30 17:03:56 -04:00
20xd6 6f7e69411b Update code to remove a trialing _ from the artist name. 2024-09-25 21:09:10 -04:00
20xd6 fe8a4c2410 Add fetching of hdmusiclogo if artistthumb fails.
This will catch a few more artists and at least place something in their directory.
2024-09-20 14:12:54 -04:00
20xd6 858d68b491 Fix if statement from previous commit. 2024-09-20 14:01:00 -04:00
20xd6 f2d21185af Check for artist.png when looking for local art. 2024-09-20 13:58:58 -04:00
3 changed files with 39 additions and 12 deletions
+26 -9
View File
@@ -2,8 +2,10 @@ import requests
import os
def get_mb_id(artist_name, mb_confidence):
mb_url = f'https://musicbrainz.org/ws/2/artist?query=artist:%22{artist_name}%22&fmt=json'
response = requests.get(mb_url)
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:
@@ -23,14 +25,29 @@ def get_image(mb_id, ftv_api_key, artist_path):
response = requests.get(ftv_api_url)
ftv_data =response.json()
if not ('status' 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)
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 ('artistbackground' in ftv_data):
art_url = ftv_data['artistbackground'][0]['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("Error downloading: ", response.status_code)
print("Thumb not found.")
else:
error_msg = ftv_data['error message']
print(f"Error: {error_msg}")
+4 -1
View File
@@ -4,4 +4,7 @@ def get_all(path):
return [name for name in os.listdir(path) if os.path.isdir(os.path.join(path, name))]
def has_artist_art(path):
return os.path.exists(os.path.join(path, "artist.jpg"))
if(os.path.exists(os.path.join(path, "artist.jpg")))or (os.path.exists(os.path.join(path, "artist.png"))):
return True
else:
return False
+9 -2
View File
@@ -2,11 +2,17 @@
import configparser
import os
from time import sleep
import dir_activities
import api_calls
config = configparser.ConfigParser()
config.read('config.ini')
if (os.path.exists('config.ini')):
conf_path = 'config.ini'
else:
conf_path = os.path.join(os.path.expanduser("~"), ".local/share/get_artist_art/config.ini")
config.read(conf_path)
music_path = config['music']['dir']
ftv_api_key = config['fanart_tv']['api_key']
@@ -19,7 +25,7 @@ for artist in dir_list:
artist_path = os.path.join(music_path, artist)
if (not(dir_activities.has_artist_art(artist_path))):
print(dir_activities.has_artist_art(artist_path))
print(str(count) + ": " + artist)
print(str(count) + ": " + artist.strip('_'))
try:
found_status, mb_id = api_calls.get_mb_id(artist, mb_confidence)
# print("Getting ", artist_image)
@@ -33,3 +39,4 @@ for artist in dir_list:
print(e)
count += 1
sleep(1)