CC-430: Audio normalization (Replaygain Support)

make code simpler (don't download database to file)
This commit is contained in:
Martin Konecny 2012-07-14 23:36:33 -04:00
parent 0e98bc75c8
commit b4f1cc13c0
6 changed files with 31 additions and 39 deletions

View File

@ -954,7 +954,6 @@ class ApiController extends Zend_Controller_Action
$dir_id = $this->_getParam('dir_id');
//connect to db and get get sql
$this->view->rows = Application_Model_StoredFile::listAllFiles2($dir_id, 0);
$this->view->rows = Application_Model_StoredFile::listAllFiles2($dir_id, 100);
}
}

View File

@ -975,13 +975,11 @@ Logging::log("getting media! - 2");
." FROM CC_FILES"
." WHERE directory = $dir_id"
." AND file_exists = 'TRUE'";
if (!is_null($limit) && is_int($limit)) {
$sql .= " LIMIT $limit";
}
$rows = $con->query($sql, PDO::FETCH_ASSOC);
$rows = $con->query($sql, PDO::FETCH_ASSOC)->fetchAll();
return $rows;
}

View File

@ -1,8 +1,3 @@
<?php
//disable buffering so that data is sent as we retrieve it from the database
while (@ob_end_flush());
foreach($this->rows as $row) {
echo json_encode($row)."\n";
}
echo json_encode($this->rows);

View File

@ -113,5 +113,5 @@ update_source_status = 'update-source-status/format/json/api_key/%%api_key%%/sou
get_bootstrap_info = 'get-bootstrap-info/format/json/api_key/%%api_key%%'
get-files-without-replay-gain = 'get-files-without-replay-gain/api_key/%%api_key%%/dir_id/%%dir_id%%''
get-files-without-replay-gain = 'get-files-without-replay-gain/api_key/%%api_key%%/dir_id/%%dir_id%%'

View File

@ -381,7 +381,11 @@ class AirTimeApiClient():
self.logger.debug("Warning: Sending a request element without a 'mode'")
self.logger.debug("Here is the the request: '%s'" % str(action) )
else: valid_actions.append(action)
md_list = { i : json.dumps(convert_dict_value_to_utf8(md)) for i,md in enumerate(valid_actions) }
md_list = dict((i, json.dumps(convert_dict_value_to_utf8(md))) for i,md in enumerate(valid_actions))
#Doesn't work in Python 2.6
#md_list = {i : json.dumps(convert_dict_value_to_utf8(md)) for i,md in enumerate(valid_actions) }
data = urllib.urlencode(md_list)
req = urllib2.Request(url, data)
response = self.get_response_from_server(req)
@ -625,12 +629,15 @@ class AirTimeApiClient():
url = "http://%(base_url)s:%(base_port)s/%(api_base)s/%(get-files-without-replay-gain)s/" % (self.config)
url = url.replace("%%api_key%%", self.config["api_key"])
url = url.replace("%%dir_id%%", dir_id)
response = self.get_response_from_server(url)
file_path = self.get_response_into_file(url)
logger.info("update file system mount: %s", response)
response = json.loads(response)
#file_path = self.get_response_into_file(url)
except Exception, e:
file_path = None
response = None
logger.error('Exception: %s', e)
logger.error("traceback: %s", traceback.format_exc())
return file_path
return response

View File

@ -27,42 +27,35 @@ class ReplayGainUpdater(Thread):
def main(self):
#TODO
#TODO make sure object has 'dirs' attr
directories = self.api_client.list_all_watched_dirs()['dirs']
for dir_id, dir_path in directories.iteritems():
try:
processed_data = []
#keep getting 100 rows at a time for current music_dir (stor or watched folder).
#When we get a response with 0 rows, then we will set response to True.
#keep getting few rows at a time for current music_dir (stor or watched folder).
#When we get a response with 0 rows, then we will set 'finished' to True.
finished = False
while not finished:
# return a list of pairs where the first value is the file's database row id
# and the second value is the filepath
file_path = self.api_client.get_files_without_replay_gain_value(dir_id)
print "temp file saved to %s" % file_path
files = self.api_client.get_files_without_replay_gain_value(dir_id)
self.logger.debug(files)
num_lines = 0
for f in files:
full_path = os.path.join(dir_path, f['fp'])
processed_data.append((f['id'], replaygain.calculate_replay_gain(full_path)))
with open(file_path) as f:
for line in f:
num_lines += 1
data = json.loads(line.strip())
track_path = os.path.join(dir_path, data['fp'])
processed_data.append((data['id'], replaygain.calculate_replay_gain(track_path)))
if num_lines == 0:
#finished = (len(files) == 0)
finished = True
os.remove(file_path)
#send data here
pass
print processed_data
except Exception, e:
print e
print traceback.format_exc()
def run(self):
try: self.main()
except Exception, e: