scrobbler/libs/networks.py
2024-07-07 09:19:48 +03:30

54 lines
1.6 KiB
Python

import pylast
from libs.config import Config
config = Config()
api_key, api_secret, username, password = config.get_config_values()
class Network:
def __init__(self, network):
self.network = network
self.user = username
@staticmethod
def get_network(network_name):
if network_name == "LastFM":
network = pylast.LastFMNetwork(
api_key=api_key,
api_secret=api_secret,
username=username,
password_hash=pylast.md5(password)
)
return network
elif network_name == "LoneStar":
network = pylast.LibreFMNetwork(
api_key=api_key,
api_secret=api_secret,
username=username,
password_hash=pylast.md5(password)
)
return network
else:
raise ValueError("Unknown network name provided!")
def get_tracks(self, number, first, last):
tracks_list = (self.network.get_user(self.user)
.get_recent_tracks(limit=number, time_from=first, time_to=last))
return tracks_list
def get_track_mbid_duration(self, artist, title):
net = self.get_network("LastFM")
track = net.get_track(artist=artist, title=title)
return track.get_mbid(), track.get_duration()
def scrobble(self, artist, title, album, duration, timestamp, mbid):
self.network.scrobble(
artist=artist,
title=title,
album=album,
duration=duration,
timestamp=timestamp,
mbid=mbid
)