Commit graph

200 commits

Author SHA1 Message Date
Adrian Sampson
096816cba7 path formats can now be specified by album type 2011-03-22 20:09:27 -07:00
wlof
c09f6a75ff updated db to new format 2011-03-19 01:47:24 +01:00
wlof
7be77a99d9 .. is now inserted at the beginning of sys.path so that local beets
files are used instead of installed ones
2011-03-19 01:45:35 +01:00
wlof
2db7699ed3 .. is now inserted at the beginning of sys.path so that local beets
files are used instead of installed ones
2011-03-19 00:08:19 +01:00
Adrian Sampson
2360c5744a retry on MusicBrainz error 504 (gateway timeout) 2011-03-03 15:25:16 -08:00
Adrian Sampson
5437b30688 strip null characters from MB queries (#142) 2011-02-28 10:08:09 -08:00
Adrian Sampson
4ab74d9a69 don't log output during testing 2011-02-18 12:41:23 -08:00
Adrian Sampson
993519c004 split import tests, suppress progress checks for testing 2011-02-18 12:38:46 -08:00
Adrian Sampson
0d869340ec fixes for album artist inference
- Inference must be enabled explicitly with the "infer_aa" flag. It does not
  happen transparently.
- Infer both artist and artist ID.
- Fixed a bug where only the database row was using the inferred data, not the
  returned data structure.
- Added tests.
2011-02-18 12:17:22 -08:00
Adrian Sampson
ce5f9f9936 move BaseAlbum tests to test_db (with other album tests) 2011-02-18 11:36:52 -08:00
Ozzi Lee
9d20fd7151 Add ImportTest, testing import_files in commands.py.
Only tests "as-is" metadata imports, making sure that tracks are
copied to the library and named properly.
2011-02-18 06:31:46 -06:00
Ozzi Lee
d9554746cd Added a very basic test_library.py
test_library.py so far just documents existing behavior of album
objects, especially the fact that trying to access unset fields causes
an AttributeError.
2011-02-02 22:22:23 -06:00
Adrian Sampson
0822fa2f82 test that autotagger sets track artist to match album artist 2011-01-24 20:22:13 -08:00
Adrian Sampson
9d3eaa5b05 remove albumify plugin (it's been a while since beta 3) 2011-01-24 19:43:27 -08:00
Adrian Sampson
eb1a6c8ae3 tests for multiple paths feature; legacy path_format overrides 2011-01-24 19:40:09 -08:00
Adrian Sampson
d16e972088 fix count queries over empty results 2011-01-24 15:41:38 -08:00
Adrian Sampson
66b3e5675c update default path formats; make $artist fall back on $albumartist
The default path formats now include both a "default", which is the same as
before but now uses $albumartist instead of $artist, and a "comp" path, which
uses a Compilations directory. Old paths are supported as-is by letting $artist
refer to either a track artist (when present, as it is in all old library
tracks) or album artist (when the track artist isn't present, as is the case
with most albums imported now).
2011-01-24 10:14:19 -08:00
Adrian Sampson
5cfc7db7b1 move "various artists" detection from autotag module to mb 2011-01-24 08:57:49 -08:00
Adrian Sampson
0c24376e6a migration of album table's artist field to albumartist; fix ls -a 2011-01-23 22:49:52 -08:00
Adrian Sampson
75e0924832 move _sanitize_for_path to module namespace 2011-01-23 19:59:41 -08:00
Adrian Sampson
6ade5635e1 light refactoring and renaming for patch
Changed mb_albumtype to albumtype.
Changed album_artist to albumartist.
Reinstated subset relationship between album fields and item fields.
2011-01-23 19:49:48 -08:00
Adrian Sampson
342c360285 apply jonathan.buchanan's compilation patch from issue #48 2011-01-23 18:41:35 -08:00
Adrian Sampson
3bfae3b78c fix permissions on album art (#130) 2011-01-21 17:57:58 -08:00
Adrian Sampson
1b423f05db fix bug where magic "ftyp" string would cause a Mutagen exception (#129) 2011-01-21 15:11:47 -08:00
Adrian Sampson
0b0d7e0b67 fixes for tests' cross-platformness by jonathan.buchanan 2011-01-20 09:29:09 -08:00
Adrian Sampson
93594bac5a convert import paths to absolute; more _syspath calls
Again, patch mainly due to jonathan.buchanan.
2011-01-20 00:13:00 -08:00
Adrian Sampson
5d79d3e537 add another test to justify mock IO setup 2011-01-19 15:16:31 -08:00
Adrian Sampson
1ee401678e a real system for mocking IO for UI functions 2011-01-19 14:53:03 -08:00
Adrian Sampson
96c2484b02 remove incompletely-isolated test cases; use mock timing functions 2011-01-19 14:19:41 -08:00
Adrian Sampson
4359845a01 prohibit trailing spaces in Windows filenames 2011-01-19 13:17:54 -08:00
Adrian Sampson
5904852e4b use "long filename" support instead of short truncation on Windows (#127)
(Patch by jonathan.buchanan. Thanks!)
2011-01-19 13:14:54 -08:00
Adrian Sampson
ab35db7b7a truncate path components to 30 characters on Windows (work around #120) 2011-01-18 20:13:57 -08:00
Adrian Sampson
ca0d1bc7aa fix unicode issue with manual search prompt (#113) 2011-01-18 19:09:04 -08:00
Adrian Sampson
580e4acf10 WavPack and Musepack support 2011-01-03 15:32:58 -08:00
Adrian Sampson
a23fe1c37f don't copy permissions of imported files 2011-01-01 12:12:55 -08:00
Adrian Sampson
87500cf5c4 fix copying when file is already where it needs to be 2011-01-01 10:49:16 -08:00
Adrian Sampson
43b8235a4c work around Python's graceless handling of invalid LANG 2010-12-31 17:41:50 -08:00
Adrian Sampson
4de44590d0 progress display for non-autotagged imports 2010-09-28 10:29:07 -07:00
Adrian Sampson
7cf10d13e5 fix escaping of / in paths on Windows 2010-09-27 16:56:40 -07:00
Adrian Sampson
ea26e6660e fix a bug where string heuristics could penalize 2010-09-22 20:23:36 -07:00
Adrian Sampson
742ebdf698 "smart" string distance detects common artifacts and reweights them
I've essentially loaded up the string distance function with heuristics that
apply different weights to different kinds of string cruft that one encounters
in music tags. For example, tracks ending with "feat. Somebody" shouldn't be
penalized for all those extra characters. Now the weight of that part of the
string is significantly reduced.
2010-09-21 15:12:20 -07:00
Adrian Sampson
b565a3afd4 fix autotagging of artist !!! via special-casing it 2010-09-18 10:51:16 -07:00
Adrian Sampson
4adb76bb65 fix parsing of escaped characters in MPD commands 2010-09-16 23:06:33 -07:00
Adrian Sampson
4d978f3541 album-level distance function in lastid plugin
This involves yet another new plugin method: album_distance. This leaves as the
last major puzzle piece for lastid the ability to augment the initial search
into MB (i.e., can start a search using fingerprinted metadata).
2010-09-14 14:42:51 -07:00
Adrian Sampson
ac35ef14df clean up MusicBrainz IDs at the MB layer (rather than exposing them) 2010-09-13 22:42:22 -07:00
Adrian Sampson
90c4b550fb make track index weight positive
(I'm not sure why, but the weight for track index mismatches was set to 0.0.
This way, the tagger will be slightly more reluctant to frivolously reorder.)
2010-08-06 11:49:31 -07:00
Adrian Sampson
c3988f7300 safely interpret integers in packed values 2010-08-06 11:17:57 -07:00
Adrian Sampson
633b97b302 decode unicode art paths from legacy databases 2010-08-06 10:44:00 -07:00
Adrian Sampson
898b4bd24e destination now uses album values when available
When computing track destination paths, we now look for album-level values when
they're available. This has the effect of making albums go into a single
directory even when their tracks have heterogeneous metadata. We will need to
revisit this once we start explicitly supporting non-album tracks.
2010-08-06 10:36:17 -07:00
Adrian Sampson
181949d1a3 _sanitize_path now uses a non-unicode regex 2010-08-06 10:01:49 -07:00
Adrian Sampson
d1c6448da8 album art paths now stored in blobs in database 2010-08-06 09:55:21 -07:00
Adrian Sampson
45870e6639 fix failure mode of order_items for length mismatch 2010-08-05 16:34:18 -07:00
Adrian Sampson
2a91ddf40b destinations now return bytestring paths 2010-08-05 13:36:50 -07:00
Adrian Sampson
2950ae1bf6 all paths are now bytestrings (not unicode)
In the end, after all of this, it turns out that we basically need to abandon
the temptation of dealing with unicode paths altogether. The POSIX filesystem
API has no notion of unicode and is very much a bytes-only interface. This
means that undecodable pathnames are a reality we must deal with. This new
approach stores all paths as buffers (blobs) in SQLite and -- as transparently
as possible -- presents them as str objects to the Python code. Legacy
databases will have their paths automatically encoded into str objects, and
will lazily have their unicodes in the database replaced with buffers.
2010-08-05 13:26:30 -07:00
Adrian Sampson
9da55376db basic resuming of crashed tagging via .beetsstate file 2010-08-02 16:08:49 -07:00
Adrian Sampson
61fa32e4ac fixed printing when no locale is set (#78) 2010-07-26 15:07:41 -07:00
Adrian Sampson
7e56cd199d add test ensuring that tagless MP3s are not modified when opened 2010-07-22 13:21:39 -07:00
Adrian Sampson
5b2653bb53 albumify plugin for upgrading old databases 2010-07-22 10:52:43 -07:00
Adrian Sampson
2eb10e391a add "format" field to MediaFile for getting the file type
This allows using $format in your path format string, which is nice.
2010-07-21 23:01:32 -07:00
Adrian Sampson
4b313fdbfb fix a test that was leaving cover.jpg strewn about 2010-07-21 16:19:10 -07:00
Adrian Sampson
11c9b7fad9 move album/art file tests to test_files from test_db 2010-07-21 16:11:08 -07:00
Adrian Sampson
cc3ec0d8aa albums() browse function now returns Album objects
As part of this, the BaseLibrary class was also adapted to include a notion of
albums. This is reflected by the new BaseAlbum class, which the Album class
(formerly _AlbumInfo) completely replaces in the concrete Library. The BaseAlbum
class just fetches metadata from the underlying items.
2010-07-21 15:02:08 -07:00
Adrian Sampson
e9e90fa538 expand set of album metadata to include everything relevant 2010-07-15 11:22:36 -07:00
Adrian Sampson
7816b411ad simplified interface for add_album 2010-07-14 23:04:59 -07:00
Adrian Sampson
6b99e3f48d importer now takes album art config options and switch
(doesn't yet actually apply art)
2010-07-14 14:58:17 -07:00
Adrian Sampson
6a3c024005 add_art convenience function takes care of copying to destination 2010-07-14 14:28:54 -07:00
Adrian Sampson
304e4d6708 albums move and remove their items, manage album art 2010-07-14 14:19:51 -07:00
Adrian Sampson
19ded256cd albums query and modify their associated items 2010-07-14 13:24:11 -07:00
Adrian Sampson
3006f9953c beginnings of explicit album management 2010-07-14 12:40:25 -07:00
Adrian Sampson
5096a12052 basic (non-collected) implementation of albums table 2010-07-13 19:42:45 -07:00
Adrian Sampson
bdbabe91da basic album information access through proxy object 2010-07-13 18:01:14 -07:00
Adrian Sampson
5d4f452393 add "albums" table to library database (including migrations) 2010-07-13 10:25:42 -07:00
Adrian Sampson
57fa6139f7 clean up code for art fetcher; add unit tests 2010-07-12 17:49:23 -07:00
Adrian Sampson
30669fd7ac replace :s with -s instead of _s in path names 2010-07-11 19:12:50 -07:00
Adrian Sampson
ca48d88598 couple of outdated tests: mock Items didn't have MB fields 2010-07-11 18:19:27 -07:00
Adrian Sampson
4378db1361 more characters escaped on Windows 2010-07-11 18:14:40 -07:00
Adrian Sampson
274118dc10 identify albums by existing MB album ID 2010-07-10 20:10:34 -07:00
Adrian Sampson
3d88bbfa96 split autotag tests into autotag (fast) and mb (slow) modules
--HG--
rename : test/test_autotag.py => test/test_mb.py
2010-07-10 19:26:35 -07:00
Adrian Sampson
3ce936701a autotagger now applies MusicBrainz IDs 2010-07-10 18:24:29 -07:00
Adrian Sampson
aec7bef504 add MusicBrainz ID fields to database schema 2010-07-10 17:53:51 -07:00
Adrian Sampson
f4d7d68e57 rudimentary migration (column adds only) support 2010-07-10 17:37:33 -07:00
Adrian Sampson
ac98777adc MediaFile support for MusicBrainz track, album, and artist IDs 2010-07-10 14:05:01 -07:00
Adrian Sampson
6e90009b07 remove outdated references to beets.player module 2010-07-09 18:12:18 -07:00
Adrian Sampson
a91ea35517 misc. overdue code cleanup 2010-07-09 18:07:15 -07:00
Adrian Sampson
e834ffd44f make test suite runnable with "setup.py test" 2010-07-08 11:07:56 -07:00
Adrian Sampson
a0bf6112ae remove dead code: add_path 2010-07-05 21:15:28 -07:00
Adrian Sampson
75ec3fda86 some very basic UI unit tests (for "list" only, for now) 2010-07-05 19:58:30 -07:00
Adrian Sampson
40a965ea18 detect unreadable files that seem to be of the correct type
In the case that Mutagen throws an exception while trying to read a file, we
throw an UnreadableFileError, which is a new superclass for FileTypeError.
2010-07-03 23:44:28 -07:00
Adrian Sampson
4be6edab7b read-only metadata (length & bitrate) support for ogg and ape 2010-06-26 11:01:48 -07:00
Adrian Sampson
cd9cfbe6fc refactor generated and specific mediafile tests into separate modules
--HG--
rename : test/test_mediafile.py => test/test_mediafile_basic.py
2010-06-26 10:52:39 -07:00
Adrian Sampson
3e23b412f4 a few more fields for Monkey's Audio support 2010-06-26 02:24:48 -07:00
Adrian Sampson
f8c8bff694 support some alternate ogg field names 2010-06-26 02:12:55 -07:00
Adrian Sampson
f944952300 preliminary support for ogg voribis
This entailed:
- changing the "flac" storage style option to "etc" to encompass both
  flac and vorbis as the tags are very similar
- permitting multiple StorageStyles per field/format, to allow a
  read-any/store-all approach to multiple field options
2010-06-26 02:07:13 -07:00
Adrian Sampson
ed51369dce track ordering now always uses bipartite matching algorithm, no longer assumes
current metadata to be correct if it's complete

Previously, we were using the Munkres algorithm (minimum bipartite matching) to
order tracks intelligently only as a fallback if the current metadata was
paradoxical or incomplete. This was because of a concern about the performance
of the potentially-O(n^3) Munkres solver. However, it was found that (a) the
performance is actually not bad, taking on the order of 0.02 to perform a
matching, and (b) there was no recourse for the tagger to reorder tracks that
were legitimately in the wrong order. Now, we get intelligent reordering of
badly tagged music even when the metadata seems to be complete.

To retain some of the functionality of the old orderer, the track distance
metric was expanded to include a component reflecting the track index.

In doing this, another bug was discovered in the UI that showed the track name
differences based on an arbitrary ordering. Now, the tag_album function returns
a reordered items list with every candidate.
2010-05-30 23:52:54 -07:00
Adrian Sampson
d1a3311fdd deal with MusicBrainz 503 (server busy) errors by retrying a few times 2010-05-28 11:20:59 -07:00
Adrian Sampson
67c4ec9507 change to MIT license
--HG--
rename : COPYING.txt => LICENSE.txt
2010-05-28 00:07:11 -07:00
Adrian Sampson
f6a0345786 intuitive field restrictions on text queries for browsing functions 2010-04-10 13:17:44 -07:00
Adrian Sampson
6769c9b20d make sure pathnames are unicode everywhere 2010-04-09 15:52:31 -07:00
Adrian Sampson
38801813be Item no longer retains a Library (changed constructors)
--HG--
branch : device
2010-04-06 11:45:31 -07:00
Adrian Sampson
68d43380b4 remove remaining library-interaction methods from Item
--HG--
branch : device
2010-04-06 11:36:00 -07:00