HomeAudio/scripts/homeaudio_utils.php
2025-04-18 09:35:19 -04:00

90 lines
2.9 KiB
PHP

<?php
require_once 'getid3/getid3.php';
$ini = parse_ini_file("/etc/homeaudio.ini");
define("MP3ROOTDIR", $ini['MP3DIR']);
define("ARTDIR", $ini['ARTDIR']);
define("SONGSTABLE", "songs");
$globaldbh = new PDO("mysql:host={$ini['DBHOST']};dbname={$ini['DBNAME']}", $ini['DBUSER'], $ini['DBPASS']);
$ignoredirs = array();
$ignoredirs[] = "Album Playlists";
$ignoredirs[] = "Alphabetical";
$ignoredirs[] = "Incoming2";
$ignoredirs[] = "Recent";
$ignoredirs[] = "Recent (1-2 Months)";
$ignoredirs[] = "Recent (2-3 Months)";
$ignoredirs[] = "playlists";
$extbymimetypes = array(
'image/jpg' => 'jpg',
'image/jpeg' => 'jpg',
'image/png' => 'png',
'image/gif' => 'gif'
);
function search() {
global $globaldbh, $argv;
$target = $argv[2];
switch ($target) {
case "song":
case "songs":
$terms = array();
for ( $i=3; $i<count($argv); $i++ ) {
if ( strlen($argv[$i]) > 2 ) $terms[] = $argv[$i];
}
if ( count($terms) == 0 ) {
echo "Searching requires search terms as command line parameters\n\n";
exit();
}
$query = "SELECT id, path, song, artist, album, title FROM songs WHERE (PATH LIKE :term1";
for ( $i=1; $i<count($terms); $i++ ) {
$query .= " AND path LIKE :term" . ($i+1);
}
$query .= ") OR (song LIKE :term1";
for ( $i=1; $i<count($terms); $i++ ) {
$query .= " AND song LIKE :term" . ($i+1);
}
$query .= ") OR (title LIKE :term1";
for ( $i=1; $i<count($terms); $i++ ) {
$query .= " AND title LIKE :term" . ($i+1);
}
$query .= ") OR (artist LIKE :term1";
for ( $i=1; $i<count($terms); $i++ ) {
$query .= " AND artist LIKE :term" . ($i+1);
}
$query .= ") ORDER BY path, song";
$sth = $globaldbh->prepare($query);
for ( $i=0; $i<count($terms); $i++ ) {
$sth->bindValue(":term".($i+1), "%".$terms[$i]."%", PDO::PARAM_STR);
}
$sth->execute();
if ( $sth->rowCount() > 0 ) {
echo " ID | Path | Song | Title | Artist\n";
echo "-------|----------------------------------------|------------------------------|---------------------------|----------------------\n";
}
while ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
echo str_pad(strval($row['id']), 7) . "|";
echo " " . str_pad(substr($row['path'], 0, 37), 39) . "|";
echo " " . str_pad(substr($row['song'], 0, 27), 29) . "|";
echo " " . str_pad(substr($row['title'], 0, 24), 26) . "|";
echo " " . substr($row['artist'], 0, 25) . "\n";
}
break;
}
}
switch ($argv[1]) {
case "search":
search();
break;
default:
echo "Nothing to do\n";
}
echo "\n";
// vim: ts=3 sw=3 et ai: