Audio CD index

Last Updated or created 2024-03-18

I’ve got a large Folk Music collection. And i wanted to have an overview of the Audio CD’s (mp3/flac) i’ve got from every Band or Artist.

So I made some PHP scripts and a scraping tool. To get a nice overview.

A part of it looks like this:

Most is auto-generated:

The scraper part needs eyed3 (made at a later date)

PHP Files

::::::::::::::
artist.php
::::::::::::::
<html><head><title></title>
<style type="text/css">
 img.clams { border: black dotted 1px; }
 </style>
</head><body vlink=black alink=black link=black>
<? $filebak=$file; ?>
<center><P>
<table border=2><tr><td bgcolor="#cccccc">
<P>
<?php include "list.php"; ?>
</td></tr></table>
<P>


<table>

<?php
$file=$filebak;
echo "<tr><td bgcolor=black><a name=\"$file\"><font color=white face=tahoma><b>$file</b></font></a></td></tr>"; include "readcovers.php";  
?> 

</table>
<P>
<?php if (file_exists("thumbs/$file/info.txt")){ include "thumbs/$file/info.txt"; } ?>
</body></html>
::::::::::::::
index.php
::::::::::::::
<html><head><title></title>
<style type="text/css">
 img.clams { border: black dotted 1px; }
 </style>
</head><body vlink=black alink=black link=black>
<a name="top">
<font face=tahoma color=red>missing</font> ::
<font face=tahoma color=orange>not complete</font> ::
<font face=tahoma color=blue>special</font> ::
<font face=tahoma color=green>got this one</font><P> 
<center><P>
<font face=Tahoma>TODO: List artists, per-page covers (per artist)<BR>
Sort A-Z<BR>Counters<BR>filter <i>got this one / Missing</i>
<table border=2><tr><td bgcolor="#cccccc">
<P>
<?php include "list.php"; ?>
</td></tr></table>
<P>


<table>

<?php
$dir = "thumbs/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
	$dh = opendir($dir);
       	while (($file = readdir($dh)) !==false) {
           #echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
		if (filetype($dir . $file)=="dir" && $file!=="." && $file!=="..") { echo "<tr><td bgcolor=black><a name=\"$file\"><font color=white face=tahoma><b>$file</b></font></a><a href=\"#top\"> <f
ont face=tahoma color=\"grey\"><small>(top)</small></a></td></tr>"; include "readcovers.php";  }
       	}
}
       closedir($dh);
?> 

</table>
</body></html>
::::::::::::::
list.php
::::::::::::::
<html><head><title></title>
<style>
<!--
A:link {text-decoration: none; color: "#000000";}
A:visited {text-decoration: none; color: "#000000";}
A:hover {text-decoration:  none; }
//-->

</style>
</head><body>

<center><P>
<?php
$countart=0;
$dir = "thumbs/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
	$dh = opendir($dir);
       	while (($file = readdir($dh)) !==false) {
		if (filetype($dir . $file)=="dir" && $file!=="." && $file!=="..") { echo "<a href=\"index.php#$file\"><font color=black face=tahoma><b>$file</b></font></a><a href=\"artist.php?file=$file\
">@</a> "; $countart=$countart+1; if ($countart==4) { $countart=0; echo "<BR>";} else { echo ":: ";}  }
       	}
}
       closedir($dh);
?> 
</body></html>
::::::::::::::
readcovers.php
::::::::::::::

<tr><td align=left>
<table><tr><td width=30></td>
<?php
$dir1 = "thumbs/$file";
$counter=0;
// Open a known directory, and proceed to read its contents
if (is_dir($dir1)) {
   if ($dh1 = opendir($dir1)) {
       while (($file1 = readdir($dh1)) !==false)  {
#echo "filename: $file : filetype: " . filetype($dir1 . $file) . "<BR>";
$fileinfo="leeg";
if ($counter==7) { echo "</tr><tr><td width=30></td>"; $counter=0; }
if ($file1!=="." && $file1!=="..") {
if (stristr("$file1", ".jpg")) { echo "<td valign=top width=105><center><img src=\"$dir1/$file1\" class=\"clams\">"; 
$fileinfo = str_replace("jpg", "txt", $file1); $counter=$counter+1;}
if (file_exists("$dir1/$fileinfo")) { echo "<br><font face=tahoma><small>"; include "$dir1/$fileinfo"; }
echo "</small></td>";
}
       }
       closedir($dh1);
   }
}
?> 
</tr></table>
</td></tr>

Scraper

mkdir -p /tmp/1
find  celtic/Celtic/ -type d | while read ; do
countmp3=$(ls "$REPLY" | egrep -i mp3$ | wc -l)
if [ $countmp3 -gt 0 ] ; then
	rm -f /tmp/1/*
	album=$( echo $REPLY | rev | cut -f1 -d/ | rev)
	artist=$( echo $REPLY | rev | cut -f2 -d/ | rev)
	countslash=$(echo "$REPLY"  | tr -cd '/' | wc -c)
	if [ $countslash -lt 4 ] ; then
		artist=$album
		album="" 
	fi 
	echo "artist : $artist - Album : $album"
	mkdir -p "thumbs/$artist"
	ls "$REPLY" | egrep -i "mp3$|flac$" | while read biggest; do  
		eyeD3 --write-images=/tmp/1  "$REPLY/$biggest"	

		if [ ! "$( ls -A /tmp/1/ )" ]  ; then cp empty.jpg /tmp/1/FRONT.jpg ;fi
		deze=$(ls -S /tmp/1/* | head -1)
		convert -resize 200x200 "$deze" "thumbs/$artist/$album.jpg" 
		echo "$album" > "thumbs/$artist/$album.txt"
	done
fi
done

I’m planning to make an version which shows every individual mp3, and shows me if they are valid mp3’s/flac and have a good cover.
(Using tiny thumbnails) (Made this, didin’t post)

Leave a Reply

Your email address will not be published. Required fields are marked *