beets/beetsplug
Jan Holthuis a80a07f093 playlist: Add playlist plugin
Adds M3U playlist support as a query to beets and thus partially
resolves issue #123. The implementation is heavily based on #2380 by
Robin McCorkell.

It supports referencing playlists by absolute path:

    $ beet ls playlist:/path/to/someplaylist.m3u

It also supports referencing playlists by name. The playlist is then
seached in the playlist_dir and the ".m3u" extension is appended to the
name:

    $ beet ls playlist:anotherplaylist

The configuration for the plugin looks like this:

    playlist:
        relative_to: library
        playlist_dir: /path/to/playlists

The relative_to option specifies how relative paths in playlists are
handled. By default, paths are relative to the "library" directory. It
also possible to make them relative to the "playlist" or set the option
or set it to a fixed path.
2019-02-17 14:38:36 +01:00
..
bpd bpd: Use integers for time values (fix 2394) 2017-01-17 11:37:10 -08:00
lastgenre lastgenre: remove unnecessary check 2018-07-01 09:15:05 +02:00
metasync Wrap a long line 2017-06-15 20:46:54 -04:00
web changed flask cors import 2018-07-10 10:32:21 -05:00
__init__.py Standardize __future__ imports without parentheses 2016-02-28 15:03:51 -08:00
absubmit.py Revise comment 2018-08-14 10:19:13 -04:00
acousticbrainz.py use as_str_seq and fix line length 2017-12-02 11:31:31 -08:00
badfiles.py Fix some whitespace (#2433) 2017-02-11 19:24:47 -05:00
beatport.py Fix misuse of flags in re.sub() calls 2017-04-15 14:44:19 +02:00
bench.py Allow multiple MB ids to be passed to the importer 2016-01-19 21:43:32 +01:00
bpm.py Merge pull request #1992 from jackwilsdon/add-write-bpm 2017-01-01 23:09:41 -05:00
bucket.py Resolve W605: invalid escape sequence 2018-08-13 10:41:01 -04:00
chroma.py Return tuple of numbers instead of string for release_key 2018-09-01 04:10:29 +10:00
convert.py Now logs both the source and the destination 2018-10-25 15:29:28 +02:00
cue.py wrap 2 results in a list in cue and random plugin 2016-09-14 00:40:53 -04:00
discogs.py Merge branch 'master' into discogs_original_year 2018-05-02 17:41:07 +02:00
duplicates.py minor fixes and changelog entry 2017-12-11 13:31:40 -08:00
edit.py edit, Model.copy: documentation improvements 2017-08-25 15:47:07 +02:00
embedart.py updated to pass pep8 checks 2017-10-07 21:28:33 -07:00
embyupdate.py A little fiddling with embyupdate 2017-01-07 17:07:01 -05:00
export.py Update code to match pep8 naming standards 2016-04-27 20:15:10 +01:00
fetchart.py Fix miscellaneous typos 2018-10-09 01:11:06 +01:00
filefilter.py bytestringify paths in filefilter plugin 2016-06-16 04:08:49 -04:00
freedesktop.py Standardize __future__ imports without parentheses 2016-02-28 15:03:51 -08:00
fromfilename.py Fix "line too long" Travis CI error 2017-12-21 15:18:25 +01:00
ftintitle.py Fix #2817: drop in configuration was ignored 2018-02-23 18:18:32 -05:00
fuzzy.py Use new as_str method 2016-06-25 19:16:14 -07:00
gmusic.py Rename oauth_filepath to oauth_file, update gmusic doc 2018-08-15 11:42:04 -04:00
hook.py removed whitespaces from empty line 2017-11-22 10:10:28 -05:00
ihate.py Standardize __future__ imports without parentheses 2016-02-28 15:03:51 -08:00
importadded.py Fix #1918: ValueError on trying to import 2017-06-17 23:20:46 +02:00
importfeeds.py Fix importfeeds plugin on Python 3. 2017-08-12 16:45:13 +01:00
info.py Make the path-field-remover function more obvious 2018-12-01 16:57:25 -05:00
inline.py Use new as_str method 2016-06-25 19:16:14 -07:00
ipfs.py decode ipfs item paths to satisy python -bb 2016-07-03 23:52:05 -04:00
keyfinder.py Fix #2537: keyfinder uses imported_items() 2018-04-29 13:45:39 -04:00
kodiupdate.py Make error handling and logging more detailed 2017-08-20 14:51:03 -07:00
lastimport.py Always use SSL on servers that don't require SNI 2017-01-02 20:39:10 -05:00
lyrics.py Resolve W605: invalid escape sequence 2018-08-13 10:41:01 -04:00
mbcollection.py mbcollection: Make sure missing albums are removed from collections correctly. 2018-02-23 12:34:33 +00:00
mbsubmit.py mbsubmit plugin : numeric sort in print_tracks (for >=10 track releases) 2017-02-25 12:01:34 -08:00
mbsync.py Tiny style fix for #3028 2018-09-16 20:56:06 -04:00
missing.py beetsplug: implement missing -a -t 2017-03-18 19:05:46 -04:00
mpdstats.py Remove whitespaces from empty line 2017-10-07 19:00:08 +07:00
mpdupdate.py Fix #2381: mpdupdate on Python 3 2017-01-10 12:22:30 -05:00
permissions.py replace deprecated log.warn() with log.warning() 2016-08-09 00:33:38 -04:00
play.py Add ability for play plugin to emit utf8 BOM 2018-06-08 23:26:48 -06:00
playlist.py playlist: Add playlist plugin 2019-02-17 14:38:36 +01:00
plexupdate.py PlexUpdate: token redacted 2018-01-31 00:49:55 -06:00
random.py Vastly simplify main random function 2016-12-26 17:04:21 -05:00
replaygain.py to fix the peak calculation also delete the division 2018-08-20 23:39:34 +02:00
rewrite.py Use new as_str method 2016-06-25 19:16:14 -07:00
scrub.py scrub: Handle MutagenError (fix #2716) 2017-10-20 14:49:53 -04:00
smartplaylist.py Fix miscellaneous typos 2018-10-09 01:11:06 +01:00
sonosupdate.py Remove unused import. 2018-04-20 08:25:08 +02:00
spotify.py replace deprecated log.warn() with log.warning() 2016-08-09 00:33:38 -04:00
subsonicupdate.py Added contextpath configuration to subsonicupdate plugin. Fixed bug in 2018-10-10 21:22:31 +02:00
the.py Resolve W605: invalid escape sequence 2018-08-13 10:41:01 -04:00
thumbnails.py Remove untyped except statements 2017-04-29 00:05:20 +02:00
types.py Standardize __future__ imports without parentheses 2016-02-28 15:03:51 -08:00
zero.py Zero: Last minute unimportant fixes: 2016-12-27 19:13:29 +01:00