Exemplo n.º 1
0
def parse_speaker_names(Record):
	namesLNFN = Record.fieldedData['lnfn'].split('|')
	if namesLNFN != ['']:
		for name in namesLNFN:
			addedEntry = fields.DataField('700','1','\\',)
			for x in [
				fields.Subfield('a',name),
				fields.Subfield('e','speaker')
				]:
				addedEntry.subfields.append(x)
			Record.dataFields.append(addedEntry)
	speakers = Record.fieldedData['Speakers'].split('|')
	if speakers != ['']:
		titleProper = fields.DataField('245','0','0')
		date = Record.customProperties['yyyymmdd']
		try:
			if all([isinstance(int(d),int) for d in date]):
				dateFinal = "{}/{}/{}".format(date[:4],date[4:6],date[6:8])
		except:
			dateFinal = date
		for x in [
			fields.Subfield(
				'a',
				"[{}. Speaking at the Pacific Film Archive: {}.] /".format(
					', '.join(speakers),
					dateFinal
					)
				),
			fields.Subfield(
				'c',
				"UC Berkeley Art Museum and Pacific Film Archive."
				)
			]:
			titleProper.subfields.append(x)
		Record.dataFields.append(titleProper)
Exemplo n.º 2
0
def parse_csv_data(Record):
    for field, elements in MARCmapper.MARCmapper.items():
        if not elements['instructions']:
            # i.e., if there are not separate processing instructions
            if field in Record.fieldedData and Record.fieldedData[
                    field] not in (None, "None", "", " "):
                # i.e., if there is actually data in the CSV
                theValue = Record.fieldedData[field]
                marcField = fields.DataField(elements['tag'], elements['ind1'],
                                             elements['ind2'])
                # PARSE OUT ALL THE SUBFIELDS
                for subfieldDict in elements['subfields']:
                    if 'prefix' in subfieldDict.keys():
                        theValue = subfieldDict['prefix'] + theValue
                    if 'suffix' in subfieldDict.keys():
                        theValue = theValue + subfieldDict['suffix']
                    for key, value in subfieldDict.items():
                        if not key in ('prefix', 'suffix'):
                            if value == 'value':
                                sfContent = theValue
                            else:
                                sfContent = value

                            theSF = fields.Subfield(key, sfContent)
                            marcField.subfields.append(theSF)
                # ADD THE FIELD TO THE RECORD
                Record.dataFields.append(marcField)
Exemplo n.º 3
0
def parse_recording_date(Record):
	date = Record.fieldedData['recordingDate']
	try:
		# this is the date format from filemaker
		# CHECK FOR EITHER PST OR PDT!!!
		date = datetime.strptime(date,'%a %b %d %H:%M:%S PST %Y')
		yyyymmdd = datetime.strftime(date,'%Y%m%d')
		# print(date)#,yyyymmdd)
	except:
		try:
			date = datetime.strptime(date,'%a %b %d %H:%M:%S PDT %Y')
			yyyymmdd = datetime.strftime(date,'%Y%m%d')
		except:
			yyyymmdd = 'date unknown'

	Record.customProperties['yyyymmdd'] = yyyymmdd
	if len(Record.customProperties['yyyymmdd']) == 8:
		recDate = fields.DataField('033','0','0')
		for x in [
			fields.Subfield('a',Record.customProperties['yyyymmdd']),
			fields.Subfield('b','4360'),
			fields.Subfield('c','B5')
			]:
			recDate.subfields.append(x)
		Record.dataFields.append(recDate)
Exemplo n.º 4
0
def parse_film_title_subjects(Record):
	titles = Record.fieldedData['FilmTitles'].split('|')
	if titles != ['']:
		for title in titles:
			subj = fields.DataField('630','\\','4')
			subj.subfields.append(
				fields.Subfield('a',title+" (Motion Picture)")
				)
			Record.dataFields.append(subj)
Exemplo n.º 5
0
def set_duration(Record):
	duration = None
	if 'duration' in Record.fieldedData:
		duration = Record.fieldedData['duration']
		print(duration)
		for dataField in Record.dataFields:
			if dataField.tag == '300':
				for subfield in dataField.subfields:
					if subfield.subfieldCharacter == 'a':
						subfield.value = "{} ({})".format(subfield.value,duration)
						# print(subfield.value)
		hhmmss = duration.replace(":","")
		print(hhmmss)
		if len(hhmmss) < 6:
			hhmmss = hhmmss.zfill(6)
		threeOhSix = fields.DataField("306","\\","\\")
		threeOhSix.subfields.append(fields.Subfield('a',hhmmss))


		Record.dataFields.append(threeOhSix)
Exemplo n.º 6
0
def add_collection_defaults(Record):
	'''
	ADD COLLECTION-SPECIFIC DEFAULT FIELDS
	This is stuff applicable specifically to our CLIR project.
	Presumably this kind of set of fields could be adapted to any
	bulk creation of a collection-bound set of records.
	These are all streaming audio recordings digitized from tapes
	with very similar provenance, so there is a lot that is consistent
	across records for the entire collectoin.
	'''
	### 040
	ohFourOh = fields.DataField('040','\\','\\')
	for x in [
		fields.Subfield(
			'a',
			'CUY'
			),
		fields.Subfield(
			'b',
			'eng'
			),
		fields.Subfield(
			'e',
			'rda'
			),
		fields.Subfield(
			'c',
			'CUY'
			)
		]:
		ohFourOh.subfields.append(x)

	Record.dataFields.append(ohFourOh)

	### 110
	corpAuthor = fields.DataField('110','2','\\')
	for x in [
		fields.Subfield(
			'a',
			'Top Value Television (Production company), '
			),
		fields.Subfield(
			'e',
			'production company.'
			)
		]:
		corpAuthor.subfields.append(x)

	Record.dataFields.append(corpAuthor)

	### 264
	publication = fields.DataField('264','\\','1')
	for x in [
		fields.Subfield(
			'a',
			'Berkeley, California : '
			),
		fields.Subfield(
			'b',
			'UC Berkeley Art Museum and Pacific Film Archive ; '
			),
		fields.Subfield(
			'c',
			'2019.'
			)
		]:
		publication.subfields.append(x)

	Record.dataFields.append(publication)

	### 300
	physical = fields.DataField('300','\\','\\')
	for x in [
		fields.Subfield('a','1 online resource')
		]:
		physical.subfields.append(x)

	Record.dataFields.append(physical)

	### 336
	contentType = fields.DataField('336','\\','\\')
	for x in [
		fields.Subfield('a','two-dimensional moving image'),
		fields.Subfield('b','tdi'),
		fields.Subfield('2','rdacontent')
		]:
		contentType.subfields.append(x)

	Record.dataFields.append(contentType)

	### 337
	media = fields.DataField('337','\\','\\')
	for x in [
		fields.Subfield('a','computer'),
		fields.Subfield('2','rdamedia')
		]:
		media.subfields.append(x)

	Record.dataFields.append(media)

	### 338
	carrier = fields.DataField('338','\\','\\')
	for x in [
		fields.Subfield('a','online resource'),
		fields.Subfield('2','rdacarrier')
		]:
		carrier.subfields.append(x)

	Record.dataFields.append(carrier)

	### 344 type recording
	typerecording = fields.DataField('344','\\','\\')
	for x in [
		fields.Subfield('a','digital'),
		fields.Subfield('2','rdatr')
		]:
		typerecording.subfields.append(x)

	Record.dataFields.append(typerecording)

	### 344 channels
	channelSpec = Record.customProperties['MonoStereo']
	if (channelSpec and channelSpec != "unknown") :
		channels = fields.DataField('344','\\','\\')
		for x in [
			fields.Subfield('g',Record.customProperties['MonoStereo']),
			fields.Subfield('2','rdacpc')
			]:
			channels.subfields.append(x)

		Record.dataFields.append(channels)

	### 347 file type
	fType = fields.DataField('347','\\','\\')
	for x in [
		fields.Subfield('a','video file'),
		fields.Subfield('2','rdaft')
		]:
		fType.subfields.append(x)

	Record.dataFields.append(fType)

	### 347 bitrate
	# bitrate = fields.DataField('347','\\','\\')
	# bitrate.subfields.append(
	# 	fields.Subfield('f','variable bit rate 190-250 kbit/s')
	# 	)

	# Record.dataFields.append(bitrate)

	### 500 general pfa note
	pfanote = fields.DataField('500','\\','\\')
	pfanote.subfields.append(
		fields.Subfield(
			'a',
			("From the Top Value Television (TVTV) collection "
			"at UC Berkeley Art Museum and Pacific Film Archive. "
			"Digitized from open reel videotape in 2019 "
			"as part of a National Endowment for the Humanities "
			"Collections and Reference Resources grant project.")
			)
		)
	Record.dataFields.append(pfanote)

	### 542 copyright
	copyright = fields.DataField('542','\\','\\')
	copyright.subfields.append(
		fields.Subfield('a','All materials copyright TVTV.')
		)
	Record.dataFields.append(copyright)

	### 536
	funding = fields.DataField('536','\\','\\')
	funding.subfields.append(
		fields.Subfield('a',
		('Digitization made possible in part by funding from '
		'The National Endowment for the Humanities.')
		)
		)
	Record.dataFields.append(funding)

	### 530 additional physical form
	addForm = fields.DataField('530','\\','\\')
	for x in [
		fields.Subfield('a','Originally recorded on EIAJ 1/2" open-reel videotape.'),
		fields.Subfield('c','Access to original tape is restricted.')
		]:
		addForm.subfields.append(x)

	Record.dataFields.append(addForm)

	### 650 one subject?
	subject = fields.DataField('651','\\','0')
	for x in [
		fields.Subfield('a','United States'),
		fields.Subfield('x','Politics and government'),
		fields.Subfield('y','1972-1974')
		]:
		subject.subfields.append(x)

	Record.dataFields.append(subject)

	### 710 BAMPFA
	bampfa = fields.DataField('710','2','\\')
	for x in [
		fields.Subfield('a','UC Berkeley Art Museum and Pacific Film Archive, '),
		fields.Subfield('e','conservator')
		]:
		bampfa.subfields.append(x)
	Record.dataFields.append(bampfa)

	### 710 NEH
	clir = fields.DataField('710','2','\\')
	for x in [
		fields.Subfield('a','National Endowment for the Humanities, '),
		fields.Subfield('e','sponsor')
		]:
		clir.subfields.append(x)
	Record.dataFields.append(clir)

	### 949 wb
	web = fields.DataField('949','\\','1')
	for x in [
		fields.Subfield('l','wb')
		]:
		web.subfields.append(x)
	Record.dataFields.append(web)

	### 956 stats field
	stats = fields.DataField('956','\\','\\')
	for x in [
		fields.Subfield('a','20200901'),
		fields.Subfield('b','pfmcq'),
		fields.Subfield('c','CO')
		]:
		stats.subfields.append(x)
	Record.dataFields.append(stats)