"""Make a conflict report from acrcloud matches with rights claim data""" import csv import json import config from slugify import slugify from lambdacommon import mysql import query import util if __name__ == '__main__': try: with mysql.mysql_connection(**config.DB_CONFIG) as conn: with conn.cursor() as cursor: cursor.execute(query.GET_ACRCLOUD_MATCHES) records = cursor.fetchall() conflicts = [] for record in records: conflict = { 'acr_upc': record['acr_upc'], 'orch_upc': record['orch_upc'], 'acr_label': record['acr_label'], 'orch_label': record['orch_label'], 'acr_isrc': record['acr_isrc'], 'orch_isrc': record['orch_isrc'], 'acr_artist': record['acr_artist'], 'orch_artist': record['orch_artist'], 'acr_album': record['acr_album'], 'orch_album': record['orch_album'], 'acr_title': record['acr_title'], 'orch_title': record['orch_title'], 'conflict_reason': '', 'conflict_type': '', 'territories': '', 'distributor': '', 'policy': '', 'owners': '' } if record['acr_isrc'] != record['orch_isrc']: conflict['conflict_type'] = 'ISRC,' if slugify(record['acr_title']) != slugify(record['orch_title']): conflict['conflict_reason'] = "title," if slugify(record['acr_artist']) != slugify(record['orch_artist']): conflict['conflict_reason'] += "artist," if slugify(record['acr_album']) != slugify(record['orch_album']): conflict['conflict_reason'] += "album," if slugify(record['acr_label'] or '') != slugify(record['orch_label'] or ''): conflict['conflict_reason'] += "label," if conflict['conflict_reason'] != '': conflict['conflict_type'] += 'metadata' response = json.loads(record['response']) if 'rights_claim' in response: rights = response['rights_claim'] for right in rights: conflict['territories'] += ','.join(right['territories']) + '||' if 'territories' in right else '||' conflict['distributor'] += right['distributor']['name'] + '||' conflict['policy'] += right['rights_claim_policy'] + '||' if 'rights_claim_policy' in right else '||' conflict['owners'] += ','.join([o['name'] for o in right['rights_owners']]) + '||' if 'rights_owners' in right else '||' conflicts.append(conflict) with open('conflict.csv', 'w') as csvfile: wr = csv.DictWriter(csvfile, quoting=csv.QUOTE_ALL, fieldnames=conflicts[0].keys()) wr.writeheader() wr.writerows(conflicts) except Exception as e: config.logger.exception(str(e)) raise e