tagno == 100) || ($field->tagno == 110)){ $temp = ereg_replace(',$', '', $field->subfields['a'] .' '. $field->subfields['d']); $atomic['author'][] = $temp; $tags[] = 'scrib:author='. trim($temp); }else if($field->tagno == 110){ $temp = $field->subfields['a']; $atomic['author'][] = $temp; $tags[] = 'scrib:author='. trim($temp); }else if(($field->tagno > 699) && ($field->tagno < 721)){ $temp = ereg_replace(',$', '', $field->subfields['a'] .' '. $field->subfields['d']); $atomic['author'][] = $temp; $tags[] = 'scrib:author='. trim($temp); //Standard Numbers }else if($field->tagno == 10){ $temp = explode(' ', trim($field->subfields['a'])); $atomic['lccn'][] = ereg_replace('[^0-9]', '', $temp[0]); $tags[] = 'scrib:lccn='. trim($temp[0]); }else if($field->tagno == 20){ $temp = explode(' ', trim($field->subfields['a'])); $temp = ereg_replace('[^0-9|x|X]', '', $temp[0]); //echo 'i'; $isbn_xml = simplexml_load_string(file_get_contents('http://api.scriblio.net/v01a/isbn1013/' . $temp)); foreach ($isbn_xml->xpath('/idlist/isbn') as $temp) { $atomic['isbn'][] = strtolower($temp); } //Call Numbers }else if($field->tagno == 852){ // callnums from InfoCenter $temp = trim($field->subfields['h']); $atomic['callnumber'][] = $temp; $tags[] = 'scrib:callnumber='. $temp; $temp = trim($field->subfields['b']); $atomic['location'][] = $temp; $tags[] = 'scrib:location='. $temp; $atomic['acqdate'][] = $field->subfields[x]{14}.$field->subfields[x]{15}.$field->subfields[x]{16}.$field->subfields[x]{17} .'-'. $field->subfields[x]{18}.$field->subfields[x]{19} .'-'. $field->subfields[x]{20}.$field->subfields[x]{21}; //Titles }else if($field->tagno == 245){ $temp = ucwords(trim(trim(trim(ereg_replace('/$', '', $field->subfields['a']) .' '. trim(ereg_replace('/$', '', $field->subfields['b']))), ',.;:/'))); $atomic['title'][] = $temp; $tags[] = 'scrib:title='. trim($temp); $atomic['attribution'][] = trim(trim(trim($field->subfields['c']), ',.;:/')); }else if($field->tagno == 240){ $temp = ucwords(trim(trim(trim(ereg_replace('/$', '', $field->subfields['a']) .' '. trim(ereg_replace('/$', '', $field->subfields['b']))), ',.;:/'))); $atomic['alttitle'][] = $temp; $tags[] = 'scrib:title='. trim($temp); }else if(($field->tagno > 719) && ($field->tagno < 741)){ $temp = $field->subfields['a']; $atomic['alttitle'][] = $field->subfields['a']; $tags[] = 'scrib:title='. trim($temp); //Dates }else if($field->tagno == 260){ $temp = str_pad(substr(ereg_replace('[^0-9]', '', $field->subfields['c']), 0, 4), 4 , '5'); $atomic['pubyear'][] = $temp; }else if($field->tagno == 005){ $atomic['catdate'][] = $field->data{0}.$field->data{1}.$field->data{2}.$field->data{3} .'-'. $field->data{4}.$field->data{5} .'-'. $field->data{6}.$field->data{7}; }else if($field->tagno == 008){ $atomic['pubyear'][] = substr($field->data, 14, 4); //Subjects }else if(($field->tagno > 599) && ($field->tagno < 700)){ $atomic['subject'][] = trim(trim(implode(' -- ', $field->subfields)), '.'); if($atomic['subjkey']){ $atomic['subjkey'] = array_unique(array_merge($atomic['subjkey'], array_map($trimmer, array_values($field->subfields)))); }else{ $atomic['subjkey'] = array_map($trimmer, array_values($field->subfields)); } //URLs }else if($field->tagno == 856){ unset($temp); $temp['href'] = $temp['title'] = str_replace(' ', '', $field->subfields['u']); if($field->subfields['3']) $temp['title'] = $field->subfields['3']; if($field->subfields['z']) $temp['title'] = $field->subfields['z']; $atomic['url'][] = ''. $temp['title'] .''; //Notes }else if(($field->tagno > 299) && ($field->tagno < 400)){ $atomic['physdesc'][] = implode(' ', array_values($field->subfields)); }else if(($field->tagno > 399) && ($field->tagno < 500)){ $atomic['title'][] = implode("\n", array_values($field->subfields)); }else if(($field->tagno > 799) && ($field->tagno < 841)){ $atomic['series'][] = implode("\n", array_values($field->subfields)); }else if(($field->tagno > 499) && ($field->tagno < 600)){ $line = implode("\n", array_values($field->subfields)); if($field->tagno == 504) continue; if($field->tagno == 505){ $atomic['contents'][] = str_replace(array('> ','> ','> '), '>', '
$line"; } //Format if((!$atomic['format']) && ($field->tagno > 239) && ($field->tagno < 246)){ $temp = ucwords(strtolower(str_replace('[', '', str_replace(']', '', $field->subfields['h'])))); if(eregi('^book', $temp)){ $format = 'Book'; $formats = 'Books'; }else if(eregi('^micr', $temp)){ $format = 'Microform'; }else if(eregi('^electr', $temp)){ $format = 'Website'; $formats = 'Websites'; }else if(eregi('^vid', $temp)){ $format = 'Video'; }else if(eregi('^motion', $temp)){ $format = 'Video'; }else if(eregi('^audi', $temp)){ $format = 'Audio'; }else if(eregi('^cass', $temp)){ $format = 'Audio'; }else if(eregi('^phono', $temp)){ $format = 'Audio'; }else if(eregi('^record', $temp)){ $format = 'Audio'; }else if(eregi('^sound', $temp)){ $format = 'Audio'; }else if(eregi('^carto', $temp)){ $format = 'Map'; $formats = 'Maps'; }else if(eregi('^map', $temp)){ $format = 'Map'; $formats = 'Maps'; }else if(eregi('^globe', $temp)){ $format = 'Map'; $formats = 'Maps'; }else if($temp){ $format = 'Classroom Material'; //$format = $temp; } if(!$formats) $formats = $format; if($format){ $atomic['format'][] = $format; $tags[] = 'scrib:format='. trim($formats); } } } } if(!$atomic['format'][0]){ $atomic['format'][0] = 'Book'; $tags[] = 'scrib:format=Books'; } if(!$atomic['acqdate']) $atomic['acqdate'] = $atomic['catdate']; if(!$atomic['catdate'][0]) $atomic['catdate'][0] = '1984-01-01'; if($atomic['pubyear'][0] > (date(Y) + 5)) $atomic['pubyear'][0] = substr($atomic['catdate'][0],0,4); if($atomic['pubyear'][0]){ $atomic['pubdate'][] = $atomic['pubyear'][0].substr($atomic['catdate'][0],4); $tags[] = 'scrib:pubyear='. $atomic['pubyear'][0]; } foreach($atomic['isbn'] as $temp){ $tags[] = 'scrib:isbn='. trim($temp); } if($atomic['alttitle']) $atomic['title'] = array_unique(array_merge($atomic['title'], $atomic['alttitle'])); foreach($atomic['subjkey'] as $temp){ $tags[] = 'scrib:subject='. trim($temp); } $atomic['tags'] = $tags; $atomic['sourceid'] = eval('return($marcrecord'. str_replace(array('(',')','$'), '', $_REQUEST['sourceidfield']) .');'); // print_r($atomic); return($atomic); } public function scrapeit($marcrecord){ global $scrib, $wpdb, $scrib_importer, $scrib_templates; $record = $this->parse_marc($marcrecord); if($record['title'] && $record['sourceid']){ echo 'a'; if($enrichinfo = $scrib_importer->enrich($record['isbn'])){ //print_r($enrichinfo); $record['img'] = $enrichinfo['img']; if($enrichinfo['summary']){ echo 's'; $record['shortdescription'] = $enrichinfo['summary']; } } $record['the_title'] = $record['title'][0]; $record['the_pubdate'] = $record['pubdate'][0]; $record['the_acqdate'] = $record['acqdate'][0]; $record['the_sourceid'] = substr(ereg_replace('[^a-z|0-9]', '', strtolower($_REQUEST['sourceid'])), 0, 2) . $record['sourceid']; $record['tags'][] = 'scrib:sourceid='. $record['the_sourceid']; $record['the_excerpt'] = $scrib_templates->summary($record); $record['the_content'] = $scrib_templates->full($record); //print_r($record); $scrib_importer->insertharvest($record); }else{ echo '.'; } flush(); } } if($_REQUEST['source'] && $_REQUEST['sourceid']){ $scrib_marc_reader = new Scrib_marc_reader; $scrib_importer = new Scrib_importer; $scrib_templates = new Scrib_default_templates; $prefs['lastsource'] = $_REQUEST['source']; $prefs['lastsourceid'] = $_REQUEST['sourceid']; $prefs['lastsourceidfield'] = $_REQUEST['sourceidfield']; update_option('scrib_marcimporter', $prefs); $count = 0; if($_REQUEST['run']){ $file = new File($_REQUEST['source'], $_REQUEST['start'], $_REQUEST['run']); }else{ $file = new File($_REQUEST['source']); } while($record = $file->next()){ $count++; $scrib_marc_reader->scrapeit($record->fields()); echo ' '. $count .' '; while (@ob_end_flush()); flush(); //if($count > 200) //break; } if(is_numeric($_REQUEST['start']) && $file->num_records()){ $_REQUEST['start'] = $_REQUEST['start'] + $_REQUEST['run']; echo ' '; } }else{ $prefs = get_option('scrib_marcimporter'); ?>