From 47acb16e20b96c3ba07dcc30ec23c94e1cb54b6a Mon Sep 17 00:00:00 2001 From: James Date: Tue, 31 Jan 2012 11:22:30 -0500 Subject: [PATCH 1/7] CC-3286: Shows not recorded after upgrade to 2.0.0 from 1.8.2 - The issue was that the recorder wasn't pulling any schedule from Airtime. It should pull it when real timeout(every 1 hr) happens --- python_apps/show-recorder/recorder.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/python_apps/show-recorder/recorder.py b/python_apps/show-recorder/recorder.py index 80bc4ada8..1cd4425a1 100644 --- a/python_apps/show-recorder/recorder.py +++ b/python_apps/show-recorder/recorder.py @@ -180,6 +180,7 @@ class CommandListener(): self.current_schedule = {} self.shows_to_record = {} self.time_till_next_show = 3600 + self.real_timeout = True self.logger.info("RecorderFetch: init complete") self.server_timezone = ''; @@ -240,11 +241,13 @@ class CommandListener(): next_show = getDateTimeObj(start_time) delta = next_show - tnow + self.real_timeout = False out = delta.seconds self.logger.debug("Next show %s", next_show) self.logger.debug("Now %s", tnow) else: + self.real_timeout = True out = 3600 return out @@ -306,6 +309,8 @@ class CommandListener(): self.logger.error(e) loops = 1 + recording = False + while True: self.logger.info("Loop #%s", loops) try: @@ -315,10 +320,19 @@ class CommandListener(): self.logger.info(s) # start recording self.start_record() + + # if real timeout happended get show schedule from airtime + if self.real_timeout : + 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: self.logger.info(e) time.sleep(3) - loops += 1 if __name__ == '__main__': From da89b9fa745e8a9a3827128acaf4e7fe2aa50bc9 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 31 Jan 2012 11:37:12 -0500 Subject: [PATCH 2/7] CC-3286: Shows not recorded after upgrade to 2.0.0 from 1.8.2 - bug fix --- python_apps/show-recorder/recorder.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python_apps/show-recorder/recorder.py b/python_apps/show-recorder/recorder.py index 1cd4425a1..7ac18b046 100644 --- a/python_apps/show-recorder/recorder.py +++ b/python_apps/show-recorder/recorder.py @@ -275,8 +275,9 @@ class CommandListener(): self.sr.start() #remove show from shows to record. del self.shows_to_record[start_time] - time_till_next_show = self.get_time_till_next_show() - self.time_till_next_show = time_till_next_show + self.time_till_next_show = self.get_time_till_next_show() + # set real_timtout to false no matter what + self.real_timeout = False except Exception,e : import traceback top = traceback.format_exc() From 47eacd1165d0f827b8c243fc5ccff31056e06b46 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 31 Jan 2012 15:28:57 -0500 Subject: [PATCH 3/7] CC-3286: Shows not recorded after upgrade to 2.0.0 from 1.8.2 - fixed a bug. - extra fix: handle cancel recording event gracefully - better log --- python_apps/show-recorder/recorder.cfg | 1 + python_apps/show-recorder/recorder.py | 27 +++++++++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/python_apps/show-recorder/recorder.cfg b/python_apps/show-recorder/recorder.cfg index c010a8645..d817a32b2 100644 --- a/python_apps/show-recorder/recorder.cfg +++ b/python_apps/show-recorder/recorder.cfg @@ -24,6 +24,7 @@ record_bitrate = 256 record_samplerate = 44100 record_channels = 2 record_sample_size = 16 +record_timeout = 3600 #can be either ogg|mp3, mp3 recording requires installation of the package "lame" record_file_type = 'ogg' diff --git a/python_apps/show-recorder/recorder.py b/python_apps/show-recorder/recorder.py index 7ac18b046..3ec1caf39 100644 --- a/python_apps/show-recorder/recorder.py +++ b/python_apps/show-recorder/recorder.py @@ -179,8 +179,7 @@ class CommandListener(): self.sr = None self.current_schedule = {} self.shows_to_record = {} - self.time_till_next_show = 3600 - self.real_timeout = True + self.time_till_next_show = config["record_timeout"] self.logger.info("RecorderFetch: init complete") self.server_timezone = ''; @@ -214,7 +213,7 @@ class CommandListener(): self.parse_shows(temp) self.server_timezone = m['server_timezone'] elif(command == 'cancel_recording'): - if self.sr.is_recording(): + if self.sr is not None and self.sr.is_recording(): self.sr.cancel_recording() def parse_shows(self, shows): @@ -241,14 +240,12 @@ class CommandListener(): next_show = getDateTimeObj(start_time) delta = next_show - tnow - self.real_timeout = False out = delta.seconds self.logger.debug("Next show %s", next_show) self.logger.debug("Now %s", tnow) else: - self.real_timeout = True - out = 3600 + out = config["record_timeout"] return out def start_record(self): @@ -276,8 +273,6 @@ class CommandListener(): #remove show from shows to record. del self.shows_to_record[start_time] self.time_till_next_show = self.get_time_till_next_show() - # set real_timtout to false no matter what - self.real_timeout = False except Exception,e : import traceback top = traceback.format_exc() @@ -316,14 +311,21 @@ class CommandListener(): self.logger.info("Loop #%s", loops) try: # 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: 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 self.start_record() # if real timeout happended get show schedule from airtime - if self.real_timeout : + if update_schedule : temp = self.api_client.get_shows_to_record() if temp is not None: shows = temp['shows'] @@ -332,7 +334,10 @@ class CommandListener(): self.logger.info("Real Timeout: the schedule has updated") 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) loops += 1 From 8e40c95e9ab9b4999407d4d9c73befc21ed3073b Mon Sep 17 00:00:00 2001 From: James Date: Wed, 1 Feb 2012 10:57:38 -0500 Subject: [PATCH 4/7] SAAS-174: Ability to add Google Analytics to the demo instance - done --- airtime_mvc/application/Bootstrap.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index 09433a9c8..beeccf1a5 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -62,6 +62,8 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap protected function _initHeadScript() { + global $CC_CONFIG; + $view = $this->getResource('view'); $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); $baseDir = dirname($_SERVER['SCRIPT_FILENAME']); @@ -86,6 +88,9 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap $view->headScript()->appendScript("var livechat_client_id = '$client_id';"); $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){ + $view->headScript()->appendFile($baseUrl.'/js/libs/google-analytics.js?'.filemtime($baseDir.'/js/libs/google-analytics.js'),'text/javascript'); + } } protected function _initViewHelpers() From 81d24b7825b166a14360cca37906dc8082a71fc1 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 1 Feb 2012 11:48:29 -0500 Subject: [PATCH 5/7] SAAS-174: Ability to add Google Analytics to the demo instance - adding google-analytics.js --- airtime_mvc/public/js/libs/google-analytics.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 airtime_mvc/public/js/libs/google-analytics.js diff --git a/airtime_mvc/public/js/libs/google-analytics.js b/airtime_mvc/public/js/libs/google-analytics.js new file mode 100644 index 000000000..5a9352270 --- /dev/null +++ b/airtime_mvc/public/js/libs/google-analytics.js @@ -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); +})(); From 026bdebaccfa5b6c2fe621d943c22300dfe024d4 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 1 Feb 2012 12:09:59 -0500 Subject: [PATCH 6/7] CC-3293: Stream settings page does not remember the stream metadata format - fixed --- airtime_mvc/application/controllers/PreferenceController.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index 62b9343b4..2053a947e 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -205,6 +205,7 @@ class PreferenceController extends Zend_Controller_Action $values['icecast_vorbis_metadata'] = $form->getValue('icecast_vorbis_metadata'); $values['output_sound_device_type'] = $form->getValue('output_sound_device_type'); + $values['streamFormat'] = $form->getValue('streamFormat'); } if(!$error){ @@ -214,6 +215,8 @@ class PreferenceController extends Zend_Controller_Action for($i=1;$i<=$num_of_stream;$i++){ Application_Model_StreamSetting::setLiquidsoapError($i, "waiting"); } + // this goes into cc_pref table + Application_Model_Preference::SetStreamLabelFormat($values['streamFormat']); // store stream update timestamp Application_Model_Preference::SetStreamUpdateTimestamp(); Application_Model_RabbitMq::SendMessageToPypo("update_stream_setting", $data); From d0de29c10a7d5fcc3511395d574c62e908f93e55 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 1 Feb 2012 14:52:17 -0500 Subject: [PATCH 7/7] CC-3286: Shows not recorded after upgrade to 2.0.0 from 1.8.2 - missing a line from cfg in upgrade folder --- install_minimal/upgrades/airtime-2.0.0/recorder.cfg.200 | 1 + 1 file changed, 1 insertion(+) diff --git a/install_minimal/upgrades/airtime-2.0.0/recorder.cfg.200 b/install_minimal/upgrades/airtime-2.0.0/recorder.cfg.200 index 2765f9781..9ac92ce44 100644 --- a/install_minimal/upgrades/airtime-2.0.0/recorder.cfg.200 +++ b/install_minimal/upgrades/airtime-2.0.0/recorder.cfg.200 @@ -24,6 +24,7 @@ record_bitrate = 256 record_samplerate = 44100 record_channels = 2 record_sample_size = 16 +record_timeout = 3600 #can be either ogg|mp3, mp3 recording requires installation of the package "lame" record_file_type = 'ogg' \ No newline at end of file