CC-5050: Tracks with a very high track count cannot be saved into database
-fixed
This commit is contained in:
parent
07f0ae6c28
commit
80bd57ce4e
|
@ -7,6 +7,8 @@ from media.monitor.pure import format_length, file_md5, is_airtime_recorded, \
|
||||||
|
|
||||||
defs_loaded = False
|
defs_loaded = False
|
||||||
|
|
||||||
|
MAX_SIGNED_INT = 2**31-1
|
||||||
|
|
||||||
def is_defs_loaded():
|
def is_defs_loaded():
|
||||||
global defs_loaded
|
global defs_loaded
|
||||||
return defs_loaded
|
return defs_loaded
|
||||||
|
@ -37,11 +39,13 @@ def load_definitions():
|
||||||
t.default(u'')
|
t.default(u'')
|
||||||
t.depends('bitrate')
|
t.depends('bitrate')
|
||||||
t.translate(lambda k: k['bitrate'])
|
t.translate(lambda k: k['bitrate'])
|
||||||
|
t.max_value(MAX_SIGNED_INT)
|
||||||
|
|
||||||
with md.metadata('MDATA_KEY_SAMPLERATE') as t:
|
with md.metadata('MDATA_KEY_SAMPLERATE') as t:
|
||||||
t.default(u'0')
|
t.default(u'0')
|
||||||
t.depends('sample_rate')
|
t.depends('sample_rate')
|
||||||
t.translate(lambda k: k['sample_rate'])
|
t.translate(lambda k: k['sample_rate'])
|
||||||
|
t.max_value(MAX_SIGNED_INT)
|
||||||
|
|
||||||
with md.metadata('MDATA_KEY_FTYPE') as t:
|
with md.metadata('MDATA_KEY_FTYPE') as t:
|
||||||
t.depends('ftype') # i don't think this field even exists
|
t.depends('ftype') # i don't think this field even exists
|
||||||
|
@ -69,10 +73,11 @@ def load_definitions():
|
||||||
|
|
||||||
with md.metadata("MDATA_KEY_TRACKNUMBER") as t:
|
with md.metadata("MDATA_KEY_TRACKNUMBER") as t:
|
||||||
t.depends("tracknumber")
|
t.depends("tracknumber")
|
||||||
|
t.max_value(MAX_SIGNED_INT)
|
||||||
|
|
||||||
with md.metadata("MDATA_KEY_BPM") as t:
|
with md.metadata("MDATA_KEY_BPM") as t:
|
||||||
t.depends("bpm")
|
t.depends("bpm")
|
||||||
t.max_length(8)
|
t.max_value(MAX_SIGNED_INT)
|
||||||
|
|
||||||
with md.metadata("MDATA_KEY_LABEL") as t:
|
with md.metadata("MDATA_KEY_LABEL") as t:
|
||||||
t.depends("organization")
|
t.depends("organization")
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from media.monitor.pure import truncate_to_length, toposort
|
from media.monitor.pure import truncate_to_value, truncate_to_length, toposort
|
||||||
from os.path import normpath
|
from os.path import normpath
|
||||||
from media.monitor.exceptions import BadSongFile
|
from media.monitor.exceptions import BadSongFile
|
||||||
from media.monitor.log import Loggable
|
from media.monitor.log import Loggable
|
||||||
|
@ -43,11 +43,15 @@ class MetadataElement(Loggable):
|
||||||
self.__default = None
|
self.__default = None
|
||||||
self.__is_normalized = lambda _ : True
|
self.__is_normalized = lambda _ : True
|
||||||
self.__max_length = -1
|
self.__max_length = -1
|
||||||
|
self.__max_value = -1
|
||||||
self.__translator = None
|
self.__translator = None
|
||||||
|
|
||||||
def max_length(self,l):
|
def max_length(self,l):
|
||||||
self.__max_length = l
|
self.__max_length = l
|
||||||
|
|
||||||
|
def max_value(self,v):
|
||||||
|
self.__max_value = v
|
||||||
|
|
||||||
def optional(self, setting):
|
def optional(self, setting):
|
||||||
self.__optional = setting
|
self.__optional = setting
|
||||||
|
|
||||||
|
@ -143,6 +147,8 @@ class MetadataElement(Loggable):
|
||||||
r = self.__normalizer( self.__translator(full_deps) )
|
r = self.__normalizer( self.__translator(full_deps) )
|
||||||
if self.__max_length != -1:
|
if self.__max_length != -1:
|
||||||
r = truncate_to_length(r, self.__max_length)
|
r = truncate_to_length(r, self.__max_length)
|
||||||
|
if self.__max_value != -1:
|
||||||
|
r = truncate_to_value(r, self.__max_value)
|
||||||
return r
|
return r
|
||||||
|
|
||||||
def normalize_mutagen(path):
|
def normalize_mutagen(path):
|
||||||
|
|
|
@ -465,6 +465,14 @@ def truncate_to_length(item, length):
|
||||||
if len(item) > length: return item[0:length]
|
if len(item) > length: return item[0:length]
|
||||||
else: return item
|
else: return item
|
||||||
|
|
||||||
|
def truncate_to_value(item, value):
|
||||||
|
""" Truncates 'item' to 'value' """
|
||||||
|
if isinstance(item, basestring): item = int(item)
|
||||||
|
if isinstance(item, int):
|
||||||
|
item = abs(item)
|
||||||
|
if item > value: item = value
|
||||||
|
return str(item)
|
||||||
|
|
||||||
def format_length(mutagen_length):
|
def format_length(mutagen_length):
|
||||||
""" Convert mutagen length to airtime length """
|
""" Convert mutagen length to airtime length """
|
||||||
t = float(mutagen_length)
|
t = float(mutagen_length)
|
||||||
|
|
Loading…
Reference in New Issue