Commit graph

302 commits

Author SHA1 Message Date
Philippe Mongeau
200a98d4df add format option to list_items command
you can provide a custom format option to the list
command.
Example: $ beet ls -f '$title - $album'
2012-02-29 19:14:56 -05:00
Adrian Sampson
6d2df0e4bf import_delete: delete local album art (#242) 2012-02-15 16:46:23 -08:00
Adrian Sampson
ea95fa1373 album art fetcher tests 2012-02-15 16:35:28 -08:00
Adrian Sampson
153f52a6eb import_delete prunes empty imported directories (#243) 2012-02-09 15:06:33 -08:00
Adrian Sampson
7522468f0e set disc and disctotal when autotagging (#226) 2012-02-07 18:03:31 -08:00
Adrian Sampson
5a0105b12c fall back to unittest2 (#275) 2012-01-31 15:25:09 -08:00
Adrian Sampson
bb4be3a303 lower case extensions in destination (#331) 2012-01-31 15:11:19 -08:00
Adrian Sampson
337e2556a6 sanitize path components from plugins (#315) 2012-01-30 16:53:05 -08:00
Adrian Sampson
b7c9d2caf5 prevent divide-by-zero in bitrate property (#319) 2012-01-29 14:08:23 -08:00
Adrian Sampson
fe33926038 add new audio properties to library/DB
$samplerate now expands to "##kHz" in path formats.
2012-01-27 16:04:51 -08:00
Adrian Sampson
9987ab47fd fixes & tests for new audio properties
For the recently-added samplerate, bitdepth, and channels properties on
MediaFile, a few things were fixed:
- tests in test_mediafile_basic
- never return None (zero when unavailable)
- make channels work with MP3 files (by looking at the codec "mode")

Also added some docstrings on all of the properties.
2012-01-27 15:51:14 -08:00
Adrian Sampson
4a1e8fdd6e merge 2012-01-27 12:04:44 -08:00
Adrian Sampson
f685bdd89a unicode in str MediaFile fields (#311, closes #15) 2012-01-27 12:02:26 -08:00
Adrian Sampson
3b37433005 no penalty for "various artists" track artist (#251) 2012-01-25 20:41:59 -08:00
Adrian Sampson
47891b00f7 tolerate per-medium track numbering (#283) 2012-01-25 20:12:04 -08:00
Adrian Sampson
0e81900675 mtime tests at integral second resolution (#298) 2012-01-18 14:08:15 -08:00
Adrian Sampson
c40081808a fix double-removal when re-importing with deletion
With import_delete enabled and performing a re-import (which moves files), the
former location of the file would be "deleted". This would lead to a "file does
not exist" error.
2012-01-06 21:58:17 -08:00
Adrian Sampson
d73c133a53 query-conditioned path formats (#210)
Also, Library.path_formats is now a list of pairs instead of a dictionary. (I
would have used an OrderedDict, but that was added in 2.7.)
2011-12-28 19:01:13 -08:00
Adrian Sampson
b44195853c zero-pad date values in path formats (#282) 2011-12-22 15:57:02 -08:00
Adrian Sampson
112d0f5452 uniquify conflicting filenames (#182) 2011-12-19 22:52:13 -08:00
Adrian Sampson
b493bc7004 configurable pathname substitution (#115) 2011-12-19 18:37:35 -08:00
Adrian Sampson
08b539a80e fix field inference w/ null first item (closes #14 on GitHub)
When a partial match is found, its first item (task.items[0]) may be None, and
_infer_album_fields would crash in this case. This solution walks through the
items list and finds the first non-None item.
2011-12-16 16:45:50 -08:00
Adrian Sampson
46a3bde5b5 fix empty function arguments
Previously, an empty argument was treated as "not an argument at all". Now,
every function call always has at least one argument -- i.e., %foo{} is a
function call whose only argument is "" -- and %foo{,bar} is valid syntax.
2011-12-16 12:08:39 -08:00
Adrian Sampson
255fbf6c41 add a small set of default path functions (#231) 2011-12-15 14:27:59 -08:00
Adrian Sampson
ae2f0db540 escape sequences now use $ instead of doubling
This was causing a problem with situation where }} would have semantic meaning
other than escaping a }. Specifically, %func{%func{arg}} contains a }} but
should not escape the }. $} seems to cover this situation. However, ${ is not
permitted as an escape sequence because it looks like the beginning of a symbol
(variable reference) like ${foo}. This is OK because { can be used anywhere as a
literal.
2011-12-15 00:11:57 -08:00
Adrian Sampson
829bd14993 template evaluation (#231) 2011-12-14 19:06:42 -08:00
Adrian Sampson
aa6008dbbc more thorough tests for function call parsing (#231) 2011-12-14 18:46:56 -08:00
Adrian Sampson
b6e75dacb1 function parsing in template string parser (#231) 2011-12-14 18:40:54 -08:00
Adrian Sampson
b5a76e9d1e beginnings of a template string parser (#231) 2011-12-14 17:30:53 -08:00
Adrian Sampson
9aef539e11 fix some ReplayGain fields (and tests) 2011-12-10 17:24:27 -08:00
Adrian Sampson
700c7cd9f8 albumart.org scraper art source (#272) 2011-12-07 11:11:35 -08:00
Adrian Sampson
b9d6928278 consistency policy for DB mtimes (#227) 2011-12-03 17:18:51 -08:00
Adrian Sampson
82367e9067 cleanup for partial match feature (#260)
- Plugins are sent the unadulterated, None-ridden ordered items lists. Changed
  the lastid plugin to accommodate this.
- Make colorization optional in partial album warnings.
- Fix some tests.
2011-12-01 14:03:32 -08:00
Adrian Sampson
0b5a47a745 Merge pull request #13 from laarmen/feature/incomplete_albums
Tag incomplete albums (#260 on Google Code)
2011-12-01 13:04:11 -08:00
Simon Chopin
bb964a7c47 autotag: Fill the blanks when ordering incomplete album
In the function order_items, instead of automatically reject the
canonical candidate if it has more tracks, the function still tries to
find matches for the tracks amongst the items, and otherwise uses None
to fill the void in order to keep the information about the track
numbers
2011-11-22 13:47:36 +01:00
Simon Chopin
4dc4025b5f autotag: Can now compute the distance for incomplete albums
If the user has some songs from a specific album, but not all of them,
the real solution is immediately discarded. This commit is the first of a
series that will implement support for these incomplete albums.

The point of this patch is to make sure missing commits are taken into
account when calculating the distance between an album and its canonical
data.

Note that in order not to break API compatibility, the album_distance
call for the plugins receives a purged version of both the items and the
album info, resulting in some potential accuracy if the plugin bases
itself on the index of a track in album_info.tracks.
2011-11-22 13:47:35 +01:00
Adrian Sampson
5965b37f51 skip (configurable) clutter filenames when importing 2011-11-13 17:14:40 -08:00
Adrian Sampson
02402545e0 get original release date for MB release group (#65) 2011-11-13 16:30:49 -08:00
Adrian Sampson
7e627c5e57 decode pathnames before formatting them (#232) 2011-11-13 10:10:19 -08:00
Adrian Sampson
bfb8b443ff beginning of ReplayGain fields in MediaFile 2011-11-12 21:23:54 -08:00
Adrian Sampson
adbfd06682 embed python-musicbrainz-ngs; beets is now on /ws/2 2011-10-23 18:20:01 -07:00
Adrian Sampson
95f38dbe52 "info dictionaries" replaced with AlbumInfo and TrackInfo 2011-10-23 14:12:13 -07:00
Adrian Sampson
ee78391f4f autotag refactoring in preparation for interface changes 2011-10-10 18:19:24 -07:00
Adrian Sampson
9a1d43d156 prevent albums_in_dir from yielding empty albums (#265)
This regression was introduced with the album collapsing feature. We need to
check whether the items array is empty before yielding every time.
2011-11-29 11:36:33 -08:00
Adrian Sampson
1ba4d74a75 use better default paths on Windows (#241) 2011-11-27 23:33:11 -08:00
Adrian Sampson
450115358d multi-disc album collapsing based on heuristics (#42) 2011-11-26 15:43:26 -08:00
Adrian Sampson
b1a1caa246 fix update tests for mtime optimization (#227) 2011-11-23 18:05:37 -08:00
Adrian Sampson
256cbf9fd5 sync with latest python-musicbrainz-ngs, fixing Unicode queries (#257) 2011-11-23 17:57:00 -08:00
Adrian Sampson
ec49fca4dc smarter MBID input (based on patch by derwin) 2011-10-07 15:33:19 -07:00
Adrian Sampson
2e2c1be1bd catch MB BadStatusLine errors 2011-09-18 17:09:20 -07:00