From 8d08aa888b8c93301bbfbacb82f6104eb3946e07 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Thu, 13 Sep 2012 14:54:52 -0400 Subject: [PATCH 1/8] cc-4421: Added special handling for files that mutagen returns None for. --- .../application/controllers/ApiController.php | 2 +- .../media-monitor2/media/monitor/metadata.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index c22e63d55..94cb7e518 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -901,7 +901,7 @@ class ApiController extends Zend_Controller_Action foreach ($data as $pair) { list($id, $gain) = $pair; - + // TODO : move this code into model -- RG $file = Application_Model_StoredFile::Recall($p_id = $id)->getPropelOrm(); $file->setDbReplayGain($gain); $file->save(); diff --git a/python_apps/media-monitor2/media/monitor/metadata.py b/python_apps/media-monitor2/media/monitor/metadata.py index 22968fcf0..36a02e097 100644 --- a/python_apps/media-monitor2/media/monitor/metadata.py +++ b/python_apps/media-monitor2/media/monitor/metadata.py @@ -178,14 +178,19 @@ class Metadata(Loggable): return # TODO : Simplify the way all of these rules are handled right not it's # extremely unclear and needs to be refactored. - if full_mutagen is None: raise BadSongFile(fpath) + #if full_mutagen is None: raise BadSongFile(fpath) + if full_mutagen is None: full_mutagen = {} self.__metadata = Metadata.airtime_dict(full_mutagen) # Now we extra the special values that are calculated from the mutagen # object itself: for special_key,f in airtime_special.iteritems(): - new_val = f(full_mutagen) - if new_val is not None: - self.__metadata[special_key] = new_val + try: + new_val = f(full_mutagen) + if new_val is not None: + self.__metadata[special_key] = new_val + except Exception: + self.logger.info("Could not get special key %s for %d" % + special_key, fpath) # Finally, we "normalize" all the metadata here: self.__metadata = mmp.normalized_metadata(self.__metadata, fpath) # Now we must load the md5: From 05f4bb64b238c5f4fc627167b6aa83bcbceb43f3 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Thu, 13 Sep 2012 15:05:36 -0400 Subject: [PATCH 2/8] cc-4421: Created a fake mutagen object for files that mutagen does not recognize --- .../media-monitor2/media/monitor/metadata.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/python_apps/media-monitor2/media/monitor/metadata.py b/python_apps/media-monitor2/media/monitor/metadata.py index 36a02e097..bb26485ef 100644 --- a/python_apps/media-monitor2/media/monitor/metadata.py +++ b/python_apps/media-monitor2/media/monitor/metadata.py @@ -41,6 +41,17 @@ airtime2mutagen = { "MDATA_KEY_COPYRIGHT" : "copyright", } +class FakeMutagen(object): + """ + Need this fake mutagen object so that airtime_special functions return a + proper default value instead of throwing an exceptions for files that + mutagen doesn't recognize + """ + def __init__(self,path): + self.path = path + self.mime = True + self.info = True + # Some airtime attributes are special because they must use the mutagen object # itself to calculate the value that they need. The lambda associated with each # key should attempt to extract the corresponding value from the mutagen object @@ -179,7 +190,7 @@ class Metadata(Loggable): # TODO : Simplify the way all of these rules are handled right not it's # extremely unclear and needs to be refactored. #if full_mutagen is None: raise BadSongFile(fpath) - if full_mutagen is None: full_mutagen = {} + if full_mutagen is None: full_mutagen = FakeMutagen(fpath) self.__metadata = Metadata.airtime_dict(full_mutagen) # Now we extra the special values that are calculated from the mutagen # object itself: @@ -188,9 +199,10 @@ class Metadata(Loggable): new_val = f(full_mutagen) if new_val is not None: self.__metadata[special_key] = new_val - except Exception: + except Exception as e: self.logger.info("Could not get special key %s for %d" % special_key, fpath) + self.logger.info(str(e)) # Finally, we "normalize" all the metadata here: self.__metadata = mmp.normalized_metadata(self.__metadata, fpath) # Now we must load the md5: From f754d78687c4bbc675e49a5bc52c48629c8bf39e Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Thu, 13 Sep 2012 15:12:54 -0400 Subject: [PATCH 3/8] Formatted comments and = --- airtime_mvc/application/models/Schedule.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index de81f04f7..7c86a57d3 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -61,11 +61,13 @@ SQL; } /** - * Queries the database for the set of schedules one hour before and after the given time. - * If a show starts and ends within that time that is considered the current show. Then the - * scheduled item before it is the previous show, and the scheduled item after it is the next - * show. This way the dashboard getCurrentPlaylist is very fast. But if any one of the three - * show types are not found through this mechanism a call is made to the old way of querying + * Queries the database for the set of schedules one hour before + * and after the given time. If a show starts and ends within that + * time that is considered the current show. Then the scheduled item + * before it is the previous show, and the scheduled item after it + * is the next show. This way the dashboard getCurrentPlaylist is + * very fast. But if any one of the three show types are not found + * through this mechanism a call is made to the old way of querying * the database to find the track info. **/ public static function GetPrevCurrentNext($p_previousShowID, $p_currentShowID, $p_nextShowID, $p_timeNow) @@ -118,8 +120,8 @@ SQL; $numberOfRows = count($rows); $results['previous'] = null; - $results['current'] = null; - $results['next'] = null; + $results['current'] = null; + $results['next'] = null; $timeNowAsMillis = strtotime($p_timeNow); for ($i = 0; $i < $numberOfRows; ++$i) { From e31d570a1c69ba2ef34e64b67b4e535671d985c4 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Thu, 13 Sep 2012 15:13:37 -0400 Subject: [PATCH 4/8] Sql formatting --- airtime_mvc/application/models/Schedule.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index 7c86a57d3..3b23548c3 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -85,10 +85,16 @@ SQL; LEFT JOIN cc_show_instances si ON st.instance_id = si.id"; $streamColumns = "ws.name AS artist_name, wm.liquidsoap_data AS track_title, "; - $streamJoin = "FROM cc_schedule AS st JOIN cc_webstream ws ON st.stream_id = ws.id - LEFT JOIN cc_show_instances AS si ON st.instance_id = si.id - LEFT JOIN cc_subjs AS sub on sub.id = ws.creator_id - LEFT JOIN (SELECT * FROM cc_webstream_metadata ORDER BY start_time DESC LIMIT 1) AS wm on st.id = wm.instance_id"; + $streamJoin = << Date: Thu, 13 Sep 2012 15:16:46 -0400 Subject: [PATCH 5/8] comment formatting --- airtime_mvc/application/models/Schedule.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index 3b23548c3..980c941d4 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -486,8 +486,9 @@ SQL; } /** - * Compute the difference between two times in the format "HH:MM:SS.mmmmmm". - * Note: currently only supports calculating millisec differences. + * Compute the difference between two times in the format . + * "HH:MM:SS.mmmmmm" Note: currently only supports calculating . + * millisec differences . * * @param string $p_time1 * @param string $p_time2 From 9eaa05274462c4f8db08bd21bdf2460c4aaeef2c Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Thu, 13 Sep 2012 15:38:30 -0400 Subject: [PATCH 6/8] FakeMutagen inherits from dict --- python_apps/media-monitor2/media/monitor/metadata.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python_apps/media-monitor2/media/monitor/metadata.py b/python_apps/media-monitor2/media/monitor/metadata.py index bb26485ef..d1bd9c0be 100644 --- a/python_apps/media-monitor2/media/monitor/metadata.py +++ b/python_apps/media-monitor2/media/monitor/metadata.py @@ -41,7 +41,7 @@ airtime2mutagen = { "MDATA_KEY_COPYRIGHT" : "copyright", } -class FakeMutagen(object): +class FakeMutagen(dict): """ Need this fake mutagen object so that airtime_special functions return a proper default value instead of throwing an exceptions for files that @@ -51,6 +51,7 @@ class FakeMutagen(object): self.path = path self.mime = True self.info = True + dict.__init__(self) # Some airtime attributes are special because they must use the mutagen object # itself to calculate the value that they need. The lambda associated with each From 1e76b6c751095e6e8509695aae2a529fe8ae9200 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Thu, 13 Sep 2012 15:45:30 -0400 Subject: [PATCH 7/8] Fixed typo --- python_apps/media-monitor2/media/monitor/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python_apps/media-monitor2/media/monitor/metadata.py b/python_apps/media-monitor2/media/monitor/metadata.py index d1bd9c0be..8ac0ca98f 100644 --- a/python_apps/media-monitor2/media/monitor/metadata.py +++ b/python_apps/media-monitor2/media/monitor/metadata.py @@ -201,7 +201,7 @@ class Metadata(Loggable): if new_val is not None: self.__metadata[special_key] = new_val except Exception as e: - self.logger.info("Could not get special key %s for %d" % + self.logger.info("Could not get special key %s for %s" % special_key, fpath) self.logger.info(str(e)) # Finally, we "normalize" all the metadata here: From 251e0f054a5375b3e46c8b2eb4aa3ae0e6510f09 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Thu, 13 Sep 2012 15:48:36 -0400 Subject: [PATCH 8/8] Typo --- python_apps/media-monitor2/media/monitor/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python_apps/media-monitor2/media/monitor/metadata.py b/python_apps/media-monitor2/media/monitor/metadata.py index 8ac0ca98f..bde17bc45 100644 --- a/python_apps/media-monitor2/media/monitor/metadata.py +++ b/python_apps/media-monitor2/media/monitor/metadata.py @@ -202,7 +202,7 @@ class Metadata(Loggable): self.__metadata[special_key] = new_val except Exception as e: self.logger.info("Could not get special key %s for %s" % - special_key, fpath) + (special_key, fpath)) self.logger.info(str(e)) # Finally, we "normalize" all the metadata here: self.__metadata = mmp.normalized_metadata(self.__metadata, fpath)