fail
This commit is contained in:
parent
c33f580edf
commit
0e71dcd9a8
5 changed files with 53 additions and 41 deletions
|
|
@ -51,41 +51,44 @@ def lookup_provider(arg):
|
|||
def lookup(key, value):
|
||||
if not isvalid_id(key, value):
|
||||
return {}
|
||||
data = {key: [value]}
|
||||
ids = set([(key, value)])
|
||||
provider_data = {}
|
||||
done = False
|
||||
if key == 'isbn':
|
||||
data = google.info(key, value)
|
||||
else:
|
||||
data = {key: [value]}
|
||||
ids = set([(key, value)])
|
||||
provider_data = {}
|
||||
done = False
|
||||
|
||||
while not done:
|
||||
done = True
|
||||
for provider, id in providers:
|
||||
result = lookup_provider((provider, id, ids, key, value))
|
||||
done = not result - ids
|
||||
ids.update(result)
|
||||
logger.debug('FIXME: sort ids')
|
||||
ids = sorted(ids, key=lambda i: ox.sort_string(''.join(i)))
|
||||
logger.debug('IDS %s', ids)
|
||||
for k, v in ids:
|
||||
for provider, id in providers:
|
||||
if id == k:
|
||||
if provider not in provider_data:
|
||||
provider_data[provider] = {}
|
||||
for k_, v_ in globals()[provider].lookup(v).items():
|
||||
if k_ not in provider_data[provider]:
|
||||
provider_data[provider][k_] = v_
|
||||
for provider in sorted(
|
||||
list(provider_data.keys()),
|
||||
key=lambda x: -len(provider_data[x])
|
||||
):
|
||||
logger.debug('%s %s %s', provider, len(provider_data[provider]), list(provider_data[provider].keys()))
|
||||
for k_, v_ in provider_data[provider].items():
|
||||
if not k_ in data:
|
||||
data[k_] = v_
|
||||
for k, v in ids:
|
||||
if k not in data:
|
||||
data[k] = []
|
||||
if v not in data[k]:
|
||||
data[k].append(v)
|
||||
while not done:
|
||||
done = True
|
||||
for provider, id in providers:
|
||||
result = lookup_provider((provider, id, ids, key, value))
|
||||
done = not result - ids
|
||||
ids.update(result)
|
||||
logger.debug('FIXME: sort ids')
|
||||
ids = sorted(ids, key=lambda i: ox.sort_string(''.join(i)))
|
||||
logger.debug('IDS %s', ids)
|
||||
for k, v in ids:
|
||||
for provider, id in providers:
|
||||
if id == k:
|
||||
if provider not in provider_data:
|
||||
provider_data[provider] = {}
|
||||
for k_, v_ in globals()[provider].lookup(v).items():
|
||||
if k_ not in provider_data[provider]:
|
||||
provider_data[provider][k_] = v_
|
||||
for provider in sorted(
|
||||
list(provider_data.keys()),
|
||||
key=lambda x: -len(provider_data[x])
|
||||
):
|
||||
logger.debug('%s %s %s', provider, len(provider_data[provider]), list(provider_data[provider].keys()))
|
||||
for k_, v_ in provider_data[provider].items():
|
||||
if not k_ in data:
|
||||
data[k_] = v_
|
||||
for k, v in ids:
|
||||
if k not in data:
|
||||
data[k] = []
|
||||
if v not in data[k]:
|
||||
data[k].append(v)
|
||||
for key in [k['id'] for k in settings.config['itemKeys'] if isinstance(k['type'], list)]:
|
||||
if key in data and not isinstance(data[key], list):
|
||||
data[key] = [data[key]]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue