feat: configure cue points analysis per track type

This commit is contained in:
jo 2023-02-10 22:55:54 +01:00 committed by Kyle Robbertze
parent 3a9ca109c3
commit f5e46c6f3d
22 changed files with 246 additions and 42 deletions

View file

@ -7,7 +7,7 @@ import pika
from loguru import logger
from .config import Config
from .pipeline import Pipeline, PipelineStatus
from .pipeline import Pipeline, PipelineOptions, PipelineStatus
from .status_reporter import StatusReporter
EXCHANGE = "airtime-uploads"
@ -111,17 +111,19 @@ class MessageListener:
body = body.decode()
except (UnicodeDecodeError, AttributeError):
pass
msg_dict = json.loads(body)
msg_dict: dict = json.loads(body)
file_id = msg_dict["file_id"]
audio_file_path = msg_dict["tmp_file_path"]
original_filename = msg_dict["original_filename"]
import_directory = msg_dict["import_directory"]
options = msg_dict.get("options", {})
metadata = MessageListener.spawn_analyzer_process(
audio_file_path,
import_directory,
original_filename,
options,
)
callback_url = f"{self.config.general.public_url}/rest/media/{file_id}"
@ -161,6 +163,7 @@ class MessageListener:
audio_file_path,
import_directory,
original_filename,
options: dict,
):
metadata = {}
@ -171,6 +174,7 @@ class MessageListener:
audio_file_path,
import_directory,
original_filename,
PipelineOptions(**options),
)
metadata = queue.get()
except Exception as exception:

View file

@ -1 +1 @@
from .pipeline import Pipeline, PipelineStatus
from .pipeline import Pipeline, PipelineOptions, PipelineStatus

View file

@ -3,6 +3,7 @@ from queue import Queue
from typing import Any, Dict, Protocol
from loguru import logger
from pydantic import BaseModel
from .analyze_cuepoint import analyze_cuepoint, analyze_duration
from .analyze_metadata import analyze_metadata
@ -23,6 +24,10 @@ class PipelineStatus(int, Enum):
FAILED = 2
class PipelineOptions(BaseModel):
analyze_cue_points: bool = True
class Pipeline:
"""Analyzes and imports an audio file into the Airtime library.
@ -33,10 +38,11 @@ class Pipeline:
@staticmethod
def run_analysis(
queue,
audio_file_path,
import_directory,
original_filename,
queue: Queue,
audio_file_path: str,
import_directory: str,
original_filename: str,
options: PipelineOptions,
):
"""Analyze and import an audio file, and put all extracted metadata into queue.
@ -78,7 +84,8 @@ class Pipeline:
metadata = {}
metadata = analyze_metadata(audio_file_path, metadata)
metadata = analyze_duration(audio_file_path, metadata)
metadata = analyze_cuepoint(audio_file_path, metadata)
if options.analyze_cue_points:
metadata = analyze_cuepoint(audio_file_path, metadata)
metadata = analyze_replaygain(audio_file_path, metadata)
metadata = analyze_playability(audio_file_path, metadata)

View file

@ -4,7 +4,7 @@ from queue import Queue
import pytest
from libretime_analyzer.pipeline import Pipeline
from libretime_analyzer.pipeline import Pipeline, PipelineOptions
from ..conftest import AUDIO_FILENAME, AUDIO_IMPORT_DEST
@ -16,6 +16,7 @@ def test_run_analysis(src_dir: Path, dest_dir: Path):
str(src_dir / AUDIO_FILENAME),
str(dest_dir),
AUDIO_FILENAME,
PipelineOptions(),
)
metadata = queue.get()