def submit_isrcs(mb_release, sp_release): mbids = [] for track in mb_release['tracks']: mbids.append(track['gid']) isrcs = [] for track in sp_release['tracks']: this_isrc = [] for extid in track['external-ids']: if extid['type'] == 'isrc': this_isrc.append(extid['id'].upper()) isrcs.append(this_isrc) musicbrainzngs.submit_isrcs(dict(zip(mbids, isrcs)))
def submit_isrcs(info_mb, info_sp): mbids = [] for medium in info_mb['medium-list']: for track in medium['track-list']: mbids.append(track['recording']['id']) isrcs = [] for track in info_sp['tracks']: this_isrc = [] for extid in track['external-ids']: if extid['type'] == 'isrc': this_isrc.append(extid['id'].upper()) isrcs.append(this_isrc) musicbrainzngs.submit_isrcs(dict(zip(mbids, isrcs)))
def submit_isrcs(self, tracks2isrcs): logger.info("tracks2isrcs: %s", tracks2isrcs) while True: try: self.authenticate() musicbrainzngs.submit_isrcs(tracks2isrcs) except AuthenticationError as err: print_error("Invalid credentials: %s" % err) self.auth = False self.keyring_failed = True self.username = None continue except WebServiceError as err: print_error("Couldn't send ISRCs: %s" % err) sys.exit(1) else: print("Successfully submitted %d ISRCS." % len(tracks2isrcs)) break
if len(tracks2isrcs) == 0: print "No new ISRCs could be found." else: vals = tracks2isrcs.values() print "\nISRC | Recording" print "-" * 13 + "+" + "-" * 66 for key, val in sorted(tracks2isrcs.items(), key=lambda keyval: keyval[1]): if vals.count(val) > 1: print "The ISRC %s appears multiple times, I'm not going to submit it"\ % val tracks2isrcs.pop(key) continue print "%s | %s" % (val, key) if raw_input("Is this correct? [y/N]").lower() == "y": if len(tracks2isrcs.keys()) > 0: try: musicbrainzngs.submit_isrcs(tracks2isrcs) print "Successfully submitted", len(tracks2isrcs), "ISRCs." except musicbrainzngs.WebServiceError, e: print "Couldn't send ISRCs:", str(e) else: print "Nothing was submitted to the server." remove(filename) if __name__ == '__main__': main()
medium = release_data['release']['medium-list'][disc_number - 1] upload_data = zip( [(t['recording']['id'], t['recording']['title']) for t in medium['track-list']], [(t['title'], t['isrc']) for t in tracks]) for t in upload_data: print(u"Matching {} to {}".format(t[0][1], t[1][0])) confirm = (True if raw_input("Does this look ok? (y/n): ").lower() == 'y' else False) if confirm: print("Submitting...") submit_dict = {t[0][0]: [t[1][1]] for t in upload_data} pprint(submit_dict) mb.submit_isrcs(submit_dict) delete = (True if raw_input("Delete the CUE file? (y/n): ").lower() == 'y' else False) delete_list.append(path) print("-------------------------------------------") for f in delete_list: os.unlink(f) print("Done!")