Skip to main content

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)

Source distribution for beets-yapl 0.2.1
File Size Uploaded
beets_yapl-0.2.1.tar.gz 16.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for beets-yapl 0.2.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page