def get_records_from_marc(isbn): if isbn not in db: return # for loc in db[isbn].split(' '): # data = get_data(loc) # print loc # want = ['100', '110', '111', '240', '245', '260'] + [str(i) for i in range(500,600) if i not in (505, 520)] # for tag, line in get_tag_lines(data, set(want)): # sub = list(get_all_subfields(line)) # if tag.startswith('5'): # assert len(sub) == 1 and sub[0][0] == 'a' # note = sub[0][1] # if note.find('ublish') != -1 or note.find('riginal') != -1: # print ' note:', note # continue # print ' ', tag, sub # print recs = [(loc, build_record(get_data(loc))) for loc in db[isbn].split(' ')] keys = set() print for loc, rec in recs: print ' ', loc # keys.update([k for k in rec.keys() if k.find('title') != -1 or k in ('authors', 'title', 'contributions', 'work_title')]) keys.update(rec.keys()) print for k in keys: print k for loc, rec in recs: print " ", rec.get(k, '###') print print
def get_records_from_marc(isbn): if isbn not in db: return # for loc in db[isbn].split(' '): # data = get_data(loc) # print loc # want = ['100', '110', '111', '240', '245', '260'] + [str(i) for i in range(500,600) if i not in (505, 520)] # for tag, line in get_tag_lines(data, set(want)): # sub = list(get_all_subfields(line)) # if tag.startswith('5'): # assert len(sub) == 1 and sub[0][0] == 'a' # note = sub[0][1] # if note.find('ublish') != -1 or note.find('riginal') != -1: # print ' note:', note # continue # print ' ', tag, sub # print recs = [(loc, build_record(get_data(loc))) for loc in db[isbn].split(' ')] keys = set() print for loc, rec in recs: print ' ', loc # keys.update([k for k in rec.keys() if k.find('title') != -1 or k in ('authors', 'title', 'contributions', 'work_title')]) keys.update(rec.keys()) print for k in keys: print k for loc, rec in recs: print " ", rec.get(k, '###') print print
def show_locs(locs, isbn): recs = [(loc, build_record(marc_data(loc))) for loc in locs] keys = set() ret = "records found from %d libraries<br>" % len(recs) ret += '<ul>' for loc, rec in recs: s = loc[:loc.find('/')] ret += '<li><a href="http://openlibrary.org/show-marc/%s">%s</a>' % ( loc, s) keys.update([k for k in rec.keys()]) for f in 'uri': if f in rec: del rec[f] ret += '</ul>' keys -= set(['uri']) ret += '<table>' first_key = True first = [] for f in [ 'isbn_10', 'title', 'subtitle', 'by_statement', 'authors', 'contributions' ]: if f in keys: first += [f] keys -= set([f]) for k in first + list(keys): v = [(rec.get(k, None), loc) for loc, rec in recs] # if k == 'isbn_10' and not isbn and v: # isbn = most_freq_isbn(v) if k == 'languages': v = [([i['key'][3:] for i in l] if l else None, loc) for l, loc in v] if all(i is None or (isinstance(i, list) and len(i) == 1) for i, loc in v): v = [(i[0] if i else None, loc) for i, loc in v] ret += '<tr><th valign="top">%s</th><td>' % k if any(isinstance(i, list) or isinstance(i, dict) for i, loc in v): if k == 'authors': # easiest to switch to raw MARC display v = [(marc_authors(marc_data(loc)), loc) for i, loc in v] elif k == 'isbn_10': v = [(list_to_html(sorted(i)), loc) if i else (None, loc) for i, loc in v] else: v = [(list_to_html(i), loc) if i else (None, loc) for i, loc in v] else: v = [(esc(i), loc) for i, loc in v] # print repr([i[0] for i in v]), '<br>' ret += counts_html(v) if isbn and first_key: ret += '<td valign="top" rowspan="%d"><img src="https://covers.openlibrary.org/b/isbn/%s-L.jpg">' % ( len(first) + len(keys), isbn) first_key = False ret += '</td></tr>' ret += '</table>' return ret
def show_locs(locs, isbn): recs = [(loc, build_record(marc_data(loc))) for loc in locs] keys = set() ret = "records found from %d libraries<br>" % len(recs) ret += "<ul>" for loc, rec in recs: s = loc[: loc.find("/")] ret += '<li><a href="http://openlibrary.org/show-marc/%s">%s</a>' % (loc, s) keys.update([k for k in rec.keys()]) for f in "uri": if f in rec: del rec[f] ret += "</ul>" keys -= set(["uri"]) ret += "<table>" first_key = True first = [] for f in ["isbn_10", "title", "subtitle", "by_statement", "authors", "contributions"]: if f in keys: first += [f] keys -= set([f]) for k in first + list(keys): v = [(rec.get(k, None), loc) for loc, rec in recs] # if k == 'isbn_10' and not isbn and v: # isbn = most_freq_isbn(v) if k == "languages": v = [([i["key"][3:] for i in l] if l else None, loc) for l, loc in v] if all(i is None or (isinstance(i, list) and len(i) == 1) for i, loc in v): v = [(i[0] if i else None, loc) for i, loc in v] ret += '<tr><th valign="top">%s</th><td>' % k if any(isinstance(i, list) or isinstance(i, dict) for i, loc in v): if k == "authors": # easiest to switch to raw MARC display v = [(marc_authors(marc_data(loc)), loc) for i, loc in v] elif k == "isbn_10": v = [(list_to_html(sorted(i)), loc) if i else (None, loc) for i, loc in v] else: v = [(list_to_html(i), loc) if i else (None, loc) for i, loc in v] else: v = [(esc(i), loc) for i, loc in v] # print `[i[0] for i in v]`, '<br>' ret += counts_html(v) if isbn and first_key: ret += '<td valign="top" rowspan="%d"><img src="http://covers.openlibrary.org/b/isbn/%s-L.jpg">' % ( len(first) + len(keys), isbn, ) first_key = False ret += "</td></tr>" ret += "</table>" return ret