* screen scraping to parse coin type reference numbers and measurements in order to generate Nomisma-compliant RDF *****/ //set user agent ini_set('user_agent', 'Nomisma.org/PHP Harvesting'); //array of queries $queries = array('crro' => 'coin AND "Roman Republic"', 'pella' => '"Alexander III" AND coin'); $project = 'pella'; $api = 'http://data.fitzmuseum.cam.ac.uk/api/?'; $params = array('query' => $queries[$project], 'size' => 100, 'from' => 0); $records = array(); $coinTypes = array(); parse_response($api, $params); //var_dump($records); //after the API pages have been parsed, then process the resulting records array into Nomisma-conformant RDF generate_csv($records, $project); generate_rdf($records, $project); function parse_response($api, $params) { global $records; $page = $params['from'] / $params['size'] + 1; echo "Page {$page}\n"; //compare the individual request parameters into k=>v pairs to the URL $qparams = array(); foreach ($params as $k => $v) { $qparams[] = "{$k}=" . urlencode($v); } $service = $api . implode('&', $qparams); //request JSON from API $json = file_get_contents($service); $data = json_decode($json); //iterate through results
<?php $page = 1; $apiKey = 'a864ed30-fccd-11e5-aaaa-2d4ec69062d0'; $records = array(); //parse each page of the API call parse_page($page, $apiKey); //following the parsing of each page, construct CSV; //generate exports generate_csv($records); generate_rdf($records); /********* FUNCTIONS **********/ function parse_page($page, $apiKey) { global $records; echo "Page {$page}\n"; $query = '(standardreferencenumber:RRC+OR+standardreferencenumber:RIC+OR+standardreferencenumber:Price)'; //$query = '"RIC+IX,+p.+235,+88b(1)"'; $service = 'http://api.harvardartmuseums.org/object?size=100&classification=Coins&q=' . $query . '+AND+department:"Department%20of%20Ancient%20and%20Byzantine%20Art%20%26%20Numismatics"&apikey=' . $apiKey . '&page=' . $page; $json = file_get_contents($service); $data = json_decode($json); foreach ($data->records as $record) { $references = explode(';', $record->standardreferencenumber); foreach ($references as $reference) { if (preg_match('/RRC/', $reference)) { $num = explode(' ', $reference); $row = array(); //generate record metadata array $row = construct_metadata($record); $row['reference'] = $reference; //ignore uncertain coins