From: Calin Crisan Date: Sat, 11 Jan 2014 10:40:42 +0000 (+0200) Subject: added a placeholder icon for when no media preview is available X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=dae6e497ef74cb7a87c985fe4f7d1ea134ccc66d;p=motioneye-debian added a placeholder icon for when no media preview is available --- diff --git a/src/handlers.py b/src/handlers.py index f604d63..5229a6f 100644 --- a/src/handlers.py +++ b/src/handlers.py @@ -26,6 +26,7 @@ import config import mediafiles import motionctl import remote +import settings import template import update import v4l2ctl @@ -680,20 +681,15 @@ class PictureHandler(BaseHandler): camera_config = config.get_camera(camera_id) if camera_config['@proto'] != 'v4l2': - def on_response(response): - camera_url = remote.make_remote_camera_url( - camera_config.get('@host'), - camera_config.get('@port'), - camera_config.get('@remote_camera_id')) - - camera_full_url = camera_config['@proto'] + '://' + camera_url + def on_response(content): + if content: + self.set_header('Content-Type', 'image/jpeg') + + else: + self.set_header('Content-Type', 'image/svg+xml') + content = open(os.path.join(settings.STATIC_PATH, 'img', 'no-preview.svg')).read() - if response is None: - return self.finish_json({'error': 'Failed to get picture preview for %(url)s.' % { - 'url': camera_full_url}}) - - self.set_header('Content-Type', 'image/jpeg') - self.finish(response) + self.finish(content) remote.get_media_preview( camera_config.get('@host'), @@ -712,7 +708,13 @@ class PictureHandler(BaseHandler): width=self.get_argument('width', None), height=self.get_argument('height', None)) - self.set_header('Content-Type', 'image/jpeg') + if content: + self.set_header('Content-Type', 'image/jpeg') + + else: + self.set_header('Content-Type', 'image/svg+xml') + content = open(os.path.join(settings.STATIC_PATH, 'img', 'no-preview.svg')).read() + self.finish(content) @@ -834,20 +836,15 @@ class MovieHandler(BaseHandler): camera_config = config.get_camera(camera_id) if camera_config['@proto'] != 'v4l2': - def on_response(response): - camera_url = remote.make_remote_camera_url( - camera_config.get('@host'), - camera_config.get('@port'), - camera_config.get('@remote_camera_id')) - - camera_full_url = camera_config['@proto'] + '://' + camera_url - - if response is None: - return self.finish_json({'error': 'Failed to get movie preview for %(url)s.' % { - 'url': camera_full_url}}) + def on_response(content): + if content: + self.set_header('Content-Type', 'image/jpeg') + + else: + self.set_header('Content-Type', 'image/svg+xml') + content = open(os.path.join(settings.STATIC_PATH, 'img', 'no-preview.svg')).read() - self.set_header('Content-Type', 'image/jpeg') - self.finish(response) + self.finish(content) remote.get_media_preview( camera_config.get('@host'), @@ -866,7 +863,13 @@ class MovieHandler(BaseHandler): width=self.get_argument('width', None), height=self.get_argument('height', None)) - self.set_header('Content-Type', 'image/jpeg') + if content: + self.set_header('Content-Type', 'image/jpeg') + + else: + self.set_header('Content-Type', 'image/svg+xml') + content = open(os.path.join(settings.STATIC_PATH, 'img', 'no-preview.svg')).read() + self.finish(content) diff --git a/src/mediafiles.py b/src/mediafiles.py index 579acdc..9e8d235 100644 --- a/src/mediafiles.py +++ b/src/mediafiles.py @@ -148,8 +148,17 @@ def make_movie_preview(camera_config, full_path): return None - if os.path.getsize(full_path + '.thumb') == 0: - logging.debug('movie was too short, grabbing first frame from %(path)s...' % {'path': full_path}) + try: + st = os.stat(full_path + '.thumb') + + except os.error: + logging.error('failed to create movie preview for %(path)s: ffmpeg error' % { + 'path': full_path}) + + return None + + if st.st_size == 0: + logging.debug('movie is too short, grabbing first frame from %(path)s...' % {'path': full_path}) # try again, this time grabbing the very first frame try: diff --git a/static/img/no-preview.svg b/static/img/no-preview.svg new file mode 100644 index 0000000..17c39f3 --- /dev/null +++ b/static/img/no-preview.svg @@ -0,0 +1,74 @@ + + + +image/svg+xml \ No newline at end of file