|
@@ -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
|
|
|
|