def search(field, value): locs = search_query(field, value) print(locs) if locs: return show_locs(locs, value if field == 'isbn' else None) else: return value + ' not found'
def search(author, name): book_fields = ('title_prefix', 'title'); q = { 'type': '/type/edition', 'authors': author, 'title_prefix': None, 'title': None, 'isbn_10': None} found = list(query_iter(q)) db_author = '' names = set([name]) t = '' books = [] for e in found: locs = set() for i in e['isbn_10'] or []: locs.update(search_query('isbn', i)) if not locs: books.append((e['key'], (e['title_prefix'] or '') + e['title'], None, [])) continue found = data_from_marc(locs, name) if len(found) != 1: locs = [] for i in found.values(): locs.append(i) books.append((e['key'], (e['title_prefix'] or '') + e['title'], None, locs)) continue marc_author = found.keys()[0] locs = found.values()[0] names.update(marc_author[0:2]) books.append((e['key'], (e['title_prefix'] or '') + e['title'], marc_author, locs)) authors = [] names2 = set() for n in names: if ', ' in n: continue i = n.rfind(' ') names2.add("%s, %s" % (n[i+1:], n[:i])) names.update(names2) for n in names: for a in author_search(n): authors.append(a) for a in authors: q = { 'type': '/type/edition', 'authors': a['key'], 'title_prefix': None, 'title': None, 'isbn_10': None } a['editions'] = list(query_iter(q)) author_map = {} for key, title, a, locs in books: t += '<tr><td><a href="http://openlibrary.org' + key + '">' + web.htmlquote(title) + '</a>' t += '<br>' + ', '.join('<a href="http://openlibrary.org/show-marc/%s">%s</a>' % (i, i) for i in locs) + '</td>' # t += '<td>' + web.htmlquote(repr(a[2])) + '</td>' if a: if a[2] not in author_map: dates = {'birth_date': a[2][0], 'death_date': a[2][1], 'dates': a[2][2]} db_match = [db for db in authors if author_dates_match(dates, db)] author_map[a[2]] = db_match[0] if len(db_match) == 1 else None match = author_map[a[2]] if match: t += '<td><a href="http://openlibrary.org%s">%s-%s</a></td>' % (match['key'], match['birth_date'] or '', match['death_date'] or '') else: t += '<td>%s-%s (no match)</td>' % (dates['birth_date'] or '', dates['death_date'] or '') t += '</tr>\n' ret = '' if authors: ret += '<ul>' for a in authors: ret += '<li><a href="http://openlibrary.org%s">%s</a> (%s-%s) %d editions' % (a['key'], web.htmlquote(name), a['birth_date'] or '', a['death_date'] or '', len(a['editions'])) ret += '</ul>' return ret + '<table>' + t + '</table>'
def search(author, name): book_fields = ('title_prefix', 'title'); q = { 'type': '/type/edition', 'authors': author, 'title_prefix': None, 'title': None, 'isbn_10': None} found = list(query_iter(q)) db_author = '' names = set([name]) t = '' books = [] for e in found: locs = set() for i in e['isbn_10'] or []: locs.update(search_query('isbn', i)) if not locs: books.append((e['key'], (e['title_prefix'] or '') + e['title'], None, [])) continue found = data_from_marc(locs, name) if len(found) != 1: locs = [] for i in found.values(): locs.append(i) books.append((e['key'], (e['title_prefix'] or '') + e['title'], None, locs)) continue marc_author = found.keys()[0] locs = found.values()[0] names.update(marc_author[0:2]) books.append((e['key'], (e['title_prefix'] or '') + e['title'], marc_author, locs)) authors = [] names2 = set() for n in names: if ', ' in n: continue i = n.rfind(' ') names2.add("%s, %s" % (n[i+1:], n[:i])) names.update(names2) for n in names: for a in author_search(n): authors.append(a) for a in authors: q = { 'type': '/type/edition', 'authors': a['key'], 'title_prefix': None, 'title': None, 'isbn_10': None } a['editions'] = list(query_iter(q)) author_map = {} for key, title, a, locs in books: t += '<tr><td><a href="http://openlibrary.org' + key + '">' + web.htmlquote(title) + '</a>' t += '<br>' + ', '.join('<a href="http://openlibrary.org/show-marc/%s">%s</a>' % (i, i) for i in locs) + '</td>' # t += '<td>' + web.htmlquote(`a[2]`) + '</td>' if a: if a[2] not in author_map: dates = {'birth_date': a[2][0], 'death_date': a[2][1], 'dates': a[2][2]} db_match = [db for db in authors if author_dates_match(dates, db)] author_map[a[2]] = db_match[0] if len(db_match) == 1 else None match = author_map[a[2]] if match: t += '<td><a href="http://openlibrary.org%s">%s-%s</a></td>' % (match['key'], match['birth_date'] or '', match['death_date'] or '') else: t += '<td>%s-%s (no match)</td>' % (dates['birth_date'] or '', dates['death_date'] or '') t += '</tr>\n' ret = '' if authors: ret += '<ul>' for a in authors: ret += '<li><a href="http://openlibrary.org%s">%s</a> (%s-%s) %d editions' % (a['key'], web.htmlquote(name), a['birth_date'] or '', a['death_date'] or '', len(a['editions'])) ret += '</ul>' return ret + '<table>' + t + '</table>'
def search(field, value): locs = search_query(field, value) if locs: show_locs(locs, value if field == "isbn" else None) else: print value, " not found"