Commit graph

879 commits

Author SHA1 Message Date
Adrian Sampson
3a08b72eba new file format? file a bug
(as opposed to emailing me directly)
2013-11-25 14:45:47 -08:00
Adrian Sampson
81fddad7c3 docs: note about possible lagging packaged version
It's surprising how many Debian users don't realize they're looking at the
wrong version of the docs.
2013-11-25 14:42:40 -08:00
Pedro Silva
9b75db8326 merge Bitdemon-master
- minor style changes
- synchronize with documentation
2013-11-17 12:34:53 +01:00
Adrian Sampson
b266a2b182 changelog/thanks for #451 2013-11-07 10:39:06 -08:00
Adrian Sampson
3ccd231765 id3v23: remove one redundant case; changelog/thanks 2013-11-05 19:59:45 -08:00
Peter Schnebel
6e30af0adb added new plugin mpdstats to changelog 2013-11-04 11:04:46 +01:00
Adrian Sampson
5ba52d669e fix id3v23 tag writing
Fix due to Chris Cogburn on the mailing list.
2013-11-03 21:36:57 -08:00
Peter Schnebel
ea31a7ef2a moved 2013-11-01 22:09:05 +01:00
Peter Schnebel
6925a9d2a6 fixed formating 2013-11-01 22:08:57 +01:00
Peter Schnebel
2437ff5cc3 fixed formating 2013-11-01 22:08:23 +01:00
Peter Schnebel
ba419d503d fixed formating 2013-11-01 22:06:30 +01:00
Peter Schnebel
4e6a4316f5 fixed doc file name 2013-11-01 22:04:31 +01:00
Peter Schnebel
263da2bc52 too much text ... 2013-10-31 21:30:39 +01:00
Peter Schnebel
accaf5c21d update docs 2013-10-31 21:12:02 +01:00
Peter Schnebel
e4abf0af35 renaming mpc to mpdstats 2013-10-31 20:28:09 +01:00
Peter Schnebel
2bbf83e1a0 first draft for documentation 2013-10-31 17:10:25 +01:00
Peter Schnebel
0d2458cfb4 first draft for documentation 2013-10-31 17:07:47 +01:00
Peter Schnebel
a13832a562 Small correction and link to detailed information for the echonest plugin. 2013-10-27 11:14:54 +01:00
Peter Schnebel
479f92f250 Merge pull request #424 from pscn/echoplus
New plugin to fetch extended information from the EchoNest (call for feedback)
2013-10-27 03:10:29 -07:00
Peter Schnebel
e2a14985c9 added the echonest plugin 2013-10-27 11:08:42 +01:00
Peter Schnebel
8fca70a0be added the echonest plugin 2013-10-27 11:08:03 +01:00
Peter Schnebel
a45f8d6abf removed echonest_ prefix 2013-10-27 08:53:08 +01:00
Adrian Sampson
2481dc244b convert: iterate over the right items (fix #439) 2013-10-26 11:08:52 -07:00
Peter Schnebel
d9a1b81bff added echonest to the index 2013-10-26 13:57:20 +02:00
Peter Schnebel
a7eb1f0493 added partial documentation 2013-10-26 12:50:03 +02:00
Peter Schnebel
5dbb277b1a added partial documentation 2013-10-26 12:49:52 +02:00
Pedro Silva
1e737d146b Add new copy, move, delete, and tag options 2013-10-23 17:15:16 +02:00
Pedro Silva
3379c31f4f Add new option 'checksum' for specifying arbitrary checksumming commands 2013-10-23 01:32:05 +02:00
Pedro Silva
587de12ecc Default to match on mb_{track,album}id 2013-10-22 22:53:07 +02:00
Pedro Silva
7299ed24c6 Add vararg_callback utility function to beets.ui
Optparse doesn't support argparse nargs='+' style arguments.  This patch
adds a callback utility function that allows that idiom. The function is
taken from the page at
http://docs.python.org/2/library/optparse.html#callback-example-6-variable-arguments.

Here's an example of how to use it:

    from beets.ui import vararg_callback
    parser.add_option("-c", "--callback", dest="vararg_attr",
                      action="callback", callback=vararg_callback)
2013-10-22 18:11:24 +02:00
Pedro Silva
6ae10ed765 add 'keys' option to allow duplicate matching on arbitrary attributes
- towards addressing #427
- TODO: invert key list
- TODO: implement alternative strategies (fp, md5, etc)
2013-10-21 23:32:33 +02:00
Adrian Sampson
2bb2827a16 merge 2013-10-20 13:32:15 -07:00
Adrian Sampson
6ddb296c87 mediafile: add lower-case RG ID3 tags 2013-10-20 13:31:39 -07:00
Peter Schnebel
c82cd29081 requires 'self' 2013-10-18 14:10:16 +02:00
Peter Schnebel
840bf15e5b fixed typo 2013-10-18 12:52:22 +02:00
Peter Schnebel
332e8a2924 Revert "bugfix for too many upload retires + added comments"
This reverts commit 8700736020.
2013-10-18 00:17:40 +02:00
Peter Schnebel
8700736020 bugfix for too many upload retires + added comments 2013-10-18 00:12:16 +02:00
Peter Schnebel
185ef32551 removed duplicate 2013-10-17 23:39:59 +02:00
Adrian Sampson
3070ac382e lastgenre count/min_weight (#416): changelog/thanks
Also closes #407.
2013-10-17 12:07:31 -07:00
Adrian Sampson
f09bf57f6a Merge pull request #416 from pscn/master
Added min_weight option to lastgenre plugin, to provide for filtering out unpopular genres.
2013-10-17 12:00:35 -07:00
Adrian Sampson
526aa0f811 Beatport API closure (#423) 2013-10-17 11:55:00 -07:00
Peter Schnebel
6cb5e8064c make the doc 'clearer' 2013-10-17 09:57:56 +02:00
Peter Schnebel
b1570beba9 Merged the ``multiple` and `max_genres` option into one `count`` option.
Updated debug output to waste less lines.
2013-10-17 09:52:35 +02:00
Adrian Sampson
225c4ed41c changelog for #420 2013-10-16 21:55:51 -07:00
Peter Schnebel
c5896684f3 The following only applies when ``multiple`` is activated:
Return one valid genre even if its weight is lower then ```min_weight```.
Default for ```min_weight``` is now *10*.
Added new config option ```max_genres``` to limit the amount of genres returned.  Default is *3*.
2013-10-15 13:20:45 +02:00
Adrian Sampson
8e2c1bbe68 ftintitle: check artist_sort for null (fix #418) 2013-10-14 21:11:40 -07:00
Peter Schnebel
eafceaa0ed Added min_weight option to lastgenre, to provide for filtering out unpopulare genres. 2013-10-14 12:36:39 +02:00
Adrian Sampson
fac13a041e missing: tolerate disctotal == None
This problem:
http://pastebin.ca/2466454
is likely indicative of a bug elsewhere, but defensive coding seems like a
good idea here.
2013-10-13 18:22:43 -07:00
Adrian Sampson
f12d589e84 version bump: 1.3.2 2013-10-12 19:43:58 -07:00
Adrian Sampson
86fec680b6 add missing ftintitle docs 2013-10-12 19:35:17 -07:00
Adrian Sampson
5127d716d1 typo 2013-10-12 19:24:25 -07:00
Adrian Sampson
2b82d0d813 1.3.1: changelog summary & release date 2013-10-12 19:03:51 -07:00
Adrian Sampson
20bdffcbd6 API docs: slightly less skeletal 2013-10-09 01:09:02 -07:00
Adrian Sampson
d6dac1d35b scrub: no need to save after delete()
The delete() method on Mutagen objects writes the file directly. Calling
save() was unnecessary and, in at least one case we found, could inadvertently
preserve non-standard tags that Mutagen did not understand.
2013-10-08 14:49:29 -07:00
Adrian Sampson
c0c01b2680 id3v23 config option (fix #388) 2013-10-06 20:20:18 -07:00
Adrian Sampson
64dcd283f8 fix ihate docs example (fix #393) 2013-10-06 12:16:56 -07:00
Adrian Sampson
a6798f9ba3 #380: Template.safe_substitute
This way, you almost never need to use the $$ escape sequence.
2013-10-06 12:01:42 -07:00
Adrian Sampson
5e82b670f9 #380: shortcut/compatibility options
These config options make it easier to customize the command (no need to make
a single-element formats dict). And the opt config option provides backwards
compatibility with the previous style.
2013-10-06 11:57:32 -07:00
Adrian Sampson
d828d7aae4 #380: correctly skip no-op transcodes
The format key is now the (lower-cased) format name string used by beets,
which means we can precisely detect which transcodes would be unnecessary. To
facilitate this, I added an ALIASES dict which allows more convenient names to
work for this (e.g., "wma" is easier to remember than "windows media").
2013-10-06 11:21:56 -07:00
Adrian Sampson
2aebec0928 #397: shorter option name, docs, changlog
I changed the option name from "multiple_genres" to "multiple".
2013-10-06 10:34:32 -07:00
Adrian Sampson
6d07b7e4b5 use _dirty.discard, not _dirty.remove
In the case where the field has not actually changed, don't throw a KeyError;
just proceed silently.
2013-10-06 10:03:24 -07:00
Adrian Sampson
787918fdc3 changelog, tests, slight reorg for #187 2013-09-30 11:13:13 -07:00
Adrian Sampson
bd0580680f move directory pruning later in import process
Fixes a thing where pruning would remove the album art before fetchart could
get it.
2013-09-29 18:29:49 -07:00
Adrian Sampson
bb21ec692e lastgenre: add album.save() 2013-09-25 08:45:18 -07:00
Adrian Sampson
a6bf633355 skeletal autodoc-based API docs 2013-09-24 20:57:24 -07:00
Adrian Sampson
e6725b6973 docs: reorg plugins section; add dev section
--HG--
rename : docs/plugins/writing.rst => docs/dev/plugins.rst
2013-09-24 20:33:46 -07:00
Adrian Sampson
60f592ec9f changelog for #391 2013-09-23 15:14:27 -07:00
Johann Klähn
5414dc80d2 allow and expand home directory in mpdupdate socket
This allows you to use a socket in your home directory (e.g.
`~/.mpd/socket`) without having to specify the full path including the
username (which can change from machine to machine).
2013-09-23 21:47:26 +02:00
Adrian Sampson
9597d5e370 scrub: restore album art (close #138) 2013-09-21 19:25:31 -07:00
Adrian Sampson
25b77b1518 per_disc_numbering: fix tracktotal (close #163) 2013-09-21 19:12:18 -07:00
Adrian Sampson
4bfe693872 ftintitle: changelog & docs (closes #374) 2013-09-17 14:38:08 -07:00
Adrian Sampson
ab82965b0e FAQ: reorganize into sections 2013-09-16 20:13:36 -07:00
Adrian Sampson
ddf5c4ce54 integrate FAQ links with the rest of the docs 2013-09-16 19:26:09 -07:00
Adrian Sampson
bb55a6486e FAQ: shorten questions
This looks better in tables of contents, etc.
2013-09-16 19:14:58 -07:00
Adrian Sampson
045224d165 add FAQ
Translated from the Markdown on the Wiki using Pandoc.
2013-09-16 19:09:38 -07:00
Adrian Sampson
a5422eeaf7 use track length over recording length
Closes #341. Also, 666 tests! Woohoo!

--HG--
extra : amend_source : f00626f20e2475edcf220772223080ef62f46d84
2013-09-16 17:35:22 -07:00
Adrian Sampson
c5de56c4fd filter wide integers (closes #348) 2013-09-16 17:25:41 -07:00
Adrian Sampson
048880011f echonest_tempo: ensure we have the right track
closes #361
2013-09-16 16:59:11 -07:00
Adrian Sampson
46df8c4f0d info: eager error detection (closes #371) 2013-09-16 16:37:55 -07:00
Adrian Sampson
38bceaa073 fromfilename: docs/changelog (closes #113) 2013-09-13 21:30:01 -07:00
Adrian Sampson
26635718e6 convert-any: changelog/thanks (closes #362, #380) 2013-09-13 19:35:35 -07:00
Adrian Sampson
09d724db3f Merge pull request #380 from rowan-lewis/convert-all
Allow the convert plugin to convert to any format, not just mp3.
2013-09-13 19:32:57 -07:00
Adrian Sampson
b3bc4d3622 mbcollection: skip invalid MBIDs 2013-09-13 19:13:36 -07:00
Rowan Lewis
80d060db07 Added 'quiet' operation mode, prevents start/finish announcements for each file. 2013-09-14 10:18:36 +10:00
Rowan Lewis
52d86f0e6a Added more format presets, updated documentation. 2013-09-14 09:35:25 +10:00
Adrian Sampson
4f1ce5a64c docs: mention musicbrainz port config (closes #365) 2013-09-12 11:11:04 -07:00
Adrian Sampson
19958f75ff embedart: fix error message when imagehdr fails 2013-09-12 10:45:02 -07:00
Adrian Sampson
a785f66511 opus: changelog/thanks/docs (closes #377, #381) 2013-09-12 10:21:05 -07:00
Adrian Sampson
245a6ccb5b version bump: 1.3.1 2013-09-12 09:46:01 -07:00
Adrian Sampson
99b4e25ac2 finish up changelog for beets 1.3.0 2013-09-11 16:08:18 -07:00
Adrian Sampson
0e042d3d74 better Chromaprint installation instructions 2013-09-07 17:03:24 -07:00
Adrian Sampson
247e3b9e01 merge flexattr branch
This is a big change. Some things will probably break.
2013-08-27 17:20:37 -07:00
Adrian Sampson
21a5626347 changelog date/summary for 1.2.2 2013-08-27 09:15:17 -07:00
Adrian Sampson
ca206053ac fix import deletion race
By moving the duplicate file removal to the manipulate_files coroutine, we
ensure that all previous albums are fully moved/copied before trying to delete
their duplicate files.
2013-08-26 14:22:32 -07:00
Adrian Sampson
f9f8994d85 flexattr description in changelog 2013-08-21 18:44:14 -07:00
Adrian Sampson
7d9f556cbe introducing "slow queries"
In preparation for enabling queries over flexattrs, this is a new path that
lets queries avoid generating SQLite expressions altogether. Any query that
can be completely evaluated in SQLite will be, but when it can't, we now fall
back to running the entire query in Python by selecting everything from the
database and running the `match` predicate.

To begin with, this mechanism replaces RegisteredFieldQueries, which
previously used Python callbacks for evaluation. Now they just indicate that
they're slow queries and the query system falls back automatically.

This has the great upside that it lets use implement arbitrarily complex
queries without shoehorning everything into SQLite when that (a) is way too
complicated and (b) doesn't buy us much performance anyway. The obvious
drawback is that any code dealing with queries now has to handle two cases
(slow and fast).

In the future, we could optimize this further by combing fast and slow query
styles. For example, if you want to match with a substring *and* a regular
expression, we can do a first pass in SQLite and apply the regex predicate on
the results. Avoided for now because premature optimization, etc., etc.

Next step: implement flexattr matches as slow queries.
2013-08-16 14:28:46 -07:00
Adrian Sampson
3757aec494 fix homebrew gstreamer instructions 2013-08-15 17:46:03 -07:00
Adrian Sampson
f1c41428e6 changelog/thanks/tweaks for #355
- Remove requests import
- Name change
- Remove some obsolete checks
2013-08-08 16:19:16 -07:00
Adrian Sampson
bb191e7ced Merge pull request #354 from mineo/docs-fixup-2
Docs fixup
2013-08-06 09:46:14 -07:00
Wieland Hoffmann
e4af04e3be docs/inline.rst: The `[paths] section is now paths:` 2013-08-06 10:41:05 +02:00
Wieland Hoffmann
aafcbdc730 plugins/zero.rst: Add a missing 'a' 2013-08-06 10:41:05 +02:00
Wieland Hoffmann
d6673b7f79 plugins/zero.rst: Add a missing 'the' 2013-08-06 10:41:05 +02:00
Wieland Hoffmann
39d67363b5 ref/cli.rst: Remove a 'd' 2013-08-06 10:40:17 +02:00
Wieland Hoffmann
e0ea009508 ref/cli.rst: Add a missing 'k' 2013-08-06 10:40:17 +02:00
Wieland Hoffmann
ec30e3d377 guides/tagger: Make emailing Adrian less imperative 2013-08-06 10:40:17 +02:00
Adrian Sampson
c1b66105dd fix regex (and other) queries in path field 2013-08-04 13:12:25 -07:00
Wieland Hoffmann
0082570e11 pathformat.rst: Add back "track"
This got lost in e0bb3b5cd0 but is really essential enough to appear in that list.
2013-08-03 15:13:29 +02:00
Wieland Hoffmann
d849f37d0a Beets is a music library manager, not a TARDIS 2013-08-02 23:09:31 +02:00
Adrian Sampson
f493156e2d beets is now in the official Arch package repo 2013-07-30 21:59:33 -07:00
Fabrice L.
ed15c18bc8 Update index.rst
`pluginpath` option is described in *config* page, not *cli*
2013-07-27 10:34:49 +02:00
Wieland Hoffmann
cc3d12f218 docs/.../cli.rst: Add an of to the description of update -p
This seems to have been missed when the documentation was added in the first place.
2013-07-12 19:11:47 +02:00
Adrian Sampson
a6bed1135e changelog for #340 2013-07-02 20:12:52 -07:00
Adrian Sampson
214e6f76d9 changelog for #339 2013-06-30 18:34:42 -07:00
Adrian Sampson
649dcd760d changelog for #335, version bump 2013-06-26 22:03:02 -07:00
Dale Sedivec
0e994c2274 Add Item instance to item_moved event
This brings this plug-in event in to line with similar events.
2013-06-26 22:10:19 -05:00
Dale Sedivec
ee5b0d36c4 Document new plug-in event item_moved 2013-06-25 22:31:01 -05:00
Adrian Sampson
252b476f43 clean up changelog for release 2013-06-22 15:44:24 -07:00
Adrian Sampson
1649512b54 web: item_count -> stats (#333)
The new /stats endpoint now counts both items and albums. In the future, it
could also expose other interesting information.
2013-06-21 10:27:49 -07:00
Adrian Sampson
6f7d633564 changelog/docs for #332 2013-06-21 10:18:49 -07:00
Adrian Sampson
58bd8a9e24 docs: a note about albums and the update command 2013-06-15 22:49:14 -07:00
Adrian Sampson
4f9beb6543 changelog for py26 fixes 2013-06-14 13:09:54 -07:00
Adrian Sampson
4555d69803 random: py26 fix 2013-06-12 16:09:41 -07:00
Adrian Sampson
03a2bedac3 changelog for #325 2013-06-11 19:07:50 -07:00
Adrian Sampson
2f053b0ecd scrub: handle IOError
Mutagen can raise this error when trying to truncate a file.
2013-06-10 16:06:43 -07:00
Adrian Sampson
b1ea90a724 don't duplicate penalty names in max_rec section
This is for maintanability: in the future, when we add new distance penalty
components, now we won't have to list them twice in the default config.
2013-06-10 15:59:41 -07:00
Adrian Sampson
82991ce614 documentation enhancements for new config opts 2013-06-10 15:53:06 -07:00
Adrian Sampson
d1ebe423c9 changelog/thanks/style for #319 2013-06-07 20:53:53 -07:00
Adrian Sampson
6baaa7e06e Changelog for migration fix (#317)
Eventually, we should just remove the migration code. Not sure when, however.
2013-06-07 11:59:08 -06:00
Tai Lee
42efd2a761 Change log for #316 and code style tweaks. 2013-06-08 00:32:40 +10:00
Adrian Sampson
884c596f46 clarify changelog for distance refactor (#302) 2013-06-06 10:44:30 -07:00
Adrian Sampson
e3472a5150 move changelog for #302 to 1.2.1 section 2013-06-06 10:23:18 -07:00
Adrian Sampson
40dadd4c59 Merge pull request #302 from mrmachine/distance-refactor
Use a Distance object instead of floats for distance calculations.
2013-06-06 10:18:09 -07:00
Adrian Sampson
daec2e6806 version bump: 1.2.1 2013-06-06 10:17:46 -07:00
Tai Lee
4cfd1a874f Merge branch 'master' of github.com:sampsyo/beets into distance-refactor
Conflicts:
	beets/autotag/match.py
	beets/config_default.yaml
	docs/changelog.rst
	docs/reference/config.rst
2013-06-06 23:28:25 +10:00
Adrian Sampson
c5e8e7b52d oops! forgot release date 2013-06-05 21:58:04 -07:00
Adrian Sampson
78187cfcba preferred_media: null default, expand docs
Setting the default preferred_media to null is more like previous versions.
This way, as digital becomes more popular, we aren't stuck with a default
configuration that prefers an outdated format.
2013-06-05 20:00:17 -07:00
Adrian Sampson
11e8c3e784 mpdupdate domain sockets (#313): changelog/docs 2013-06-05 18:43:47 -07:00
Tai Lee
898254ed6a Merge branch 'master' into distance-refactor
Conflicts:
	docs/changelog.rst
2013-06-06 11:09:36 +10:00
Tai Lee
5ce996df0d Revert "Don't bypass candidate selection in timid mode. Always show all candidates."
This reverts commit b02974f68f.
2013-06-06 10:18:01 +10:00
Adrian Sampson
9542a292ed write more connective text in changelog 2013-06-05 15:51:19 -07:00
Adrian Sampson
7fca25fba6 1.1.1 -> 1.2.0 2013-06-05 15:21:43 -07:00
Adrian Sampson
1364e6ba37 organize 1.1.1 changelog into sections 2013-06-05 15:20:36 -07:00
Adrian Sampson
975f5bd818 changelog/doc links for Beatport plugin (#301) 2013-06-03 14:01:16 -07:00
Adrian Sampson
dc75935b89 Merge pull request #301 from jbaiter/beatport
Plugin for Beatport Metadata in Autotagger
2013-06-03 13:53:05 -07:00
Adrian Sampson
5904959b8a item templates now expand all fields
A user noticed that $id wasn't being expanded. There's no good reason for
that.
2013-06-02 16:49:10 -07:00
Tai Lee
b02974f68f Don't bypass candidate selection in timid mode. Always show all candidates.
Saves paranoid and interested users from having to either force all max
recommendations to none or constantly go back to candidate selection
from a recommendation to see if there is another slightly less similar
but more preferred (by the user) candidate.
2013-06-03 01:20:32 +10:00
Tai Lee
2c175faa46 Colorise no-penalty text differences in a secondary colour, light grey. 2013-06-03 01:08:35 +10:00
Tai Lee
461c3c047c Colour benign track index changes in light gray, consistent with non-penalty supplementary information. 2013-06-03 00:46:40 +10:00
Tai Lee
f3545860da Add ignored setting. Don't show matches with specified penalties applied, e.g. missing tracks or unmatched tracks.
If you know you never want these, they can clutter up the interface
especially now that we have multiple data sources.
2013-06-03 00:35:32 +10:00
Tai Lee
45dc99f1a9 Group preferred media patterns, in case they contain "|" to keep them separate from the number of media. 2013-06-03 00:25:31 +10:00
Johannes Baiter
6c3e38863b Add documentation for Beatport plugin 2013-06-02 11:55:57 +02:00
Tai Lee
e6ac8e1646 Use a Distance object instead of floats for distance calculations.
The new Distance object knows how to perform various types of distance
calculations (expression, equality, number, priority, string).

It will keep track of each individual penalty that has been applied so
that we can utilise that information in the UI and when making decisions
about the recommendation level.

We now display the top 3 penalties (sorted by weight) on the release
list (and "..." if there are more than 3), and we display all penalties
on the album info line and track change line.

The implementation of the `max_rec` setting has been simplified by
removing duplicate validation and instead looking at the penalties that
have been applied to a distance. As a result, we can now configure a
maximum recommendation for any penalty that might be applied.

We have a few new checks when calculating album distance:

`match: preferred: countries` and `match: preferred: media` can each be
set to a list of countries and media in order of your preference. These
are empty by default. A value that matches the first item will have no
penalty, and a value that doesn't match any item will have an unweighted
penalty of 1.0.

If `match: preferred: original_year` is set to "yes", beets will apply
an unweighted penalty of 1.0 for each year of difference between the
release year and the original year.

We now configure individual weights for `mediums` (disctotal), `label`,
`catalognum`, `country` and `albumdisambig` instead of a single generic
`minor` weight. This gives more control, but more importantly separates
and names the applied penalties so that the UI can convey exactly which
fields have contributed to the overall distance penalty.

Likewise, `missing tracks` and `unmatched tracks` are penalised and
displayed in the UI separately, instead of a combined `partial` penalty.

Display non-MusicBrainz source in the disambiguation string, and
"source" in the list of penalties if a release is penalised for being
a non-MusicBrainz.
2013-06-02 18:25:10 +10:00
Adrian Sampson
3a715a6703 changelog/thanks for ALAC (#295) 2013-06-01 17:33:06 -07:00
Adrian Sampson
9a6b6240d0 zero: fix nulling fields containing None 2013-06-01 17:28:59 -07:00
Adrian Sampson
46340af6b7 #291: changelog and docs 2013-05-29 15:39:10 -07:00
Adrian Sampson
3b438b7778 inline: rename "pathfields" to "item_fields" 2013-05-28 23:20:19 -07:00
Adrian Sampson
0176e10ccf inline: allow album field definitions
Under the album_field heading.
2013-05-28 23:10:47 -07:00
Adrian Sampson
a0cb31956d distinguish Album and Item template fields
An earlier change (due to @pedros) added the ability for plugins to define
template fields that work with Albums as well as Items. This enables some
cool new use cases but required that every template field definition check the
type of its arguments. Instead, this iteration on the idea distinguishes
between fields meant for Items and those meant for Albums.

In addition to simplifying the implementation of these functions, this also
enables the creation of album fields with identical names to item fields.
(For example, a user contacted me recently about adding a $bitrate field for
albums, which would be the average bitrate of the items. They can do this now
using a plugin.)

I also changed the docs to stop using the decorator approach to registering
template fields. We're moving toward removing those.
2013-05-28 22:30:23 -07:00
Adrian Sampson
9f927438ca fix some dumb mistakes from most recent flurry 2013-05-28 22:04:20 -07:00
Adrian Sampson
6334f4d1a5 refinements to artpath modification patch
That's 371cc72f2d09 in hg. This makes the patch slightly more general by
reusing our type conversion infrastructure. It also uses "bytes" as a synonym
for "str" that I find a little bit clearer.
2013-05-28 21:41:03 -07:00
Adrian Sampson
b3646f2659 fix some docs syntax 2013-05-28 21:28:26 -07:00
Tai Lee
a5151bb32e Look at many more metadata fields when calculating distance.
Produce slightly more varied similarity score to prioritise extremely
similar releases.
2013-05-29 10:18:55 +10:00
Tai Lee
7700eaee79 Update examples in docs to reflect new UI enhancements. 2013-05-27 01:25:13 +10:00
Tai Lee
e66a865f17 Rename the discogs max rec setting to non_mb_source, so it can apply to all data source plugins. 2013-05-25 22:44:41 +10:00
Adrian Sampson
3807252685 slightly expand UI changelog description 2013-05-24 11:28:27 -07:00
Tai Lee
ae8f7560e9 reST fail. 2013-05-25 01:50:54 +10:00
Tai Lee
f19dcb0508 Update change log. 2013-05-25 01:45:36 +10:00
Tai Lee
f5557a74d7 Update intersecting max_rec and discogs docs. 2013-05-24 15:01:19 +10:00
Tai Lee
15be24998a Add ability to specify a maximum recommendation for Discogs matches. 2013-05-24 14:43:37 +10:00
Tai Lee
34faebfbdb Display "artist" and/or "ID" on RHS of track list in light gray when a penalty has been applied. 2013-05-24 14:42:00 +10:00
Adrian Sampson
26682f9168 docs/changelog for convert paths config (#285) 2013-05-22 15:00:53 -07:00
Lucas Duailibe
e952e37c74 docs for the convert pathformat configuration 2013-05-22 11:12:32 -03:00
Adrian Sampson
06887a8cef discogs: expand docs ever so slightly 2013-05-21 18:03:03 -07:00
Adrian Sampson
27071a6e38 discogs: tweak colorization & installation docs
I thought having "MusicBrainz" colored green was a little distracting since
it's the common case (and universal without the discogs plugin), so this just
makes it neutral-color in that case.
2013-05-21 17:59:17 -07:00
Adrian Sampson
f0d63b3596 changelog thanks for discogs plugin (#283 / #210) 2013-05-21 17:40:21 -07:00
Adrian Sampson
dd304c3339 merge 2013-05-21 17:36:45 -07:00
Adrian Sampson
bf78751090 human-readable errors in read() and write() 2013-05-21 15:58:22 -07:00
Tai Lee
75a4171d20 Merge branch 'master' of github.com:sampsyo/beets into imenem-discogs-search
Conflicts:
	docs/changelog.rst
	docs/plugins/index.rst
2013-05-21 23:27:53 +10:00
Tai Lee
3eb6f8e5eb Add discogs plugin, which extends the autotagger to include results from the discogs database.
This is a refactor of the plugin developed by `imenem`.

- Pass `artist`, `album` and `va_likely` to `candidates()` so that
  plugins don't have to work this out from `items` all over again.
- Pass `artist` and `title` to `item_candidates()`.
- Silence spurious `urllib3` info log lines.
- Use a proper "beets" user agent with `discogs_client`.
- Remove `abstract_search` plugin. It seems unnecessary. How many
  music databases are there? How many will beets support? How much
  common code might there be between them? We can add some abstraction
  if or when more databases are supported.
- Derive more AlbumInfo and TrackInfo properties from discogs Release
  objects, especially album ID so that beets doesn't just use the first
  release and think all subsequent releases are duplicates.
- Add basic documentation, doc strings and code comments.
- Sanitise search query. Remove non-word characters and medium info that
  might filter out good search results.
- Use artist `join` strings from discogs Release object when an album
  or track has multiple artists.
- Don't rely on discogs track position, which is unreliable. But tracks
  are in order, so we can recalculate medium and medium_index as long as
  we can extract a consistent medium across tracks from the position.
- Add "various" as a known signal to indicate various artists.
- Prevent `chroma` plugin from returning a a huge track distance for any
  track that is missing an ID (e.g. all discog tracks).
- `TrackInfo.index` should be the release index (calculated by beets),
  not the medium index (derived from discogs track position).
- Add `AlbumInfo.data_source`. It's "Unknown" by default which is shown
  in red when displaying a suggested or selected match. The built in
  auto tagger sets it to "MusicBrainz" which is shown in green. Anything
  else (e.g. "Discogs") is shown in yellow.
- Remove double spaces from album titles (bad data from Discogs).
2013-05-21 21:16:52 +10:00
Adrian Sampson
f3962e6275 link to the advanced guide from "getting started" 2013-05-19 17:43:10 -07:00
Adrian Sampson
45baa6efe1 first stab at "advanced guide" 2013-05-19 17:35:23 -07:00
Adrian Sampson
90b4092e4f changelog & docs typo fixes for #263 2013-05-19 10:44:35 -07:00
Adrian Sampson
748d8caa64 Merge pull request #263 from madjar/master
Added a -e option to random that makes the distribution even among artists
2013-05-19 10:41:39 -07:00
Adrian Sampson
475228a5e8 fix #281: album art filename respects replace 2013-05-19 10:34:46 -07:00
Adrian Sampson
0bb51e9f1b thanks and doc tweaks for duplicates (#278) 2013-05-17 12:20:27 -07:00
Adrian Sampson
2f442b5677 Merge pull request #278 from pedros/duplicates
Duplicates plugin
2013-05-17 12:15:06 -07:00
Adrian Sampson
1ffc56b85a doc correction and refactoring for #275
Plugin-provided template fields are not available for queries. (Perhaps they
should be, though!)
2013-05-17 12:07:53 -07:00
Adrian Sampson
a6a0256bf9 Merge pull request #276 from pedros/missing
Use newly defined '$missing' template field instead of hardcoded format (-c)
2013-05-17 11:57:12 -07:00
Adrian Sampson
916ceb4b15 changelog and tweaks for #275
I've removed the -p option. The command now always shows plugin-provided
template fields if any are available. We also avoid printing out blank lines
for plugins that don't provide fields.
2013-05-17 11:55:17 -07:00
Adrian Sampson
22044eacac Merge pull request #275 from pedros/show_plugin_fields
Append plugin template fields to 'beet fields' output with -p, --plugins
2013-05-17 11:46:17 -07:00
Adrian Sampson
b8f651fa1a changelog/API docs for #274 2013-05-17 11:44:35 -07:00
Pedro Silva
7031c15418 Initial import of 'duplicates' plugin 2013-05-17 12:47:34 +01:00
Pedro Silva
a48fde9f2c Use newly defined '$missing' template field instead of hardcoded format (-c) 2013-05-15 15:09:00 +01:00
Pedro Silva
4f5faeccac Append plugin template fields to 'beet fields' output with -p, --plugins 2013-05-15 13:41:54 +01:00
Pedro Silva
106ad99556 Perform template field substitution on albums
- adds another traversal through all plugins' template_fields for each
  'evaluate_template' call.
- requires the following idiom (or equivalent):

    @Plugin.template_field(field')
    def _tmpl_field(album):
        """Return stuff.
        """
        if isinstance(album, Album):
            return stuff
2013-05-15 13:05:55 +01:00
Adrian Sampson
a5cb34360d lyrics: fix encoding for Lyrics.com 2013-05-12 12:38:48 -07:00
Adrian Sampson
056cf932d8 docs/changelog for date added (#264) 2013-05-11 13:31:42 -07:00
Lucas Duailibe
5c31d3ac15 Formatting the import time in the view and paths
Added the %format{} template function to output the time to any format supported by time.strftime()
2013-05-11 10:53:43 -03:00
Adrian Sampson
f086fb6fd7 changelog, little style tweak for #272
Changed single-triple quotes to double-triple quotes, just for consistency
with the rest of the codebase.
2013-05-10 22:23:24 -07:00
Adrian Sampson
e1f7027abc Merge branch 'missing' of https://github.com/pedros/beets
Conflicts:
	docs/plugins/index.rst
2013-05-10 22:08:15 -07:00
Pedro Silva
99355e60d4 Synchronize documentation with new parameters and respective behavior 2013-05-10 16:43:36 +01:00
Pedro Silva
6ac86f9f4a Add documentation for missing tracks plugin
Also add link to the documentation plugin to the index
2013-05-10 14:14:58 +01:00
Adrian Sampson
cc13edf49f changelog/docs for range queries #261 2013-05-09 16:13:22 -07:00
Adrian Sampson
b57193fd6c changelog/thanks for #265 2013-05-08 22:58:01 -07:00
Adrian Sampson
8d0449c23d rewrap and changelog note for #267 2013-05-08 22:31:53 -07:00
Adrian Sampson
12be4f23b0 version bump: 1.1.1 2013-05-08 22:28:35 -07:00
Georges Dubus
bcae495c50 Added a -e option to random that makes the distribution even among artists 2013-05-03 18:19:44 +02:00
Adrian Sampson
a9d3ad65bf changelog summary 2013-04-28 23:37:52 -07:00
Fabrice L.
39615c95e0 Update fetchart.rst
fix option name and provided example
2013-04-28 12:31:23 +03:00
Adrian Sampson
96c706013f changelog for #257 2013-04-27 16:49:11 -07:00
Adrian Sampson
a416e9b768 Merge branch 'fetchart-459' of git://github.com/KraYmer/beets
Conflicts:
	docs/plugins/fetchart.rst
2013-04-27 16:34:12 -07:00
Fabrice Laporte
5aab7334e3 fetchart: document 'cautious' and 'cover_names' options 2013-04-27 12:54:56 +02:00
Adrian Sampson
e920cacfed fix link to MusicBrainz albumtype docs 2013-04-25 09:19:33 -07:00
Dale Sedivec
8861d7019b Clarify fetchart docs, and a couple corrections
Reading the fetchart docs it was not clear to me that it would use _any_
image file found alongside your music files, even if the image file did
not have one of the five privileged names (cover, front, art, album,
folder).  I humbly propose these edits to the docs in an attempt to make
it more clear that, by default, any local image file will be used.

I also corrected '"album," _for_ "folder"' to '"album," _or_ "folder"',
and from reading the code I'm pretty sure that remote_priority needs to
be true, not false, in order to prefer remote sources.
2013-04-24 01:06:29 -05:00
Adrian Sampson
bf904187e2 smartplaylist: split query w/ shlex (fixes #256) 2013-04-21 20:55:07 -07:00
Adrian Sampson
aaafba4d28 changelog for #254 2013-04-21 20:41:01 -07:00
Adrian Sampson
7ffeec86e7 Merge pull request #254 from KraYmer/lastgenre-skip
lastgenre: force real lookup during import only if no custom whitelist set
2013-04-21 20:32:05 -07:00
Fabrice Laporte
0fb877a059 lastgenre: invert 'force' option default value. 2013-04-21 23:34:20 +02:00
Adrian Sampson
2a22e6eae8 sort Album.items() output
This closes #181 and #255, which fixed the problem in one usage (importfeeds).
2013-04-20 13:37:29 -07:00
Adrian Sampson
7f17266a6e another docs typo 2013-04-15 16:47:31 -07:00
Fabrice L.
52b8e87c66 Update lyrics.rst
fix typo
2013-04-16 00:12:08 +03:00
Adrian Sampson
2a3a12ee0b docs and changelog for #243
Also note that this fixes #162.
2013-04-15 11:08:43 -07:00
Adrian Sampson
1622dcefb7 Merge pull request #243 from KraYmer/master
Add a lyrics backend that scrapes results from google custom search api
2013-04-15 10:19:31 -07:00
Adrian Sampson
16e0648c81 lastgenre: fix crash with canonicalization 2013-04-10 10:34:06 -07:00
Adrian Sampson
8ae202cf24 changelog for #246 2013-04-10 10:18:58 -07:00
Adrian Sampson
2532c03d86 hard limit on guessed filename length 2013-04-08 18:36:27 -07:00
Fabrice Laporte
479b25bac3 Code style + fix doc typo 2013-04-08 18:35:02 +02:00
Fabrice Laporte
cfb6735e43 Add a lyrics backend that scraps results from google custom search api.
Add a 'fallback' option to facilitate working around the 100 queries/day google
limit by marking files as 'visited' so they are not considered for lyrics search
on the next beet run.
I've put my own google_engine_ID as default value in the code but could be
reconsidered, this engine contains databases known to be scrappable by the
plugin algorithm though.
2013-04-06 15:22:04 +02:00
Adrian Sampson
70b528ed81 use standard query API for album-by-artist (#240) 2013-04-02 20:31:28 -07:00
Fabrice Laporte
e8be4d5ba9 Update inline plugin doc by providing an example about how to define a field depending on 'path' attribute. 2013-03-27 23:19:15 +01:00
Fabrice L.
84c53011ad Update scrub.rst
*autoscrub* option renamed to *auto*
2013-03-26 11:28:17 +01:00
Adrian Sampson
461f43077d changelog note for #234/#125 2013-03-25 12:36:41 -07:00
Adrian Sampson
bb1507bd1c version bump/changelog for #182 2013-03-17 22:52:33 -07:00
Adrian Sampson
f8d6e84581 invert new embedart switch (#182)
The default behavior now does what most people probably expect, which is to
run like the on-import handler for the embedart plugin.
2013-03-17 22:50:28 -07:00
Lucas Duailibe
0c53c0bc3f option to embed current album arts (closes #182) 2013-03-17 22:52:51 -03:00
Adrian Sampson
7383da127d changelog summary/date for 1.1b3 2013-03-16 10:44:47 -07:00
Adrian Sampson
ab69cfb1f9 fix typo in web screenshot (closes #222) 2013-03-15 10:26:58 -07:00
Adrian Sampson
99cb4a171f the: fix config syntax in docs 2013-03-14 18:34:55 -07:00
Adrian Sampson
f474f3aed2 split FieldQuery into base and registered versions 2013-03-14 10:00:30 -07:00
Adrian Sampson
f005ec2de0 refactor: everything is like a plugin query (#214)
The initial idea for this refactor was motivated by the need to make
PluginQuery.match() have the same method signature as the match() methods on
other queries. That is, it needed to take an *item*, not the pattern and
value. (The pattern is supplied when the query is constructed.) So it made
sense to move the value-to-pattern code to a class method.

But then I realized that all the other FieldQuery subclasses needed to do
essentially the same thing. So I eliminated PluginQuery altogether and
refactored FieldQuery to subsume its functionality. I then changed all the
other FieldQuery subclasses to conform to the same pattern.

This has the side effect of allowing different kinds of queries (even
non-field queries) down the road.
2013-03-13 22:57:20 -07:00
Adrian Sampson
40b49ac786 some low-level tweaks to extensible queries (#214) 2013-03-13 21:59:03 -07:00
Philippe Mongeau
292092bef7 Merge #214 extend query syntax from plugins
Conflicts:
	docs/changelog.rst
2013-03-13 18:32:27 -04:00
Philippe Mongeau
280b431173 changelog / doc for #214 2013-03-13 18:29:11 -04:00
Philippe Mongeau
a5367df66e document how extend the query syntax in plugins using PluginQuery
update the fuzzy documentation
2013-03-13 01:04:23 -04:00
Adrian Sampson
54d8adf6a6 changelog for #180 2013-03-12 22:00:11 -07:00
Lucas Duailibe
b9844ccf3a importfeeds: absolute path option (#180) 2013-03-13 01:50:09 -03:00
Adrian Sampson
ae40b97528 chroma: catch acoustid exceptions during submit 2013-03-12 20:30:57 -07:00
Lucas Duailibe
76310b876b collections broken link
Broken link. The current way to see the collections is:
```http://musicbrainz.org/user/YOUR_USER/collections```
2013-03-12 10:34:51 -03:00
Adrian Sampson
3cb71a4f6d python-musicbrainz-ngs 0.3 is out! 2013-03-11 19:35:26 -07:00
Adrian Sampson
fc0924f666 changelog/thanks for #217 2013-03-11 19:24:18 -07:00