Merge branch 'devel' of dev.sourcefabric.org:airtime into devel

Conflicts:
	airtime_mvc/application/Bootstrap.php
This commit is contained in:
Daniel Franklin 2012-02-02 14:49:08 -05:00
commit 61fb8a4fb9
8 changed files with 48 additions and 27 deletions

View File

@ -89,21 +89,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
$view->headScript()->appendFile($baseUrl . '/js/airtime/common/livechat.js?'.filemtime($baseDir.'/js/airtime/common/livechat.js'), 'text/javascript'); $view->headScript()->appendFile($baseUrl . '/js/airtime/common/livechat.js?'.filemtime($baseDir.'/js/airtime/common/livechat.js'), 'text/javascript');
} }
if(isset($CC_CONFIG['demo']) && $CC_CONFIG['demo'] == 1){ if(isset($CC_CONFIG['demo']) && $CC_CONFIG['demo'] == 1){
// since we need to append google analytic code right before </head> we can't use appendFile function $view->headScript()->appendFile($baseUrl.'/js/libs/google-analytics.js?'.filemtime($baseDir.'/js/libs/google-analytics.js'),'text/javascript');
// we will just store raw html into some variable
$view->google_analytics = "<script type=\"text/javascript\">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-28765064-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>";
} }
} }

View File

@ -168,7 +168,7 @@ class LibraryController extends Zend_Controller_Action
return; return;
} }
$res = $file->delete(); $res = $file->delete(true);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$this->view->message = $res->getMessage(); $this->view->message = $res->getMessage();

View File

@ -205,6 +205,7 @@ class PreferenceController extends Zend_Controller_Action
$values['icecast_vorbis_metadata'] = $form->getValue('icecast_vorbis_metadata'); $values['icecast_vorbis_metadata'] = $form->getValue('icecast_vorbis_metadata');
$values['output_sound_device_type'] = $form->getValue('output_sound_device_type'); $values['output_sound_device_type'] = $form->getValue('output_sound_device_type');
$values['streamFormat'] = $form->getValue('streamFormat');
} }
if(!$error){ if(!$error){
@ -214,6 +215,8 @@ class PreferenceController extends Zend_Controller_Action
for($i=1;$i<=$num_of_stream;$i++){ for($i=1;$i<=$num_of_stream;$i++){
Application_Model_StreamSetting::setLiquidsoapError($i, "waiting"); Application_Model_StreamSetting::setLiquidsoapError($i, "waiting");
} }
// this goes into cc_pref table
Application_Model_Preference::SetStreamLabelFormat($values['streamFormat']);
// store stream update timestamp // store stream update timestamp
Application_Model_Preference::SetStreamUpdateTimestamp(); Application_Model_Preference::SetStreamUpdateTimestamp();
Application_Model_RabbitMq::SendMessageToPypo("update_stream_setting", $data); Application_Model_RabbitMq::SendMessageToPypo("update_stream_setting", $data);

View File

@ -303,7 +303,7 @@ class Application_Model_StoredFile {
* *
* @return void|PEAR_Error * @return void|PEAR_Error
*/ */
public function delete() public function delete($deleteFromPlaylist=false)
{ {
if ($this->exists()) { if ($this->exists()) {
if ($this->getFormat() == 'audioclip') { if ($this->getFormat() == 'audioclip') {
@ -314,8 +314,9 @@ class Application_Model_StoredFile {
} }
} }
// don't delete from the playslist. We might want to put a flag if($deleteFromPlaylist){
//Application_Model_Playlist::DeleteFileFromAllPlaylists($this->getId()); Application_Model_Playlist::DeleteFileFromAllPlaylists($this->getId());
}
// set file_exists falg to false // set file_exists falg to false
$this->_file->setDbFileExists(false); $this->_file->setDbFileExists(false);

View File

@ -0,0 +1,9 @@
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-28765064-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

View File

@ -24,6 +24,7 @@ record_bitrate = 256
record_samplerate = 44100 record_samplerate = 44100
record_channels = 2 record_channels = 2
record_sample_size = 16 record_sample_size = 16
record_timeout = 3600
#can be either ogg|mp3, mp3 recording requires installation of the package "lame" #can be either ogg|mp3, mp3 recording requires installation of the package "lame"
record_file_type = 'ogg' record_file_type = 'ogg'

View File

@ -24,6 +24,7 @@ record_bitrate = 256
record_samplerate = 44100 record_samplerate = 44100
record_channels = 2 record_channels = 2
record_sample_size = 16 record_sample_size = 16
record_timeout = 3600
#can be either ogg|mp3, mp3 recording requires installation of the package "lame" #can be either ogg|mp3, mp3 recording requires installation of the package "lame"
record_file_type = 'ogg' record_file_type = 'ogg'

View File

@ -179,7 +179,7 @@ class CommandListener():
self.sr = None self.sr = None
self.current_schedule = {} self.current_schedule = {}
self.shows_to_record = {} self.shows_to_record = {}
self.time_till_next_show = 3600 self.time_till_next_show = config["record_timeout"]
self.logger.info("RecorderFetch: init complete") self.logger.info("RecorderFetch: init complete")
self.server_timezone = ''; self.server_timezone = '';
@ -213,7 +213,7 @@ class CommandListener():
self.parse_shows(temp) self.parse_shows(temp)
self.server_timezone = m['server_timezone'] self.server_timezone = m['server_timezone']
elif(command == 'cancel_recording'): elif(command == 'cancel_recording'):
if self.sr.is_recording(): if self.sr is not None and self.sr.is_recording():
self.sr.cancel_recording() self.sr.cancel_recording()
def parse_shows(self, shows): def parse_shows(self, shows):
@ -245,7 +245,7 @@ class CommandListener():
self.logger.debug("Next show %s", next_show) self.logger.debug("Next show %s", next_show)
self.logger.debug("Now %s", tnow) self.logger.debug("Now %s", tnow)
else: else:
out = 3600 out = config["record_timeout"]
return out return out
def start_record(self): def start_record(self):
@ -272,8 +272,7 @@ class CommandListener():
self.sr.start() self.sr.start()
#remove show from shows to record. #remove show from shows to record.
del self.shows_to_record[start_time] del self.shows_to_record[start_time]
time_till_next_show = self.get_time_till_next_show() self.time_till_next_show = self.get_time_till_next_show()
self.time_till_next_show = time_till_next_show
except Exception,e : except Exception,e :
import traceback import traceback
top = traceback.format_exc() top = traceback.format_exc()
@ -306,19 +305,40 @@ class CommandListener():
self.logger.error(e) self.logger.error(e)
loops = 1 loops = 1
recording = False
while True: while True:
self.logger.info("Loop #%s", loops) self.logger.info("Loop #%s", loops)
try: try:
# block until 5 seconds before the next show start # block until 5 seconds before the next show start
self.connection.drain_events(timeout=self.time_till_next_show) self.connection.drain_events(timeout=int(self.time_till_next_show))
except socket.timeout, s: except socket.timeout, s:
self.logger.info(s) self.logger.info(s)
# start_record set time_till_next_show to config["record_timeout"] so we should check before
# if timeout amount was 1 hr..
update_schedule = False
if int(self.time_till_next_show) == int(config["record_timeout"]) :
update_schedule = True
# start recording # start recording
self.start_record() self.start_record()
# if real timeout happended get show schedule from airtime
if update_schedule :
temp = self.api_client.get_shows_to_record()
if temp is not None:
shows = temp['shows']
self.server_timezone = temp['server_timezone']
self.parse_shows(shows)
self.logger.info("Real Timeout: the schedule has updated")
except Exception, e: except Exception, e:
self.logger.info(e) import traceback
top = traceback.format_exc()
self.logger.error('Exception: %s', e)
self.logger.error("traceback: %s", top)
time.sleep(3) time.sleep(3)
loops += 1 loops += 1
if __name__ == '__main__': if __name__ == '__main__':