bbye98 / minim

A collection of music service (iTunes, Qobuz, Spotify, TIDAL) APIs for media information retrieval and semi-automated music tagging.
https://bbye98.github.io/minim/
GNU General Public License v3.0
41 stars 3 forks source link

Required dependencies? #17

Closed project-owner closed 3 months ago

project-owner commented 3 months ago

The installation of the 'minim' on Raspberry Pi forced to install Rust compiler and Ffmpeg library. Is it really required? Thanks!

bbye98 commented 3 months ago

The Rust compiler is only necessary for the ruff linter, which is not a required dependency in requirements_minimal.txt.

FFmpeg is required for format conversions in the audio submodule. If it's not installed, those features are unavailable.

project-owner commented 3 months ago

I think minim.audio logically belongs to a separate project/repository. Or there should be a way to easily exclude it from the 'minim' installation. Just my 2c recommendation/observation :)

bbye98 commented 3 months ago

I disagree. minim.audio is directly dependent on the APIs for tagging audio files, and certain API endpoints may use minim.audio classes for reading and writing audio files. Minim was designed with this two-way relationship in mind.

project-owner commented 3 months ago

OK, so far I don't see any dependency on minim.audio in qobuz, itunes, spotify and tidal and I think this is right approach. Anyway, it's up to you. It's just the same issue for me and others - unnessessary large library footprint because of the functionality which I'm not using. Making it more modular would be helpful. Thank you!

bbye98 commented 3 months ago

I'm not sure I share your perspective or fully understand what the issue is currently.

  1. Minim is a personal project that does everything I need it to do, and I've open-sourced it on the off chance that others want to manage and maintain their music libraries just like me. The main goal is to be able to work with audio files directly and update metadata as obtained from different music service APIs.

  2. Minim only has three required dependencies: cryptography, Mutagen, and requests. These are lightweight libraries taking up less than 3 MB of disk space when compressed. Minim itself, when packed into a Python wheel, takes around 134 KB. I expect that <<100 MB is required when everything is unpacked.

  3. FFmpeg is NOT required. Not having it installed means that the audio.Audio.convert method (which is inherited by all the audio.*Audio classes) is not available, but the rest of the module is fully functional. I could have made FFmpeg mandatory, but I already took a proactive approach in making it optional.

  4. Likewise, ruff is NOT required. It is a tool I use in the development of Minim, so I include it as a dependency in requirements.txt so that other developers who want to tinker with Minim's source code will have an easier time setting up environments where everything just...works.