[EPIC] Audio Uploader re-implementation in Python
Important: The description is not up to date. The actual implementation is split into several tasks and modules
In its foundation this component is a rewrite of the AURA Tank component in Python. During development its demanding to switch to a service implemented in Go, especially since almost all other AURA backend services are implemented in Python, this should provide us better maintainability, extensibility and avoid technical debt.
Furthermore, this should provide us with a solid basis for open requirements, such as:
- Upload of pre-produced shows
- Recordings per shows
- Importer via REST and file system folders
- Rich metadata management features
- Global Music Library
- Music Pools
- Search based on all metadata
- Manually created playlists
- Automatic playlists based on filters and other criteria such as time
- Versatile persistence layer including local and cloud storage solutions
- Modern API and query layer including HTTP streaming and permanent URIs based on UUIDs
- Archive functionalities
- Authorization & Authentication, especially against Steering
- A plugin system based on asynchronous workers/task based on a strong Python Scheduler Framework. This plugin system should us enable features such as transcoding, download or (CBA) Upload.
This list is a derived from requirements with different priorities and will eventually not be implemented all at once. This list is more for giving an outline when specifying the actual architecture and will be refined.
Coverage of existing services
Battery is a "monolithic" replacement for these components:
- Tank
- Tank Cut & Glue
- Tank Uploader
- Any proxy service for Engine Recorder
Adapt and integrate existing solutions
Since MAM is a general use case, we should prefer building upon an existing FOSS solution, rather than developing from scratch. Extensive research has to be done up front.