def lang(): f = 'original_languages' queue = [] for w in iter_works([f, 'title']): if f in w and w[f]: continue q = { 'type': '/type/edition', 'works': w['key'], 'languages': None, 'title': None, 'title_prefix': None } editions = [e for e in query_iter(q) if e['languages']] title = mk_norm(w['title']) if not editions or any(len(e['languages']) != 1 for e in editions): continue lang = [ e['languages'][0]['key'] for e in editions if mk_norm(get_title(e)) == title ] if len(lang) < 2: continue first = lang[0] if any(l != first for l in lang): continue print((w['key'], repr(w['title']), first, len(lang))) q = {'key': w['key'], f: {'connect': 'update_list', 'value': [first]}} queue.append(q) if len(queue) == 200: print(ol.write(queue, comment='add original language')) queue = [] print(ol.write(queue, comment='add original language'))
def lang(): f = 'original_languages' queue = [] for w in iter_works([f, 'title']): if f in w and w[f]: continue q = { 'type':'/type/edition', 'works': w['key'], 'languages': None, 'title': None, 'title_prefix': None } editions = [e for e in query_iter(q) if e['languages']] title = mk_norm(w['title']) if not editions or any(len(e['languages']) != 1 for e in editions): continue lang = [e['languages'][0]['key'] for e in editions if mk_norm(get_title(e)) == title] if len(lang) < 2: continue first = lang[0] if any(l != first for l in lang): continue print w['key'], `w['title']`, first, len(lang) q = { 'key': w['key'], f: { 'connect': 'update_list', 'value': [first]} } queue.append(q) if len(queue) == 200: print ol.write(queue, comment='add original language') queue = [] print ol.write(queue, comment='add original language')
def get_books(akey): q = { 'type':'/type/edition', 'authors': akey, '*': None } for e in query_iter(q): if not e.get('title', None): continue if len(e.get('authors', [])) != 1: continue # if 'works' in e: # continue if 'title_prefix' in e and e['title_prefix']: prefix = e['title_prefix'] if prefix[-1] != ' ': prefix += ' ' title = prefix + e['title'] else: title = e['title'] if title.strip('. ') in ['Publications', 'Works', 'Report', \ 'Letters', 'Calendar', 'Bulletin', 'Plays', 'Sermons', 'Correspondence']: continue m = re_parens.match(title) if m: title = m.group(1) n = mk_norm(title) book = { 'title': title, 'norm_title': n, 'key': e['key'], } if 'languages' in e: book['lang'] = [l['key'][3:] for l in e['languages']] if e.get('table_of_contents', None): if isinstance(e['table_of_contents'][0], basestring): book['table_of_contents'] = e['table_of_contents'] else: assert isinstance(e['table_of_contents'][0], dict) if e['table_of_contents'][0]['type'] == '/type/text': book['table_of_contents'] = [i['value'] for i in e['table_of_contents']] if not e.get('work_titles', None): yield book continue wt = e['work_titles'][0].strip('. ') if wt in ('Works', 'Selections'): yield book continue n_wt = mk_norm(wt) book['work_title'] = wt book['norm_wt'] = n_wt yield book