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

51 lines
1.9 KiB
Python

#!/usr/local/hirad-venv/bin/python
from libs.networks import Network
from libs.database import Compare
from libs.track import get_track_details
import argparse
def get_tracks(network, table, num=100, first_ts=None, last_ts=None):
print(f'Getting {num} tracks from {table}...')
tracks_list = network.get_tracks(num, first_ts, last_ts)
for track in tracks_list:
artist, title, album, _, timestamp = get_track_details(track)
compare.write_into(table, artist, title, album, timestamp)
# last_track = tracks_list[-1]
# return last_track.timestamp
def compare_tables():
compare.compare()
difference = compare.read_difference()
print("Number of tracks to be synced: {0}".format(len(difference)))
if len(difference) > 0:
for track in difference:
artist, title, album, timestamp = track
mbid, duration = lastfm_network.get_track_mbid_duration(artist, title)
print(f"Track: {artist} - {title} - {album} - {timestamp} | {mbid} | {duration}")
lonestar_network.scrobble(artist, title, album, duration, timestamp, mbid)
else:
print("No difference found!")
def arguments():
parser = argparse.ArgumentParser(description="Compare scrobbled tracks")
parser.add_argument('-t', '--tracks', type=int, nargs='?', default=100, help="Number of tracks to compare")
args = parser.parse_args()
return args.tracks
if __name__ == '__main__':
number_of_tracks = arguments()
compare = Compare()
lastfm_network = Network(Network.get_network("LastFM"))
lonestar_network = Network(Network.get_network("LoneStar"))
get_tracks(lastfm_network, "LastFM", num=number_of_tracks)
get_tracks(lonestar_network, "LoneStar", num=number_of_tracks)
compare_tables()
compare.drop_table("LastFM")
compare.drop_table("LoneStar")
compare.drop_table("Difference")