def _process_asin_relation(try_list, relation): match = AMAZON_ASIN_URL_REGEX.match(relation.target[0].text) if match is not None: asinHost = match.group(1) asin = match.group(2) if asinHost in AMAZON_SERVER: serverInfo = AMAZON_SERVER[asinHost] else: serverInfo = AMAZON_SERVER['amazon.com'] host = serverInfo['server'] path_l = AMAZON_IMAGE_PATH % (asin, serverInfo['id'], 'L') path_m = AMAZON_IMAGE_PATH % (asin, serverInfo['id'], 'M') _try_list_append_image_url(try_list, QUrl("http://%s:%s" % (host, path_l))) _try_list_append_image_url(try_list, QUrl("http://%s:%s" % (host, path_m)))
def _relations_to_metadata(relation_lists, m): for relation_list in relation_lists: if relation_list.target_type == 'artist': for relation in relation_list.relation: artist = relation.artist[0] value = _translate_artist_node(artist)[0] or artist.name[0].text reltype = relation.type attribs = [] if 'attribute_list' in relation.children: attribs = [a.text for a in relation.attribute_list[0].attribute] if reltype in ('vocal', 'instrument', 'performer'): name = 'performer:' + _parse_attributes(attribs, reltype) elif reltype == 'mix-DJ' and len(attribs) > 0: if not hasattr(m, "_djmix_ars"): m._djmix_ars = {} for attr in attribs: m._djmix_ars.setdefault(attr.split()[1], []).append(value) continue else: try: name = _artist_rel_types[reltype] except KeyError: continue if value not in m[name]: m.add(name, value) elif relation_list.target_type == 'work': for relation in relation_list.relation: if relation.type == 'performance': work_to_metadata(relation.work[0], m) elif relation_list.target_type == 'url': for relation in relation_list.relation: if relation.type == 'amazon asin': url = relation.target[0].text match = AMAZON_ASIN_URL_REGEX.match(url) if match is not None and 'asin' not in m: m['asin'] = match.group(2) if relation.type == 'license': url = relation.target[0].text m.add('license', url)