mirror of
https://github.com/beetbox/beets.git
synced 2026-01-02 05:52:50 +01:00
Merge branch 'master' of https://github.com/sampsyo/beets
Conflicts: docs/plugins/replaygain.rst
This commit is contained in:
commit
be43f629bf
32 changed files with 204 additions and 184 deletions
|
|
@ -29,6 +29,8 @@ API_KEY = '1vOwZtEn'
|
|||
SCORE_THRESH = 0.5
|
||||
TRACK_ID_WEIGHT = 10.0
|
||||
COMMON_REL_THRESH = 0.6 # How many tracks must have an album in common?
|
||||
MAX_RECORDINGS = 5
|
||||
MAX_RELEASES = 5
|
||||
|
||||
log = logging.getLogger('beets')
|
||||
|
||||
|
|
@ -46,6 +48,15 @@ _fingerprints = {}
|
|||
_acoustids = {}
|
||||
|
||||
|
||||
def prefix(it, count):
|
||||
"""Truncate an iterable to at most `count` items.
|
||||
"""
|
||||
for i, v in enumerate(it):
|
||||
if i >= count:
|
||||
break
|
||||
yield v
|
||||
|
||||
|
||||
def acoustid_match(path):
|
||||
"""Gets metadata for a file from Acoustid and populates the
|
||||
_matches, _fingerprints, and _acoustids dictionaries accordingly.
|
||||
|
|
@ -88,7 +99,9 @@ def acoustid_match(path):
|
|||
if 'releases' in recording:
|
||||
release_ids += [rel['id'] for rel in recording['releases']]
|
||||
|
||||
log.debug(u'chroma: matched recordings {0}'.format(recording_ids))
|
||||
log.debug(u'chroma: matched recordings {0} on releases {1}'.format(
|
||||
recording_ids, release_ids,
|
||||
))
|
||||
_matches[path] = recording_ids, release_ids
|
||||
|
||||
|
||||
|
|
@ -137,7 +150,7 @@ class AcoustidPlugin(plugins.BeetsPlugin):
|
|||
|
||||
def candidates(self, items, artist, album, va_likely):
|
||||
albums = []
|
||||
for relid in _all_releases(items):
|
||||
for relid in prefix(_all_releases(items), MAX_RELEASES):
|
||||
album = hooks.album_for_mbid(relid)
|
||||
if album:
|
||||
albums.append(album)
|
||||
|
|
@ -151,7 +164,7 @@ class AcoustidPlugin(plugins.BeetsPlugin):
|
|||
|
||||
recording_ids, _ = _matches[item.path]
|
||||
tracks = []
|
||||
for recording_id in recording_ids:
|
||||
for recording_id in prefix(recording_ids, MAX_RECORDINGS):
|
||||
track = hooks.track_for_mbid(recording_id)
|
||||
if track:
|
||||
tracks.append(track)
|
||||
|
|
|
|||
|
|
@ -149,7 +149,10 @@ class DiscogsPlugin(BeetsPlugin):
|
|||
# cause a query to return no results, even if they match the artist or
|
||||
# album title. Use `re.UNICODE` flag to avoid stripping non-english
|
||||
# word characters.
|
||||
query = re.sub(r'(?u)\W+', ' ', query).encode('utf8')
|
||||
# TEMPORARY: Encode as ASCII to work around a bug:
|
||||
# https://github.com/sampsyo/beets/issues/1051
|
||||
# When the library is fixed, we should encode as UTF-8.
|
||||
query = re.sub(r'(?u)\W+', ' ', query).encode('ascii', "replace")
|
||||
# Strip medium information from query, Things like "CD1" and "disk 1"
|
||||
# can also negate an otherwise positive result.
|
||||
query = re.sub(r'(?i)\b(CD|disc)\s*\d+', '', query)
|
||||
|
|
|
|||
|
|
@ -82,6 +82,9 @@ Fixes:
|
|||
alongside converted files. Thanks to Ángel Alonso. :bug:`1050`, :bug:`1055`
|
||||
* There is no longer a "conflict" between two plugins that declare the same
|
||||
field with the same type. Thanks to Peter Schnebel. :bug:`1059` :bug:`1061`
|
||||
* :doc:`/plugins/chroma`: Limit the number of releases and recordings fetched
|
||||
as the result of an Acoustid match to avoid extremely long processing times
|
||||
for very popular music. :bug:`1068`
|
||||
|
||||
|
||||
1.3.8 (September 17, 2014)
|
||||
|
|
|
|||
|
|
@ -73,13 +73,13 @@ Configuration
|
|||
To configure the plugin, make a ``bpd:`` section in your configuration file.
|
||||
The available options are:
|
||||
|
||||
- ``host``:
|
||||
- **host**:
|
||||
Default: Bind to all interfaces.
|
||||
- ``port``:
|
||||
- **port**:
|
||||
Default: 6600
|
||||
- ``password``:
|
||||
- **password**:
|
||||
Default: No password.
|
||||
- ``volume``: Initial volume, as a percentage.
|
||||
- **volume**: Initial volume, as a percentage.
|
||||
Default: 100
|
||||
|
||||
Here's an example::
|
||||
|
|
|
|||
|
|
@ -41,17 +41,17 @@ Configuration
|
|||
To configure the plugin, make a ``bucket:`` section in your configuration file.
|
||||
The available options are:
|
||||
|
||||
- ``bucket_alpha``: Ranges to use for all substitutions occurring on textual
|
||||
- **bucket_alpha**: Ranges to use for all substitutions occurring on textual
|
||||
fields.
|
||||
Default: none.
|
||||
- ``bucket_alpha_regex``: A ``range: regex`` mapping (one per line) where
|
||||
- **bucket_alpha_regex**: A ``range: regex`` mapping (one per line) where
|
||||
``range`` is one of the `bucket_alpha` ranges and ``value`` is a regex that
|
||||
overrides original range definition.
|
||||
Default: none.
|
||||
- ``bucket_year``: Ranges to use for all substitutions occurring on the
|
||||
- **bucket_year**: Ranges to use for all substitutions occurring on the
|
||||
`$year` field.
|
||||
Default: none.
|
||||
- ``extrapolate``: Enable this if you want to group your files into multiple
|
||||
- **extrapolate**: Enable this if you want to group your files into multiple
|
||||
year ranges without enumerating them all. This option will generate year
|
||||
bucket names by reproducing characteristics of declared buckets.
|
||||
Default: ``no``
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ line.
|
|||
Installation
|
||||
------------
|
||||
|
||||
To use the ``chroma`` plugin, first enable it in your configuration (see
|
||||
To use the ``convert`` plugin, first enable it in your configuration (see
|
||||
:ref:`using-plugins`). By default, the plugin depends on `FFmpeg`_ to
|
||||
transcode the audio, so you might want to install it.
|
||||
|
||||
|
|
@ -53,34 +53,34 @@ Configuration
|
|||
To configure the plugin, make a ``convert:`` section in your configuration
|
||||
file. The available options are:
|
||||
|
||||
- ``auto``: Import transcoded versions of your files automatically during
|
||||
- **auto**: Import transcoded versions of your files automatically during
|
||||
imports. With this option enabled, the importer will transcode all (in the
|
||||
default configuration) non-MP3 files over the maximum bitrate before adding
|
||||
them to your library.
|
||||
Default: ``no``.
|
||||
- ``dest``: The directory where the files will be converted (or copied) to.
|
||||
- **copy_album_art**: Copy album art when copying or transcoding albums matched
|
||||
using the ``-a`` option. Default: ``no``.
|
||||
- **dest**: The directory where the files will be converted (or copied) to.
|
||||
Default: none.
|
||||
- ``embed``: Embed album art in converted items. Default: ``yes``.
|
||||
- ``max_bitrate``: All lossy files with a higher bitrate will be
|
||||
- **embed**: Embed album art in converted items. Default: ``yes``.
|
||||
- **max_bitrate**: All lossy files with a higher bitrate will be
|
||||
transcoded and those with a lower bitrate will simply be copied. Note that
|
||||
this does not guarantee that all converted files will have a lower
|
||||
bitrate---that depends on the encoder and its configuration.
|
||||
Default: none.
|
||||
- ``never_convert_lossy_files``: Cross-conversions between lossy codecs---such
|
||||
- **never_convert_lossy_files**: Cross-conversions between lossy codecs---such
|
||||
as mp3, ogg vorbis, etc.---makes little sense as they will decrease quality
|
||||
even further. If set to ``yes``, lossy files are always copied.
|
||||
Default: ``no``.
|
||||
- ``paths``: The directory structure and naming scheme for the converted
|
||||
- **paths**: The directory structure and naming scheme for the converted
|
||||
files. Uses the same format as the top-level ``paths`` section (see
|
||||
:ref:`path-format-config`).
|
||||
Default: Reuse your top-level path format settings.
|
||||
- ``quiet``: Prevent the plugin from announcing every file it processes.
|
||||
- **quiet**: Prevent the plugin from announcing every file it processes.
|
||||
Default: ``false``.
|
||||
- ``threads``: The number of threads to use for parallel encoding.
|
||||
- **threads**: The number of threads to use for parallel encoding.
|
||||
By default, the plugin will detect the number of processors available and use
|
||||
them all.
|
||||
- ``copy_album_art``: Copy album art when copying or transcoding albums matched
|
||||
using the ``-a`` option. Default: ``no``.
|
||||
|
||||
You can also configure the format to use for transcoding.
|
||||
|
||||
|
|
|
|||
|
|
@ -39,44 +39,44 @@ Configuration
|
|||
To configure the plugin, make a ``duplicates:`` section in your configuration
|
||||
file. The available options mirror the command-line options:
|
||||
|
||||
- ``album``: List duplicate albums instead of tracks.
|
||||
- **album**: List duplicate albums instead of tracks.
|
||||
Default: ``no``.
|
||||
- ``checksum``: Use an arbitrary command to compute a checksum
|
||||
- **checksum**: Use an arbitrary command to compute a checksum
|
||||
of items. This overrides the ``keys`` option the first time it is run;
|
||||
however, because it caches the resulting checksum as ``flexattrs`` in the
|
||||
database, you can use ``--keys=name_of_the_checksumming_program
|
||||
any_other_keys`` (or set configuration ``keys`` option) the second time
|
||||
around.
|
||||
Default: ``ffmpeg -i {file} -f crc -``.
|
||||
- ``copy``: A destination base directory into which to copy matched
|
||||
- **copy**: A destination base directory into which to copy matched
|
||||
items.
|
||||
Default: none (disabled).
|
||||
- ``count``: Print a count of duplicate tracks or albums in the format
|
||||
- **count**: Print a count of duplicate tracks or albums in the format
|
||||
``$albumartist - $album - $title: $count`` (for tracks) or ``$albumartist -
|
||||
$album: $count`` (for albums).
|
||||
Default: ``no``.
|
||||
- ``delete``: Removes matched items from the library and from the disk.
|
||||
- **delete**: Removes matched items from the library and from the disk.
|
||||
Default: ``no``
|
||||
- ``format``: A specific format with which to print every track
|
||||
- **format**: A specific format with which to print every track
|
||||
or album. This uses the same template syntax as beets'
|
||||
:doc:`path formats</reference/pathformat>`. The usage is inspired by, and
|
||||
therefore similar to, the :ref:`list <list-cmd>` command.
|
||||
Default: :ref:`list_format_item`
|
||||
- ``full``: List every track or album that has duplicates, not just the
|
||||
- **full**: List every track or album that has duplicates, not just the
|
||||
duplicates themselves.
|
||||
Default: ``no``.
|
||||
- ``keys``: Define in which track or album fields duplicates are to be
|
||||
- **keys**: Define in which track or album fields duplicates are to be
|
||||
searched. By default, the plugin uses the musicbrainz track and album IDs for
|
||||
this purpose. Using the ``keys`` option (as a YAML list in the configuration
|
||||
file, or as space-delimited strings in the command-line), you can extend this
|
||||
behavior to consider other attributes.
|
||||
Default: ``[mb_trackid, mb_albumid]``
|
||||
- ``move``: A destination base directory into which it will move matched
|
||||
- **move**: A destination base directory into which it will move matched
|
||||
items.
|
||||
Default: none (disabled).
|
||||
- ``path``: Output the path instead of metadata when listing duplicates.
|
||||
- **path**: Output the path instead of metadata when listing duplicates.
|
||||
Default: ``no``.
|
||||
- ``tag``: A ``key=value`` pair. The plugin will add a new ``key`` attribute
|
||||
- **tag**: A ``key=value`` pair. The plugin will add a new ``key`` attribute
|
||||
with ``value`` value as a flexattr to the database for duplicate items.
|
||||
Default: ``no``.
|
||||
|
||||
|
|
|
|||
|
|
@ -56,20 +56,20 @@ Configuration
|
|||
To configure the plugin, make an ``echonest:`` section in your configuration
|
||||
file. The available options are:
|
||||
|
||||
- ``apikey``: A custom EchoNest API key. You can `apply for your own`_ for
|
||||
- **apikey**: A custom EchoNest API key. You can `apply for your own`_ for
|
||||
free from the EchoNest.
|
||||
Default: beets' own Echo Nest API key.
|
||||
- ``auto``: Enable automatic metadata fetching during import.
|
||||
- **auto**: Enable automatic metadata fetching during import.
|
||||
Default: ``yes``.
|
||||
- ``codegen``: Echoprint or ENMFP codegen binary path.
|
||||
- **codegen**: Echoprint or ENMFP codegen binary path.
|
||||
Default: look for the executable in your ``$PATH``.
|
||||
- ``upload``: Send files to the Echo Nest server if they can not be identified
|
||||
- **upload**: Send files to the Echo Nest server if they can not be identified
|
||||
by other means.
|
||||
Default: ``yes``.
|
||||
- ``convert``: Because the Echo Nest server only supports a limited range of
|
||||
- **convert**: Because the Echo Nest server only supports a limited range of
|
||||
file formats, the plugin automatically converts unsupported files to ``ogg``.
|
||||
Default: ``yes``.
|
||||
- ``truncate``: Automatically truncate large files to their first 5 minutes
|
||||
- **truncate**: Automatically truncate large files to their first 5 minutes
|
||||
before uploading them to The Echo Nest server (as files with sizes greater
|
||||
than 50MB are rejected).
|
||||
Default: ``yes``.
|
||||
|
|
|
|||
|
|
@ -44,15 +44,15 @@ Configuration
|
|||
To configure the plugin, make an ``embedart:`` section in your configuration
|
||||
file. The available options are:
|
||||
|
||||
- ``auto``: Enable automatic album art embedding.
|
||||
- **auto**: Enable automatic album art embedding.
|
||||
Default: ``yes``.
|
||||
- ``compare_threshold``: How similar candidate art must be to
|
||||
- **compare_threshold**: How similar candidate art must be to
|
||||
existing art to be written to the file (see :ref:`image-similarity-check`).
|
||||
Default: 0 (disabled).
|
||||
- ``ifempty``: Avoid embedding album art for files that already have art
|
||||
- **ifempty**: Avoid embedding album art for files that already have art
|
||||
embedded.
|
||||
Default: ``no``.
|
||||
- ``maxwidth``: A maximum width to downscale images before embedding
|
||||
- **maxwidth**: A maximum width to downscale images before embedding
|
||||
them (the original image file is not altered). The resize operation reduces
|
||||
image width to at most ``maxwidth`` pixels. The height is recomputed so that
|
||||
the aspect ratio is preserved. See also :ref:`image-resizing` for further
|
||||
|
|
|
|||
|
|
@ -29,19 +29,19 @@ Configuration
|
|||
To configure the plugin, make a ``fetchart:`` section in your configuration
|
||||
file. The available options are:
|
||||
|
||||
- ``auto``: Enable automatic album art fetching during import.
|
||||
- **auto**: Enable automatic album art fetching during import.
|
||||
Default: ``yes``.
|
||||
- ``cautious``: Pick only trusted album art by ignoring filenames that do not
|
||||
- **cautious**: Pick only trusted album art by ignoring filenames that do not
|
||||
contain one of the keywords in ``cover_names``.
|
||||
Default: ``no``.
|
||||
- ``cover_names``: Prioritize images containing words in this list.
|
||||
- **cover_names**: Prioritize images containing words in this list.
|
||||
Default: ``['cover', 'front', 'art', 'album', 'folder']``.
|
||||
- ``google_search``: Gather images from Google Image Search.
|
||||
- **google_search**: Gather images from Google Image Search.
|
||||
Default: ``no``.
|
||||
- ``maxwidth``: A maximum image width to downscale fetched images if they are
|
||||
- **maxwidth**: A maximum image width to downscale fetched images if they are
|
||||
too big. The resize operation reduces image width to at most ``maxwidth``
|
||||
pixels. The height is recomputed so that the aspect ratio is preserved.
|
||||
- ``remote_priority``: Query remote sources every time and use local image only
|
||||
- **remote_priority**: Query remote sources every time and use local image only
|
||||
as fallback.
|
||||
Default: ``no``; remote (Web) art sources are only queried if no local art is
|
||||
found in the filesystem.
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Configuration
|
|||
To configure the plugin, make a ``freedesktop:`` section in your configuration
|
||||
file. The only available option is:
|
||||
|
||||
- ``auto``: Create .directory files automatically during import.
|
||||
- **auto**: Create .directory files automatically during import.
|
||||
Default: ``no``.
|
||||
|
||||
Creating .directory Files Manually
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@ Configuration
|
|||
To configure the plugin, make a ``ftintitle:`` section in your configuration
|
||||
file. The available options are:
|
||||
|
||||
- ``auto``: Enable metadata rewriting during import.
|
||||
- **auto**: Enable metadata rewriting during import.
|
||||
Default: ``yes``.
|
||||
- ``drop``: Remove featured artists entirely instead of adding them to the
|
||||
- **drop**: Remove featured artists entirely instead of adding them to the
|
||||
title field.
|
||||
Default: ``no``.
|
||||
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ Configuration
|
|||
To configure the plugin, make a ``fuzzy:`` section in your configuration
|
||||
file. The available options are:
|
||||
|
||||
- ``threshold``: The "sensitivity" of the fuzzy match. A value of 1.0 will
|
||||
- **threshold**: The "sensitivity" of the fuzzy match. A value of 1.0 will
|
||||
show only perfect matches and a value of 0.0 will match everything.
|
||||
Default: 0.7.
|
||||
- ``prefix``: The character used to designate fuzzy queries.
|
||||
- **prefix**: The character used to designate fuzzy queries.
|
||||
Default: ``~``, which may need to be escaped in some shells.
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ Configuration
|
|||
To configure the plugin, make an ``ihate:`` section in your configuration
|
||||
file. The available options are:
|
||||
|
||||
- ``skip``: Never import items and albums that match a query in this list.
|
||||
- **skip**: Never import items and albums that match a query in this list.
|
||||
Default: ``[]`` (empty list).
|
||||
- ``warn``: Print a warning message for matches in this list of queries.
|
||||
- **warn**: Print a warning message for matches in this list of queries.
|
||||
Default: ``[]``.
|
||||
|
||||
Here's an example::
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ Configuration
|
|||
To configure the plugin, make an ``importadded:`` section in your
|
||||
configuration file. There is one option available:
|
||||
|
||||
- ``preserve_mtimes``: After writing files, re-set their mtimes to their
|
||||
- **preserve_mtimes**: After writing files, re-set their mtimes to their
|
||||
original value.
|
||||
Default: ``no``.
|
||||
|
||||
|
|
|
|||
|
|
@ -12,26 +12,26 @@ Configuration
|
|||
To configure the plugin, make an ``importfeeds:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``absolute_path``: Use absolute paths instead of relative paths. Some
|
||||
- **absolute_path**: Use absolute paths instead of relative paths. Some
|
||||
applications may need this to work properly.
|
||||
Default: ``no``.
|
||||
- ``dir``: The output directory.
|
||||
- **dir**: The output directory.
|
||||
Default: Your beets library directory.
|
||||
- ``formats``: Select the kind of output. Use one or more of:
|
||||
- **formats**: Select the kind of output. Use one or more of:
|
||||
|
||||
- ``m3u``: Catalog the imports in a centralized playlist.
|
||||
- ``m3u_multi``: Create a new playlist for each import (uniquely named by
|
||||
- **m3u**: Catalog the imports in a centralized playlist.
|
||||
- **m3u_multi**: Create a new playlist for each import (uniquely named by
|
||||
appending the date and track/album name).
|
||||
- ``link``: Create a symlink for each imported item. This is the
|
||||
- **link**: Create a symlink for each imported item. This is the
|
||||
recommended setting to propagate beets imports to your iTunes library:
|
||||
just drag and drop the ``dir`` folder on the iTunes dock icon.
|
||||
- ``echo``: Do not write a playlist file at all, but echo a list of new
|
||||
- **echo**: Do not write a playlist file at all, but echo a list of new
|
||||
file paths to the terminal.
|
||||
|
||||
Default: None.
|
||||
- ``m3u_name``: Playlist name used by the ``m3u`` format.
|
||||
- **m3u_name**: Playlist name used by the ``m3u`` format.
|
||||
Default: ``imported.m3u``.
|
||||
- ``relative_to``: Make the m3u paths relative to another
|
||||
- **relative_to**: Make the m3u paths relative to another
|
||||
folder than where the playlist is being written. If you're using importfeeds
|
||||
to generate a playlist for MPD, you should set this to the root of your music
|
||||
library.
|
||||
|
|
|
|||
|
|
@ -31,46 +31,46 @@ Each plugin has its own set of options that can be defined in a section bearing
|
|||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
chroma
|
||||
lyrics
|
||||
echonest
|
||||
bpd
|
||||
mpdupdate
|
||||
mpdstats
|
||||
fetchart
|
||||
embedart
|
||||
web
|
||||
lastgenre
|
||||
replaygain
|
||||
inline
|
||||
scrub
|
||||
rewrite
|
||||
random
|
||||
mbcollection
|
||||
importfeeds
|
||||
the
|
||||
fuzzy
|
||||
zero
|
||||
ihate
|
||||
convert
|
||||
info
|
||||
play
|
||||
smartplaylist
|
||||
mbsync
|
||||
missing
|
||||
duplicates
|
||||
discogs
|
||||
beatport
|
||||
bpd
|
||||
bpm
|
||||
bucket
|
||||
chroma
|
||||
convert
|
||||
discogs
|
||||
duplicates
|
||||
echonest
|
||||
embedart
|
||||
fetchart
|
||||
freedesktop
|
||||
fromfilename
|
||||
ftintitle
|
||||
keyfinder
|
||||
bucket
|
||||
fuzzy
|
||||
ihate
|
||||
importadded
|
||||
bpm
|
||||
spotify
|
||||
types
|
||||
importfeeds
|
||||
info
|
||||
inline
|
||||
keyfinder
|
||||
lastgenre
|
||||
lastimport
|
||||
freedesktop
|
||||
lyrics
|
||||
mbcollection
|
||||
mbsync
|
||||
missing
|
||||
mpdstats
|
||||
mpdupdate
|
||||
play
|
||||
random
|
||||
replaygain
|
||||
rewrite
|
||||
scrub
|
||||
smartplaylist
|
||||
spotify
|
||||
the
|
||||
types
|
||||
web
|
||||
zero
|
||||
|
||||
Autotagger Extensions
|
||||
---------------------
|
||||
|
|
@ -87,26 +87,26 @@ Autotagger Extensions
|
|||
Metadata
|
||||
--------
|
||||
|
||||
* :doc:`lyrics`: Automatically fetch song lyrics.
|
||||
* :doc:`bpm`: Measure tempo using keystrokes.
|
||||
* :doc:`echonest`: Automatically fetch `acoustic attributes`_ from
|
||||
`the Echo Nest`_ (tempo, energy, danceability, ...).
|
||||
* :doc:`lastgenre`: Fetch genres based on Last.fm tags.
|
||||
* :doc:`mbsync`: Fetch updated metadata from MusicBrainz
|
||||
* :doc:`fetchart`: Fetch album cover art from various sources.
|
||||
* :doc:`embedart`: Embed album art images into files' metadata.
|
||||
* :doc:`replaygain`: Calculate volume normalization for players that support it.
|
||||
* :doc:`scrub`: Clean extraneous metadata from music files.
|
||||
* :doc:`zero`: Nullify fields by pattern or unconditionally.
|
||||
* :doc:`fetchart`: Fetch album cover art from various sources.
|
||||
* :doc:`ftintitle`: Move "featured" artists from the artist field to the title
|
||||
field.
|
||||
* :doc:`mpdstats`: Connect to `MPD`_ and update the beets library with play
|
||||
statistics (last_played, play_count, skip_count, rating).
|
||||
* :doc:`keyfinder`: Use the `KeyFinder`_ program to detect the musical
|
||||
key from the audio.
|
||||
* :doc:`importadded`: Use file modification times for guessing the value for
|
||||
the `added` field in the database.
|
||||
* :doc:`bpm`: Measure tempo using keystrokes.
|
||||
* :doc:`lastgenre`: Fetch genres based on Last.fm tags.
|
||||
* :doc:`lastimport`: Collect play counts from Last.fm.
|
||||
* :doc:`lyrics`: Automatically fetch song lyrics.
|
||||
* :doc:`mbsync`: Fetch updated metadata from MusicBrainz
|
||||
* :doc:`mpdstats`: Connect to `MPD`_ and update the beets library with play
|
||||
statistics (last_played, play_count, skip_count, rating).
|
||||
* :doc:`replaygain`: Calculate volume normalization for players that support it.
|
||||
* :doc:`scrub`: Clean extraneous metadata from music files.
|
||||
* :doc:`zero`: Nullify fields by pattern or unconditionally.
|
||||
|
||||
.. _Acoustic Attributes: http://developer.echonest.com/acoustic-attributes.html
|
||||
.. _the Echo Nest: http://www.echonest.com
|
||||
|
|
@ -115,40 +115,40 @@ Metadata
|
|||
Path Formats
|
||||
------------
|
||||
|
||||
* :doc:`bucket`: Group your files into bucket directories that cover different
|
||||
field values ranges.
|
||||
* :doc:`inline`: Use Python snippets to customize path format strings.
|
||||
* :doc:`rewrite`: Substitute values in path formats.
|
||||
* :doc:`the`: Move patterns in path formats (i.e., move "a" and "the" to the
|
||||
end).
|
||||
* :doc:`bucket`: Group your files into bucket directories that cover different
|
||||
field values ranges.
|
||||
|
||||
Interoperability
|
||||
----------------
|
||||
|
||||
* :doc:`freedesktop`: Create .directory files in album folders.
|
||||
* :doc:`importfeeds`: Keep track of imported files via ``.m3u`` playlist file(s) or symlinks.
|
||||
* :doc:`mpdupdate`: Automatically notifies `MPD`_ whenever the beets library
|
||||
changes.
|
||||
* :doc:`importfeeds`: Keep track of imported files via ``.m3u`` playlist file(s) or symlinks.
|
||||
* :doc:`smartplaylist`: Generate smart playlists based on beets queries.
|
||||
* :doc:`play`: Play beets queries in your music player.
|
||||
* :doc:`freedesktop`: Create .directory files in album folders.
|
||||
* :doc:`smartplaylist`: Generate smart playlists based on beets queries.
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
* :doc:`web`: An experimental Web-based GUI for beets.
|
||||
* :doc:`random`: Randomly choose albums and tracks from your library.
|
||||
* :doc:`fuzzy`: Search albums and tracks with fuzzy string matching.
|
||||
* :doc:`mbcollection`: Maintain your MusicBrainz collection list.
|
||||
* :doc:`ihate`: Automatically skip albums and tracks during the import process.
|
||||
* :doc:`bpd`: A music player for your beets library that emulates `MPD`_ and is
|
||||
compatible with `MPD clients`_.
|
||||
* :doc:`convert`: Transcode music and embed album art while exporting to
|
||||
a different directory.
|
||||
* :doc:`info`: Print music files' tags to the console.
|
||||
* :doc:`missing`: List missing tracks.
|
||||
* :doc:`duplicates`: List duplicate tracks or albums.
|
||||
* :doc:`fuzzy`: Search albums and tracks with fuzzy string matching.
|
||||
* :doc:`ihate`: Automatically skip albums and tracks during the import process.
|
||||
* :doc:`info`: Print music files' tags to the console.
|
||||
* :doc:`mbcollection`: Maintain your MusicBrainz collection list.
|
||||
* :doc:`missing`: List missing tracks.
|
||||
* :doc:`random`: Randomly choose albums and tracks from your library.
|
||||
* :doc:`spotify`: Create Spotify playlists from the Beets library.
|
||||
* :doc:`types`: Declare types for flexible attributes.
|
||||
* :doc:`web`: An experimental Web-based GUI for beets.
|
||||
|
||||
.. _MPD: http://www.musicpd.org/
|
||||
.. _MPD clients: http://mpd.wikia.com/wiki/Clients
|
||||
|
|
|
|||
|
|
@ -16,16 +16,16 @@ Configuration
|
|||
To configure the plugin, make a ``keyfinder:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``bin``: The name of the `KeyFinder`_ program on your system or
|
||||
- **auto**: Analyze every file on
|
||||
import. Otherwise, you need to use the ``beet keyfinder`` command
|
||||
explicitly.
|
||||
Default: ``yes``
|
||||
- **bin**: The name of the `KeyFinder`_ program on your system or
|
||||
a path to the binary. If you installed the KeyFinder GUI on a Mac, for
|
||||
example, you want something like
|
||||
``/Applications/KeyFinder.app/Contents/MacOS/KeyFinder``.
|
||||
Default: ``KeyFinder`` (i.e., search for the program in your ``$PATH``).
|
||||
- ``auto``: Analyze every file on
|
||||
import. Otherwise, you need to use the ``beet keyfinder`` command
|
||||
explicitly.
|
||||
Default: ``yes``.
|
||||
- ``overwrite``: Calculate a key even for files that already have an
|
||||
Default: ``KeyFinder`` (i.e., search for the program in your ``$PATH``)..
|
||||
- **overwrite**: Calculate a key even for files that already have an
|
||||
`initial_key` value.
|
||||
Default: ``no``.
|
||||
|
||||
|
|
|
|||
|
|
@ -83,29 +83,29 @@ Configuration
|
|||
To configure the plugin, make a ``lastgenre:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``auto``: Fetch genres automatically during import.
|
||||
- **auto**: Fetch genres automatically during import.
|
||||
Default: ``yes``.
|
||||
- ``canonical``: Use a canonicalization tree. Setting this to ``yes`` will use
|
||||
- **canonical**: Use a canonicalization tree. Setting this to ``yes`` will use
|
||||
a built-in tree. You can also set it to a path, like the ``whitelist``
|
||||
config value, to use your own tree.
|
||||
Default: ``no`` (disabled).
|
||||
- ``count``: Number of genres to fetch.
|
||||
- **count**: Number of genres to fetch.
|
||||
Default: 1
|
||||
- ``fallback``: A string if to use a fallback genre when no genre is found.
|
||||
- **fallback**: A string if to use a fallback genre when no genre is found.
|
||||
You can use the empty string ``''`` to reset the genre.
|
||||
Default: None.
|
||||
- ``force``: By default, beets will always fetch new genres, even if the files
|
||||
- **force**: By default, beets will always fetch new genres, even if the files
|
||||
already have one. To instead leave genres in place in when they pass the
|
||||
whitelist, set the ``force`` option to ``no``.
|
||||
Default: ``yes``.
|
||||
- ``min_weight``: Minimum popularity factor below which genres are discarded.
|
||||
- **min_weight**: Minimum popularity factor below which genres are discarded.
|
||||
Default: 10.
|
||||
- ``source``: Which entity to look up in Last.fm. Can be
|
||||
- **source**: Which entity to look up in Last.fm. Can be
|
||||
either ``artist``, ``album`` or ``track``.
|
||||
Default: ``album``.
|
||||
- ``separator``: A separator for multiple genres.
|
||||
- **separator**: A separator for multiple genres.
|
||||
Default: ``', '``.
|
||||
- ``whitelist``: The filename of a custom genre list, ``yes`` to use
|
||||
- **whitelist**: The filename of a custom genre list, ``yes`` to use
|
||||
the internal whitelist, or ``no`` to consider all genres valid.
|
||||
Default: ``yes``.
|
||||
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@ Configuration
|
|||
Aside from the required ``lastfm.user`` field, this plugin has some specific
|
||||
options under the ``lastimport:`` section:
|
||||
|
||||
* ``per_page``: The number of tracks to request from the API at once.
|
||||
* **per_page**: The number of tracks to request from the API at once.
|
||||
Default: 500.
|
||||
* ``retry_limit``: How many times should we re-send requests to Last.fm on
|
||||
* **retry_limit**: How many times should we re-send requests to Last.fm on
|
||||
failure?
|
||||
Default: 3.
|
||||
|
|
|
|||
|
|
@ -26,15 +26,15 @@ Configuration
|
|||
To configure the plugin, make a ``lyrics:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``auto``: Fetch lyrics automatically during import.
|
||||
- **auto**: Fetch lyrics automatically during import.
|
||||
Default: ``yes``.
|
||||
- ``fallback``: By default, the file will be left unchanged when no lyrics are
|
||||
- **fallback**: By default, the file will be left unchanged when no lyrics are
|
||||
found. Use the empty string ``''`` to reset the lyrics in such a case.
|
||||
Default: None.
|
||||
- ``google_API_key``: Your Google API key (to enable the Google Custom Search
|
||||
- **google_API_key**: Your Google API key (to enable the Google Custom Search
|
||||
backend).
|
||||
Default: None.
|
||||
- ``google_engine_ID``: The custom search engine to use.
|
||||
- **google_engine_ID**: The custom search engine to use.
|
||||
Default: The beets custom search engine, which gathers a list of sources
|
||||
known to be scrapeable.
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,6 @@ Configuration
|
|||
To configure the plugin, make a ``mbcollection:`` section in your
|
||||
configuration file. There is one option available:
|
||||
|
||||
- ``auto``: Automatically amend your MusicBrainz collection whenever you
|
||||
- **auto**: Automatically amend your MusicBrainz collection whenever you
|
||||
import a new album.
|
||||
Default: ``no``.
|
||||
|
|
|
|||
|
|
@ -29,15 +29,15 @@ Configuration
|
|||
To configure the plugin, make a ``missing:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``count``: Print a count of missing tracks per album, with ``format``
|
||||
- **count**: Print a count of missing tracks per album, with ``format``
|
||||
defaulting to ``$albumartist - $album: $missing``.
|
||||
Default: ``no``.
|
||||
- ``format``: A specific format with which to print every
|
||||
- **format**: A specific format with which to print every
|
||||
track. This uses the same template syntax as beets'
|
||||
:doc:`path formats </reference/pathformat>`. The usage is inspired by, and
|
||||
therefore similar to, the :ref:`list <list-cmd>` command.
|
||||
Default: :ref:`list_format_item`.
|
||||
- ``total``: Print a single count of missing tracks in all albums.
|
||||
- **total**: Print a single count of missing tracks in all albums.
|
||||
Default: ``no``.
|
||||
|
||||
Here's an example ::
|
||||
|
|
|
|||
|
|
@ -38,19 +38,19 @@ Configuration
|
|||
To configure the plugin, make an ``mpd:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``host``: The MPD server hostname.
|
||||
- **host**: The MPD server hostname.
|
||||
Default: ``localhost``.
|
||||
- ``port``: The MPD server port.
|
||||
- **port**: The MPD server port.
|
||||
Default: 6600.
|
||||
- ``password``: The MPD server password.
|
||||
- **password**: The MPD server password.
|
||||
Default: None.
|
||||
- ``music_directory``: If your MPD library is at a different location from the
|
||||
- **music_directory**: If your MPD library is at a different location from the
|
||||
beets library (e.g., because one is mounted on a NFS share), specify the path
|
||||
here.
|
||||
Default: The beets library directory.
|
||||
- ``rating``: Enable rating updates.
|
||||
- **rating**: Enable rating updates.
|
||||
Default: ``yes``.
|
||||
- ``rating_mix``: Tune the way rating is calculated (see below).
|
||||
- **rating_mix**: Tune the way rating is calculated (see below).
|
||||
Default: 0.75.
|
||||
|
||||
A Word on Ratings
|
||||
|
|
|
|||
|
|
@ -30,9 +30,9 @@ Configuration
|
|||
|
||||
The available options under the ``mpd:`` section are:
|
||||
|
||||
- ``host``: The MPD server name.
|
||||
- **host**: The MPD server name.
|
||||
Default: ``localhost``.
|
||||
- ``password``: The MPD server password.
|
||||
- **password**: The MPD server password.
|
||||
Default: None.
|
||||
- ``port``: The MPD server port.
|
||||
- **port**: The MPD server port.
|
||||
Default: 6600.
|
||||
|
|
|
|||
|
|
@ -35,12 +35,12 @@ Configuration
|
|||
To configure the plugin, make a ``play:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``command``: The command used to open the playlist.
|
||||
- **command**: The command used to open the playlist.
|
||||
Default: ``open`` on OS X, ``xdg-open`` on other Unixes and ``start`` on
|
||||
Windows.
|
||||
- ``relative_to``: Emit paths relative to base directory.
|
||||
- **relative_to**: Emit paths relative to base directory.
|
||||
Default: None.
|
||||
- ``use_folders``: When using the ``-a`` option, the m3u will contain the
|
||||
- **use_folders**: When using the ``-a`` option, the m3u will contain the
|
||||
paths to each track on the matched albums. Enable this option to
|
||||
store paths to folders instead.
|
||||
Default: ``no``.
|
||||
|
|
|
|||
|
|
@ -74,27 +74,27 @@ Configuration
|
|||
To configure the plugin, make a ``replaygain:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``auto``: Enable ReplayGain analysis during import.
|
||||
- **auto**: Enable ReplayGain analysis during import.
|
||||
Default: ``yes``.
|
||||
- ``backend``: The analysis backend; either ``gstreamer``, ``command`` or ``audiotools`.
|
||||
Default: ``command``.
|
||||
- ``overwrite``: Re-analyze files that already have ReplayGain tags.
|
||||
- **overwrite**: Re-analyze files that already have ReplayGain tags.
|
||||
Default: ``no``.
|
||||
- ``targetlevel``: A number of decibels for the target loudness level.
|
||||
- **targetlevel**: A number of decibels for the target loudness level.
|
||||
Default: 89.
|
||||
|
||||
These options only work with the "command" backend:
|
||||
|
||||
- ``apply``: If you use a player that does not support ReplayGain
|
||||
- **apply**: If you use a player that does not support ReplayGain
|
||||
specifications, you can force the volume normalization by applying the gain
|
||||
to the file via the ``apply`` option. This is a lossless and reversible
|
||||
operation with no transcoding involved.
|
||||
Default: ``no``.
|
||||
- ``command``: The path to the ``mp3gain`` or ``aacgain`` executable (if beets
|
||||
- **command**: The path to the ``mp3gain`` or ``aacgain`` executable (if beets
|
||||
cannot find it by itself).
|
||||
For example: ``/Applications/MacMP3Gain.app/Contents/Resources/aacgain``.
|
||||
Default: Search in your ``$PATH``.
|
||||
- ``noclip``: Reduce the amount of ReplayGain adjustment to whatever amount
|
||||
- **noclip**: Reduce the amount of ReplayGain adjustment to whatever amount
|
||||
would keep clipping from occurring.
|
||||
Default: ``yes``.
|
||||
|
||||
|
|
|
|||
|
|
@ -37,5 +37,5 @@ Configuration
|
|||
To configure the plugin, make a ``scrub:`` section in your
|
||||
configuration file. There is one option:
|
||||
|
||||
- ``auto``: Enable metadata stripping during import.
|
||||
- **auto**: Enable metadata stripping during import.
|
||||
Default: ``yes``.
|
||||
|
|
|
|||
|
|
@ -73,11 +73,11 @@ To configure the plugin, make a ``smartplaylist:`` section in your
|
|||
configuration file. In addition to the ``playlists`` described above, the
|
||||
other configuration options are:
|
||||
|
||||
- ``auto``: Regenerate the playlist after every database change.
|
||||
- **auto**: Regenerate the playlist after every database change.
|
||||
Default: ``yes``.
|
||||
- ``playlist_dir``: Where to put the generated playlist files.
|
||||
- **playlist_dir**: Where to put the generated playlist files.
|
||||
Default: The current working directory (i.e., ``'.'``).
|
||||
- ``relative_to``: Generate paths in the playlist files relative to a base
|
||||
- **relative_to**: Generate paths in the playlist files relative to a base
|
||||
directory. If you intend to use this plugin to generate playlists for MPD,
|
||||
point this to your MPD music directory.
|
||||
Default: Use absolute paths.
|
||||
|
|
|
|||
|
|
@ -43,7 +43,8 @@ Configuration
|
|||
The default options should work as-is, but there are some options you can put
|
||||
in config.yaml under the ``spotify:`` section:
|
||||
|
||||
* ``mode``: One of the following:
|
||||
- **mode**: One of the following:
|
||||
|
||||
- ``list``: Print out the playlist as a list of links. This list can then
|
||||
be pasted in to a new or existing Spotify playlist.
|
||||
- ``open``: This mode actually sends a link to your default browser with
|
||||
|
|
@ -51,18 +52,18 @@ in config.yaml under the ``spotify:`` section:
|
|||
has been tested on all platforms, it will remain optional.
|
||||
|
||||
Default: ``list``.
|
||||
* ``region_filter``: A two-character country abbreviation, to limit results
|
||||
- **region_filter**: A two-character country abbreviation, to limit results
|
||||
to that market.
|
||||
Default: None.
|
||||
* ``show_failures``: List each lookup that does not return a Spotify ID (and
|
||||
- **show_failures**: List each lookup that does not return a Spotify ID (and
|
||||
therefore cannot be added to a playlist).
|
||||
Default: ``no``.
|
||||
* ``tiebreak``: How to choose the track if there is more than one identical
|
||||
- **tiebreak**: How to choose the track if there is more than one identical
|
||||
result. For example, there might be multiple releases of the same album.
|
||||
The options are ``popularity`` and ``first`` (to just choose the first match
|
||||
returned).
|
||||
Default: ``popularity``.
|
||||
* ``regex``: An array of regex transformations to perform on the
|
||||
- **regex**: An array of regex transformations to perform on the
|
||||
track/album/artist fields before sending them to Spotify. Can be useful for
|
||||
changing certain abbreviations, like ft. -> feat. See the examples below.
|
||||
Default: None.
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@ Configuration
|
|||
To configure the plugin, make a ``the:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``a``: Handle "A/An" moves.
|
||||
- **a**: Handle "A/An" moves.
|
||||
Default: ``yes``.
|
||||
- ``the``: handle "The" moves.
|
||||
- **the**: handle "The" moves.
|
||||
Default: ``yes``.
|
||||
- ``patterns``: Custom regexp patterns, space-separated. Custom patterns are
|
||||
- **patterns**: Custom regexp patterns, space-separated. Custom patterns are
|
||||
case-insensitive regular expressions. Patterns can be matched anywhere in the
|
||||
string (not just the beginning), so use ``^`` if you intend to match leading
|
||||
words.
|
||||
Default: ``[]``.
|
||||
- ``strip``: Remove the article altogether instead of moving it to the end.
|
||||
- **strip**: Remove the article altogether instead of moving it to the end.
|
||||
Default: ``no``.
|
||||
- ``format``: A Python format string for the output. Use ``{0}`` to indicate
|
||||
- **format**: A Python format string for the output. Use ``{0}`` to indicate
|
||||
the part without the article and ``{1}`` for the article.
|
||||
Spaces are already trimmed from ends of both parts.
|
||||
Default: ``'{0}, {1}'``.
|
||||
|
|
|
|||
|
|
@ -52,9 +52,9 @@ Configuration
|
|||
To configure the plugin, make a ``web:`` section in your
|
||||
configuration file. The available options are:
|
||||
|
||||
- ``host``: The server hostname.
|
||||
- **host**: The server hostname.
|
||||
Default: Bind to all interfaces.
|
||||
- ``port``: The server port.
|
||||
- **port**: The server port.
|
||||
Default: 8337.
|
||||
|
||||
Implementation
|
||||
|
|
|
|||
Loading…
Reference in a new issue