feat: configure cue points analysis per track type
This commit is contained in:
parent
3a9ca109c3
commit
f5e46c6f3d
22 changed files with 246 additions and 42 deletions
|
@ -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:
|
||||
|
|
|
@ -1 +1 @@
|
|||
from .pipeline import Pipeline, PipelineStatus
|
||||
from .pipeline import Pipeline, PipelineOptions, PipelineStatus
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue