From 8e91c515f0660f8bfc985dfdff68cc85ba62c2e5 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 17:26:37 -0400 Subject: [PATCH] cc-4397: Fixed handling for bad metadata. --- airtime_mvc/application/models/Webstream.php | 1 - python_apps/media-monitor2/media/monitor/airtime.py | 5 +++++ python_apps/media-monitor2/media/monitor/metadata.py | 8 +++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/models/Webstream.php b/airtime_mvc/application/models/Webstream.php index 6d1a9af13..d9c64746f 100644 --- a/airtime_mvc/application/models/Webstream.php +++ b/airtime_mvc/application/models/Webstream.php @@ -207,7 +207,6 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable return false; } } - return true; } diff --git a/python_apps/media-monitor2/media/monitor/airtime.py b/python_apps/media-monitor2/media/monitor/airtime.py index 5e31dbfe4..411db2358 100644 --- a/python_apps/media-monitor2/media/monitor/airtime.py +++ b/python_apps/media-monitor2/media/monitor/airtime.py @@ -2,6 +2,7 @@ from kombu.messaging import Exchange, Queue, Consumer from kombu.connection import BrokerConnection from os.path import normpath +from mutagen.easymp4 import EasyMP4KeyError import json import os @@ -117,6 +118,10 @@ class AirtimeMessageReceiver(Loggable): try: Metadata.write_unsafe(path=md_path, md=msg) except BadSongFile as e: self.logger.info("Cannot find metadata file: '%s'" % e.path) + except EasyMP4KeyError as e: + self.logger.info("Metadata instance not supported for this file '%s'" \ + % e.path) + self.logger.info(str(e)) except Exception as e: # TODO : add md_path to problem path or something? self.fatal_exception("Unknown error when writing metadata to: '%s'" diff --git a/python_apps/media-monitor2/media/monitor/metadata.py b/python_apps/media-monitor2/media/monitor/metadata.py index e2af483bd..22968fcf0 100644 --- a/python_apps/media-monitor2/media/monitor/metadata.py +++ b/python_apps/media-monitor2/media/monitor/metadata.py @@ -3,6 +3,7 @@ import mutagen import math import os import copy +from mutagen.easymp4 import EasyMP4KeyError from media.monitor.exceptions import BadSongFile from media.monitor.log import Loggable @@ -150,12 +151,17 @@ class Metadata(Loggable): """ if not os.path.exists(path): raise BadSongFile(path) song_file = mutagen.File(path, easy=True) + ex = None for airtime_k, airtime_v in md.iteritems(): if airtime_k in airtime2mutagen: # The unicode cast here is mostly for integers that need to be # strings - song_file[ airtime2mutagen[airtime_k] ] = unicode(airtime_v) + try: + song_file[ airtime2mutagen[airtime_k] ] = unicode(airtime_v) + except EasyMP4KeyError as e: + ex = e song_file.save() + if ex: raise ex def __init__(self, fpath): # Forcing the unicode through