From 2e41a673f4be863e88524322908b47a445263d6e Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sat, 24 Apr 2021 19:35:10 +0100 Subject: [PATCH] Normalise tracks on import --- app/config.py | 1 + app/music.py | 2 -- app/songdb.py | 17 ++++++++++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/config.py b/app/config.py index e284bae..c8f672e 100644 --- a/app/config.py +++ b/app/config.py @@ -30,6 +30,7 @@ class Config(object): MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS') is not None MILLISECOND_SIGFIGS = 0 MYSQL_CONNECT = "mysql+mysqldb://songdb:songdb@localhost/musicmuster" + NORMALISE_ON_IMPORT = True ROOT = "/home/kae/music" TESTMODE = True TIMER_MS = 500 diff --git a/app/music.py b/app/music.py index 16031bb..25af545 100644 --- a/app/music.py +++ b/app/music.py @@ -67,9 +67,7 @@ class Music: measures_to_reduce_by = 0 for i in range(1, steps + 1): measures_to_reduce_by += i - DEBUG(f"measures_to_reduce_by={measures_to_reduce_by}") volume_factor = 1 - (measures_to_reduce_by / total_measures_count) - DEBUG(f"volume_factor={volume_factor}") p.audio_set_volume(int(self.max_volume * volume_factor)) sleep(sleep_time) diff --git a/app/songdb.py b/app/songdb.py index 84a03e9..408a8af 100755 --- a/app/songdb.py +++ b/app/songdb.py @@ -2,11 +2,13 @@ import argparse import os +import shutil +import tempfile from config import Config from log import INFO from model import Tracks, session -from pydub import AudioSegment +from pydub import AudioSegment, effects from tinytag import TinyTag @@ -49,6 +51,19 @@ def add_path_to_db(path): track.mtime = os.path.getmtime(path) session.commit() + if Config.NORMALISE_ON_IMPORT: + # Get current file gid, uid and permissions + stats = os.stat(path) + normalised = effects.normalize(audio) + try: + fd, temp_path = tempfile.mkstemp() + normalised.export(temp_path, format=os.path.splitext(path)[1][1:]) + shutil.copyfile(temp_path, path) + os.chown(path, stats.st_uid, stats.st_gid) + os.chmod(path, stats.st_mode) + finally: + os.remove(temp_path) + return track