if parameters.get("metadata"): from harvestingkit.aps_package import (ApsPackage, ApsPackageXMLError) # Generate Metadata,FFT and yield it aps = ApsPackage(self.journal_mappings) try: xml = aps.get_record(fulltext_file) record.add_metadata_by_string(xml) except ApsPackageXMLError, e: # This must be old-format XML write_message("Warning: old-style metadata detected for %s" % (fulltext_file)) # Remove any DTD info in the file before converting cleaned_fulltext_file = remove_dtd_information(fulltext_file) try: convert_xml_using_saxon(cleaned_fulltext_file, CFG_APSHARVEST_XSLT) # Conversion is a success. Let's derive location of converted file source_directory = os.path.dirname(cleaned_fulltext_file) path_to_converted = "%s%s%s.xml" % \ (source_directory, os.sep, record.doi.replace('/', '_')) write_message("Converted meta-data for %s" % (record.recid or "new record"), verbose=2) record.add_metadata(path_to_converted) except APSHarvesterConversionError, e: msg = "Metadata conversion failed: %s\n%s" % \ (str(e), traceback.format_exc()[:-1]) write_message(msg, stream=sys.stderr) yield record, msg