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
Adrian Sampson
628cfbffe2
Item.move() now takes a library as an argument
...
--HG--
branch : device
2010-04-06 11:18:41 -07:00
Adrian Sampson
c7f98ccde1
make the PodLibrary interface class more consistent; remove more back-references
...
from Item to Library
(including removing the delete() method, which was unused)
--HG--
branch : device
2010-04-06 11:07:57 -07:00
Adrian Sampson
4d1944f939
better names: add vs. add_path
...
--HG--
branch : device
2010-04-06 10:17:53 -07:00
Adrian Sampson
d3d485195c
move destination calculation to Library from Item
...
--HG--
branch : device
2010-04-06 10:07:58 -07:00
Adrian Sampson
ec861e499c
better distance, multiple candidates, and distance threshold
2009-12-18 19:21:41 -08:00
Adrian Sampson
4280760191
truncate long filenames
2009-11-28 17:03:36 -08:00
Adrian Sampson
a348e19112
moved per-library settings to config file
2009-11-27 21:18:20 -08:00
Adrian Sampson
85b4d9a129
fixed handling of misnumbered tracks during ordering
2009-11-25 14:30:52 -08:00
Adrian Sampson
71c5141f80
correct super-attribute behavior
2009-11-17 23:15:51 -08:00
Adrian Sampson
0377a0c1e5
crawl for album directories
2009-11-08 20:36:57 -08:00
Adrian Sampson
ce49755200
tolerate missing data
2009-11-02 22:45:07 -08:00
Adrian Sampson
991411da8a
method name change in test
2009-11-02 22:16:14 -08:00
adrian.sampson
94b071493b
int casting is now more tolerant (allowing "0 BPM" in "It's Blitz")
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40225
2009-05-12 19:56:49 +00:00
adrian.sampson
f6b53142a9
now tolerates space-separated release times
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40221
2009-04-21 07:21:23 +00:00
adrian.sampson
debebc616c
fixed safetifying of destination paths
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40220
2009-04-15 05:48:40 +00:00
adrian.sampson
895806e8cc
fixed handling of ID3 frames with empty lists
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40218
2009-04-14 03:47:09 +00:00
adrian.sampson
9925a4d8e3
fixed handling of MusicBrainz release dates with no day
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40214
2009-04-13 05:07:31 +00:00
adrian.sampson
4b7119855e
BPD now reports empty path components as '(unknown)'
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40201
2009-04-12 01:48:37 +00:00
adrian.sampson
0b309edd27
path encoding now works with slashes better
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40199
2009-04-11 02:51:26 +00:00
adrian.sampson
60848d85ee
added GPL license and accompanying notice
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40197
2009-04-09 02:46:22 +00:00
adrian.sampson
155c9f7303
added likely_metadata
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40196
2009-04-07 23:57:19 +00:00
adrian.sampson
7f6ace92be
tests for mb.py
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40195
2009-04-07 23:36:02 +00:00
adrian.sampson
1cdf13ea8d
PEP8
...
--HG--
extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40133
2009-02-10 02:54:11 +00:00