101 lines
3.5 KiB
PHP
101 lines
3.5 KiB
PHP
<?php
|
|
|
|
if ( !file_exists("/etc/homeaudio.ini") ) {
|
|
echo "Error: /etc/homeaudio.ini not found!\n\n";
|
|
exit();
|
|
}
|
|
|
|
if ( false === ($config = parse_ini_file("/etc/homeaudio.ini")) ) {
|
|
echo "Error: Could not parse /etc/homeaudio.ini!\n\n";
|
|
exit();
|
|
}
|
|
|
|
// These two constants define the tables used from the old database
|
|
define("OLDSONGSTABLE", "music.songs");
|
|
define("OLDQUEUESTABLE", "music.queues");
|
|
|
|
// These three constants define the tables used from the new database
|
|
define("SONGSTABLE", "musicnew.songs");
|
|
define("NEWQUEUESTABLE", "musicnew.queues");
|
|
define("QUEUECONTENTSTABLE", "musicnew.queuecontents");
|
|
|
|
define("MP3ROOTDIR", $config['MP3DIR']);
|
|
define("ARTDIR", $config['ARTDIR']);
|
|
|
|
$globaldbh = new PDO("mysql:host=localhost;dbname=" . $config['DBNAME'], $config['DBUSER'], $config['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/bmp' => 'bmp',
|
|
'image/jpeg' => 'jpg',
|
|
'image/png' => 'png',
|
|
'image/gif' => 'gif'
|
|
);
|
|
|
|
function convertQueues() {
|
|
global $globaldbh;
|
|
$query = "DELETE FROM " . NEWQUEUESTABLE . " WHERE type='user'";
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute();
|
|
$query = "INSERT INTO " . NEWQUEUESTABLE . " (name) SELECT qname FROM " . OLDQUEUESTABLE . " WHERE qtype='user'";
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute();
|
|
}
|
|
|
|
function convertQueueContents() {
|
|
global $globaldbh;
|
|
$totalcount = 0;
|
|
$convertedcount = 0;
|
|
$queues = array();
|
|
$query = "DELETE " . QUEUECONTENTSTABLE . " FROM " . QUEUECONTENTSTABLE . " LEFT JOIN " . NEWQUEUESTABLE . " ON qid=id WHERE type='user'";
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute();
|
|
$query = "SELECT id, name FROM " . NEWQUEUESTABLE;
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute();
|
|
while ( $row = $sth->fetch() ) {
|
|
$queues[$row['name']] = $row['id'];
|
|
}
|
|
$query = "SELECT fullpath, qname FROM " . OLDSONGSTABLE . " LEFT JOIN " . OLDQUEUESTABLE . " ON qid=id WHERE qtype='user'";
|
|
$sth = $globaldbh->prepare($query);
|
|
$sth->execute();
|
|
$query_new = "INSERT INTO " . QUEUECONTENTSTABLE . " (qid, songid) VALUES(:qid, :songid)";
|
|
$sth_new = $globaldbh->prepare($query_new);
|
|
$query_search = "SELECT id FROM " . SONGSTABLE . " WHERE song=:song AND genre=:genre";
|
|
$sth_search = $globaldbh->prepare($query_search);
|
|
while ( $row = $sth->fetch() ) {
|
|
$fields_search = array();
|
|
$fields_search[':song'] = basename($row['fullpath']);
|
|
list($fields_search[':genre'], $junk) = explode("/", substr($row['fullpath'], strlen(MP3ROOTDIR)), 2);
|
|
$sth_search->execute($fields_search);
|
|
$totalcount++;
|
|
if ( $row_search = $sth_search->fetch() ) {
|
|
$fields_new = array();
|
|
$fields_new[':qid'] = $queues[$row['qname']];
|
|
$fields_new[':songid'] = $row_search['id'];
|
|
$sth_new->execute($fields_new);
|
|
$convertedcount++;
|
|
if ( ($convertedcount % 100) == 0 ) echo ".";
|
|
} else {
|
|
echo "Couldn't find: ", $fields_search[':song'], " in ", $fields_search[':genre'], "\n";
|
|
}
|
|
}
|
|
return array($totalcount, $convertedcount);
|
|
}
|
|
|
|
echo "Converting DB:\n\n";
|
|
echo "Converting user queues...\n";
|
|
convertQueues();
|
|
echo "Converting user queue contents...";
|
|
$convcount = convertQueueContents();
|
|
echo " converted ", $convcount[1], " out of ", $convcount[0], " songs in old queues.\n";
|
|
|
|
?>
|