diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index 1a068fd08..6098f2b85 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -488,7 +488,7 @@ SQL; } foreach ($p_items as $ac) { - Logging::info("Adding audio file {$ac[0]}"); + //Logging::info("Adding audio file {$ac[0]}"); try { if (is_array($ac) && $ac[1] == 'audioclip') { $res = $this->insertBlockElement($this->buildEntry($ac[0], $pos)); @@ -658,7 +658,7 @@ SQL; public function getFadeInfo($pos) { - Logging::info("Getting fade info for pos {$pos}"); + //Logging::info("Getting fade info for pos {$pos}"); $row = CcBlockcontentsQuery::create() ->joinWith(CcFilesPeer::OM_CLASS) @@ -1275,8 +1275,10 @@ SQL; $isBlockFull = false; while ($iterator->valid()) { + $id = $iterator->current()->getDbId(); - $length = Application_Common_DateHelper::calculateLengthInSeconds($iterator->current()->getDbLength()); + $fileLength = $iterator->current()->getCueLength(); + $length = Application_Common_DateHelper::calculateLengthInSeconds($fileLength); $insertList[] = array('id'=>$id, 'length'=>$length); $totalTime += $length; $totalItems++; @@ -1291,8 +1293,11 @@ SQL; $sizeOfInsert = count($insertList); - // if block is not full and reapeat_track is check, fill up more + // if block is not full and repeat_track is check, fill up more while (!$isBlockFull && $repeat == 1 && $sizeOfInsert > 0) { + Logging::debug("adding repeated tracks."); + Logging::debug("total time = " . $totalTime); + $randomEleKey = array_rand(array_slice($insertList, 0, $sizeOfInsert)); $insertList[] = $insertList[$randomEleKey]; $totalTime += $insertList[$randomEleKey]['length']; diff --git a/airtime_mvc/application/models/airtime/CcFiles.php b/airtime_mvc/application/models/airtime/CcFiles.php index 001c2c7a1..7ceb5e5e8 100644 --- a/airtime_mvc/application/models/airtime/CcFiles.php +++ b/airtime_mvc/application/models/airtime/CcFiles.php @@ -12,6 +12,20 @@ * @package propel.generator.campcaster */ class CcFiles extends BaseCcFiles { + + public function getCueLength() + { + $cuein = $this->getDbCuein(); + $cueout = $this->getDbCueout(); + + $cueinSec = Application_Common_DateHelper::calculateLengthInSeconds($cuein); + $cueoutSec = Application_Common_DateHelper::calculateLengthInSeconds($cueout); + $lengthSec = bcsub($cueoutSec, $cueinSec, 6); + + $length = Application_Common_DateHelper::secondsToPlaylistTime($lengthSec); + + return $length; + } public function getDbLength($format = "H:i:s.u") { diff --git a/python_apps/pypo/airtime-liquidsoap b/python_apps/pypo/airtime-liquidsoap index 259ff4646..0812bd47d 100755 --- a/python_apps/pypo/airtime-liquidsoap +++ b/python_apps/pypo/airtime-liquidsoap @@ -10,7 +10,11 @@ ls_param="/usr/lib/airtime/pypo/bin/liquidsoap_scripts/ls_script.liq" export PYTHONPATH=${api_client_path} -cd /usr/lib/airtime/pypo/bin/liquidsoap_scripts +SCRIPT=`readlink -f $0` +# Absolute directory this script is in +SCRIPTPATH=`dirname $SCRIPT` + +cd $SCRIPTPATH/liquidsoap_scripts python generate_liquidsoap_cfg.py exec ${ls_path} ${ls_param} 2>&1 diff --git a/python_apps/pypo/liquidsoap_scripts/generate_liquidsoap_cfg.py b/python_apps/pypo/liquidsoap_scripts/generate_liquidsoap_cfg.py index b123763e2..6144058e0 100644 --- a/python_apps/pypo/liquidsoap_scripts/generate_liquidsoap_cfg.py +++ b/python_apps/pypo/liquidsoap_scripts/generate_liquidsoap_cfg.py @@ -1,5 +1,6 @@ import logging import sys +import time from api_clients.api_client import AirtimeApiClient def generate_liquidsoap_config(ss): @@ -26,10 +27,19 @@ def generate_liquidsoap_config(ss): logging.basicConfig(format='%(message)s') ac = AirtimeApiClient(logging.getLogger()) -try: - ss = ac.get_stream_setting() - generate_liquidsoap_config(ss) -except Exception, e: - logging.error(str(e)) - print "Unable to connect to the Airtime server." - sys.exit(1) +attempts = 0 +max_attempts = 5 + +while True: + try: + ss = ac.get_stream_setting() + generate_liquidsoap_config(ss) + break + except Exception, e: + if attempts == max_attempts: + print "Unable to connect to the Airtime server." + logging.error(str(e)) + sys.exit(1) + else: + time.sleep(3) + attempts += 1