#!/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")