def parse_noresultfile(data, recid_patterns=(re_original_id,), sysno_patterns=None): """ This function will look for the original recid in 001 and any matching recids from given regular expression patterns in the textmarc format of given record. Returns a list of BibRec structure with found recids for original and matching records. """ record_pairs = [] sysno_gen = get_sysno_generator() options = {'text-marc':1, 'aleph-marc':0} for match in data: original_record_bibrec = create_records(match)[0][0] rec_id = record_get_field_value(original_record_bibrec, '001') sysno = sysno_gen.next() original_record_marc = create_marc_record(original_record_bibrec, sysno, options) matching_result_recids = [] for pattern in recid_patterns: matches = pattern.findall(original_record_marc) for match in matches: if type(match) is tuple: for res in match: if res != "": matching_result_recids = [res] break elif type(match) is str: matching_result_recids = [match] break if len(matching_result_recids) > 0: break matching_result_sysnos = [] for pattern in sysno_patterns: matches = pattern.findall(original_record_marc) for match in matches: if type(match) is tuple: for res in match: if res != "": matching_result_sysnos = [res] break elif type(match) is str: matching_result_sysnos = [match] break if len(matching_result_sysnos) > 0: break record_pairs.append((rec_id, matching_result_recids, matching_result_sysnos)) return record_pairs
def parse_resultfile(data, recid_patterns=(re_original_id,), recids=[], sysno_patterns=None, preserved_tags=[]): """ This function will look for the original recid and any matching recids in a BibMatch result file containing references to matching records in comments before every record in MARCXML format. Returns a list of BibRec structure with found recids for original and matching records. """ record_pairs = [] sysno_gen = get_sysno_generator() options = {'text-marc':1, 'aleph-marc':0} for index, match in enumerate(data): original_record_bibrec = create_records(match)[0][0] if record_has_field(original_record_bibrec, '001'): rec_id = record_get_field_value(original_record_bibrec, '001') else: sysno = sysno_gen.next() original_record_marc = create_marc_record(original_record_bibrec, sysno, options) rec_id = "" for pattern in recid_patterns: matches = pattern.findall(original_record_marc) if len(matches) > 0: rec_id = matches[0] break if recids: matching_result_recids = [recids[index]] else: matching_result_recids = re_matched_recid.findall(match) matching_result_sysnos = [] preserved_fields = {} print preserved_tags for tag in preserved_tags: try: print 'doing it' + tag preserved_fields[tag] = original_record_bibrec[tag] except KeyError: pass record_pairs.append((rec_id, matching_result_recids, matching_result_sysnos, preserved_fields)) return record_pairs
def from_bibrec_to_marc(record, sysno="", options={'text-marc':1, 'aleph-marc':0}): """ This function will convert a BibRec object into textmarc string """ if not sysno: sysno_gen = get_sysno_generator() sysno = sysno_gen.next() return create_marc_record(record, sysno, options)