Rev 58 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phprequire_once('php/XmlStreamer.php');require_once('php/tools.php');ini_set("memory_limit", "256M");$cnt = 0;class MastersXmlStreamer extends XmlStreamer{public function processNode($xmlString, $elementName, $nodeIndex){global $cnt;global $fh;global $fhArtists;$xml = simplexml_load_string($xmlString, 'simple_xml_extended');if ($elementName == 'master') {++$cnt;$id = $xml->Attribute('id');$mainRelease = $xml->main_release;$year = $xml->year;$title = $xml->title;$genres = [];if (isset($xml->ngenres)) {foreach ($xml->genres->genre as $n) {$genres[] = $n;}}$styles = [];if (isset($xml->styles)) {foreach ($xml->styles->style as $n) {$styles[] = $n;}}if (isset($xml->artists)) {foreach ($xml->artists->artist as $n) {fputcsv2($fhArtists, array($id, $n->id), ',', '"', true);}}$arr = array($id,$mainRelease,$year,$title,join(", ", $genres),join(", ", $styles));fputcsv2($fh, $arr, ',', '"', true);}return true;}}$xmlfile = "./in/discogs_20190601_masters.xml.gz";$fh = fopen("out/masters.load", "w+");$fhArtists = fopen("out/masterArtists.load", "w+");$xmlstream = "compress.zlib://$xmlfile";$xmlfileSize = gzfilesize($xmlfile);$streamer = new MastersXmlStreamer($xmlstream, $xmlfileSize);if ($streamer->parse()) {echo "Finished $cnt masters." . PHP_EOL;} else {echo "Couldn't find root node" . PHP_EOL;}fclose($fh);fclose($fhArtists);