ZivaVatra / flac2all

A multi-process batch flac converter. For music lovers with large collections :-)
http://flac2all.witheredfire.com/
GNU General Public License v3.0
82 stars 19 forks source link

News / Changes

05/01/2020 - v5.3 released

Happy new year everyone! I found out flac2all works on Apple Mac's as well, which was a nice development :-)

Changes in this version:

28/02/2020 - v5.2 released

23/01/2020 - v5.1 released

06/01/2020

Happy new year everyone! With the new year comes some big changes. Python2 was officially retired, and python3 is now the default for the forseeable future. With that, flac2all has been ported to Python3 (along with some new features/codecs). For details of what is new, please see "Details" below. The program has been tested over the last few months by me and seems good, but if come across any problems please raise a bug report.

Older News/Changes

For older news/changes, please see CHANGES.md

What is it

Started in 2003 as a simple flac to ogg vorbis script (written in bash), flac2all has grown into a python based, clustered parallel processing program that will convert your collection of FLAC files into various other formats (70+ formats if you meet all dependencies), complete with any tags that the source file had. Designed to be extended with new formats easily as time goes on, it is a utility for people with with large FLAC collections who also want a way to convert multiple files in parallel.

Details

Version5 is the new release of flac2all. The decision to bump up a version number was primarily driven by the move to python3. Python2 is scheduled to be EOL after the 1st January 2020, and a lot of distros are already defaulting to python3 as the system Python interpreter. Rather than hold two versions of "version4", one for py2 and one for py3, it made more sense to bump the version number (thats what they are there for, after all).

Following on from my tradition of adding at least one major feature in major version upgrades. Version5 has the following new features:

Dependencies

Optional dependencies

Packages for Distros

Stable:

Dev

At the moment there are no packages for the development branch.

There are however testing packages that I deploy to to the "test" pypi. These package versions have "test" prepended to their version number, and don't track the official version numbers. These versions may or may not work, as they are beta. You can install the test package to your home directory using pip install -U --index-url https://test.pypi.org/simple/ flac2all

If you want the bleeding edge, including to test different branches, follow the instructions under Development

Usage

Full information, including options and all current available conversion modes, can be found by running "flac2all -h".

Non clustered (original)

Please see USAGE.md

Clustered

Please see README-CLUSTERED.md

Use as a library

You can in fact make use of flac2all as a library, if you so desire. Each module can be used independently if you want to integrate flac2all into your own system. You just have to make sure the flac2all path is in your PYTHONPATH variable.

For example, to convert a flac to ogg vorbis:

from vorbis import vorbis

codec = vorbis(opts={"oggencopts":"quality=2", "overwrite=False"})
codec.convert("infile.flac", "outfile")

or to convert to mp3 (using lame):

from mp3 import lameMp3

codec = lameMp3(opts={"lameopts":"-preset standard:q 0", "overwrite=False"})
codec.convert("infile.flac", "outfile")

Notice you don't specify the outfile extension, that is added automatically. .

Development:

If you want the bleeding edge version, best to check out the latest "version5" branch from git. Generally development work will be done in branches then merged, so master should be functional.

Tu run the version straight from the git repo, cd to "flac2allpkg", and then run "python ./__init_\.py -h". The rest should work as normal.

Since version 4, all codecs are split into their own modules, which allows developers to easily add new codecs. The internal function tables stay the same, meaning that as long as you follow the structure of the main functions, you can add any codec you want.

The easiest way to get started writing a codec module is to look at an existing one. I would recommend "flac.py", as it shows both encoding and decoding, and flac to flac conversion was very simple to implement. A more complex example is the mp3 module, which shows how complex things can get.

Fixed branches

There are some branches that are considered "fixed". This means that they tend to be self contained, and they need not track any other branch. A list of these branches as as follows:

Dev etiquette

If you wish to contribute to flac2all, I ask that you keep to the following guidelines:

Raising a bug report

Before you raise a bug report, please test with the latest version from git. Sometimes distro packages lag the latest stable by a couple of versions, so you may hit bugs that have already been fixed.

Examples in use