Quellcode durchsuchen

Repetitions needed

Gamaliel Espinoza vor 6 Jahren
Ursprung
Commit
33f06d4898
1 geänderte Dateien mit 17 neuen und 5 gelöschten Zeilen
  1. 17 5
      ondemand/service.py

+ 17 - 5
ondemand/service.py

@@ -14,6 +14,7 @@ from firebase_admin import db as fbdb
 from binascii import hexlify
 from base64 import b64decode
 import firebase_admin
+import mutagen.mp3
 import requests
 import dateutil
 import sqlite3
@@ -91,7 +92,17 @@ def process_segment(item):
     if not filename:
         print('ad file missing', file=sys.stderr)
         return
-    
+
+    # 1.1 Calcular el número de segmentos requeridos
+    # de acuerdo a la duración total del audio.
+    try:
+        audio = mutagen.mp3.MP3(filename)
+        segments_needed = int(round(float(audio.info.length) / float(5)))
+    except Exception as ex:
+        print('file {} is not an mp3'.format(audio))
+        print(ex)
+        return
+
     try:
         dejavu.fingerprint_file(filename)
     except Exception as ex:
@@ -122,7 +133,9 @@ def process_segment(item):
             item['schedule'],
             item['id'],
             None, # TODO: send results again
-            found=find_repetitions(results),
+            found=find_repetitions(results,
+                segments_needed=segments_needed
+            ),
             missing_files=(12 - audios_counter) \
                           if audios_counter < 12 else 0
         )
@@ -133,10 +146,9 @@ def process_segment(item):
     except UserWarning as warn:
         print(str(warn), file=sys.stderr)
 
-def find_repetitions(results):
+def find_repetitions(results, segments_needed=2):
     found_counter = 0
     found_index = None
-    segments_needed = 2
     seconds_needed = 9
     threshold = 20
     expect_space = False
@@ -218,7 +230,7 @@ def cloud_download(ad_key=None):
 
         with open(out_file, "wb") as fp:
             fp.write(response.content)
-            tp = (out_file, md5sum)
+            tp = (out_file, md5sum,)
             cloud_cache[ad_key] = tp
             return tp