51 lines
1.9 KiB
Python
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")
|