55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
from spotframework.net.network import Network as Spotnet, NetworkUser
|
|
from fmframework.net.network import Network as Fmnet
|
|
from spotfm.timer import time, seconds_to_time_str
|
|
|
|
import logging
|
|
import os
|
|
|
|
spotframework_logger = logging.getLogger('spotframework')
|
|
fmframework_logger = logging.getLogger('fmframework')
|
|
spotfm_logger = logging.getLogger('spotfm')
|
|
|
|
log_format = '%(levelname)s %(name)s:%(funcName)s - %(message)s'
|
|
formatter = logging.Formatter(log_format)
|
|
|
|
stream_handler = logging.StreamHandler()
|
|
stream_handler.setFormatter(formatter)
|
|
|
|
spotframework_logger.addHandler(stream_handler)
|
|
fmframework_logger.addHandler(stream_handler)
|
|
spotfm_logger.addHandler(stream_handler)
|
|
|
|
spot_client = os.environ.get('SPOT_CLIENT')
|
|
spot_secret = os.environ.get('SPOT_SECRET')
|
|
spot_access = os.environ.get('SPOT_ACCESS_TOKEN')
|
|
spot_refresh = os.environ.get('SPOT_REFRESH_TOKEN')
|
|
fmclient = os.environ.get('FM_CLIENT')
|
|
fmuser = os.environ.get('FM_USER')
|
|
|
|
if spot_access is None and spot_refresh is None:
|
|
print('no spotify credentials')
|
|
exit(0)
|
|
|
|
if fmclient is None:
|
|
print('no last.fm credentials')
|
|
exit(0)
|
|
|
|
spotnet = Spotnet(NetworkUser(client_id=spot_client,
|
|
client_secret=spot_secret,
|
|
access_token=spot_access,
|
|
refresh_token=spot_refresh)).refresh_access_token()
|
|
|
|
while len(fmuser) == 0:
|
|
fmuser = input('last.fm username >> ')
|
|
|
|
fmnet = Fmnet(username=fmuser, api_key=fmclient)
|
|
|
|
top_artists = fmnet.top_artists(period=Fmnet.Range.OVERALL, limit=10)
|
|
|
|
artist_counts = dict()
|
|
for artist in top_artists:
|
|
artist_counts[artist.name] = time(spotnet=spotnet, fmnet=fmnet, artist=artist.name, username=fmnet.username)
|
|
|
|
for name, count in artist_counts.items():
|
|
print(name, f'{count}ms,', f'{count/1000}s,', seconds_to_time_str(milliseconds=count))
|