Beispiel #1
0
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)))
Beispiel #2
0
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)