Commit graph

401 commits

Author SHA1 Message Date
Adrian Sampson
98892945c2 don't crash when singleton-importing broken files 2012-12-08 12:10:06 -08:00
Adrian Sampson
3e9135ee7c syspath-ify call to pyacoustid (GC-464) 2012-12-07 14:49:11 -08:00
Adrian Sampson
128a881bb4 GH-69/GC-450: docs, changelog, simplification 2012-12-05 09:10:07 -08:00
Adrian Sampson
4f5c5d4e4f echonest_tempo: docs wording fix 2012-12-02 16:34:05 -08:00
Adrian Sampson
f5628e03f6 include official beets Echo Nest API key 2012-12-02 16:32:19 -08:00
Adrian Sampson
a8cf42d05b echonest_tempo: changelog + doc fixes + print fix 2012-12-02 16:25:45 -08:00
David Brenner
0fe2331842 Create echonest_tempo plugin - use EchoNest API to get tempo (bpm).
A simple plugin that connects to the EchoNest API to retrieve
tempo (bpm) metadata for tracks. Functions similarly to the lyrics
plugin.

Requires the pyechonest library.
2012-12-02 18:27:20 -05:00
Wieland Hoffmann
335ce9c73c Some grammar corrections for docs/.../ihate.rst 2012-12-01 10:53:35 +01:00
Adrian Sampson
becd4f957d long-overdue docs for the "info" plugin 2012-11-27 19:44:46 -08:00
Adrian Sampson
9a4cda60cd autotag: use albumartist if available (GC-423) 2012-11-27 17:05:56 -08:00
Adrian Sampson
eef87c2189 truncation incorporates extension length (GC-461) 2012-11-27 16:54:50 -08:00
Adrian Sampson
953291f736 truncate bytes instead of unicode (GC-422) 2012-11-27 16:43:57 -08:00
Adrian Sampson
da3ffcbec3 version change: b16 is now 1.0rc1 2012-11-27 15:56:02 -08:00
Adrian Sampson
90f7fabb9a convert docs phrasing tweaks
@yagebu: I did a code review of the new version of convert using FFmpeg as a
backend. Everything looks perfect. These are just a few changes to the docs.
Thanks again!
2012-11-06 14:38:45 -08:00
Adrian Sampson
859268f707 decode Unicode arguments to import -L (GC-457) 2012-11-06 14:29:58 -08:00
Jakob Schnitzer
19acf0809f convert: switch from flac and lame to ffmpeg
Instead of flac and lame the convert plugin now uses ffmpeg. This adds
support for more input formats and simplifies the code. ffmpeg also uses
the lame encoder internally and has equivalents of all the -V<num>
presets which should be sufficient.
2012-11-05 22:30:21 +01:00
Adrian Sampson
cb03766813 merge 2012-11-03 12:16:50 -07:00
Adrian Sampson
c569ddd412 human-readable mkdir error 2012-11-03 12:16:32 -07:00
Fabrice Laporte
dfddc3a899 Update docs/plugins/fetchart.rst 2012-11-01 23:58:49 +01:00
Adrian Sampson
289287690e more helpful changelog about maxsize 2012-11-01 15:33:38 -07:00
Adrian Sampson
338eb6388e documentation for convert.exe problem (#64)
We currently just document the fact that convert.exe can interfere with finding
ImageMagick's convert binary. We can solve this with a config option easily once
confit is merged.

This also changes the line endings for fetchart.rst back to Unix.
2012-11-01 14:25:46 -07:00
Adrian Sampson
d9974081a7 add extension for proxied images
`urllib.urlretrieve` was using the correct extension in most cases -- I think
when the URL ended with .jpg -- but not in every case. This was leading to files
named just "cover" and not "cover.jpg" or something else sensible. In
particular, proxied URLs don't have .jpg extensions. This generates the filename
manually so the source image always has an extension.
2012-11-01 12:39:02 -07:00
Adrian Sampson
29c6f9c342 changelog and light style fixes for #64 2012-10-31 17:52:21 -07:00
Fabrice Laporte
7f2aa44ac6 Add 'maxwidth' option to embedart and fetchart plugins.
artresizer.py instances an ArtResizer object that uses internally the PIL; ImageMagick
or a web proxy service to perform the resizing operations.
Because embedart works on input images located on filesystem it requires PIL or ImageMagick, whereas
fetchart is able to do the job with the fallback webproxy resizer.
2012-10-28 15:36:42 +01:00
Adrian Sampson
57e66d7b1a fetchart: sort image filenames (GC-452) 2012-10-25 18:02:22 -07:00
Adrian Sampson
1a94d9e4b7 warnings about using syspath with some utils
Also pertaining to #58: for most utility functions, paths should *not* be
`syspath`-ified. (This only occurs right before a path is sent to the OS.) In
fact, as @Wessie discovered, using the result of `syspath` with `ancestry` leads
to incorrect behavior. I checked and this should not currently happen anywhere,
but these docstring changes make that requirement explicit.
2012-10-21 14:27:40 -07:00
Adrian Sampson
91ad913399 #62: simplify list (and random) code
With the new centralized print_obj function, we can greatly simplify the code
for the list command. This necessitated a couple of additional tweaks:

- For performance reasons, print_obj can now take a compiled template. (There's
  still an issue with using the default/configured template, but we can cross
  that bridge later).
- When listing albums, $path now expands to the album's item dir. So the format
  string '$path' now exactly corresponds to passing the -p switch.

As an added bonus, we can now also reduce copypasta in the random plugin (which
behaves almost exactly the same as list).
2012-10-20 21:10:39 -07:00
Adrian Sampson
3952fbec62 docs & changelog for pervasive format config (#62)
This version of the (renamed) _print_obj function uses introspection to
determine whether we're printing an Album or an Item. It's like function
overloading for Python! 😁
2012-10-20 20:29:49 -07:00
Adrian Sampson
b9cc206093 changelog & cleanup for pull request #59 2012-10-20 16:57:56 -07:00
Adrian Sampson
9368075756 replaygain: reinstate albumgain config option 2012-10-20 16:49:52 -07:00
Adrian Sampson
0ab3426bd9 replaygain: add command
You can now disable automatic analysis and instead use a command to manually
analyze albums or tracks.
2012-10-17 22:12:38 -07:00
Adrian Sampson
83f3069d57 replaygain: remove albumgain setting
We now always calculate album gain when importing an album. This is "free" (no
performance cost) now and players are free to ignore the setting if they so
choose.
2012-10-17 20:11:20 -07:00
Adrian Sampson
b81ac1d6e0 fix crash when stdin comes from pipe w/o encoding
This allows, for example, "yes | beet convert".
2012-10-15 14:58:59 -07:00
Adrian Sampson
f2ab26d6a4 mbcollection: change chunk size to 200 releases 2012-10-14 20:35:03 -07:00
Adrian Sampson
244ffd71e2 fix "beet modify" for date fields (GC-449)
This is fixed by allowing MediaFiles to convert strings to integers on
assignment. An eventual complete fix will perform these type conversions in the
Item interface.
2012-10-14 20:27:13 -07:00
Adrian Sampson
526e82feaf move cpu_count to util module; credit @storrgie 2012-10-14 14:09:03 -07:00
Adrian Sampson
6b7d9a6f40 merge pull request #56 (thread count detection) 2012-10-14 14:01:04 -07:00
Adrian Sampson
b9e2beddec replaygain: changelog & doc enhancements for GH-55 2012-10-12 22:42:08 -07:00
Adrian Sampson
b6f34000f0 Merge pull request #55 from KraYmer/upstream
Adding threads to new ReplayGain backend based on command-line tool
2012-10-12 22:27:42 -07:00
Adrian Sampson
d8433f977c convert: changelog thanks & doc enhancements 2012-10-12 22:11:07 -07:00
Adrian Sampson
71a5a5b02f only load plugins from specified modules
Eliminate the __subclasses__ trick for finding all plugins. Now we explicitly
look in each plugin module for a plugin class. This allows us to import plugin
modules with unintentionally loading them. This lets us reuse the image
embedding machinery without copypasta.
2012-10-12 21:55:54 -07:00
Andrew G. Dunn
780cbed809 Made a simple update to the documentation 2012-10-12 16:57:12 -04:00
kraymer
6208c453c6 add apply_gain option (was default) 2012-10-12 08:52:12 +02:00
kraymer
7265119aad change replaygain plugin backend: it now invokes a command line tool (mp3gain or aacgain) 2012-10-12 08:51:36 +02:00
Jakob Schnitzer
e316d0ea30 convert: PEP8, changelog note and license 2012-10-11 17:10:28 +02:00
Jakob Schnitzer
f4d6826462 convert: Added note to docs that 'dest' is a required setting 2012-10-08 23:02:22 +02:00
Jakob Schnitzer
b05fc8ef4f Merge branch 'convert' 2012-10-08 12:49:04 +02:00
Jakob Schnitzer
ec6bbf53d4 convert: Add docs 2012-10-08 12:34:35 +02:00
Adrian Sampson
cb93900888 changelog & docs for "beet stats --exact" 2012-10-07 15:13:49 -07:00
Adrian Sampson
114cea0da6 changelog: ihate plugin 2012-10-06 18:42:38 -07:00
Blemjhoo Tezoulbr
3eb11355cf ihate plugin: ver 1.0 - initial import 2012-10-05 02:37:21 +03:00
Blemjhoo Tezoulbr
c9fafb8379 plugin the: ver 1.1 - singleton mode, code cleanup 2012-10-05 02:04:51 +03:00
Adrian Sampson
56958d175b docs + changelog for GH-50 (lastgenre command) 2012-10-04 09:47:59 -07:00
Adrian Sampson
1372e42dec docs: warn that incremental must be enabled early 2012-09-30 14:16:30 -07:00
Adrian Sampson
5f7d280987 changelog note about @KraYmer's lastgenre feature 2012-09-30 14:06:21 -07:00
Adrian Sampson
4aac7f5324 zero: changelog note & doc improvements 2012-09-25 14:15:33 -07:00
Adrian Sampson
d09308eab2 Merge pull request #49 from tezoulbr/master
new plugin - zero
2012-09-25 14:04:19 -07:00
Philippe Mongeau
d6f2bf20f4 fuzzy_search: enable setting threshold value from the config file 2012-09-22 17:35:39 -04:00
Blemjhoo Tezoulbr
edcacde9ba zero plugin ref included in plugins doc index 2012-09-22 19:06:38 +03:00
Blemjhoo Tezoulbr
aff36fa694 zero plugin, version 0.9 2012-09-22 15:50:33 +03:00
Adrian Sampson
e092af2b2f changelog note: fuzzy_search plugin 2012-09-18 10:33:58 -07:00
Adrian Sampson
0d3064bae8 Merge pull request #48 from phmongeau/fuzzy
Fuzzy Search plugin
2012-09-18 10:26:16 -07:00
Philippe Mongeau
a49dcb81c6 add documentation for fuzzy_search 2012-09-17 22:41:02 -04:00
Adrian Sampson
201571bf93 changelog note &c. for "the" plugin (GH-47) 2012-09-17 11:11:22 -07:00
Adrian Sampson
cdc833b8ab Merge pull request #47 from tezoulbr/master
new plugin: "the" (pattern moving in path formats)
2012-09-17 11:06:22 -07:00
Adrian Sampson
c056467c5d friendly error message in Item.write (GC-437) 2012-09-17 10:36:48 -07:00
Adrian Sampson
ef248576f0 bpd: fix crash w/ unicode extensions (GC-439) 2012-09-17 10:24:34 -07:00
Blemjhoo Tezoulbr
16aa842ccf plugin the: version 1.0 2012-09-16 04:42:39 +03:00
Adrian Sampson
a9fc483a36 importfeed: fix "link" mode w/ unicode paths 2012-09-11 17:32:43 -07:00
Adrian Sampson
dc054907d5 fix non-string value matching in SubstringQuery 2012-09-09 12:17:13 -07:00
Adrian Sampson
90b3dba085 fix match() on RegexpQuery for non-string values 2012-09-08 16:24:39 -07:00
Adrian Sampson
931a6b636b fix for plugins not modifying files' tags 2012-09-02 16:00:18 -07:00
Adrian Sampson
08d8e6c55b changelog about web "attachment" change (GH-46) 2012-08-27 12:01:42 -07:00
Adrian Sampson
473fe04f91 web: add size to item JSON in API
This is to be used by the Tomahawk resolver, which wants file sizes.
2012-08-24 19:20:27 -07:00
Adrian Sampson
6200f0a4c8 scrub: remove all types of tags 2012-08-24 15:39:13 -07:00
Adrian Sampson
1d0d2bfdf6 docs: note that fingerprinting often unnecessary 2012-08-22 17:36:24 -07:00
Adrian Sampson
420c78ff1b lyrics: fix UnicodeDecodeError with non-ASCII text 2012-08-19 13:42:43 -07:00
Adrian Sampson
07d00da825 album-only field queries; ^$ match empty string 2012-08-17 10:54:30 -07:00
Adrian Sampson
30ac59f3d2 allow $path in "beet list -f" templates 2012-08-16 09:00:55 -07:00
Adrian Sampson
22836be22e fix search/DB server disagreement crash (GC-418) 2012-08-12 22:37:10 -07:00
Adrian Sampson
0cab7bd8de inline: fix example in docs (use albumartist)
Previously, the example used the track artist ($artist) for the initial
directory component.
2012-08-07 09:59:00 -07:00
Adrian Sampson
96de3ee400 add track mapping to album_distance plugin method 2012-08-03 18:12:58 -07:00
Adrian Sampson
8a63a381b4 docs: for per_disc_numbering, change path formats 2012-08-03 17:37:14 -07:00
Adrian Sampson
c25fb4b544 link to OSSBuilds for Gstreamer on Windows
(Thanks to Darrin, who pointed this out via email!)
2012-08-03 09:38:56 -07:00
Adrian Sampson
701d8cf204 fetchart: fix extension-less files from CAA 2012-08-02 09:46:57 -07:00
Adrian Sampson
15ead780d3 1.0b15 release date 2012-07-26 09:35:12 -07:00
Adrian Sampson
1f5ae6600b warning when using unrecognized fields in queries 2012-07-25 15:41:22 -07:00
Adrian Sampson
24491051d1 clean up changelog for b15 release 2012-07-24 14:40:01 -07:00
Adrian Sampson
b20367dd41 import: allow relative paths on Windows 2012-07-17 12:00:27 -07:00
Adrian Sampson
44459f88d0 Windows: represent paths as UTF-8 internally
When we store paths in the database, we always use bytestrings for consistency.
But on Windows, these paths are converted back to Unicode before they reach the
FS API. This means that the codec used internally is immaterial.

However, we were naively using sys.getfilesystemencoding() for this internal
representation. On Windows, this is MBCS, a broken encoding that can't represent
all of Unicode. This change replaces that with UTF-8, a "real" codec.

The decoding bit now tries UTF-8 and falls back to MBCS for compatibility with
existing databases. The reality, however, is that existing databases may not
work with this change -- a byte string may represent something different in
UTF-8 from what it represents in MBCS. So users should recreated their DBs if
anything goes wrong.
2012-07-17 10:54:47 -07:00
Adrian Sampson
5df7325937 Windows context menu item via .reg file
Contributed by "camz" on IRC.
2012-07-16 09:39:07 -07:00
Wieland Hoffmann
70910f5ac1 Fix the reference to the ".beetsconfig" doc in plugins/web 2012-07-12 11:19:49 +02:00
Adrian Sampson
ba80e1578a revise changelog/docs mention of cover art source 2012-07-09 14:16:40 -07:00
Adrian Sampson
52aec35bf8 changelog note about unicode replacement fix 2012-07-09 10:00:20 -07:00
Adrian Sampson
883977d2e9 merge 2012-07-03 17:12:34 -07:00
Adrian Sampson
45b146ed2b changelog typos 2012-07-03 09:31:20 -07:00
Adrian Sampson
525376b4b9 docs for unmatched-tracks matches 2012-07-01 16:56:21 -07:00
Adrian Sampson
1855cd71ce docs typo 2012-07-01 14:16:00 -07:00
Adrian Sampson
6503e85a57 fetchart: autofetch option
This necessitated a slight refactoring in the plugin event handling mechanism.
Rather than loading all handlers up front and storing them in a module-scope
structure, we now scan for event handlers at every send(). This is probably
very slightly less efficient but allows for more flexible logic.
2012-06-24 19:01:19 -07:00
Adrian Sampson
fbb5823541 fetchart: command to manually download art 2012-06-24 18:27:00 -07:00
Adrian Sampson
77cbb19564 fetchart: get local art for as-is imports (GC-339) 2012-06-24 17:41:37 -07:00
Adrian Sampson
d807b3fbf1 Cover Art Archive support (GC-71) 2012-06-24 16:57:04 -07:00
Adrian Sampson
11d4fb1abb move album art fetching to a plugin (fetchart) 2012-06-24 00:34:50 -07:00
Adrian Sampson
f5962f45d8 merge 2012-06-23 17:20:02 -07:00
Adrian Sampson
073ee14e56 fix broken matching of path format queries (#405)
A bug in the shlex module with Unicode strings made these queries unparseable
and thus match every track.
2012-06-23 17:18:28 -07:00
Adrian Sampson
7e6e5e5dca nicer error message when stdin is EOF'd 2012-06-21 17:37:45 -07:00
Petr Viktorin
d3c8297527 Add missing parenthesis in docs 2012-06-17 20:26:26 +03:00
Adrian Sampson
ad4b7f8ff5 new plugin event: import_task_files 2012-06-14 12:41:39 -07:00
Adrian Sampson
c5424dce05 lastgenre and lyrics: use new pluggable import stages
This solves a problem where files were copied before the genre field was
updated, resulting in problems when $genre was used in a path (GC-357).
2012-06-08 15:17:49 -07:00
Adrian Sampson
48ffa08928 plugin import stages 2012-06-08 14:49:04 -07:00
Adrian Sampson
0259e7a728 changelog note about new locking (GC-399) 2012-06-08 11:44:59 -07:00
Adrian Sampson
d83c1fad6b chroma: use multiple recording candidates 2012-06-06 12:35:25 -07:00
Adrian Sampson
01fe59955e changelog note for BPD crash (GH-40) 2012-06-03 23:03:28 -07:00
Adrian Sampson
6c220f284a fix outdated BPD documentation
The update command is now supported.
2012-05-31 23:30:08 -07:00
Adrian Sampson
bfa3c5c806 length differences now shown as "X vs. Y"
Previously, they would be shown as "X -> Y", which made multiple users think
that beets was doing something to change the length of the track.
2012-05-30 16:44:20 -07:00
Adrian Sampson
e00f15175a prune is a no-op when file exists
i.e., when moving a file that's already at its destination.
2012-05-30 16:39:47 -07:00
Adrian Sampson
2b03ceae82 beets is now in Gentoo Portage 2012-05-30 15:28:50 -07:00
Adrian Sampson
66e75c398d embedart: log & skip unreadable audio files 2012-05-21 10:47:17 -07:00
Adrian Sampson
b3e0724676 send prompts to stdout (GC-389) 2012-05-20 11:42:53 -07:00
Adrian Sampson
c0da62c2b7 multi-artist sort names 2012-05-19 16:35:52 -07:00
Adrian Sampson
711a1c1113 apply artist credits & add to database (GC-286) 2012-05-19 16:13:15 -07:00
Adrian Sampson
b04096de25 do not preserve metadata during copy-move (GC-383)
The shutil.move() function attempts to copy metadata (e.g., permissions and
mtime) when copying a file across filesystems. This always fails on Samba shares
because the utime() call is never permitted by normal users. We don't care about
preserving mtimes across moves, though, so this commit eschews shutil and
reimplements the move algorithm.
2012-05-19 11:52:53 -07:00
Adrian Sampson
395ba21013 preserve tracebacks in verbose mode (#387) 2012-05-18 15:42:20 -07:00
Adrian Sampson
13995201a1 human-readable filesystem errors (#387) 2012-05-18 15:16:38 -07:00
Adrian Sampson
90884389c5 prevent MusicBrainz exceptions from halting import
Previously, exceptions while communicating with the MusicBrainz API would bring
down the entire autotagging process. These errors are depressingly common, so we
now handle them and log errors to the console (much as we already do with any
exception raised by the Mutagen module). Fault isolation!

This has the added side-effect of giving better context for MB errors when they
do happen -- the logged errors now show the query that was running when MB
failed.
2012-05-18 12:04:44 -07:00
Adrian Sampson
face0ba323 chroma submission: fix crash; better errors 2012-05-17 14:54:58 -07:00
Adrian Sampson
2b000c47a2 per_disc_numbering config option (GC-335) 2012-05-17 12:44:48 -07:00
Adrian Sampson
0e9f296cf0 correct ID3 tag name for catalognum (GC-385) 2012-05-17 11:46:01 -07:00
Adrian Sampson
a6c1ad2235 reimporting with copying: copy external files 2012-05-17 11:42:58 -07:00
Adrian Sampson
1015eb134d changelog note about mpdupdate fix (GH-39) 2012-05-17 10:09:17 -07:00
Adrian Sampson
c1d28252be use section headings for config options
Previously, we were using a definition list. This way things are easier to link
to. It will also likely scale better as we add more config options.
2012-05-16 17:37:38 -07:00
Adrian Sampson
9979c5a826 separate config options for item and album formats
Extends GC-362 (GH-38) to use two different config options: one for albums and
one for items.
2012-05-16 17:01:14 -07:00
Fabrice Laporte
42c51294d6 Merge pull request #38 from KraYmer/master
Issue 362: Make the default template string for the list command configurable
2012-05-16 15:59:22 -07:00
kraymer
81fc626ba7 Issue 362:Make the default template string for the list command configurable. 2012-05-17 00:48:55 +02:00
Adrian Sampson
dfcd47942d new plugin event: library_opened 2012-05-15 12:39:04 -07:00
Adrian Sampson
c9da7bf3f8 new plugin event: import_task_choice 2012-05-15 12:33:57 -07:00
Adrian Sampson
a9eb249a15 version bump: 1.0b15 2012-05-13 20:04:14 -07:00
Fabrice Laporte
16d9b53168 Update docs/reference/cli.rst: add -f option to beet list command 2012-05-13 23:52:27 +03:00
Adrian Sampson
a406ae1c52 date for b14 release 2012-05-12 22:35:55 -07:00
Adrian Sampson
849d50beb9 changelog note about lastgenre fallback_str (GC-358) 2012-05-09 09:40:18 -07:00
Fabrice Laporte
031ae68006 Merge pull request #36 from KraYmer/master
Issue 358:Options for when lastgenre fails to find a tag
2012-05-09 00:11:32 -07:00
kraymer
f93dd6999b correct typo 2012-05-09 09:08:55 +02:00
Adrian Sampson
9dc0ac6ded changelog summary paragraph 2012-05-08 19:07:35 -07:00
Adrian Sampson
da2364a747 changelog note for unicode rewrite fix 2012-05-08 16:19:37 -07:00
kraymer
c4783e25f8 'Issue 358:Options for when lastgenre fails to find a tag'. Added 'fallback_str' plugin parameter to specify a fallback string when no genre found. Declare the parameter without specifying a value (= empty string) to blank the genre field when no genre found. 2012-05-08 23:41:07 +02:00
Adrian Sampson
2fb3ec47c9 changelog note about BPD random/repeat 2012-05-08 14:15:23 -07:00
Adrian Sampson
6ce08c4ce6 merge 2012-05-08 11:59:41 -07:00
Adrian Sampson
8b25a86ee3 use 2.6-compatible format strings 2012-05-08 11:46:08 -07:00
Adrian Sampson
a28f930c52 transaction objects to control DB access
In an attempt to finally address the longstanding SQLite locking issues, I'm
introducing a way to explicitly, lexically scope transactions. The Transaction
class is a context manager that always fully fetches after SELECTs and
automatically commits on exit. No direct access to the library is allowed, so
all changes will eventually be committed and all queries will be completed. This
will also provide a debugging mechanism to show where concurrent transactions
are beginning and ending.

To support composition (transaction reentrancy), an internal, per-Library stack
of transactions is maintained. Commits only happen when the outermost
transaction exits. This means that, while it's possible to introduce atomicity
bugs by invoking Library methods outside of a transaction, you can conveniently
call them *without* a currently-active transaction to get a single atomic
action.

Note that this "transaction stack" concepts assumes a single Library object per
thread. Because we need to duplicate Library objects for concurrent access due
to sqlite3 limitation already, this is fine for now. Later, the interface should
provide one transaction stack per thread for shared Library objects.
2012-05-06 23:24:05 -07:00
Adrian Sampson
1baf49b333 fix still more documentation typos 2012-05-03 17:43:58 -07:00