From 1b09cd404a4e7918b3cae58afbda399fc8ef75f4 Mon Sep 17 00:00:00 2001
From: junior <junior@jaj.com>
Date: Wed, 15 May 2024 12:37:22 -0400
Subject: [PATCH] Just a utility script

---
 scripts/homeaudio_utils.php | 89 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)
 create mode 100644 scripts/homeaudio_utils.php

diff --git a/scripts/homeaudio_utils.php b/scripts/homeaudio_utils.php
new file mode 100644
index 0000000..789a82b
--- /dev/null
+++ b/scripts/homeaudio_utils.php
@@ -0,0 +1,89 @@
+<?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