All pastes #370370 Raw Edit

Stuff

public text v1 · immutable
#370370 ·published 2007-02-24 14:29 UTC
rendered paste body
<?php
//http://digitalx.org/cuesheetsyntax.php
function parse_cuesheet($cuesheet)
{
	//$i=0;
	$j=0;
	$syntax_array = array
					('catalog','cdtextfile','file',
					'flags','index','isrc',
					'performer','postgap','pregap',
					'rem','songwriter','title',
					'track'); //list of keywords

	$cue_array = file($cuesheet); #open cuesheet into array					
	print_r($cue_array);
	echo "debug: opened file, " . count($cue_array) . " lines\n";
	for ($i=0; $i<=count($cue_array); $i++)
	{
		echo "debug: loop level 1 (i: $i)\n";
		print "$cue_array[$i]";
		$parseable_line = trim(strtolower($cue_array[$i])); //lowercase'd line
		print "$parseable_line\n";
		foreach ($syntax_array as $keyword)
		{
			echo "debug: loop level 2 (i: $i)\n";
			if (strpos($parseable_line,$keyword)===0); // we have a match
			{
				if ($keyword=="track")
				{	//we've found a track
					echo "track found at line $i\n";
					$j++;
					print $j;
					$parsed_cue[$j][$keyword] = $cue_array[$i];
					$i++; //we've grabbed the track, now increment to the next line
					
					$inner_parseable_line = trim(strtolower($cue_array[$i])); //lowercase'd line

					
					while (!strpos($cue_array[$i], "TRACK")===0)
						
					{//this inner loop grabs track info
						echo "debug: loop level 3 (i: $i)\n";
						foreach ($syntax_array as $tkeyword)
						{
							echo "debug: loop level 4 (i: $i)\n";
							if (strpos($inner_parseable_line,$tkeyword)==0)
							{
								echo "debug: track line found inside track $j, at line $i\n";
								$parsed_cue[$j][$keyword] = $cue_array[$i];
								$i++;
								
							}
							
							
						}
						echo "debug: loop level 3 (i: $i)\n";
					}
					echo "debug: loop level 2 (i: $i)\n";
				}
			}
		}
	}
	echo "done, with " . count($parsed_cue) . "parseable lines and " . $j . " tracks\n";
echo $parsed_cuesheet;
}
	
print_r(parse_cuesheet('test.cue'));
?>