浏览代码

Except for CouldntDecodeError

Gamaliel Espinoza 6 年之前
父节点
当前提交
e94ddc354f
共有 2 个文件被更改,包括 27 次插入26 次删除
  1. 1 1
      ondemand/__init__.py
  2. 26 25
      ondemand/service.py

+ 1 - 1
ondemand/__init__.py

@@ -1 +1 @@
-__version__ = '1.3.1-rc1'
+__version__ = '1.3.2-rc1'

+ 26 - 25
ondemand/service.py

@@ -8,7 +8,6 @@ from fourier.dejavu.recognize import FilePerSecondRecognizer
 from datetime import datetime, timedelta
 from ondemand.endpoint import setup_endpoint
 from fourier.dejavu import Dejavu
-from Queue import Queue, Empty
 from firebase_admin import credentials
 from firebase_admin import db as fbdb
 from binascii import hexlify
@@ -27,6 +26,11 @@ import time
 import sys
 import os
 
+if sys.version_info >= (3, 0):
+    from queue import Queue, Empty
+else:
+    from Queue import Queue, Empty
+
 log.basicConfig(format='[%(asctime)s] %(message)s', level=log.INFO)
 
 AUDIOS_PATH = '/tmp'
@@ -66,9 +70,9 @@ dejavu = Dejavu({"database_type":"mem"})
 device_id = config['device_id']
 device_path = os.path.join(base_path, device_id)
 recognizer = FilePerSecondRecognizer
-"""calibrations = {}
+calibrations = {}
 device_ref = fbdb.reference('devices').child(config['device_id'])
-calibrations_ref = device_ref.child('calibrations')"""
+calibrations_ref = device_ref.child('calibrations')
 
 # settings
 queue_mode = QUEUE_THREAD
@@ -167,9 +171,9 @@ def process_segment(item, audios=None):
 
     log.info('processing segment: {}'.format(item))
 
-    """# 0. Obtener la información de calibración
+    # 0. Obtener la información de calibración
     calibration = calibrations_ref.child(station)
-    print(calibration)"""
+    print(calibration)
 
     # 1. obtener el audio desde firebase
     #    y calcular su fingerprint.
@@ -208,13 +212,14 @@ def process_segment(item, audios=None):
     # 2. Read the list of files from local database
     audios_counter = 0
     results = []
-    for path, name, ts in audios_iterable:
-        log.info('file: {}'.format(path))
-        audios_counter += os.path.isfile(path)
-        values = []
-        for match in dejavu.recognize(recognizer, path, 5,
-                                      ads_filter=[md5hash]):
-            try:
+
+    try:
+        for path, name, ts in audios_iterable:
+            log.info('file: {}'.format(path))
+            audios_counter += os.path.isfile(path)
+            values = []
+            for match in dejavu.recognize(recognizer, path, 5,
+                                          ads_filter=[md5hash]):
                 results.append({
                     'confidence': match['confidence'],
                     'timestamp': ts,
@@ -222,21 +227,17 @@ def process_segment(item, audios=None):
                 })
                 values.append(str(match['confidence']))
 
-            except KeyError as ex:
-                the_key = str(ex)
-                if the_key == 'confidence':
-                    log.warning('Invalid confidence')
-                else:
-                    log.warning(the_key)
+                ts += match['length'] / 1000
 
-            ts += match['length'] / 1000
+            log.info('{2} ({3}/{0}) {1}'.format(
+                os.path.split(path)[-1],
+                ','.join(values),
+                item['ad'],
+                station,
+            ))
 
-        log.info('{2} ({3}/{0}) {1}'.format(
-            os.path.split(path)[-1],
-            ','.join(values),
-            item['ad'],
-            station,
-        ))
+    except dejavu.CouldntDecodeError as ex:
+        log.error('[process_segment] {}'.format(ex))
     
     try:
         response = client.put_schedule_results(