beets-yapl
beets plugin to parse a yaml playlist format and compile it into the near universally supported M3U format.
M3U playlists are inherently fragile, breaking at the slightest change in a file's path. This plugin utilises beetDreamers' queries to define playlists in a simple yaml format, where you can provide precisely the level of detail required to unambiguously find the song you're after.
A playlist can be written as:
name: Christmas
tracks:
# The library only contains one version of this song, so this is enough.
- title: Christmas (Baby Please Come Home)
artist: Darlene Love
# The library contains multiple recordings of this track, so let's include
# the year to get the right version.
- artist: Withered Hand
title: Real Snow
year: 2013
# Typing Japanese characters is finicky, so let's just use the track's
# MusicBrainz ID
- mb_trackid: dafff56a-f327-4de5-ab35-633c8863857f
which will be compiled into an M3U playlist looking something like:
#EXTM3U
#PLAYLIST:Christmas
#EXTINF:166, Darlene Love - Christmas (Baby Please Come Home)
../Darlene Love/Non-Album/Christmas (Baby Please Come Home).flac
#EXTINF:202, Withered Hand - Real Snow
../Withered Hand/Non-Album/Real Snow.flac
#EXTINF:266, クレイジーケンバンド - クリスマスなんて、大嫌い!!なんちゃって
../クレイジーケンバンド/Non-Album/クリスマスなんて、大嫌い!!なんちゃって.m4a
Getting Started
Installation
To install via pip: Run pip install beets-yapl.
If you're on an Arch-based distro, you can install it from the AUR as beets-yapl-git.
Configuration
Enable the plugin by adding it to your plugin option in the beets configuration and configure the plugin.
plugins:
- ...
- yapl
yapl:
input_path: ~/Music/playlists/
output_path: ~/Music/playlists/
relative: true
input_path: path decides what directory yapl will search for yapl files.
output_path: path decides where to output the compiled m3u files. Can be the same as input_path.
relative: bool controls whether to use absolute or relative filepaths in the outputted M3U files.
Run
Once configured, run beet yapl to compile all the playlists in your input_path directory. Warnings will be issued for any ambiguous or resultless queries and these tracks will be left out of the output.
$ beet yapl
== Parsing 13 playlists ==
christmas.yapl: 2 results for query: ['artist:Withered Hand', 'title:Real Snow']
favourites.yapl: No results for query: ['title: How I Won My Stripes', 'artist: JOKES']
== 13 playlists compiled ==
Release files for beets-yapl 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| beets_yapl-0.2.1.tar.gz | 16.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| beets_yapl-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.5 kB
Release files / beets_yapl-0.2.1.tar.gz
| Download URL | beets_yapl-0.2.1.tar.gz |
|---|---|
| Size | 16.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07494b08150a22330369c40fdccad80f7b5b65262695311a9eaa51bd2e1b6ac9
|
|
BLAKE2b-256 checksum How to use checksums |
bf2372ff8af8ba3ae69eaccebe7e7295c0d4bee8fc5106472b964292587d220b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / beets_yapl-0.2.1-py3-none-any.whl
| Download URL | beets_yapl-0.2.1-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8b70cb16ebbcad76745540fc9412ef5f1bf148322201f7a3e1b040a706f2eef7
|
|
BLAKE2b-256 checksum How to use checksums |
f4b806f79712c9add614843a7f3bf5346a764e9afce7f867c3e9f648d4a8808b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|