54 lines
1.6 KiB
Python
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
|
|
)
|
|
|