From 621c85b1dffe0642ca4fcd4b529fcc4fd549eba5 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 14 Jul 2011 15:31:19 -0400 Subject: [PATCH] CC-2279: Upgrade script for converting stor directory to new format -in progress... --- .../airtime-1.9.0/airtime-upgrade.php | 52 ++++++++++++------- .../airtimefilemonitor/mediamonitorcommon.py | 4 +- .../media-monitor/media-monitor-upgrade.py | 43 +++++++++++++++ 3 files changed, 79 insertions(+), 20 deletions(-) create mode 100644 python_apps/media-monitor/media-monitor-upgrade.py diff --git a/install/upgrades/airtime-1.9.0/airtime-upgrade.php b/install/upgrades/airtime-1.9.0/airtime-upgrade.php index 1e0af3211..caf8da4a3 100644 --- a/install/upgrades/airtime-1.9.0/airtime-upgrade.php +++ b/install/upgrades/airtime-1.9.0/airtime-upgrade.php @@ -77,6 +77,16 @@ function updateAirtimeImportSymLink(){ exec("ln -s $dir /usr/bin/airtime-import"); } +function execSqlQuery($sqlString){ + $result = $CC_DBC->query($sql); + echo $sql.PHP_EOL; + if (PEAR::isError($result)) { + echo "* Failed sql query: $sql".PHP_EOL; + echo "* Message {$result->getMessage()}".PHP_EOL; + exit(1); + } +} + function connectToDatabase(){ global $CC_DBC, $CC_CONFIG; @@ -392,28 +402,34 @@ $sql = "INSERT INTO cc_country (isocode, name) VALUES ('AFG', 'Afghanistan '); INSERT INTO cc_country (isocode, name) VALUES ('ZWE', 'Zimbabwe ');"; echo "* Inserting data into country table".PHP_EOL; -$result = $CC_DBC->query($sql); -if (PEAR::isError($result)) { - echo "* Failed inserting data into cc_country".PHP_EOL; - echo "* Message {$result->getMessage()}".PHP_EOL; - exit(1); -} - -$ini = parse_ini_file(__DIR__."/../../include/airtime-install.ini"); - -$stor_dir = realpath($ini["storage_dir"])."/"; -echo "* Inserting stor directory location $stor_dir into music_dirs table".PHP_EOL; -$sql = "INSERT INTO cc_music_dirs (directory, type) VALUES ('$stor_dir', 'stor')"; -$result = $CC_DBC->query($sql); -if (PEAR::isError($result)) { - echo "* Failed inserting {$stor_dir} in cc_music_dirs".PHP_EOL; - echo "* Message {$result->getMessage()}".PHP_EOL; - exit(1); -} +execSqlQuery($sql); //create cron file for phone home stat AirtimeInstall::CreateCronFile(); +$stor_dir = realpath($values['general']['base_dir']."/stor")."/"; +echo "* Inserting stor directory location $stor_dir into music_dirs table".PHP_EOL; +$sql = "INSERT INTO cc_music_dirs (directory, type) VALUES ('$stor_dir', 'stor')"; +execSqlQuery($sql); //old database had a "fullpath" column that stored the absolute path of each track. We have to //change it so that the "fullpath" column has path relative to the "directory" column. + +$mediaMonitorUpgradePath = realpath(__DIR__."/../../../python_apps/media-monitor/media-monitor-upgrade.py"); +exec("python $mediaMonitorUpgradePath", $output); + +print_r($output); + +$oldAndNewFileNames = json_decode($output); + +print_r($oldAndNewFileNames); + +foreach ($oldAndNewFileNames as $pair){ + $relPathNew = substr($pair[1], 0, strlen($stor_dir)); + $absPathOld = $pair[0]; + $sql = "UPDATE cc_music_dirs SET filepath = \"$relPathNew\", directory=1 WHERE filepath = \"$absPathOld\""; + execSqlQuery($sql); +} + + + diff --git a/python_apps/media-monitor/airtimefilemonitor/mediamonitorcommon.py b/python_apps/media-monitor/airtimefilemonitor/mediamonitorcommon.py index c65508689..bb267073f 100644 --- a/python_apps/media-monitor/airtimefilemonitor/mediamonitorcommon.py +++ b/python_apps/media-monitor/airtimefilemonitor/mediamonitorcommon.py @@ -237,9 +237,9 @@ class MediaMonitorCommon: filepath = self.create_file_path(pathname, file_md) self.logger.debug(u"Moving from %s to %s", pathname, filepath) - self.move_file(pathname, filepath) + #self.move_file(pathname, filepath) else: filepath = None self.logger.warn("File %s, has invalid metadata", pathname) - return filepath \ No newline at end of file + return filepath diff --git a/python_apps/media-monitor/media-monitor-upgrade.py b/python_apps/media-monitor/media-monitor-upgrade.py new file mode 100644 index 000000000..40bb8970f --- /dev/null +++ b/python_apps/media-monitor/media-monitor-upgrade.py @@ -0,0 +1,43 @@ +from airtimefilemonitor.mediamonitorcommon import MediaMonitorCommon +from airtimefilemonitor.mediaconfig import AirtimeMediaConfig + +import logging +import logging.config +import sys +import os +import json +import ConfigParser + +# configure logging +try: + logging.config.fileConfig("logging.cfg") +except Exception, e: + print 'Error configuring logging: ', e + sys.exit(1) + +logger = logging.getLogger() +mmconfig = AirtimeMediaConfig(logger) + +#get stor folder location from /etc/airtime/airtime.conf +config = ConfigParser.RawConfigParser() +config.read('/etc/airtime/airtime.conf') +stor_dir = config.get('general', 'base_dir') + +mmconfig.storage_directory = os.path.normpath(stor_dir) +mmconfig.imported_directory = os.path.normpath(stor_dir + '/imported') +mmconfig.organize_directory = os.path.normpath(stor_dir + '/organize') + +mmc = MediaMonitorCommon(mmconfig) + +#read list of all files in stor location.....and one-by-one pass this through to +#mmc.organize_files. print out json encoding of before and after +pairs = [] +print "walking through %s" % stor_dir +for root, dirs, files in os.walk(stor_dir): + for f in files: + #print os.path.join(root, f) + #print mmc.organize_new_file(os.path.join(root, f)) + pair = os.path.join(root, f), mmc.organize_new_file(os.path.join(root, f)) + pairs.append(pair) + +print json.dumps(pairs)