Adrian Sampson
2b227f57f8
Undo variable name obfuscation ( #767 )
2014-05-18 15:22:10 -07:00
Adrian Sampson
9ec26f7402
Merge pull request #767 from ghedo/play_cmd
...
Support commands with options in play plugin
2014-05-18 15:21:09 -07:00
Adrian Sampson
dfa8445980
Style and wording for Google Images ( #766 )
2014-05-17 22:10:39 -07:00
Adrian Sampson
7f675dbf64
Merge branch 'Lemutar-master'
2014-05-17 22:02:09 -07:00
Adrian Sampson
32a3da5961
Clarify dependencies for RG GStreamer backend
2014-05-17 13:21:55 -07:00
Lemutar
c890384215
add a test, replace urllibs , update help
2014-05-16 10:56:55 +02:00
Alessandro Ghedini
0f20651f8b
Support commands with options in play plugin
...
This adds support for specifying additional options in the command config value
for the play plugin. Example:
play:
command: /usr/bin/command --option1 --option2 some_other_option
2014-05-15 11:07:58 +02:00
Lemutar
eb8048f54d
add picture fetch over for google search
2014-05-14 21:23:28 +00:00
Stig Inge Lea Bjørnsen
e800c9cc62
Plugin rename importmtimes -> importadded.
...
This includes some minor changes to the documentation.
2014-05-14 00:05:44 +02:00
Stig Inge Lea Bjørnsen
34c256925e
Fix style errors reported by Flake8.
2014-05-14 00:05:44 +02:00
Stig Inge Lea Bjørnsen
f8abd50090
Only delete album item mtimes that are in the dictionary.
2014-05-14 00:05:44 +02:00
Stig Inge Lea Bjørnsen
94aad7e309
Record mtimes instead of pre-import paths.
...
This adds support for move imports.
Item and file mtime preservation is now configurable and disabled by
default.
2014-05-14 00:05:44 +02:00
Stig Inge Lea Bjørnsen
0bf4222947
Add importmtimes plugin for preserving file mtimes during copy imports.
...
File modification times are stored as item.mtime, item.added and
album.added.
2014-05-14 00:05:44 +02:00
Adrian Sampson
5a1fa9e3f1
Merge pull request #743 from udiboy1209/master
...
Fix web plugin scroll and lyrics newline bug
2014-05-12 22:43:11 -07:00
udiboy1209
ac7646f0f4
Fix alignment of play button with logo
2014-05-11 19:21:50 +05:30
Adrian Sampson
7310f6e945
Documentation tweaks for bucket ( #747 )
2014-05-10 17:14:35 -07:00
Fabrice Laporte
02f7e78fd3
fix flake8 warnings
2014-05-10 10:57:44 +02:00
Fabrice Laporte
21feab7ab1
add tests to check bad buckets definitions
...
message is now printed to the user when buckets declared in the config
file cannot be parsed
2014-05-10 10:55:38 +02:00
Fabrice Laporte
0d5050bdce
fix handling of digits chars in alpha buckets
...
Characters were search in string.ascii_lowercase that does not contain
digits chars.
2014-05-08 16:13:17 +02:00
Fabrice Laporte
4add189608
Add option to extrapolate year buckets names
...
- spans are now tracked via a list of dicts instead of 2 lists
previously (simpler code)
- extend_year_spans() pregenerates all possible ranges at plugin setup
stage
- a BucketError is now raised if declared bucket format not accepted
2014-05-08 01:28:17 +02:00
Fabrice Laporte
509af59d4e
cleanup docstrings and add tests
2014-05-04 08:51:11 +02:00
Fabrice Laporte
31569baba7
fix range upper bound + tests added
2014-05-03 23:46:31 +02:00
udiboy1209
07b791dbd3
improve detail display and scrollbar in web plugin
...
Moved track, format, lyrics, etc. to separate div with id 'extra-detail'
so that theses can scroll independent of the main details(Title, Album, Artist).
Split the templates and javascript rendering objects accordingly.
This has a better scrollbar display than the previous commit.
2014-05-03 21:08:07 +05:30
Fabrice Laporte
581bf768ca
add buckets plugin + tests
...
Add a new template functions %bucket(text, field) for path formatting.
2014-05-03 13:55:21 +02:00
udiboy1209
35eb60c393
More elegant fix to line break display problem for lyrics in web plugin
...
The javascript `replace` method was previously being used, which worked in a hacky way.
But the more elegant way to do it, as suggested by minitech on this question http://stackoverflow.com/questions/23440298 ,
is to use CSS, and make the browser automatically display white-spaces using `white-space: pre-wrap`
2014-05-03 10:31:02 +05:30
udiboy1209
756f4c4d29
Fix web plugin scroll and lyrics newline bug
2014-05-02 20:54:57 +05:30
Adrian Sampson
6cc643520d
Merge branch 'KraYmer-lyrics-integration-sources'
2014-05-01 08:58:07 -07:00
Adrian Sampson
e19632c11d
Merge branch 'master' of github.com:sampsyo/beets
2014-04-29 10:23:30 -07:00
Adrian Sampson
54445882d8
replaygain: Log when files are unsupported
2014-04-29 10:23:07 -07:00
Adrian Sampson
362db8f22f
Merge pull request #728 from sampsyo/lastgenre-tests-new
...
Tests for lastgenre (cleaned up)
2014-04-29 08:38:56 -07:00
Adrian Sampson
233f71a457
Use real booleans for whitelist/canonical options
...
As opposed to the strings "true" and "false".
2014-04-28 23:00:00 -07:00
Fabrice Laporte
ef3c1cd1ff
use booleans for whitelist and c14n options
...
homogenise options setup using booleans, while keeping the empty string
(synonym of ‘true’) for backward compatibility.
2014-04-28 10:31:22 +02:00
Adrian Sampson
d5dbaeff7a
lastgenre: Restore default whitelist
2014-04-27 13:54:32 -07:00
Fabrice Laporte
0b3c5ddbe0
Canonicalization only return most common genre
2014-04-27 22:27:20 +02:00
Fabrice Laporte
817b8cc96e
Allowing the whitelist to be disabled
...
By default it is disabled, setting the value to the empty
string will use the built-in whitelist (same behaviour than
c14n).
2014-04-27 22:26:09 +02:00
Adrian Sampson
9f5f70aeab
Merge pull request #720 from sampsyo/import-refactor
...
Import refactor
2014-04-27 09:51:10 -07:00
Adrian Sampson
35b6602795
Use self.config instead of global config
2014-04-26 21:00:59 -07:00
Adrian Sampson
e7af3319f8
lastgenre: Restore min_weight option
2014-04-26 20:59:39 -07:00
Fabrice Laporte
d0d3c18da2
lastgenre: rewrite filtering logic to make tests pass
...
- remove filter_tags() as genres should not be removed this soon while
c14n has not been applied
- group all filtering logic in the function _resolve_genres (formerly
_strings_to_genre)
2014-04-26 20:51:13 -07:00
Fabrice Laporte
2e8e55736d
get rid of module level options variable
...
Conflicts:
beetsplug/lastgenre/__init__.py
2014-04-26 20:51:00 -07:00
Fabrice Laporte
499a7b868e
Move the filtering logic of '_tags_for' function into a dedicated 'filter_tags' function.
2014-04-26 20:50:04 -07:00
Thomas Scholtes
fea5df2339
covert: embed coverart into converted files
2014-04-26 19:49:29 +02:00
Thomas Scholtes
c20c62409d
convert: log error instead of crashing
2014-04-26 19:47:50 +02:00
Thomas Scholtes
9090f0979f
Use new _embed api
2014-04-26 19:44:29 +02:00
Thomas Scholtes
9b88525736
Make function to embed art agnostic of items
2014-04-26 19:41:44 +02:00
Fabrice Laporte
74898347c0
is_page_candidate() handle more languages
...
Add translations in spanish and german for tokens to
ignore when comparing an url title with a song title.
2014-04-26 19:25:25 +02:00
Fabrice Laporte
8ba91a49c6
change chars replacements done by slugify()
...
adapt slugify() to make it return strings that can be used
as yaml keys (no spaces, etc.)
adapt is_page_candidate() accordingly
2014-04-26 19:22:40 +02:00
Fabrice Laporte
567e6300fd
fix flake8
2014-04-26 07:27:13 +02:00
Fabrice Laporte
117d16f2ad
lyrics: add tests to track which websites can be scraped by our algo and be
...
used as sources fot the google custom search engine.
2014-04-26 07:26:50 +02:00
Thomas Scholtes
e96753f96a
Plugins use import_task.album
2014-04-25 13:52:03 +02:00
Thomas Scholtes
73a1b63f7d
Catch and log file errors when embedding images
...
Fixes #723 .
2014-04-25 12:33:19 +02:00
Adrian Sampson
80bec3935e
config name change, changelog for #692
2014-04-22 14:50:54 -07:00
Adrian Sampson
8cc05077ed
Merge branch 'SUTJael-ftintitle_drop'
2014-04-22 14:47:28 -07:00
Bruno Cauet
7b0ce4f28e
Disable the video stream in all ffmpeg conversions
...
Propagate the previous commit's change to all ffmpeg command lines.
2014-04-21 19:59:18 +02:00
SUTJael
4d616ceb93
Fix styling
2014-04-21 16:13:43 +02:00
SUTJael
345d47b40d
Fix indent
2014-04-21 16:06:34 +02:00
Bruno Cauet
db2a2d1e25
Disable video feed in ffmpeg's flac conversion
...
Video feeds may be found in flac files, and the current ffmpeg
conversion command does not ignore them, causing beets to fail
to convert the file.
Add `-vn` to the command line to fix the problem.
Fix issue #712 .
2014-04-21 15:37:10 +02:00
SUTJael
974e3128a6
Fix formatting issues.
...
Drop parameter sticky
2014-04-21 13:07:26 +02:00
Adrian Sampson
d96d12440e
underscore_naming in play ( #708 )
2014-04-19 14:55:34 -07:00
Adrian Sampson
e8f56c897b
play ( #708 ): obviate debug option
...
Just reuse beets' global verbose logging.
2014-04-19 14:54:20 -07:00
Adrian Sampson
9192b7f5cb
play plugin ( #708 ): docs clarification, etc.
2014-04-19 14:41:30 -07:00
Adrian Sampson
492acbb721
Merge pull request #708 from davidhampgonsalves/master
...
Play Plugin
2014-04-19 14:32:34 -07:00
david hamp-gonsalves
f67490c464
reworking messaging
2014-04-19 09:34:50 -03:00
david hamp-gonsalves
44e84e775a
correcting sytles
2014-04-19 09:24:37 -03:00
david hamp-gonsalves
f8b6c1ea11
added default commands to use system file associations
2014-04-19 08:52:18 -03:00
Adrian Sampson
5f4a9c6446
fix Windows path manipulation in importfeeds
2014-04-18 15:52:23 -07:00
david hamp-gonsalves
22f341eb97
added play plugin and docs
2014-04-18 10:33:53 -03:00
Yevgeny Bezman
e82147ce6d
replaygain: added missing import
2014-04-17 21:32:12 +03:00
Yevgeny Bezman
bfac8cf84f
replaygain: ignoring deprecation warning for threads_init in newer gi versions. Fixes #697
2014-04-17 20:06:03 +03:00
Thomas Scholtes
ea04344560
Test and fix unicode issues in logs. Fixes #699
...
The helper functions for creating test fixtures now include unicode characters.
2014-04-17 12:12:49 +02:00
Adrian Sampson
de1247c7bc
query-based fix for #693
...
This is @geigerzaehler's fix from b868799 , just with the typo fixed
(singletons -> singleton).
An alternate (more verbose) fix would have been:
singletons_query.subqueries.append(
dbcore.query.BooleanQuery('singleton', True, False)
)
i.e., pass `False` for the `fast` parameter to indicate that this is not a
fixed-field query.
2014-04-16 10:18:38 -07:00
Thomas Scholtes
0751c560e3
Check for singleton directly
2014-04-16 14:42:19 +02:00
Thomas Scholtes
b8687999e2
Query string for computed fields. Fixes #693
2014-04-16 14:18:07 +02:00
Thomas Scholtes
4e2828668c
Refactor mbsync
2014-04-16 14:02:51 +02:00
Adrian Sampson
033cf9ec21
spell check
2014-04-15 21:17:23 -07:00
SUTJael
2b7538ee82
Add drop option to FtInTitlePlugin
2014-04-15 23:04:41 +02:00
Adrian Sampson
9fd0e1d3fe
fix #687 : template indexes in logging statements
2014-04-14 10:35:20 -07:00
Pedro Silva
8aec50ff8c
call truncate, not convert, when truncating
2014-04-14 15:39:36 +02:00
Pedro Silva
cf2f78ef55
fix #685 : truncate files larger than 50MB for upload
...
The new behavior is as follows:
1. If the file size is greater than 50MB, and the 'truncate' config
option is 'no', skip the file.
2. If the file size is greater than 50MB, and the 'truncate' config
option is 'yes', reencode the file to ogg, and truncate to first 5
minutes.
2014-04-14 10:00:54 +02:00
Adrian Sampson
a45ac4a9d6
enable unused import checking
...
The "noqa" marker is for exceptions such as these.
2014-04-13 20:48:30 -07:00
Adrian Sampson
e21c04e912
flake8-cleanliness in missing
...
This is a little bit dumb, but one way to get the style checker to accept the
nice alignment in this plugin is to make it a dict.
2014-04-13 17:59:17 -07:00
Adrian Sampson
e5a9db1cac
fix up some indentation warnings in plugins
2014-04-13 17:55:49 -07:00
Adrian Sampson
fb37be44db
restore some comments from #684
...
I wanted to leave a few of these as comments -- they serve more as separators
than as internal documentation.
2014-04-13 17:43:43 -07:00
Fabrice Laporte
3ead936fe5
flake8 cleaning beetsplug/*
...
Remaining warnings are related to visual indentation.
2014-04-13 23:24:57 +02:00
Adrian Sampson
2ec140edbc
fix import path to BooleanQuery ( #680 )
2014-04-12 13:48:37 -07:00
Adrian Sampson
2caacba3c6
Merge branch 'ktkonrad-singleton'
2014-04-12 13:40:54 -07:00
Adrian Sampson
e5d28e2171
lyrics is flake8-clean
2014-04-12 13:32:46 -07:00
Adrian Sampson
7fcd7daf7c
lyrics: minor style/doc cleanup
2014-04-12 13:08:24 -07:00
Adrian Sampson
2dafaa2f0c
Merge branch 'KraYmer-lyrics-enh-tests'
2014-04-12 12:58:20 -07:00
Adrian Sampson
3549f9785c
keyfinder: handle errors in command execution
2014-04-12 11:22:11 -07:00
Thomas Scholtes
650b49795b
Add keyfinder plugin
...
Closes #662 and #279 .
2014-04-12 18:44:38 +02:00
Fabrice Laporte
42747797cd
better handling of songs with featuring artists, songs variants versions (live
...
etc), and songs combinations (lyrics are then appended)
2014-04-12 12:29:20 +02:00
Kyle Konrad
d044e1773a
Replace SingletonQuery with BooleanQuery on computed singleton field.
...
Updated use in command parsing and mbsync plugin.
2014-04-11 22:20:04 -07:00
Adrian Sampson
271a1627a5
mbsync: call album.save()
...
This must have been broken as long as album.save() was a necessary call (i.e.,
since the introduction of the dbcore base classes).
2014-04-11 19:50:13 -07:00
Thomas Scholtes
c01fc542ed
Support for initial_key with EchoNest
2014-04-11 21:03:11 +02:00
Thomas Scholtes
c27d26ddbf
Refactor zero plugin
2014-04-10 22:01:04 +02:00
Adrian Sampson
6b0c03db9d
info: don't print out album art blobs
2014-04-10 11:50:59 -07:00
Adrian Sampson
4c9daa12cc
Merge pull request #676 from geigerzaehler/item-try-write
...
Add item.try_write() to log errors
2014-04-10 11:33:06 -07:00
Adrian Sampson
b79a1199ad
remove stray ITEM_FIELDS reference ( #650 )
2014-04-10 11:31:51 -07:00
Adrian Sampson
33b44717ab
embedart: catch log errors ( fix #678 )
2014-04-10 11:24:59 -07:00
Thomas Scholtes
5d753b4f38
Remove ALBUM_* constants. Closes #650
2014-04-10 17:44:39 +02:00
Thomas Scholtes
f6f974ec87
Remove ITEM_* constants
...
We might consider renaming `Item._fields` to `Item.fields` since other parts of
beets use it as a replacement for `ITEM_KEYS`.
See also #650 .
2014-04-10 17:11:21 +02:00
Thomas Scholtes
c3ea1ded30
Add item.try_write() to log errors
...
Many commands and plugins use `item.write()` to update tags. Since the success
of the call is not critical to the functionality of most consumers we want to
catch any exceptions, log an error and continue with our task. The new method
encapsulates this logic.
This fixes #675 .
2014-04-10 15:26:05 +02:00
Thomas Scholtes
b7a26811ef
Add "shell" keyword for commands and use it in convert
...
Convert used to split the user command at whitespaces and pass it to `Popen`.
This approach is to naive, it also was not consistent with output from the
logs. Instead we pass the whole command to a subshell.
2014-04-09 20:41:30 +02:00
Adrian Sampson
443b8089d5
remove unnecessary IndexableEnum
...
This is not really critical since list(Type)[i] works just as well. This fixes
a couple other problems from the enum transition:
- The name of TYPES was not really consistent with its new role as an enum
type. Renamed this ImageType.
- Fix a rather egregious bug in embedart (undefined reference to Image).
2014-04-08 16:59:50 -07:00
Thomas Scholtes
071a5c363d
Use new MediaFile api to embed art
2014-04-08 01:41:26 +02:00
Thomas Scholtes
55e5381bbd
Merge branch 'extendable-mediafile'
...
Conflicts:
beets/library.py
docs/dev/plugins.rst
2014-04-07 23:49:29 +02:00
Thomas Scholtes
6402b664c6
More refactoring for convert
2014-04-07 20:17:55 +02:00
Thomas Scholtes
651bdf0acc
Refactor convert plugin
...
* `encode()` raises an error when the command returns with non-zero exit
status. We catch that in the higher-level conversion functions and skip to
the next item without writing tags.
* Simplified the handling of the `keep_new` flag.
2014-04-07 18:24:59 +02:00
Thomas Scholtes
9d87a7fc02
Make convert --keep-new work again
...
Iincludes some more tests for the convert plugin. The test use the extended
TestHelper class and the new pathlib (see #621 ).
2014-04-07 18:07:43 +02:00
Adrian Sampson
dd053d7723
changelog and style fixes for #665
2014-04-06 17:59:30 -07:00
Lee Reinhardt
bf05135e5f
Added extra checking to fetchart plugin.
...
Will avoid a KeyError being raised when Content-Type header is missing.
See #664 .
2014-04-06 14:42:51 -05:00
Yevgeny Bezman
2a6e5c7273
Merge branch 'replaygain-backends'
...
Conflicts:
tox.ini
2014-04-06 08:45:35 +03:00
Thomas Scholtes
1b434a7dae
Import original file when conversion fails.
...
Fixes previous test
2014-04-05 21:09:12 +02:00
Thomas Scholtes
1c598d4cee
Add replaygain target level for gstreamer
2014-04-04 22:42:17 +02:00
Thomas Scholtes
81a2433e9d
Use GLib.MainLoop instead of deprecated GObject
2014-04-04 19:46:43 +02:00
Thomas Scholtes
81f53fb0d2
Add basic cli tests for replaygain
2014-04-04 19:44:16 +02:00
Yevgeny Bezman
cf49d88156
replaygain: clarified the need to strange thread initialization|
2014-04-04 20:20:14 +03:00
Yevgeny Bezman
d8c37d6ca3
replaygain: Added a FatalReplayGainError class to signal the plugin that the backend failed completely
2014-04-04 19:17:41 +02:00
Thomas Scholtes
a5bdbdcf7f
Move available backends to class level
...
See also https://github.com/sampsyo/beets/issues/650
2014-04-04 19:17:41 +02:00
Thomas Scholtes
439fc1938f
Remove debug print statements
2014-04-04 19:17:41 +02:00
Thomas Scholtes
89680d835a
Refine docstrings and fix style issues (flake8)
2014-04-04 19:17:41 +02:00
Yevgeny Bezman
6aa1cc95cb
replaygain: Improved error handling
2014-04-04 19:17:41 +02:00
Yevgeny Bezman
2d9f40d62d
replaygain: fixed small errors introduced by previous refactor. Commented the code in key parts.
2014-04-04 19:17:41 +02:00
Adrian Sampson
08b2bff28d
eliminate GStreamer globals and initialize_config
2014-04-04 19:17:41 +02:00
Adrian Sampson
2369122075
minor Python style; move namedtuples to module
2014-04-04 19:17:41 +02:00
Yevgeny Bezman
d2c6d00b7b
replaygain: Added some informative prints, removed hardcoded debug print
2014-04-04 19:17:40 +02:00
Yevgeny Bezman
9581b91e10
replaygain: Added gstreamer support, fixed some small bugs
2014-04-04 19:17:40 +02:00
Yevgeny Bezman
86ee30df0d
replaygain: modified current implementation to fit a backend framework in anticipation of other implementations
2014-04-04 19:17:40 +02:00
Thomas Scholtes
766c8b190b
Add path argument to item.write()
...
Symmetrical to item.read(), this allows us to update the tags of files that are
not in the library. The motivation was this issue [1].
The commit also includes a nasty hack in the plugin code that prevents breaking
other plugins.
[1]: https://github.com/geigerzaehler/beets-check/issues/1
2014-04-04 14:56:10 +02:00
Adrian Sampson
c5174b3881
use command_output utility in echonest
...
That's the last direct use of the subprocess calls.
2014-04-03 19:51:50 -07:00
Adrian Sampson
d407db725f
convert: catch OSErrors and display error message
...
This also adds close_fds (only available on Unixes) to the common subprocess
invocation utility.
2014-04-03 19:47:21 -07:00
Thomas Scholtes
4b1a1e3d65
Remove ITEM_KEYS_WRITABLE
2014-04-04 00:03:40 +02:00
Adrian Sampson
729e001432
benchmark: customizable album ID
2014-04-03 13:00:20 -07:00
Adrian Sampson
cd57c8da7f
benchmarking for slow matches
...
Investigating #609 . The culprit seems to be repeated reading of the config's
weight settings.
2014-04-03 11:56:26 -07:00
brilnius
e1878b34e7
Merge pull request #618 from brilnius/fix615
...
lastgenre plugin: separator in genre lists can now be configured
2014-03-19 22:22:41 +01:00
Bruno Tournay
81b74151ca
Genre separator from config must be unicode string
2014-03-19 22:16:02 +01:00
Thomas Scholtes
0daea144e8
Fix album import feed with slashes
...
Makes tests from f2da1922b28571216c7bc0eaa71f56a316dc0d5d pass.
Fixes #610 and supersedes #611 .
2014-03-19 17:26:11 +01:00
Bruno Tournay
618708916b
Separator in genre lists can now be configured
2014-03-18 22:03:11 +01:00
Pedro Silva
e8f6781fa0
fix #568 : ignore items with all keys null
2014-03-14 12:04:43 +01:00
brilnius
b8ef621941
Merge pull request #599 from brilnius/spl_auto
...
Ability to disable auto regeneration of smartplaylist
2014-03-10 22:46:55 +01:00
Bruno Tournay
865ea40eab
Simplified config access
2014-03-10 22:44:38 +01:00
Johannes
856a28a8a0
Revert "no module-global session ( #597 )"
...
This reverts commit c56412a1d5 .
- The Requests library advertises itself as thread safe.
- Cookies aren't so interesting, but keep-alive /
connection pooling would be nice to have.
2014-03-10 08:53:12 +00:00
Bruno Tournay
33632e0caf
We can now disable auto regeneration of smartplaylist
2014-03-09 22:57:07 +01:00
Adrian Sampson
fb038ecc30
changelog & style tweaks for album_query ( #595 )
2014-03-09 13:22:34 -07:00
Adrian Sampson
aa01906761
Merge pull request #595 from brilnius/spl_album_query
...
smartplaylist album_query parameter
2014-03-09 13:17:49 -07:00
Bruno Tournay
8a73a173df
Attempt to factorize duplicate code
2014-03-09 20:15:51 +01:00
Adrian Sampson
c56412a1d5
no module-global session ( #597 )
...
This might have been perfectly correct, but I read that requests.Session
objects share cookies between requests. That makes me nervous for two reasons:
- thread safety (does requests lock the cookie jar internally? who knows?!?)
- leaking cookies could have privacy/performance implications; we don't need
'em anyway
2014-03-09 11:54:31 -07:00
Adrian Sampson
7ddb8676c4
Merge pull request #597 from johtso/fetchart-requests-plus-useragent
...
Switch fetchart to requests and send user-agent
2014-03-09 11:43:51 -07:00
Johannes
3367dad0a4
Make fetchart use requests and send useragent
...
Closes #585
2014-03-09 09:26:30 +00:00
Adam M
e30a776baa
fix iteration over keys instead of values
2014-03-08 22:10:37 +00:00
Adrian Sampson
ef36890a4e
changelog and code simplification for #594
2014-03-08 13:58:37 -08:00
Adam M
c09b86db9c
don't iterate over all items to calculate max_bpm
...
https://github.com/sampsyo/beets/pull/594#issuecomment-37108627
2014-03-08 21:17:37 +00:00
Bruno Tournay
05d54b4f23
Added ability to also include in playlist result from query based on albums (album_query parameter).
2014-03-08 21:24:56 +01:00
Adam M
dfe8280ff2
add format option to echosim command
2014-03-08 16:22:50 +00:00
Adam M
a0faa530f9
convert echonest bpm to value between 0-1
2014-03-08 16:12:29 +00:00
Adam M
1e7fc76817
add threshold option to echosim command
2014-03-08 15:35:20 +00:00
Adrian Sampson
ab8d008049
use OrQuery for smartplaylist ( #575 )
2014-03-07 14:38:40 -08:00
Adrian Sampson
f06a16819f
spl mutli-query ( #575 ): remove option, changelog
2014-03-07 14:26:49 -08:00
Bruno Tournay
ab513f7bc2
Add the ability to gather the result of ^Cveral queries into a smartplaylist
2014-03-05 21:40:24 +01:00
Pedro Silva
37ac63ccc6
remove debugging print statement inadvertently left from 6ef879f
2014-03-02 22:14:53 +01:00
Pedro Silva
6ef879ffec
fix #563 : split prog parts before formating in item's name
2014-03-02 22:08:45 +01:00
Pedro Silva
dc4624c1b3
specialize exception handling when doing checksums
2014-03-02 20:56:56 +01:00
Pedro Silva
5cc7cac2e7
clarify that keys are not necessarily mbids
2014-03-02 20:43:17 +01:00
Pedro Silva
6d283ecafa
fix checksum problem where key was unintentionally hard-coded
2014-03-02 20:39:42 +01:00
Pedro Silva
bf7e04af0f
fix #562 : fail on empty code and handle analyze exceptions
2014-03-02 14:10:52 +01:00
Adrian Sampson
472571a4c6
web: fix typo in albums endpoint
2014-02-26 20:08:22 -08:00
Adrian Sampson
1253cb695d
move show_model_changes to ui package
...
This makes it more naturally reusable for plugins.
2014-02-22 15:06:16 -08:00
Adrian Sampson
58dd5f47f5
use _show_model_changes in mbsync
2014-02-22 14:37:04 -08:00
Adrian Sampson
661e82fdec
echonest: remove confusing length output ( #545 )
2014-02-17 22:57:37 -05:00
Adrian Sampson
007c26176e
Merge pull request #535 from kljohann/last_playing
...
mpdstats: update last_played
2014-02-11 09:51:46 -08:00
Adrian Sampson
3dd9e4622f
lastgenre: tolerate el.weight is None
2014-02-11 09:49:15 -08:00
Adrian Sampson
7190964e05
restore echonest fetch command ( fix #540 )
2014-02-11 09:44:02 -08:00
Adrian Sampson
4c5fc8fd76
echonest: use only one plugin class ( fix #536 )
2014-02-10 22:08:15 -08:00
Johann Klähn
73a43b56a0
mpdstats: update last_played
...
This fixes #529 and brings back the old behaviour of setting last_played
on every song change regardless of whether it is played to the end or skipped.
2014-02-10 20:55:42 +01:00
Thomas Scholtes
004e9a8144
Add query converter
2014-02-10 17:26:26 +01:00
Thomas Scholtes
dcbf7ecc36
Fix album retrieval
2014-02-10 17:26:26 +01:00
Thomas Scholtes
6663ed0c64
Use URL converters
2014-02-10 17:26:26 +01:00
Adrian Sampson
8ffe83b99e
fetchart: fix #533 , remote_priority ignoring local
2014-02-09 16:10:53 -08:00
Adrian Sampson
ee713d153c
ihate: fix singletons (from #486 , fix #411 )
2014-02-08 12:11:32 -08:00
Adrian Sampson
fe5c175cc3
style fixes for ihate ( #486 )
2014-02-08 12:00:23 -08:00
BrainDamage
6836e9c725
updated iHate plugin to replace hardcoded regex system in favour of more flexible queries
...
changed config layout of iHate plugin to a simpler system
updated unit test for ihate plugin accordingly
updated docs for ihate plugin accordingly
2014-02-07 21:37:33 +01:00
Pedro Silva
ecff56fc44
Fix #522 : treat copy/move args as dirs and process items accordingly
2014-02-02 20:45:57 +01:00
Thomas Scholtes
75c3b82d88
Test and fix web /item/query/<query>
2014-02-02 19:12:10 +01:00
Thomas Scholtes
f706e58409
Web API handles multiple ids
2014-02-02 19:04:04 +01:00
Adrian Sampson
318649c16c
convert: fix transcode on windows ( #519 )
2014-02-02 09:54:33 -08:00
Johann Klähn
e78b0928b2
fix mpdstats plugin after query restructuring
...
BytesQuery does not handle unicode strings correctly at the moment
and PathQuery seems like a reasonable query to use.
2014-01-31 20:16:22 +01:00
Adrian Sampson
456c8a7f01
fromfilename: fix #460 : crash w/ no capture groups
2014-01-30 08:19:16 -08:00
Adrian Sampson
620f0f8727
fetchart colors ( #508 ): simplify, new colors
...
Also a changelog entry.
2014-01-27 22:51:58 -08:00
Adrian Sampson
33c40f111c
merge colorization part of #509
...
Conflicts:
beetsplug/fetchart.py
2014-01-27 22:46:58 -08:00
Adrian Sampson
06b3ee179c
comments, naming, and docs for part of #509
2014-01-27 22:38:23 -08:00
Bruno Tournay
1a4b15c4a5
Colorized output of beet fetchart, for easier detection of albums with no cover
2014-01-27 22:03:42 +01:00
Bruno Tournay
0466df6215
Search again locally in album folder when running beet fetchart without -f
2014-01-27 22:02:29 +01:00
Adrian Sampson
def635a33b
rewrite: flatten Confit view to string
...
Previously, this would pass around a ConfigView object which would only lazily
get turned into a string. Bad!
2014-01-23 19:46:13 -08:00
Thomas Scholtes
f98240b83c
JSON API responds with embedded items
...
This effectively removes the "album_ids" and "item_ids" keys from the responses
of `/item/` and `/album/`, respectively. Instead there are "albums" and "items" keys,
respectively that contain a list of JSON representations for all albums and
items.
2014-01-21 22:40:42 +01:00
Thomas Scholtes
9d1731faf2
Use generators to stream web requests
2014-01-21 16:42:25 +01:00
Thomas Scholtes
7d6d8f1fd4
Embed item data into web request
2014-01-21 16:08:22 +01:00
Adrian Sampson
9ee4adc5e1
move remaining generic Query types to dbcore.query
...
NumericQuery is still broken. This, of course, is the whole reason for the
change.
2014-01-20 16:40:50 -08:00
Adrian Sampson
77daa542c8
fix infinite-recursion regression in rewrite
...
Reported by axion on IRC.
2014-01-20 11:39:33 -08:00
Adrian Sampson
dcee7b6219
dbcore: terminology
...
Replace "library" and "lib" references in dbcore with "database" and "db" for
short.
2014-01-18 16:36:04 -08:00
Adrian Sampson
cbbb38c417
new BytesQuery factors out MatchQuery's path logic
2014-01-13 16:17:30 -08:00
Adrian Sampson
1ad1f7634c
py26 compatible format strings ( fix #490 )
2014-01-09 11:22:49 -08:00
Adrian Sampson
d30db10d10
mpdupdate: remove debug clause
...
Thanks to @phmongeau for pointing out this embarrassing mistake.
2014-01-08 22:43:10 -08:00
Heinz Wiesinger
7158f7aefc
Make sure bpm values coming from echonest are stored as integers.
2014-01-05 20:21:04 +01:00
Adrian Sampson
04c0bd50fd
smartplaylist: use new evaluate_template signature
2013-12-29 12:30:44 -08:00
Adrian Sampson
8a105b0cb9
Merged in yevgenybezman/beets/scrub-add-mp4 (BB pull request 1)
...
scrub: Added MP4 support to scrub plugin
2013-12-22 12:47:34 -08:00
Yevgeny Bezman
7310f0a371
scrub: Added MP4 support to scrub plugin
...
--HG--
branch : scrub-add-mp4
2013-12-22 22:04:47 +02:00
Adrian Sampson
938563e287
echonest: get audio_summary in search ( fix #481 )
2013-12-18 12:35:31 -08:00
Adrian Sampson
5e405f6b84
Merge pull request #480 from fortes/patch-1
...
Don't try to parse None as HTML when fetching lyrics
2013-12-18 12:04:45 -08:00
Adrian Sampson
5fb7c424ad
use canonical parent, not base tag ( #478 )
2013-12-18 12:01:55 -08:00
Filipe Fortes
0824ccb85f
Don't try to parse None as HTML when fetching lyrics
...
Fixes #479
2013-12-18 07:37:01 -08:00
Adrian Sampson
3338ef2ff2
lastgenre: multiple + canonical genres ( fix #478 )
2013-12-17 17:29:37 -08:00
Adrian Sampson
6ab0abfa90
detect missing echonest fingerprints ( fix #477 )
2013-12-17 17:18:16 -08:00
Adrian Sampson
16a6138f33
Merge branch 'master' of github.com:sampsyo/beets
2013-12-17 17:13:21 -08:00
Johann Klähn
0bb395fa8c
mpdstats: fix typo/bug
2013-12-14 12:11:18 +01:00
Adrian Sampson
d0e53d48b3
echonest: tiny py26 fix
2013-12-12 15:50:08 -08:00
Adrian Sampson
19868946d5
mpdstats refactor: comments/credit
2013-12-12 15:47:26 -08:00
Johann Klähn
159a67e30f
mpdstats: reload item before calculations
...
As mpdstats is a long running process the value of one of the attributes
may have changed since the song started to play (f.ex. through a manual
update using `modify`).
2013-12-12 08:29:01 +01:00
Johann Klähn
df274e2b15
mpdstats: refactor plugin
2013-12-12 08:29:01 +01:00
Johann Klähn
ad2028ddf7
mpdstats: do not call item.write
...
The attributes used by this plugin are not 'writable'[^1] anyway so this
leads to needless file access. Also we do not need to check for
`item._lib` as this will always be populated by the call to
`lib.items(...)`.
[^1]: As per `ITEM_KEYS_WRITABLE` in `beets/library.py`
2013-12-12 08:23:33 +01:00
Johann Klähn
97e4ccbbd9
expand '~' in host in mpdstats
2013-12-11 12:04:39 +01:00
Adrian Sampson
4ea5ed9eed
echonest: always flatten results to dict
...
This avoids the need for two cases (song object or dict) in parts of the code.
2013-11-29 12:58:46 -08:00
Adrian Sampson
5e08c178e6
echonest: fix codegen/identify
...
I broke two things:
- forgot to return the fingerprint! oops
- need to handle raw Exception raised by pyechonest
2013-11-29 10:09:09 -08:00
Adrian Sampson
9bcd7aecae
echonest: clean up FFmpeg-based audio conversion
...
subprocess.check_call helps a lot here.
--HG--
extra : amend_source : 009a79de8f97407fc60b62aa6b7bd23856286082
2013-11-27 19:09:54 -08:00
Adrian Sampson
a0056afeaf
echonest: clean up analyze workflow
...
- handle the right exceptions
- add duration to from_track dict
2013-11-27 18:57:29 -08:00
Adrian Sampson
6b54514c65
echonest: simplify fingerprinting strategy
...
mostly expunging exception-based control flow
2013-11-27 18:35:21 -08:00
Adrian Sampson
d5dd68af24
echonest: sort analysis methods by priority
...
These are now ordered in the code in the same sequence that we try them:
- profile (ID)
- search (metadata)
- identify (fingerprint)
- analyze (upload)
2013-11-27 18:26:44 -08:00
Adrian Sampson
78688cc3f1
echonest: simplify ID-based lookup ("profile")
...
- don't use generic Exceptions for control flow
- extraneous .get() calls
2013-11-27 18:18:25 -08:00
Adrian Sampson
1ae2894a01
echonest: simplify method-aggregator loop
2013-11-26 18:20:25 -08:00
Adrian Sampson
4ad9635043
echonest: use pipeline stage
...
In addition to the performance benefit of running in our own thread, this also
obviates the need for the _songs dict to pass stuff between stages.
2013-11-26 18:11:14 -08:00
Adrian Sampson
d367bc31d4
echonest: don't needlessly write during import
...
On the import hook, the config['import']['write'] check (and writing at all)
is not necessary, since this will be taken care of later in the program.
2013-11-26 17:58:02 -08:00
Adrian Sampson
8fe254f086
echo nest: top-level code review pass
...
General Python/beets style changes:
- "x is None" can generally be replaced with "not x"
- prefer iteration over repetitive lines
- config[foo].get(bool) can be replaced with config[foo] in conditions
- removed extraneous "return None", which is what Python functions do
automatically if you don't return anything
- 79-column wrap
2013-11-26 15:20:18 -08:00
Adrian Sampson
8483b67641
duplicates: only one type of deletion
2013-11-25 23:17:07 -08:00
Adrian Sampson
1966bc9bda
duplicates: some config handling simplification
2013-11-25 23:15:55 -08:00
Adrian Sampson
1171f47e98
mpdstats: log with displayable_path, etc.
2013-11-25 22:58:43 -08:00
Adrian Sampson
0167f67a96
simplify MPD configuration
2013-11-25 22:45:42 -08:00
Adrian Sampson
0c32ad1dee
mpdstats: style fixes
2013-11-25 22:15:22 -08:00
Adrian Sampson
2c0c8494ba
mpdstats: clean up some unused code
2013-11-25 22:05:43 -08:00
Adrian Sampson
38ecb35718
lyrics -f ( #455 , closes #414 ): style, changelog
2013-11-25 15:58:53 -08:00
Pedro Silva
9b75db8326
merge Bitdemon-master
...
- minor style changes
- synchronize with documentation
2013-11-17 12:34:53 +01:00
Bitdemon
f87606869c
Update lyrics.py
2013-11-10 23:18:53 +01:00
Bitdemon
de0f0792ef
Update lyrics.py
2013-11-10 23:13:35 +01:00
Bitdemon
f5f73be2b5
Update lyrics.py
2013-11-10 22:58:36 +01:00
Bitdemon
86d74f7d39
Update lyrics.py
...
added -f option to lyrics plugin
first draft
2013-11-10 22:44:37 +01:00
Pedro Silva
e8d6c94995
revert debug print left over from previous commit
2013-11-07 22:15:52 +01:00
Pedro Silva
27da05f9d3
stringify key values prior to hashing
2013-11-07 22:13:42 +01:00
Mathijs de Bruin
2bab3135b3
Fix for #411 : iHate fails with singletons.
2013-11-07 13:57:25 +01:00
Adrian Sampson
3ccd231765
id3v23: remove one redundant case; changelog/thanks
2013-11-05 19:59:45 -08:00
Adrian Sampson
580fe7e1de
Merge pull request #447 from chriscogburn/patch-2
...
Fix for id3v23 to include config parameter to save
2013-11-05 19:46:38 -08:00
Chris Cogburn
e9bc47a665
Fix for id3v23 to include config parameter to save
2013-11-05 21:29:49 -06:00
Chris Cogburn
d0c3cb5779
Fix for id3v23 to include config parameter to save
2013-11-05 21:27:26 -06:00
Peter Schnebel
27886ba7bc
fixed call to expanduser
2013-11-04 11:13:32 +01:00
Philippe Mongeau
00fa333570
mpdstats: use expanduser() on the music directory path
2013-11-03 22:02:45 -05:00
Philippe Mongeau
058e3adbef
mpdstats: fix two log.info calls to use unicode strings
2013-11-03 00:30:32 -04:00
Peter Schnebel
34bf650ccb
Merge branch 'master' of https://github.com/sampsyo/beets
2013-11-01 22:03:39 +01:00
Peter Schnebel
8068e6b522
bugfix: honor the auto config option
2013-11-01 13:12:27 +01:00
Peter Schnebel
46df2e5630
removed user stuff
2013-11-01 12:27:56 +01:00
Peter Schnebel
ac0f62eaf1
proposal for one global 'mpd' config section
2013-10-31 21:03:11 +01:00
Peter Schnebel
890e522bc0
removed more last.fm stuff
2013-10-31 20:30:13 +01:00
Peter Schnebel
80c29c4f9c
renaming mpc to mpdstats
2013-10-31 20:27:09 +01:00
Peter Schnebel
1e4f33209a
clean up unused last.fm stuff
2013-10-31 20:24:44 +01:00
Peter Schnebel
2ddff72752
bugfix: clean up was a mess up
2013-10-31 17:02:34 +01:00
Peter Schnebel
497746051e
clean up
2013-10-31 16:40:22 +01:00
Peter Schnebel
e43b67640e
clean up
2013-10-31 16:37:28 +01:00
Peter Schnebel
3d964fb2db
clean up
2013-10-31 16:31:53 +01:00
Peter Schnebel
62a06ef3b4
add support for prio and prioid if MPD supports it
2013-10-31 15:33:05 +01:00
Peter Schnebel
1d2ba6ef26
use songid to detect playlist changes
2013-10-31 15:22:46 +01:00
Peter Schnebel
be70b74450
use songid to detect currently playing song
2013-10-31 15:04:34 +01:00
Peter Schnebel
e6a22953de
detect playlist changes (add / remove)
2013-10-31 14:04:25 +01:00
Peter Schnebel
f5b1b11cd9
bugfix: should survive MPD restart now
2013-10-31 13:30:14 +01:00
Peter Schnebel
6e893389d7
bugfix: update statistics of the correct song
2013-10-31 13:24:03 +01:00
Peter Schnebel
810c4e1e3f
New plugin mpc to connect to a MPD server to gather play statistics.
2013-10-31 12:19:05 +01:00
Pedro Silva
7aff16b169
remove WIP pushed by mistake
2013-10-27 22:48:52 +01:00
Pedro Silva
7e3b80cc1d
WIP: add classification task
2013-10-27 22:45:55 +01:00
Pedro Silva
8f9e35f081
initial commit
2013-10-27 21:59:33 +01:00
Jakob Schnitzer
887e02c2ae
convert: fix decision on which items to transcode
2013-10-27 17:10:55 +00:00
Peter Schnebel
dab7ec219d
fixed log message
2013-10-27 12:04:58 +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
538aa457e0
removed echonest_ prefix
2013-10-27 08:52:54 +01:00
Adrian Sampson
2481dc244b
convert: iterate over the right items ( fix #439 )
2013-10-26 11:08:52 -07:00
Peter Schnebel
315522aafa
fix inverted conditional when fingerprinting (@pedros)
2013-10-26 17:32:30 +02:00
Peter Schnebel
f6613ee31c
added similarity finder plugin
2013-10-26 11:33:34 +02:00
Peter Schnebel
428302b45c
add echonest_id to debug output
2013-10-26 10:33:29 +02:00
Peter Schnebel
5e0bac8ab5
be a little less picky when judging matches
2013-10-26 10:30:42 +02:00
Peter Schnebel
e4792df50f
bugfix: don't use limit here
2013-10-26 10:29:21 +02:00
Peter Schnebel
a755fbcf53
workaround: also double check after profile
2013-10-26 10:28:11 +02:00
Peter Schnebel
c8c3c4ae66
workaround: onetime after analyze, the wrong song was returned. double check that. fall back to track data.
2013-10-26 10:26:55 +02:00
Peter Schnebel
9ac89b350c
bugfix: extract duration from track
2013-10-26 09:39:24 +02:00
Peter Schnebel
03f5f71732
show the artist / title as received from EchoNest
2013-10-26 09:09:00 +02:00
Peter Schnebel
1324498f29
bugfix
2013-10-26 09:06:47 +02:00
Peter Schnebel
c4445df8af
bugfix
2013-10-26 09:03:20 +02:00
Peter Schnebel
2d1788e595
bugfix
2013-10-26 08:58:39 +02:00
Peter Schnebel
a5be1648f9
new proposal
2013-10-26 08:56:56 +02:00
Peter Schnebel
6f5d4d1328
new proposal
2013-10-26 08:56:18 +02:00
Pedro Silva
1e737d146b
Add new copy, move, delete, and tag options
2013-10-23 17:15:16 +02:00
Pedro Silva
7112c30415
Don't set default checksum command-line
2013-10-23 12:57:04 +02:00
Pedro Silva
a4425aa60e
Don't spam stderr on -C without --verbose
2013-10-23 12:56:34 +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
35e727b86f
Add --path sugar
2013-10-22 22:43:32 +02:00
Pedro Silva
aad0449f56
ensure command-line --keys is also respected
2013-10-22 00:05:02 +02:00
Pedro Silva
3d862d63d5
Properly initialize keys config as a list
2013-10-21 23:53:58 +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
Peter Schnebel
00ec247515
bugfix for failed uploads
2013-10-18 00:32:28 +02:00
Peter Schnebel
1c453e852b
bugfix for too many upload retires + added comments
2013-10-18 00:22:52 +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
f3935e8aea
disabled tempo
2013-10-17 22:49:27 +02:00
Peter Schnebel
491dff1f09
disabled tempo
2013-10-17 22:48:40 +02:00
Peter Schnebel
bd7a56bf07
renamed mappings
2013-10-17 22:27:37 +02:00
Peter Schnebel
f790b7cb15
renamed mappings
2013-10-17 22:02:20 +02:00
Adrian Sampson
2d2836825f
#416 : workaround comment, py26-ify
2013-10-17 12:10:17 -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
Peter Schnebel
b34a945051
better(?) defaults
2013-10-17 17:12:15 +02:00
Peter Schnebel
b13e9caea7
hint
2013-10-17 16:42:41 +02:00
Peter Schnebel
b08e68a920
Save raw values + added reapply switch + better debug output
2013-10-17 16:41:43 +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
Peter Schnebel
b2a23a58e2
fixed indentation
2013-10-17 09:30:26 +02:00
Peter Schnebel
f3b64e87bc
sync (plugin is broken)
2013-10-17 09:29:18 +02:00
Adrian Sampson
b037f777da
echonest_tempo/#420: py26, line wrap, ...
2013-10-16 21:53:46 -07:00
Adrian Sampson
52312ee877
Merge pull request #420 from pscn/echonest_tempo
...
Fixed song matching in echonest_tempo plugin
2013-10-16 21:42:23 -07:00
Peter Schnebel
8215e81cea
nicer debug output
2013-10-16 17:12:24 +02:00
Peter Schnebel
c5a9a66ad8
bugfixes for candidate detection
2013-10-16 16:46:41 +02:00
Peter Schnebel
78e75317a7
bugfixes for import
2013-10-16 16:31:26 +02:00
Peter Schnebel
f200cb0825
upload for the win
2013-10-16 16:08:00 +02:00
Peter Schnebel
6dd827964b
bugfix for opts
2013-10-16 13:48:04 +02:00
Peter Schnebel
66c01adca1
use duration as another hint to find good matches
2013-10-16 12:40:27 +02:00
Peter Schnebel
fd0d8820bb
Fixed detection of the correct song in EchoNest.
2013-10-16 12:19:25 +02:00
Peter Schnebel
abf2a17f42
bugfixes
2013-10-16 12:12:41 +02:00
Peter Schnebel
c7a269d1c5
fetch more results to increase the chance of finding the correct result
2013-10-16 11:53:48 +02:00
Peter Schnebel
2c2b7600c3
bugfix
2013-10-16 11:43:08 +02:00
Peter Schnebel
2a9def94b8
Merge branch 'master' into echoplus
2013-10-16 11:42:23 +02:00
Peter Schnebel
0ff15c5c4d
The way of the impatient is filled with useless commits :(
2013-10-16 11:35:26 +02:00
Peter Schnebel
fa10515799
Bugfix for Album.get_top_tracks workaround.
2013-10-16 11:31:18 +02:00
Peter Schnebel
7591957327
added experimental guess mood feature (see http://developer.echonest.com/forums/thread/1297 )
2013-10-16 11:28:02 +02:00
Peter Schnebel
846f4eb7ae
fix possible bug
2013-10-16 10:33:51 +02:00
Peter Schnebel
9b8ad7dcd1
Experimental EchoNest plugin to fetch and map attributes from EchoNests audio_summary.
2013-10-16 10:26:18 +02:00
Peter Schnebel
d339e2f815
Workaround for pylast issue https://code.google.com/p/pylast/issues/detail?id=85 as suggested by @sampsyo
2013-10-16 08:45:13 +02:00
Adrian Sampson
ed44982f75
ftintitle: skip on empty albumartist ( #418 )
2013-10-15 10:03:15 -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
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
54af040bc4
convert: extension is a bytestring ( fix #390 )
2013-10-06 12:13:14 -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
dfea8ea05e
convert: fix outdated reference, col wrap
2013-10-06 11:59:03 -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
b7e2ba7795
convert: log transcoding command
2013-10-06 11:28:29 -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
0d303ffde7
multi-format convert ( #362 ): simpler validation
...
This removes the explicit config validation check and collapses it into the
config read step (which is the intended convenience of Confit's API).
2013-10-06 10:56:42 -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
f35d7fec9c
multiple genres ( #397 ): simplify implementation
...
- don't use vestigial global object for config
- list comprehensions ftw
2013-10-06 10:29:47 -07:00
Adrian Sampson
41a6ccbac1
Merge pull request #397 from rashley60/master
...
Added ability to store comma delimited lists of genres using lastfm
2013-10-06 10:10:40 -07:00
Adrian Sampson
2e2e0b2919
get_album (and evalute_template) with non-DB items
...
Alternative fix for #403 .
2013-10-05 11:06:08 -07:00
Pedro Silva
89c0e2c8b7
Fix issue #403
...
hack around items needing library and id references since 238e743
2013-10-05 15:55:44 +02:00
Ross Ashley
7a7d009671
Removed pdb stuff and cleeaned up description.
2013-10-03 15:15:18 -04:00
Ross Ashley
8525983791
For the comma delimited lastgenre addition, the old way is default.
...
There is a new option called multiple_genres which defaults to False
but when set to True, the comma delimited list of genres is returned
by lastgenre.
So, if you want a comma delimited list, it is
lastgenre:
multiple_genres: True
2013-10-03 11:39:33 -04:00
Adrian Sampson
f42dabd1fa
merge
2013-09-29 18:37:06 -07:00
Adrian Sampson
f9cc86be08
fromfilename: use unicode filename
...
As pointed out in #395 , we need to decode the filename before doing our fancy
matches on it.
2013-09-29 18:35:43 -07:00
Ross Ashley
7c0d828a2e
Replaced unnecessary code with one line.
2013-09-27 10:08:09 -04:00
colin-scott
b6e7e0b817
Support singleton filenames.
...
Previously, track ids were assumed to be part of every filename. This
assumption does not hold for singleton tracks.
2013-09-26 12:26:15 -07:00
Ross Ashley
514fa6cf0c
Removed some unused and commented out code.
2013-09-26 15:18:58 -04:00
Ross Ashley
4291932298
Added ability to store comma delimited lists of genres using lastfm
...
and the local genre.txt file in the usual way.
Using this, a song might now have a genre of 'House, IDM, Dance',
instead of just 'House'.
2013-09-26 10:39:32 -04:00
Adrian Sampson
bb21ec692e
lastgenre: add album.save()
2013-09-25 08:45:18 -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
fcab014510
scrub: opus support
2013-09-21 19:27:04 -07:00
Adrian Sampson
9597d5e370
scrub: restore album art ( close #138 )
2013-09-21 19:25:31 -07:00
Adrian Sampson
f5252efbe8
ftintitle: restrict by query
...
Again, for symmetry with other metadata cleanup/extension commands.
2013-09-17 14:31:42 -07:00
Adrian Sampson
2e31a7c6bf
ftintitle: store modifications to the database
...
A run of `beet update` is now no longer required. This is in line with the
behavior of lyrics, lastgenre, echonest_tempo, replaygain, ...
2013-09-17 14:30:00 -07:00
Adrian Sampson
63803a9742
ftintitle: use beets' ui.print_ function
...
This avoids encoding troubles. This also uses displayable_path to deal with
Unicode pathnames.
2013-09-17 14:26:24 -07:00
Adrian Sampson
a495635f90
ftintitle: remove duplicated field variables
...
Several fields were kept around in variables even though they were unused.
They can be read from the Item object at any time.
2013-09-17 14:19:28 -07:00
Adrian Sampson
2a93438969
ftintitle: reorganization and refactoring
...
- expand docstrings
- collapse some small/duplicative helper functions
- simplify control flow
2013-09-17 14:11:17 -07:00
Adrian Sampson
dfc5edec40
ftintitle: docstrings, new top-level function
2013-09-17 12:52:38 -07:00
Adrian Sampson
4bb3a481e2
ftintitle: move helper functions to module scope
...
These do not need to be closures.
2013-09-17 12:44:27 -07:00
Adrian Sampson
bd598696f0
ftintitle: syntactic/comment style cleanup
...
- expunge remaining CamelCase identifiers
- start adding PEP8 space around operators
- start wrapping to 79 columns
- access track fields with attribute syntax
--HG--
extra : amend_source : 9c916013230dd3cde187f2a55e89587b009bce6a
2013-09-17 12:38:16 -07:00
Adrian Sampson
8212cca498
add ftInTitle plugin by @Verrus
...
This is a snapshot of the plugin at its git revision
abb6bb94db79e9260e2062404c986316f1dc925c.
2013-09-17 12:12:22 -07:00
Adrian Sampson
c5032f925e
move Destination method to Item class
2013-09-17 09:09:10 -07:00
Adrian Sampson
f82d466b77
eliminate lib argument to Item.evaluate_template
2013-09-17 08:44:26 -07:00
Adrian Sampson
22d5e564c6
move move method to model objects
2013-09-16 22:12:26 -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
9607b258a5
fromfilename: simplify
2013-09-13 21:14:10 -07:00
Adrian Sampson
b8f01f0cfa
fromfilename: preserve case, apply in more cases
2013-09-13 21:05:51 -07:00
Adrian Sampson
3f6eb4be24
fromfilename: switch to declarative style
...
No need for redundant handleXfields methods; we'll just inspect the fields
we're given.
2013-09-13 20:48:12 -07:00
Adrian Sampson
9e1e55e6a5
fromfilename: python style, naming, comments
2013-09-13 20:34:05 -07:00
Adrian Sampson
47999dc759
initial import of tags-from-filename plugin ( #113 )
...
This was contributed via email. Now I'll clean it up for inclusion.
2013-09-13 19:50:12 -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
Adrian Sampson
c57f2d0b78
merge
2013-09-13 18:58:30 -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
Rowan Lewis
d2327d2dcf
Fixed validation, basically replace unfriendly errors with friendly errors.
2013-09-14 07:27:15 +10:00
Rowan Lewis
d3dae9f089
Reject lossy formats under a set bitrate.
2013-09-13 08:13:30 +10:00
Rowan Lewis
53aba3ce3f
It's called Vorbis, not OGG.
2013-09-13 07:57:04 +10:00
Rowan Lewis
bfbf5a9215
Changed the configuration to allow for easier format selection.
2013-09-13 07:54:36 +10:00
Adrian Sampson
19958f75ff
embedart: fix error message when imagehdr fails
2013-09-12 10:45:02 -07:00
Rowan Lewis
697e70f14b
Problem with unicode filenames sorted.
2013-09-12 22:21:50 +10:00
Rowan Lewis
697cf3fd65
Removed reference to my testing plugin, oops.
2013-09-12 20:22:18 +10:00
Rowan Lewis
21c9855c4f
Allow the convert plugin to convert to any format, not just mp3.
2013-09-12 20:09:53 +10:00
Adrian Sampson
fa97684e7b
fix outdated _record reference in web plugin
2013-09-09 20:56:38 -07:00
Adrian Sampson
4ee4169349
simplify get_query using class attributes
2013-09-09 20:20:22 -07:00
Adrian Sampson
f70ddfbd1d
deduplicate albums() and items() methods
...
This also drops the keyword arguments to these methods, which were vestigial.
2013-09-08 23:18:58 -07:00
Adrian Sampson
d80576fec1
get rid of dictionary comprehensions
...
for Python 2.6 compatibility
2013-08-29 17:07:04 -07:00
Adrian Sampson
343a85d482
mbsync: use separate structure for old_data
...
Assigning an attribute on Items doesn't really work here since we try to store
that value to the DB as a flexattr.
2013-08-23 14:01:31 -07:00
Adrian Sampson
5e09c5e473
convert: fix iteration over results
2013-08-22 17:33:56 -07:00
Adrian Sampson
c7fe017752
remove Library.{move,store} methods
...
These methods are now provided by LibModel, which makes dealing with items and
albums symmetric.
2013-08-21 15:34:45 -07:00
Adrian Sampson
deef7f9d20
a few more necessary album.store()s
2013-08-21 11:23:09 -07:00
Adrian Sampson
6677cea036
fix uses of item.dirty and item.record
2013-08-21 10:57:52 -07:00
Adrian Sampson
ec10f8c223
remove count() calls
...
I removed this method in an earlier commit.
2013-08-20 14:28:28 -07:00
Adrian Sampson
276ce14dd2
flexattrs work for Albums
...
A second base class, LibModel, maintains a reference to the Library and should
take care of database-related tasks like load and store. This is the beginning
of the end of the terrible incongruity between Item and Album objects (only
the latter had a library reference). More refactoring to come.
One large side effect: Album objects no longer automatically store
modifications. You have to call album.store(). Several places in the code
assume otherwise; they need cleaning up.
ResultIterator is now polymorphic (it takes a type parameter, which must be a
subclass of LibModel).
2013-08-16 18:36:30 -07:00
Adrian Sampson
38f1e6aec2
new FlexModel base class
...
I intend to use this for both Item and Album to avoid code duplication and
simplify code that uses both entities.
2013-08-16 17:22:17 -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
f1c41428e6
changelog/thanks/tweaks for #355
...
- Remove requests import
- Name change
- Remove some obsolete checks
2013-08-08 16:19:16 -07:00
Filipe Fortes
7c607ebf82
Simplify fetching cover art from release group
2013-08-08 10:02:25 -03:00
Filipe Fortes
a4470ace69
FetchArt plugin: Support grabbing album art from MB release group
2013-08-07 19:21:45 -03:00
Simon Chopin
e30f8f8fb9
bpd: Use AnyFieldQuery when searching "any" fields
...
BPD hadn't been ported when AnySubstringQuery was removed, resulting in
crash, death and horror when using the search function.
2013-07-02 11:00:10 +02:00
Fabrice Laporte
995d75f3f3
Logging: remove match ratio, add source website name
2013-06-29 14:24:41 +02:00
Fabrice Laporte
9780be270c
Some tweaking to yield better results by not
...
rejecting valid lyrics.
2013-06-29 14:23:53 +02:00
Fabrice Laporte
c6f935ac4c
Don't consider text between parentheses when
...
matching url title with song title.
2013-06-29 14:21:55 +02: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
Uwe L. Korn
3fd78bd63d
[web] Add API method to get the total item count
2013-06-21 16:01:03 +02:00
Pedro Silva
13dc28b349
Fix zero length field error under Python 2.6
...
* missing.py (_missing): add field indexes to format spec
* duplicates.py (commands): add field indexes to format spec
2013-06-14 13:59:14 +01:00
Adrian Sampson
0262803a40
add data_source, data_url to TrackInfo objects
...
The Beatport plugin now uses this to provide singleton matches (and their
appropriate penalty).
2013-06-12 16:19:30 -07:00
Adrian Sampson
4555d69803
random: py26 fix
2013-06-12 16:09:41 -07:00
Fabrice L.
6c8f45c7f7
Update lyrics.py
2013-06-12 01:20:08 +03:00
Fabrice Laporte
a64d277bae
Merge branch 'master' of https://github.com/sampsyo/beets
2013-06-12 00:09:44 +02:00
Fabrice Laporte
b3747189e5
lyrics: google backend should turn up more results
...
bs4 scraping routine has been made more generic,
relying less on specific markup tags.
Better algorithm to detect which url titles match
song titles: domain names are now removed from url
titles.
Use regex to decimate \n in fetched lyrics.
2013-06-12 00:07:01 +02: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
f6faf72328
move Distance class to hooks module
2013-06-10 15:21:32 -07:00
Fabrice Laporte
7f62db7327
Merge branch 'master' of https://github.com/sampsyo/beets
2013-06-08 16:36:56 +02:00
Adrian Sampson
d1ebe423c9
changelog/thanks/style for #319
2013-06-07 20:53:53 -07:00
Timothy Appnel
847edcd6cc
Fix bug where a null value for lengthMS would crash an import. Added a fallback to parse the standard min:sec length field.
2013-06-07 23:43:21 -04:00
Tai Lee
42efd2a761
Change log for #316 and code style tweaks.
2013-06-08 00:32:40 +10:00
Wessie
0009c51577
Made formatting strings compatible with python 2.6
...
Also fixed styling according to pep8
2013-06-07 15:58:36 +02:00
Adrian Sampson
fa40fd9108
beatport: use new Distance objects ( #302 )
...
This also brought to light the fact that the distance calculations for tracks
was incorrect because there's no source field on TrackInfo objects yet. This
needs to be fixed.
2013-06-06 10:34:20 -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
Tai Lee
898254ed6a
Merge branch 'master' into distance-refactor
...
Conflicts:
docs/changelog.rst
2013-06-06 11:09:36 +10:00
John Hawthorn
1bf8ae0a01
mpdupdate: Allow UNIX domain socket for MPD server
...
If the host configuration begins with a '/', it is assumed to reference
a UNIX domain socket. This is similar to libmpdclient's behaviour.
2013-06-05 13:20:27 -07:00
Adrian Sampson
dfda5a311d
beatport ( #301 ): more Unicode literals
...
Avoids warnings in the unidecode module.
2013-06-03 14:06:51 -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
Johannes Baiter
edd0efcb87
Fix unicode bug in Beatport plugin
2013-06-03 17:22:29 +02:00
Fabrice Laporte
09e721efe6
rename "section" markup
2013-06-02 22:35:36 +02:00
Johannes Baiter
f2a924fb56
Bugfixes in Beatport plugin
2013-06-02 11:55:44 +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
9a6b6240d0
zero: fix nulling fields containing None
2013-06-01 17:28:59 -07:00
Adrian Sampson
4624f65ce3
fix interface to ID matching
...
As outlined in #299 , we broke many places in the code that were expecting
_album_for_id and _track_for_id to return a single item rather than a list. I
took this opportunity to divide up the interface: there's now one function for
MBIDs (returning a single object or None) and one for generic IDs (returning a
list).
2013-06-01 17:22:39 -07:00
Johannes Baiter
eb20d77c69
Implement BeetsPlugin API for Beatport plugin
2013-06-01 18:45:54 +02:00
Johannes Baiter
bbd50c65cd
Fix Beatport source weight
2013-06-01 15:50:59 +02:00
Johannes Baiter
af81b67c0c
Implement Beatport API wrapper
2013-06-01 15:23:18 +02:00
Johannes Baiter
1a8f54fd51
Lay out beatport plugin based on discogs plugin
2013-06-01 15:20:58 +02:00
Adrian Sampson
18bbe9f645
Merge pull request #298 from jayme-github/python26-resub
...
Fix Python 2.6 compatibility
2013-05-30 09:48:50 -07:00
Tai Lee
ee0c00708b
Quick fix for a couple other places that were expecting hooks._album_for_id()` to return a single result.
...
It's possible that these plugins might require a little more thought
into how they should work (or not work) with potentially multiple albums
matching an idea, and potentially those those albums being an incorrect
match (e.g. if two data source plugins share a simple numerical ID
format).
2013-05-31 00:05:24 +10:00
Jayme
5bb0881cdd
Replace two more flag arguments
2013-05-30 10:09:39 +02:00
Jayme
32e1c13510
Fix Python 2.6 compatibility
2013-05-30 09:30:00 +02:00
Adrian Sampson
303cd9ba00
Merge pull request #291 from jbaiter/discogs_albumid
...
Support for manually entered IDs in plugins
2013-05-29 14:43:59 -07:00
Johannes Baiter
3df635eca2
Make regex for Discogs ID more specific
2013-05-29 20:31:58 +02:00
Johannes Baiter
2d4ea4e49b
Fix bug in discogs.album_for_id for ID-Strings that end in a bracket
2013-05-29 10:59:04 +02:00
Johannes Baiter
40a6e03ba6
Improve regular expression for Discogs IDs
2013-05-29 10:54:15 +02: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
72449caccf
discogs: move config default into constructor
...
Such is the new convention for plugin configuratino defaults.
2013-05-28 21:45:31 -07:00
Adrian Sampson
480fa80e47
discogs: penalty only for matches from discogs
...
Otherwise, this was penalizing all album matches.
This also applies the same treatment as the previous commit: only load the
config at run time (at the expense of code clutter).
2013-05-28 21:25:28 -07:00
Johannes Baiter
f17e8550ca
Determine IDs from MusicBrainz and Discogs URLs
2013-05-28 13:49:34 +02:00
Johannes Baiter
e3418be75d
Add support for manually entered release ID in Discogs
2013-05-28 12:58:05 +02:00
Tai Lee
35e926a51b
Add Discogs and general source weight penalty (configurable, undocumented).
...
Discogs (and other individual plugins) should return a penalty between
0.0 and 0.1, which will be multiplied by the general source weight. This
allows individual plugins to be weighted against relative to each other,
and amplified together against other penalty categories (track, title,
etc.)
2013-05-27 01:28:40 +10:00
Tai Lee
a6b1bb1bbc
Move articles to the front of Discogs artist names.
2013-05-25 14:05:03 +10:00
Tai Lee
e3fa403ad2
Only execute pathfields expressions and functions if they are called with an Item argument. Otherwise, return an empty string.
2013-05-25 12:28:52 +10:00
Tai Lee
3f4e194c41
We only need to strip the disambiguation from artist names, not the join strings.
2013-05-25 12:19:48 +10:00
Adrian Sampson
72f0505744
discogs: extra space in ambiguous artists ( #289 )
2013-05-24 12:31:18 -07:00
Adrian Sampson
d877f5e3e8
Merge pull request #289 from Smyds/master
...
Remove discogs artist disambiguation number
2013-05-24 12:28:50 -07:00
César Prouté
726c84674b
remove discogs artist disambiguation number
2013-05-24 20:15:24 +01:00
Tai Lee
835a3c2a73
Improved parsing of Discogs' position field.
...
Some albums have a single disc with positions like I, II, III, IV, etc.
Previously beets thought each track on these albums was a new medium.
Now we assume that if there is no explicit medium index and the ordinal
of an alpha medium does not appear to be sequential (e.g. A, B, C) that
the medium is actually the medium index.
2013-05-25 01:36:12 +10:00
Tai Lee
4c06c96630
Extract disc titles from Discogs' "index tracks".
2013-05-25 01:32:06 +10:00
Tai Lee
7f068a8c03
Add AlbumInfo.data_url property, populate it for Discogs matches and display it when it is non-empty.
...
Makes it easier for people to find the best Discogs (or other) match
and import it to Music Brainz using a grease monkey or similar script.
2013-05-24 22:50:14 +10:00
Adrian Sampson
26682f9168
docs/changelog for convert paths config ( #285 )
2013-05-22 15:00:53 -07:00
Lucas Duailibe
1e0290354c
fix some debug code
2013-05-22 14:11:55 -03:00
Lucas Duailibe
76e310d811
different paths for convert
...
the paths configuration for converted files can be different from the importer
closes #232
2013-05-22 11:03:00 -03:00
Tai Lee
dde4bfab8c
Update signature for item_candidates() in chroma plugin.
2013-05-22 08:10:20 +10: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
6f2c1d81bd
random -e ( #263 ): fix some short responses
...
This slight modification to the selection algorithm avoids the situation in
which too many objects are chosen for a given artist and fewer than N objects
are eventually returned. We do this by implementing "selection without
replacement" literally: we choose objects one at a time and pop them from the
population when they are selected.
2013-05-19 11:00:52 -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
Georges Dubus
5dbff4a8eb
Fixed the randomness of the equal change to have more than one song by artist
2013-05-19 17:22:19 +02:00
Adrian Sampson
cee3b20630
duplicates: refactoring and empty-ID fix ( #278 )
...
The main change here, aside from documentation/naming updates, is that we skip
"duplicates" that arise from albums/tracks that are missing their MBIDs.
2013-05-17 12:35:35 -07:00
Adrian Sampson
cef245eb05
merge
2013-05-17 12:15:36 -07:00
Adrian Sampson
2f442b5677
Merge pull request #278 from pedros/duplicates
...
Duplicates plugin
2013-05-17 12:15:06 -07:00
Adrian Sampson
1898a79d4f
fix inline for album plugin fields ( #274 )
2013-05-17 12:13:01 -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
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
Adrian Sampson
a0ef886801
lyrics: substitute more punctuation ( fixes #270 )
2013-05-12 12:45:49 -07:00
Adrian Sampson
a5cb34360d
lyrics: fix encoding for Lyrics.com
2013-05-12 12:38:48 -07: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
b2d8f04f05
Modify "not part of beets" to "part of beets"
2013-05-10 16:50:34 +01:00
Pedro Silva
763cfa06b4
Don't check for item.paths == None as that can't happen
2013-05-10 16:43:17 +01:00
Pedro Silva
d32a3ef9b5
Implement logic for displaying missing track counts
2013-05-10 16:42:45 +01:00
Pedro Silva
69877f2013
Add 'count' and 'total' parameters
...
- count: count missing tracks per album
- total: count total missing tracks
2013-05-10 16:42:10 +01:00
Pedro Silva
bed7c5ae88
Add _missing_count function
2013-05-10 16:41:04 +01:00
Pedro Silva
abe12be4b2
Remove unneeded Library argument from _missing
2013-05-10 16:06:30 +01:00
Pedro Silva
18e2704ffb
Remove unnecessary _format function
2013-05-10 14:23:32 +01:00
Pedro Silva
6ae73bc921
Initial import of missing tracks plugin
...
This plugin adds a new command, ``missing`` or ``miss``, which finds
and lists, for every album in your collection, which tracks are
missing.
2013-05-10 14:13:53 +01: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
dd8d4c16cc
spell check
2013-04-29 10:23:21 -07:00
Adrian Sampson
374e043c3c
API/test enhancements for #257
...
Also, `cautious` defaults to False for backwards-compatibility.
2013-04-27 16:47:42 -07:00
Fabrice Laporte
2dc15a0e2b
Use re.search instead of re.match with simplified regex.
...
Add additional cover_names parameter to art_in_path, and makes 'cover_names' a plugin config option.
2013-04-27 12:21:57 +02:00
Fabrice Laporte
d9e213867c
fetchart (issue 459): use regex to detect valid image names + 'cautious' option for finer control of filename matching
2013-04-22 23:44:35 +02: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
Fabrice Laporte
0fb877a059
lastgenre: invert 'force' option default value.
2013-04-21 23:34:20 +02:00
Fabrice Laporte
6fdfabe4b7
Revert "lastgenre: force real lookup during import only if no custom whitelist set."
...
This reverts commit 4be30fca2e .
2013-04-21 10:35:08 +02:00
Fabrice Laporte
4be30fca2e
lastgenre: force real lookup during import only if no custom whitelist set.
2013-04-20 14:29:14 +02:00
Adrian Sampson
2a9afd3908
misc. style cleanup for #243
2013-04-15 10:52:17 -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
Uwe L. Korn
3b33705e3b
Compute Content-Length to make tracks seekable in most players via the web plugin
2013-04-10 14:21:47 +02:00
Fabrice Laporte
479b25bac3
Code style + fix doc typo
2013-04-08 18:35:02 +02:00
Fabrice Laporte
7b13edee40
lyrics: restore tags write and fix extract_text()
2013-04-06 18:24:30 +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
Uwe L. Korn
dcc1e1aa71
Add functions needed for ScriptCollection Support in Tomahawk
2013-04-01 17:50:51 +02:00
Fabrice Laporte
6405962beb
Merge branch 'master' of https://github.com/sampsyo/beets
2013-03-25 22:29:02 +01:00
Lucas Duailibe
51ed0939d6
fixing things
2013-03-25 15:20:38 -03:00
Lucas Duailibe
c682ac84b0
one more error message ( #125 )
2013-03-25 11:45:11 -03:00
Lucas Duailibe
56c53acbab
human-friendly error messages ( #125 )
2013-03-25 11:24:42 -03: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
Lucas Duailibe
7b2ff4ae9b
fix mbsync bug
...
This fixes a bug that only applied changes to the first item of an album
2013-03-17 02:50:32 -03:00
Fabrice Laporte
9c0fa57f34
Merge branch 'master' of https://github.com/sampsyo/beets
2013-03-16 09:16:21 +01:00
Adrian Sampson
3e1a181d3a
fix extra super call in fuzzy
...
This was dumb of me.
2013-03-14 18:43:44 -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
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
Adrian Sampson
7b7a4257ac
mbcollection: use library functions
...
Since we now require python-musicbrainz-ngs 0.3 or later, we no longer have to
hand-craft the API requests.
2013-03-11 19:43:57 -07:00
Adrian Sampson
aff3fb106d
chroma: fingerprint command's write from config
...
This turns on metadata-writing based on the import.write config option, so
those with this option turned off will be spared any surprises. (Affects #217
and #143.)
2013-03-11 19:19:48 -07:00
Lucas Duailibe
704259b459
fix typo
2013-03-11 19:26:33 -03:00
Lucas Duailibe
a6ae5c4a4f
cleaning up
2013-03-11 19:22:03 -03:00
Lucas Duailibe
3390fd339a
store fingerprints with the "fingerprint" command
2013-03-11 18:31:53 -03:00
Lucas Duailibe
8a64686ff3
store fingerprints
2013-03-11 17:56:13 -03:00
Philippe Mongeau
8b1511a8af
fix fuzzy config
2013-03-10 20:39:02 -04:00
Philippe Mongeau
ca8af62e9c
change queries() function to returns a dict
...
of {prefix: PluginQuery}
use the class __name__ as sqlite function name
make RegexpQuery use the AnyPluginQuery
2013-03-10 20:11:42 -04:00
Philippe Mongeau
2a42c75cba
fuzzy: use smartcase for the pattern
...
ignore case unless the pattern contains a capital letter
2013-03-10 19:07:29 -04:00
Philippe Mongeau
7d879289c1
fuzzy: add prefix config
2013-03-10 18:00:28 -04:00
Philippe Mongeau
09156b03f0
fuzzy: use threshold value from config
2013-03-10 17:37:03 -04:00
Philippe Mongeau
7314bc0524
make fuzzy use PluginQuery instead of a subcommand
2013-03-10 16:50:54 -04:00
Adrian Sampson
01a449ffa6
convert: auto ( #212 ) now transcodes to /tmp
...
This avoids naming conflicts in the source directory. In particular, when
encoding MP3 -> MP3, the previous scheme would overwrite the original file
(and hang ffmpeg waiting for input). This should also work in
situations where the source directory is read-only.
2013-03-10 13:22:05 -07:00
Adrian Sampson
8736a0bb4c
convert auto: changelog and de-cloning ( #212 )
2013-03-10 13:12:56 -07:00
Adrian Sampson
47a549a31c
Merge pull request #212 from duailibe/auto_convert
...
Transcode files during import
2013-03-10 12:57:36 -07:00
Lucas Duailibe
c2c96d522f
config name and docs update
2013-03-09 23:33:45 -03:00
Lucas Duailibe
a3d8105a5a
small fix
2013-03-09 20:04:26 -03:00
Lucas Duailibe
27b1d6d7cc
clean up old files and remove pdb
2013-03-09 19:36:34 -03:00
Lucas Duailibe
e49ca34f3c
partial commit
2013-03-09 19:09:43 -03:00
Adrian Sampson
7d9fd0a2cf
convert: fix unicode error in path construction
...
I introduced a regression a few commits ago when I started using
lib.destination with the basedir keyword argument as opposed to doing
os.path.join manually.
2013-03-09 11:37:10 -08:00
Adrian Sampson
218f10a62d
echonest_tempo: catch socket.error
2013-03-09 11:33:55 -08:00
imenem
12476ca22e
Added Discogs search plugin.
2013-03-07 17:59:52 +02:00
Adrian Sampson
69f2659410
convert: read new audio metadata ( #208 )
2013-03-06 23:11:08 -08:00
Adrian Sampson
87d71abc28
changelog/cleanup/fixes for #209
...
The major functional change here is how files move around when in keep_new
mode. Now, files are first moved to the destination directory and then
copied/transcoded back into the library.
This avoids problems where naming conflicts could occur when transcoding from
MP3 to MP3 (and thus not changing the filename).
2013-03-06 18:21:42 -08:00
Lucas Duailibe
a338b95bb7
Changing behavior in "keep new files"
2013-03-06 22:04:05 -03:00
Lucas Duailibe
28522376be
Adding "keep new files" option to convert plugin
2013-03-06 21:41:40 -03:00
Fabrice Laporte
72a06e96d0
Merge branch 'master' of https://github.com/sampsyo/beets
2013-03-04 08:38:09 +01:00
Adrian Sampson
1a7ec6dc79
mbsync: fix redundant album art movement
...
Since we explicitly move album art later in the process, implicitly moving it
with items can cause a double-move (and thus a "file not found" error).
2013-03-03 17:46:16 -08:00
Adrian Sampson
18688008a4
mbsync: avoid spurious stores/moves
...
As _print_and_apply_changes itself does for items, we now shortcut
modifications (metadata and filesystem) for albums when no changes are
required for a given album. This avoids effectively doing a "beet move" on an
album even when nothing has changed.
2013-03-03 17:19:05 -08:00
Adrian Sampson
5f68d03793
mbsync: don't write tags if import.write is off
...
This will avoid surprising users with import.write turned off.
2013-03-03 17:13:54 -08:00
Adrian Sampson
72263a1cf7
mbsync: use ID lookups instead of full match logic
...
This change uses _album_for_id and _track_for_id instead of the full
autotag.match.* functions. This should be faster (requiring fewer calls to the
MusicBrainz API) while also being more predictable. It also won't, for
example, use acoustic fingerprinting even if the chroma plugin is installed.
Finally, this change catches the error case in which MBIDs are erroneous. This
can happen, for example, if the user has some track MBIDs left over from
before the NGS transition.
2013-03-03 17:08:07 -08:00
Adrian Sampson
a8d999a101
mbsync: split album/item functions; shorter txns
...
The main change here is to use shorter transactions -- one per matching entity
-- rather than one large one. This avoids very long transactions when the
network happens to move slowly.
2013-03-03 16:52:14 -08:00
Adrian Sampson
54e070d06b
mbsync: use SingletonQuery for item updates
2013-03-03 16:29:31 -08:00
Jakob Schnitzer
d647ea0f0d
mbsync: a little refactoring
2013-03-03 23:39:14 +01:00
Jakob Schnitzer
3a9c9d53da
mbsync: add support for singletons
...
I can't really guarantee this works right now since I have no singletons
in my collection to test it
2013-03-03 23:39:13 +01:00
Jakob Schnitzer
cd7305d487
mbsync: write metadata to files...
2013-03-03 23:39:13 +01:00
Jakob Schnitzer
2fd3ad5362
initial version of the mbsync plugin
...
this plugin provides a faster way to query new metadata from
musicbrainz. (instead of having to 're-import' the files)
Currently it lacks all forms of documentation and will only work for
album queries. not really tested so far so be careful
2013-03-03 23:39:13 +01:00
Jakob Schnitzer
ef22ea5183
convert: add missing util.displayable_path
2013-03-01 16:16:28 +01:00
Fabrice Laporte
91255c5ae1
Merge branch 'master' of https://github.com/sampsyo/beets
2013-03-01 08:25:39 +01:00
Adrian Sampson
1fbbe61546
mbcollection: human-readable MB exceptions
...
Fixes #107 by wrapping the API invocation function with exception handlers.
2013-02-28 10:43:02 -08:00
Adrian Sampson
c31eabe95c
convert: add missing syspath call ( closes #106 )
2013-02-27 10:30:24 -08:00
Adrian Sampson
a1e89b879d
echonest_tempo: warn on API error
2013-02-18 18:40:59 -08:00
Adrian Sampson
63564d84e7
echonest_tempo: sanitize newlines from input
...
The Echo Nest API confusingly says that the input is missing if it contains a
newline.
2013-02-18 18:34:31 -08:00
Dang Mai
3be24110d7
Sanitize template evaluation for smartplaylist
2013-02-11 21:37:14 -05:00
Adrian Sampson
d1e50da71f
fetchart: remote_priority config option
2013-02-10 21:40:55 -08:00
Fabrice Laporte
6b2e409007
Merge branch 'master' of https://github.com/sampsyo/beets
2013-02-09 17:46:06 +01:00
Adrian Sampson
f7f2454134
docs & style for #92
...
We already have a nice plurality() function in beets.util to calculate the most
popular value of something, so I reused that.
2013-02-06 10:55:48 -08:00
Peter Schnebel
7193f4e863
Do not write track-level genres if source is not 'track'.
2013-02-06 08:41:20 +01:00
Peter Schnebel
9f1e9031b6
Try to guess 'Various Artists' genre based on track genres if source is 'track'.
2013-02-06 08:15:29 +01:00
Peter Schnebel
d667fca02e
Do not write track-level genres if source is not 'track'.
...
For 'Various Artist' compilations without a usefull 'album' genre, pick the most used track / track-artist genre.
2013-02-06 08:04:58 +01:00
Adrian Sampson
976bc20900
collapse separate album and item paths ( #92 )
...
Should reduce copypasta overhead significantly.
2013-02-05 12:16:53 -08:00
Adrian Sampson
3860a5ac27
lastgenre: "auto" config option
2013-02-05 12:02:51 -08:00
Adrian Sampson
e50e28dc38
canonicalize original genre ( #92 )
2013-02-05 11:58:24 -08:00
Adrian Sampson
d1e752fdeb
simplify configuration handling ( #92 )
2013-02-05 11:51:32 -08:00
Adrian Sampson
f38bed787e
remove verbose option ( #92 )
...
The lastgenre command should always log what it's doing so the user can see
the progress being made. If you really don't want any output, just pipe to
/dev/null.
2013-02-05 11:40:04 -08:00
Adrian Sampson
1fe36057b0
Python style and legibility cleanup for #92
2013-02-05 11:34:17 -08:00
Adrian Sampson
cd2d4c9b8a
Merge pull request #92 from pscn/master
...
lastgenre improvements
2013-02-05 10:31:46 -08:00
Adrian Sampson
5be50fbb38
echonest_tempo: skip when missing artist or title
2013-02-05 10:28:24 -08:00
root
f83e9fb8bb
qbugfix
2013-02-05 08:13:36 +01:00
Peter Schnebel
30dff5afff
cleaned up, removed debug
2013-02-04 21:47:35 +01:00
Peter Schnebel
4df9521007
experimental track / album / artist based genre stuff per item
2013-02-04 20:24:22 +01:00
Adrian Sampson
99ed9e03de
rename ImportTask.path to paths ( #89 )
2013-02-03 11:22:27 -08:00
Tai Lee
23cd5453d9
Improved multi-disc album detection.
...
- Remove "part", "volume", "vol." multi-disc markers. These are often
part of album titles, and not necessarily indicative of a multi-disc
album. Only look for "CD X" and "disc X" (case insensitive), ignoring
white space and other non-word characters.
- Don't only expect each disc to be in a subdirectory of a common parent
directory, with all siblings belonging to the same release. Also match
any consecutive siblings (even when the parent contains other albums)
that are named with the same prefix and multi-disc marker.
- The `albums_in_dir(path)` function now always yields a list of paths
along with each list of items. `ItemTask.path` is now always a list of
paths.
- The `displayable_path(path)` function now accepts a list of paths, and
will join them with "; " by default. This can be changed with the
`separator` argument.
- The `sorted_walk()` function now does a case insensitive sort on
directories, but still returns case sensitive results. This allows
better multi-disc album detection.
- The `art_for_album()` function now takes a list of paths as its second
argument, instead of a single path.
2013-02-03 23:51:31 +11:00
Adrian Sampson
0be319767f
fixes and refactoring for lastgenre.source ( #88 )
...
This provides a default for source, preventing a crash when not present in the
user's config.
It also refactors the source decision to a helper function, _lastfm_obj, to
avoid copypasta.
2013-02-02 12:52:43 -08:00
Adrian Sampson
a21e3ca344
Merge pull request #88 from pdf/lastgenre_source_selection
...
Allow selection of source for genre information (ie - artist vs album)
2013-02-02 12:44:02 -08:00
Adrian Sampson
89689899c9
changelog note and indentation fix for #86
2013-02-02 12:27:42 -08:00
Adrian Sampson
52dc2f6b0b
Merge pull request #86 from steinitzu/master
...
AlbumArtist tag browsing in bpd
2013-02-02 12:25:01 -08:00
Adrian Sampson
887d1c1287
fix inline and rewrite for instance fields
...
I'm transitioning to using exclusively instance-level fields instead of
class-level fields in plugin objects, but I neglected to bring inline and
rewrite into the future. This manifested as silent inaction on the part of
these plugins.
This change restores the old behavior (for compatibility) but also updates the
plugins to use the new behavior.
2013-02-02 08:35:54 -08:00
Adrian Sampson
f59ff7e89e
importfeeds: use bytestring paths
2013-02-02 08:22:51 -08:00
Fabrice Laporte
8eabbf64cc
Merge branch 'lyrics'
2013-02-02 10:48:58 +01:00
Fabrice Laporte
bc82e04077
importfeeds: fix UnicodeDecodeError when creating symlinks
2013-02-02 10:31:36 +01:00
Fabrice Laporte
cf73d7cb08
replace \r by \n
2013-02-02 09:38:49 +01:00
Peter Fern
ef5dfa3fcf
Allow selection of source for genre information (ie - artist vs album)
...
If config is set to:
lastgenre:
source: artist
The genre will be fetched for the artist, rather than the album. This
allows for filesystem org like:
genre/artist/album
Currently defaults to previous behaviour for anything other than
`artist`
2013-02-02 14:31:45 +11:00
steini
476adf40af
Support for AlbumArtist and AlbumArtistSort tag listings.
2013-02-01 02:35:19 +00:00
Dang Mai
d4004f10fa
Update comments to reflect config migration
2013-01-31 18:17:00 -05:00
Dang Mai
ef8ef4c747
Update MPD whenever database changes
2013-01-31 18:16:21 -05:00
Dang Mai
7de2727572
Fix smartplaylist to use lib param from cli_exit
2013-01-31 18:09:17 -05:00
Adrian Sampson
e6ea6dc875
zero: remove redundant list of dict's keys
2013-01-31 12:15:18 -08:00
Adrian Sampson
58d9a775cc
remove singleton enforcement from plugins
...
The plugin system itself now enforces single instances.
2013-01-31 12:13:19 -08:00
Adrian Sampson
bba0051ee7
changelog & doc tweaks for smartplaylist ( #80 )
2013-01-31 10:07:18 -08:00
Dang Mai
397ad441a8
Remove debugging statement
...
Silly me for forgetting to check the pdb statement I just put in ...
2013-01-30 21:28:54 -05:00
Dang Mai
f5838692d7
Add default for playlist_dir
2013-01-30 21:27:00 -05:00
Dang Mai
6bc0202354
Add ability to use tag in m3u names
2013-01-30 12:45:56 -05:00
Dang Mai
895ee7de3f
Fix playlist_dir not resolving relative path
2013-01-30 09:50:27 -05:00
Dang Mai
5a7d7e1bb5
Change command to splupdate
2013-01-30 09:28:50 -05:00
Dang Mai
d134e9c461
Add comments
2013-01-30 08:42:29 -05:00
Dang Mai
480d51443c
Add print statements
2013-01-30 08:31:39 -05:00
Dang Mai
70240bf4b1
Fix optional relative_to
2013-01-30 08:25:18 -05:00
Dang Mai
4312fd3914
Working smart playlist plugin
2013-01-30 08:12:22 -05:00
Adrian Sampson
d0aaa511a3
minor style cleanup for #75
2013-01-29 21:30:57 -08:00
Dave Hayes
2f06a508bd
Implements support for WMA/ASF
...
* Adds support for importing/managing .wma and .asf files
* Adds support for all available ASF tag equivalents
* Adds two utility methods for (un)packing embedded ASF pictures
* Modifies scrub plugin to work around the lack of a delete method on
ASFTags object.
2013-01-28 14:05:34 -06:00
Adrian Sampson
6898d95b9e
allow convert to be used without embedart enabled
2013-01-23 15:56:49 -08:00
Adrian Sampson
0969749e5b
cleanup, docs, and changelog for relative_to ( #74 )
2013-01-22 21:02:41 -08:00
Adrian Sampson
b4da79b2e9
Merge pull request #74 from phmongeau/relative_feeds
...
relative importfeeds m3u path
2013-01-22 20:46:42 -08:00
Philippe Mongeau
ddbae951c0
importfeeds: add relative_to config
2013-01-22 22:54:13 -05:00
Philippe Mongeau
053e146b0c
fix the expanduser of the importfeeds dir configuration
2013-01-22 22:45:07 -05:00
John Hawthorn
f2b74d2019
fix RewritePlugin initialization
...
Error was introduced in 6d68a48
2013-01-21 12:42:55 -08:00
Adrian Sampson
7779a5c6f5
replaygain: catch Unicode exc on Windows (GC-499)
...
(grafted from 89cee0e842b4e553790b0db7daaf2fd31d217e15)
--HG--
extra : source : 89cee0e842b4e553790b0db7daaf2fd31d217e15
2013-01-12 14:38:19 -08:00
Adrian Sampson
d6c7cfa4e3
lyrics: replace apostrophes with ' (GC-498)
2013-01-11 10:51:22 -08:00
Adrian Sampson
7a410f636b
happy new year ✨
...
For future reference, this command did the trick:
ack -l 'Copyright 201' | xargs perl -pi -E 's/Copyright 201./Copyright 2013/'
2013-01-11 10:43:41 -08:00
Adrian Sampson
f7bef39769
GH-72: use function bodies instead of special var
2013-01-05 17:48:00 -08:00
Adrian Sampson
14b5170aec
GH-72: some cleanup and changelog note
2013-01-05 17:20:39 -08:00
Florent Thoumie
da0642a026
inline: Add support for code blocks.
...
This should be backwards compatible. In case the the path field
isn't a statement, beets will assume it's a block of code that
stores the value in a special '_' variable.
2013-01-05 23:00:10 +00:00
Adrian Sampson
f127d8e18a
merge scrub fix from master
2012-12-31 18:25:51 -08:00
Adrian Sampson
287d00179a
scrub: fix Py27-style format string (GC-484)
2012-12-31 18:11:31 -08:00
Adrian Sampson
cf3860257f
inline: fix defaults (dict, not list)
2012-12-31 15:54:26 -08:00
Adrian Sampson
5d210f755c
merge fix from master
2012-12-29 13:07:09 -08:00
Adrian Sampson
082932069f
echonest_tempo: catch IO errors (GC-482)
2012-12-26 17:16:59 -08:00
Adrian Sampson
51e9c519d4
plugin renames: fuzzy and random
...
Renamed fuzzy_search to fuzzy and rdm to random. These names should be easier
to remember since they are the same as the commands they provide.
--HG--
rename : beetsplug/fuzzy_search.py => beetsplug/fuzzy.py
rename : beetsplug/rdm.py => beetsplug/random.py
rename : docs/plugins/fuzzy_search.rst => docs/plugins/fuzzy.rst
rename : docs/plugins/rdm.rst => docs/plugins/random.rst
2012-12-23 14:46:20 -08:00
Adrian Sampson
6b000983c3
merge echonest_tempo fix from master
2012-12-23 14:34:08 -08:00
Adrian Sampson
1809de1500
GH-71: changelog note & retry limit
2012-12-21 23:10:30 -08:00
Zach Denton
e332940247
Wait when Echo Nest API rate limit is exceeded.
2012-12-22 06:31:23 +01:00
Adrian Sampson
a23b685747
use Confit's as_str_seq() instead of get(list)
...
This validator lets the user write either a real list, like [a, b, c], or just
a whitespace-separated string, like a b c. This is a little nicer for some
settings like "plugins" where the brackets and commas just look like line
noise.
2012-12-20 17:03:51 -08:00
Adrian Sampson
fbcd1d1c18
merge fixes from master
2012-12-19 12:22:23 -08:00
Adrian Sampson
6d68a4855e
per-plugin configuration defaults in __init__()
...
This uses the new BeetsPlugin.config convenience view heavily. Things are
slowly getting less verbose.
2012-12-18 22:35:44 -08:00
Adrian Sampson
4a5594bec6
begin adding convenient plugin defaults
...
We need plugins to set their config values at run time instead of module import
time. That is, defaults should be put in the __init__ method. This is easy
enough, but to make it even more convenient, I added a BeetsPlugin.config
field, which is a Confit view into a subsection of the configuration named
after the plugin.
2012-12-18 20:42:42 -08:00
Adrian Sampson
55cac36d35
sync with latest confit
...
This includes Confit's shift to using OrderedDict, which needs some debugging.
2012-12-18 20:03:52 -08:00
Adrian Sampson
0c49db0f11
fetchart: fix exception when source returns None
2012-12-17 23:22:45 -08:00
Adrian Sampson
3a0ac96cc5
zero: Unicode logging calls
2012-12-17 15:08:48 -08:00
Adrian Sampson
582851a6fe
merge fix from master
2012-12-14 12:57:40 -08:00
Adrian Sampson
4222b37bc2
convert: fix processing singletons w/ "embed" on
2012-12-14 12:38:46 -08:00
Adrian Sampson
3ef9e006f4
finish confit-ifying all the plugins
2012-12-13 17:14:19 -08:00
Adrian Sampson
6c94358b13
begin Confit-ifying plugins in alphabetical order
2012-12-13 12:31:10 -08:00
Adrian Sampson
e17cd6beba
merge lots of work on the stable branch
2012-12-12 19:14:30 -08:00
Adrian Sampson
2d4b91fa6d
replaygain: handle RG tool invocation errors (GC-469)
2012-12-11 13:09:10 -08:00
Adrian Sampson
531025f799
replaygain: restrict file formats (GC-469)
2012-12-11 13:06:57 -08:00
Adrian Sampson
3e9135ee7c
syspath-ify call to pyacoustid (GC-464)
2012-12-07 14:49:11 -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
Adrian Sampson
ad9021b9d9
replaygain: normalize peaks to 2^15 ( closes #65 )
2012-11-09 16:25:19 -08:00
Adrian Sampson
729a89cff3
lyrics: possibly address a Unicode error
2012-11-09 00:01:36 -08:00
Adrian Sampson
ffe5d37d78
log unicode string literals (GC-456)
2012-11-06 14:22:36 -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
a8383b03e9
merge with master
2012-11-01 14:28:25 -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
45650a4b64
artresizer: fix argument lists to helper functions
...
Also added some useful debug logs.
2012-11-01 12:15:51 -07:00
Adrian Sampson
f4fa11f8ca
don't use subprocess.check_output
...
This function was added in Python 2.7 and we're currently targetting 2.6 as a
minimum version. Replaced with a function in util.
2012-11-01 11:59:02 -07:00
Adrian Sampson
07d3f3e066
lazily initialize ArtResizer singleton ( #64 )
...
Searching for `convert` or PIL has non-negligible performance overhead, so it's
preferable to only do it when really necessary. This way, the search is only
performed when ArtResizer.shared is accessed for the first time.
2012-11-01 11:40:53 -07:00
Adrian Sampson
f7677a4b56
fetchart: fix command & use maxwidth ( #64 )
...
An earlier commit broke the call to art_for_album here (too few arguments).
I've also now propagated the maxwidth setting for the command to match the
import hook.
2012-11-01 00:19:15 -07:00
Adrian Sampson
e3fe9712d5
fetchart fixes for image resizing ( #64 )
...
Fixed a number of issues with the changes to fetchart:
- Remove redundant fetches. This was making the Amazon source download every
image twice even when art resizing was not enabled!
- Restore local_only switch in plugin hook, which got lost in the shuffle at
some point.
- Don't replace the original image file in-place; use a temporary file instead.
This would clobber the original source image on the filesystem with the
downscaled version!
2012-11-01 00:09:35 -07:00
Adrian Sampson
3873c29448
artresizer ( #64 ): helper functions, not classes
...
The previous method was to change self.__class__ dynamically to make __init__
instantiate different classes. This new way, which uses bare functions instead
of separate functor-like classes, instead just forwards the resize() call to
a module-global implementation based on self.method.
Additionally, the semantics of ArtResizer have changed. Clients now *always*
call resize() and proxy_url(), regardless of method. The method makes *one* of
these a no-op. This way, clients need not manually inspect which method is
being used.
2012-10-31 23:33:59 -07:00
Fabrice Laporte
447454a62c
fix few errors revealed by test_art.py
2012-10-28 23:02:45 +01:00
Fabrice Laporte
d271735dd2
fetchart: fix urlopen call
2012-10-28 17:09:39 +01: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
7158c01ff8
clean up outdated FIXMEs
2012-10-27 18:47:04 -07:00
Adrian Sampson
57e66d7b1a
fetchart: sort image filenames (GC-452)
2012-10-25 18:02:22 -07:00
Jakob Schnitzer
cf98bfcbe6
convert: write tags from library to copied files
2012-10-25 01:05:06 +02:00
Adrian Sampson
02fd9bf809
convert: embed into destination file, not source file
...
Paging @yagebu: I think the old version of the code would embed album art into
the wrong file. Please correct me (and accept my apologies) if I'm wrong
though.
2012-10-24 15:17:00 -07:00
Adrian Sampson
dcb9ad7373
fix several non-unicode logging statements
...
A user reported a problem with one of the logging statements where .format()
tried to convert a Unicode string to bytes because the log message was '', not
u''. As a rule, we should ensure that all logging statements use Unicode
literals.
2012-10-24 15:14:33 -07:00
Philippe Mongeau
78f2003eb0
simplify the random print code
...
We don't need the 'if opts.album' since we print with the same function and
argsuments.
2012-10-21 11:39:23 -04:00
Philippe Mongeau
e80dce6930
fuzzy: use the new print_obj function
2012-10-21 11:29:21 -04:00
Jakob Schnitzer
54f29812cf
convert: fix breakage due to recent API changes
2012-10-21 13:35:41 +02: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
9368075756
replaygain: reinstate albumgain config option
2012-10-20 16:49:52 -07:00
Adrian Sampson
848b56e54c
replaygain: remove album noclip gain adjustment
...
as suggested by @kraYmer
2012-10-20 16:41:31 -07:00
Jakob Schnitzer
492f168124
convert: Fix problem with "threads" config option
2012-10-20 13:25:25 +02:00
Adrian Sampson
2c38c15fb8
replaygain: apply album gain in album mode
2012-10-18 11:33:13 -07:00
Jakob Schnitzer
58ba4b3d75
convert: fix album art embedding
2012-10-18 18:35:25 +02: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
1a261db918
replaygain: style and light refactoring
2012-10-17 21:47:17 -07:00
Adrian Sampson
95910a366b
replaygain: run in import stage
...
This is the "new way" to post-process files on import (superseding the imported
events).
2012-10-17 21:43:27 -07:00
Adrian Sampson
3a4e1ca4f7
replaygain: add fields to Item
...
This has been a long time coming, but we now finally keep track of ReplayGain
values in the database. This is an intermediate step toward a refactoring of the
RG plugin; at the moment, these values are not actually saved!
2012-10-17 20:28:24 -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
3d68cf5deb
replaygain: fix album nopeak adjustment
...
Removed the second tool invocation. We now adjust the album-level gain based on
track peaks in one fell swoop. Based on help from Fabrice via email.
2012-10-17 20:06:10 -07:00
Adrian Sampson
ce190fbe3b
merge
2012-10-17 19:47:31 -07:00
Jakob Schnitzer
26dfe38bb0
convert: Write tags from library instead of copying them
2012-10-17 21:12:31 +02:00
Adrian Sampson
cc8ead7e34
convert: atomic mkdirall() call
2012-10-15 19:53:17 -07:00
Adrian Sampson
6115fba765
replaygain: calculate when any file needs calculation
...
This ensures accurate album-level data. It also fixes a problem with the old way
of doing things where the MediaFiles and tool results would become misaligned if
a subset of the tracks needed recalculation.
2012-10-15 14:54:06 -07:00
Adrian Sampson
672ac78e76
replaygain: write album-level tags
2012-10-15 14:42:28 -07:00
Adrian Sampson
9afaed534c
refactor output parsing code to use a dictionary
2012-10-15 14:31:31 -07:00
Adrian Sampson
8de8777b7e
replaygain: use log messages instead of prints
2012-10-15 12:19:14 -07:00
Adrian Sampson
4adc896a86
replaygain: consolidate command invocation code
...
Invocations of the mp3gain/aacgain commands are now wrapped in a centralized
function that takes care of output capture and error handling. This avoids code
duplication for the various sites at which the tool needs to be invoked.
This change also avoids unintentionally modifying tags via the command-line
tool. The "-s s" option makes the tool *just* calculate RG values rather than
toying with tags at all.
2012-10-15 12:14:35 -07:00
Adrian Sampson
df6c244381
replaygain: fix some spacing and error messages
2012-10-15 09:57:44 -07:00
Jakob Schnitzer
4ebc5237d0
replaygain: Fix TypeError if command option is not set
2012-10-15 16:23:03 +02:00
Adrian Sampson
f2ab26d6a4
mbcollection: change chunk size to 200 releases
2012-10-14 20:35:03 -07:00
Adrian Sampson
b1b4b39db7
merge
2012-10-14 14:16:52 -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
Fabrice Laporte
375137bc57
replaygain: fix aacgain waiting for user input by using -c switch to ignore clipping warnings
2012-10-13 11:35:24 +02: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
fcf5ec0b68
convert: low-level tweaks
...
Mainly adding some careful handling of paths (pass through displayable_path
before logging, etc.).
2012-10-12 22:19:27 -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
4ee39ed9da
Forgot to actually call the function
2012-10-12 08:25:28 -04:00
Andrew G. Dunn
365fa4347e
Added processor/thread detection, by default will now use maximum available processor count instead of 2. Idea adapted from soundconverter, credits in function.
2012-10-12 07:48:52 -04:00
Fabrice Laporte
ca6fd2ccf5
rgain: unclutter stdout
2012-10-12 08:54:35 +02:00
Fabrice Laporte
17842b8d0d
rgain: fix computation on singleton import
2012-10-12 08:53:14 +02: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
115c0e7410
coonvert: make sure temporary are deleted if encoding is interrupted
2012-10-10 10:15:51 +02:00
Jakob Schnitzer
8f9b4f0362
convert: remove bloat that's not needed after the fix to pipeline
2012-10-09 23:11:05 +02:00
Adrian Sampson
1662f34528
"plugin is not configured" logged as debug message
...
@tezoulbr: I'm changing these to debug messages partially so they don't print
out when running the tests (with nose, for example) but also because it could
get a little annoying for someone who *intends* to use the defaults for one of
these plugins. Let me know if you disagree.
2012-10-09 10:47:19 -07:00
Jakob Schnitzer
a2ff20979f
convert: Changed threading model to use beets.util.pipeline, fix embed
2012-10-09 14:05:54 +02:00
Jakob Schnitzer
b05fc8ef4f
Merge branch 'convert'
2012-10-08 12:49:04 +02:00
Jakob Schnitzer
aa3a66daad
Add option to disable embedding
2012-10-08 11:26:33 +02:00
Jakob Schnitzer
d1ab9267d0
Added lots of options, support MP3 as source
2012-10-07 22:19:15 +02:00
Matteo Mecucci
eebfaafe70
Small optimization in the fuzzy search plugin.
2012-10-07 22:02:43 +02:00
Jakob Schnitzer
3d580fc933
Added threads, cleaned up some of the code
2012-10-05 23:04:50 +02:00
Jakob Schnitzer
bbf974e581
First version of convert plugin
2012-10-05 20:56:59 +02: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
Blemjhoo Tezoulbr
a4033faf3b
zero plugin: ver 0.10 - code cleanup
2012-10-05 00:47:46 +03:00
Jakob Schnitzer
ba140a3f97
Added command to the lastgenre plugin
2012-10-04 10:56:31 +02:00
Adrian Sampson
2793af7d70
zero, the: Python 2.6-compatible format strings
2012-09-25 15:13: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
aff36fa694
zero plugin, version 0.9
2012-09-22 15:50:33 +03:00
Philippe Mongeau
1e48317e51
fuzzy_search: simplifiy some nested code
2012-09-21 19:57:47 -04:00
Adrian Sampson
0d3064bae8
Merge pull request #48 from phmongeau/fuzzy
...
Fuzzy Search plugin
2012-09-18 10:26:16 -07:00
Philippe Mongeau
dfca295e31
pep8ify fuzzy_search
2012-09-17 22:40:38 -04:00
Philippe Mongeau
ca237ce3e7
make fuzzy_search case insensitive and add a threshold option
...
renamed fuzzy_list.py to fuzzy_search.py
2012-09-17 22:12:14 -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
Blemjhoo Tezoulbr
16aa842ccf
plugin the: version 1.0
2012-09-16 04:42:39 +03:00
Fabrice Laporte
49a6b993d3
lastgenre: add existing genre to the list of suggested tags to canonicalize
2012-09-15 12:00:33 +02:00
Adrian Sampson
749b19955e
bpd: use pygst.require() before importing gst
...
A user reports that this fixes BPD on OS X.
2012-09-12 17:57:37 -07:00
Adrian Sampson
a9fc483a36
importfeed: fix "link" mode w/ unicode paths
2012-09-11 17:32:43 -07:00
Zach Denton
6c6ae5a7c0
Send correct filename when downloading a file.
2012-08-26 15:19:03 -04: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
420c78ff1b
lyrics: fix UnicodeDecodeError with non-ASCII text
2012-08-19 13:42:43 -07:00
Adrian Sampson
701d8cf204
fetchart: fix extension-less files from CAA
2012-08-02 09:46:57 -07:00
Adrian Sampson
174824c570
lyrics: suppress not-found message
...
(in Lyrics.com results)
2012-07-24 15:33:44 -07:00
Adrian Sampson
ca1581996d
fix early call to imported_items in chroma
2012-07-24 14:56:14 -07:00
Adrian Sampson
26fa3bcac6
remove outdated call in BPD
2012-07-24 14:26:47 -07:00
kraymer
e9104b6775
plugin importfeeds: fix symlink creation when it already exists
2012-07-21 13:27:15 +02:00
Adrian Sampson
ec849a3f88
chroma & lyrics: crash due to name change
...
I changed ImportTask.all_items to ImportTask.imported_items but forgot to change
the calls in the chroma and lyrics plugins.
2012-07-03 17:18:23 -07:00
Philippe Mongeau
5a2719711e
Rename Fuzzy plugin class name. remove useless
...
conversion of an iterator to a list
the plugin class was called Random (because of copy
paste)
2012-06-25 20:54:11 -04:00
Philippe Mongeau
7187d93303
implement album option for the fuzzy plugin
2012-06-25 20:54:11 -04:00
Philippe Mongeau
288902a572
add experimental fuzzy matching plugin
...
fuzzy is a command which tries to be like the list command but using
fuzzy matching.
2012-06-25 20:54:11 -04: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
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
00c47b6811
library has per-thread transaction stacks (GC-399)
...
The Library object is now (almost) safe to share across threads. Per-thread
resources are now automatically managed internally. There is no longer any need
for the _reopen_lib hack to get multiple copies of the Library object.
2012-06-08 11:09:45 -07:00
Adrian Sampson
d88afbad11
library maintains per-thread DB conns. (GC-399)
2012-06-08 10:49:47 -07:00
Adrian Sampson
d83c1fad6b
chroma: use multiple recording candidates
2012-06-06 12:35:25 -07:00
Adrian Sampson
e634b95996
Merge pull request #40 from djrtl/upstream
...
Fixed an issue with a readline from socket in bpd
2012-06-03 22:53:57 -07:00
Matteo Mecucci
469fb95e3e
Added a second check for empty line in bpd after my latest change
2012-06-03 22:07:16 +02:00
Matteo Mecucci
df25de89f7
Fixed an issue with a readline from socket in bpd
2012-06-03 11:40:57 +02:00
kraymer
2c67f0f76e
importfeeds: write _feeds_dir global once, on reception of 'library_opened' event
2012-05-27 23:15:16 +02:00
Adrian Sampson
66e75c398d
embedart: log & skip unreadable audio files
2012-05-21 10:47:17 -07:00
Adrian Sampson
face0ba323
chroma submission: fix crash; better errors
2012-05-17 14:54:58 -07:00
Philippe Mongeau
9824cee7fb
add the 'path' argument to mpdupdate plugin
2012-05-17 12:31:19 -04:00
Adrian Sampson
d82d74b422
move bluelet to util subpackage
...
This way, it can be shared among multiple plugins (as could happen
eventually...)
2012-05-13 21:22:50 -07:00
Adrian Sampson
760fff3ace
use new "except ... as ...:" syntax
...
This replaces the older "except ..., ...:" syntax.
2012-05-13 21:18:50 -07:00
Adrian Sampson
429af42e14
use print_function __future__ import
...
All code should now use Python 3-style "print"s.
2012-05-13 21:08:27 -07:00
Adrian Sampson
f6b37d2c8c
remove with_statement __future__ imports
...
This is the first of several commits that will modernize the beets codebase for
Python 2.6 conventions. (Compatibility with Python 2.5 is hereby abandoned.)
2012-05-13 20:39:07 -07:00
Adrian Sampson
b68e87b92c
The Great Trailing Whitespace Purge of 2012
...
What can I say? I used to use TextMate!
2012-05-13 20:22:17 -07:00
Adrian Sampson
fb3956723c
fix format string in info plugin
2012-05-12 15:21:45 -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
Nicolas Dietrich
a0e133ae5d
Allow unicode in rewrite items
...
This commit makes rewrite explicitely match items using the .lower() function
instead of using Pythons builtin re.I flag.
This is required as the re.I flag only allows for case-independent pattern
matching with ascii chars. Even worse, the pattern is stored in lowercase when
using re.I, but the value to be matched isn't lowercased.
Example:
[rewrite]
artist Сергей Васильевич Рахманинов: Sergei Rachmaninoff
2012-05-09 00:21:06 +02: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
Matteo Mecucci
030c656a75
Added support for random and repeat in the bpd plugin.
2012-05-08 22:53:17 +02: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
5a9cc6a2d9
fix crash on 0 chroma matches for singleton
2012-05-06 21:19:13 -07:00
kraymer
f92d5d5e29
change m3u open mode to 'a' so file content is not reseted at each import when in 'm3u' mode
2012-05-02 21:51:37 +02:00
Adrian Sampson
1ee07e116e
flexible -f templates for album listings (and rdm)
2012-04-30 22:59:17 -07:00
Adrian Sampson
fa3e41c86a
BPD: print messages reflecting tree (re)build
2012-04-30 12:02:00 -07:00
Adrian Sampson
de87fb7489
memoize %aunique results (share among tracks)
2012-04-29 18:07:29 -07:00
Adrian Sampson
d042bed27c
pre-parse path format templates
...
Instead of parsing the template at each call to destination(), it's now possible
to parse them *once*, a priori, and re-use the resulting template object. This
is analogous to the re module's compiled expressions.
2012-04-29 15:30:43 -07:00
Philippe Mongeau
97e202e015
importfeeds: use expanduser on feeds_dir
2012-04-15 21:18:38 -04:00
Matteo Mecucci
43cebabcb6
Added sorting in listing command of bpd
2012-04-15 17:05:16 +02:00
Adrian Sampson
2c11855b1e
catch URL fetch exceptions in lyrics plugin
2012-04-10 21:05:01 -07:00
kraymer
78fbe6d836
rename 'm3uupdate' plugin to 'importfeeds'. Handles two more output formats: multi m3u files (one per item imported) and symlinks. Update plugin docs.
...
Conflicts:
docs/plugins/index.rst
2012-04-10 12:06:38 -07:00
kraymer
00d47b1bff
The default setting for the plugin is now a m3u directory path (m3u_dirpath).
...
User can specify a fixed name (eg *import.m3u*) by setting the `m3u_fixedname`, otherwise a dynamic m3u filename will be generated base on the imported items (album/track title).
2012-04-10 12:05:12 -07:00
Adrian Sampson
2d20e3582b
typo: >=, not >
2012-04-01 20:58:49 -07:00
Adrian Sampson
44bcc5b3bd
chroma: "beet submit" command ( #332 )
2012-04-01 20:41:27 -07:00
Adrian Sampson
01dce53212
store Acoustid data in DB & file
...
This is accomplished via a new event, "import_task_apply", which is called
right after metadata is applied to newly-imported items.
This change makes chroma REQUIRE a new version (0.6) of pyacoustid. Users with
older versions installed will see complaints about a missing method
"fingerprint_file".
2012-04-01 19:38:46 -07:00
Adrian Sampson
82a4bafc3e
chroma: fingerprint when task begins
...
The old "caching"-based approach to fingerprinting was kinda hacky to begin
with. Now, the chroma plugin has an explicit opportunity (in the form of a new
event) to perform its initial fingerprinting and lookup for all tracks. Then,
this information is used explicitly during the autotagging phase rather than
being used transparently through memoization of the lookup function.
2012-04-01 18:55:14 -07:00
Adrian Sampson
aeeb040fe4
chroma: more logging on match failure
2012-04-01 17:55:30 -07:00
Adrian Sampson
2466305d7e
add MusicBrainz collection plugin by @jeffayle
2012-03-23 11:34:57 -07:00
Adrian Sampson
9befb94561
-n option for random command ( #24 )
2012-03-23 10:33:44 -07:00
Adrian Sampson
7e6cdd75d6
docs & changelog for rdm plugin
2012-03-23 10:26:50 -07:00
Adrian Sampson
fc45e5fb97
Merge pull request #24 from phmongeau/random_plugin
...
add random plugin
2012-03-23 10:15:56 -07:00
Adrian Sampson
22e8695172
BPD: use playbin2 instead of playbin ( #364 )
2012-03-21 14:25:01 -07:00
Philippe Mongeau
bdef5ef152
add random plugin
2012-03-20 22:10:43 -04:00
Adrian Sampson
af0da7d1b6
m3uupdate docs, changelog, and cleanup ( #23 )
2012-03-18 16:42:12 -07:00
kraymer
f670fc87ab
add 'm3uupdate' plugin
2012-03-17 12:12:12 +01:00
Adrian Sampson
3ffbe171e5
lyrics: detect missing lyrics in lyrics.com result
2012-03-10 12:40:19 +00:00
Adrian Sampson
c65b237b99
lyrics: resolve entity
2012-03-10 12:37:57 +00:00
Adrian Sampson
5befad8ba0
lyrics safely decoded from bytes
2012-03-10 12:33:19 +00:00
Adrian Sampson
2d3c9d9f9a
suppress more pylast errors ( #349 )
2012-02-26 17:57:40 -08:00
Adrian Sampson
8fca659392
log errors when fingerprinting fails
2012-02-26 17:51:19 -08:00
Adrian Sampson
8d9c324b61
fix unicode encoding for lyrics requests ( #350 )
2012-02-26 12:54:27 -08:00
Simon Chopin
52a34c7510
Fix the list command in BPD
...
The cmd_list method wasn't a generator as run() expected, but instead
loaded directly the data onto the connection withoutactually sending it.
2012-02-17 20:15:25 +01:00
Adrian Sampson
74f14a7aeb
fix plugin errors with missing sections
2012-01-31 18:52:27 -08:00
Adrian Sampson
eb8b194508
handle acoustid response w/ no recording ( #322 )
2012-01-29 17:50:03 -08:00
Adrian Sampson
7b265e353d
print a better error for exceptions raised from inline snippets
2012-01-29 13:27:47 -08:00
Adrian Sampson
dbab290ba4
fix rewrite bug w/ multiple rules for a single field
2012-01-25 13:32:22 -08:00
Adrian Sampson
a58253b79c
"lyrics -p" prints out lyrics
2012-01-19 12:43:29 -08:00
Adrian Sampson
248a433d1d
lyrics auto-fetch on import ( #137 )
2012-01-19 12:39:20 -08:00
Adrian Sampson
01a54e2e0e
first stab at revamped lyrics plugin ( #137 )
2012-01-19 12:25:11 -08:00
Adrian Sampson
347a29b0f6
rewrite plugin
...
--HG--
rename : docs/plugins/inline.rst => docs/plugins/rewrite.rst
2012-01-16 20:48:23 -08:00
Adrian Sampson
9920cc482c
add "scrub" plugin ( #280 )
...
--HG--
rename : beetsplug/embedart.py => beetsplug/scrub.py
rename : docs/plugins/embedart.rst => docs/plugins/scrub.rst
2012-01-02 14:03:28 -08:00
Adrian Sampson
a1b2b6c8a2
fix plugin hook in embedart
2011-12-28 15:56:07 -08:00
Adrian Sampson
890021008a
inline plugin: define template fields in config ( #169 )
2011-12-27 14:43:58 -08:00
Adrian Sampson
93678307ef
lastgenre now writes tags to files ( #279 )
...
This was accomplished by adding a new "config" parameter to the *_imported
events so that the handlers can check whether writing is enabled.
2011-12-20 17:49:11 -08:00
Adrian Sampson
0cc92e482b
remove lastid plugin
2011-12-17 22:05:11 -08:00
Adrian Sampson
fed9e206c0
sync with latest bluelet version (824609773a85)
2011-12-14 14:11:49 -08:00
Adrian Sampson
59b4338f81
fix BPD lsinfo results for libmpc ( #277 )
2011-12-14 14:04:00 -08:00
Adrian Sampson
def0f2c0e5
update lastid plugin for Album/TrackInfo objects
...
The plugin's deprecated, but there's no reason not to keep it in working order
with the recent changes to the autotagging workflow.
2011-12-06 18:32:27 -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
c03fb658c7
clean up genre canonicalization ( #264 )
...
- Canonicalization is disabled by default. (This prevents pyyaml from being a
dependency if you don't use canonicalization.)
- Config value to set the tree file.
- Python style.
- Added YAML file to MANIFEST.in.
- Documentation.
2011-12-01 12:14:11 -08:00
kraymer
9fd10c0186
add genres canonicalization: when a last.fm tag is found but rejected (because not in user whitelist), try to found a
...
parent tag that is accepted
--HG--
extra : transplant_source : %C6%F2%F9%EDY%C4%1B%FD%BDV/%E5%041I%CB4%00%0A%07
2011-10-11 00:16:57 +02:00
Adrian Sampson
6f5beff8e0
use non-minified JavaScript libraries ( #259 )
2011-11-23 18:26:08 -08:00
Adrian Sampson
99bb4df94b
check for releases in acoustid result ( fixes #252 )
2011-11-19 17:55:19 -08:00
Adrian Sampson
1219c9c0fb
remove some dead code from replaygain
2011-11-13 15:54:08 -08:00
Peter B
6b3365303a
-moved replaygain plugin from Lugoues/beets-replaygain into beets core
...
-moved output to debug messages
2011-11-13 17:15:32 -05:00
Adrian Sampson
f2bb220f5a
chroma plugin (for acoustid fingerprinting) ( #152 )
...
--HG--
rename : docs/plugins/lastid.rst => docs/plugins/chroma.rst
2011-11-12 15:33:00 -08:00
Adrian Sampson
604a7d5aa0
removed basically unused Last.fm/MBID logic
2011-10-23 16:01:55 -07:00
Adrian Sampson
5ab92fe853
fix outdated imports
2011-10-11 19:36:16 -07:00
Adrian Sampson
1e88b9ea8d
fix storing of genres after item import
2011-10-11 10:20:43 -07:00
Adrian Sampson
b62b462b1e
file-based genre whitelist & cleanup
...
--HG--
rename : beetsplug/lastgenre.py => beetsplug/lastgenre/__init__.py
2011-10-07 12:51:38 -07:00
kraymer
0805e50a13
fixes initialization of the whitelist when no genre specified in the config
2011-09-24 23:56:48 +02:00
kraymer
35a06e6b62
add a config parameter to lastgenre plugin allowing to define a genres whitelist
2011-09-24 23:31:15 +02:00
Adrian Sampson
21d919fbd0
share last.fm API key among plugins
2011-09-23 12:37:56 -07:00
Adrian Sampson
d6431b992e
lastgenre plugin ( #139 )
2011-09-23 12:33:47 -07:00
Adrian Sampson
f48fefdf61
merge
2011-09-18 15:39:38 -07:00
Adrian Sampson
6fbe69d454
spelling errors in comments
2011-09-18 13:00:36 -07:00
Adrian Sampson
521131bc2b
screenshot image and syntax cleanup
2011-09-17 15:32:27 -07:00
Adrian Sampson
9348c6a2b8
port and host options for web plugin
2011-09-16 12:00:05 -07:00
Adrian Sampson
9d1870af16
fix reference to old greenlet client
2011-09-05 13:06:01 -07:00
Adrian Sampson
05aa907e23
move player to the left
2011-08-08 18:41:25 -07:00
Adrian Sampson
4dc020e4a7
show a few more file details
2011-08-08 16:38:02 -07:00
Adrian Sampson
8e0638512d
automatically play next track
2011-08-08 16:27:28 -07:00
Adrian Sampson
7a28dcecb0
player improvements: double-click to play; visual indicator
2011-08-08 16:19:22 -07:00
Adrian Sampson
b6ac0e4d36
replace audio.js with a hand-rolled player
2011-08-08 15:11:49 -07:00
Adrian Sampson
952dbad142
in-page media player using audio.js
2011-08-07 10:30:44 -07:00
Adrian Sampson
ba45cf6964
show more detail about items
2011-08-07 01:08:08 -07:00
Adrian Sampson
e06f3247fd
UI tweaks
2011-08-07 00:42:24 -07:00
Adrian Sampson
586371a4e2
show detail for selected item
2011-08-07 00:30:57 -07:00
Adrian Sampson
e8baeb0c07
a little style for the web interface
2011-08-06 23:56:40 -07:00
Adrian Sampson
568683af21
basic Backbone.js-based frontend
2011-08-06 11:20:17 -07:00
Adrian Sampson
8493909a81
albums and queries in web plugin
2011-08-06 09:52:22 -07:00
Adrian Sampson
c11c7fe4cc
playing around with a Web API
2011-08-05 17:35:47 -07:00
Adrian Sampson
3b2ea5d289
add a missing __future__ import in embedart
2011-07-10 12:07:52 -07:00
Adrian Sampson
f53a06ddf1
merge
2011-07-07 08:33:33 -07:00
Adrian Sampson
fed8782ca1
fix Unicode queries from CLI arguments
2011-07-01 15:43:06 -07:00
Adrian Sampson
a448879ca9
infer album artist or VA for as-is imports ( #161 )
2011-06-29 10:36:07 -07:00
Adrian Sampson
fcc2744ac5
use separate shell arguments for queries to preserve whitespace
2011-06-26 00:12:45 -07:00
Adrian Sampson
7310e9ea10
fix playlist versioning & directory recursion in BPD
2011-05-07 12:08:13 -07:00
Adrian Sampson
e5e11503ad
a couple more cursor closings
2011-05-05 18:26:29 -07:00
Adrian Sampson
8341dee3ab
reorder items() and albums() parameters to reflect common use
2011-05-05 17:20:24 -07:00
Adrian Sampson
3e90579a6c
BPD uses new VFS as a backend ( #131 )
2011-05-05 17:00:05 -07:00
Adrian Sampson
61a037af6f
add "album art" to info plugin
2011-05-01 13:33:40 -07:00
Adrian Sampson
a0e7c70c64
"clearart" command for removing embedded album art
2011-04-27 10:37:46 -07:00
Adrian Sampson
73c4bedc41
simplify MediaFile art interface: no type is included
...
The interface no longer specifies the type of the image embedded in the file; it
just returns a bytestring blob. When a type must be stored, it is inferred using
the imghdr module, which shoudl reduce the potential for weird bugs when the
formats don't correspond.
2011-04-27 10:27:26 -07:00
Adrian Sampson
30080bc520
fix memory leak in bluelet, syncing with latest source ( #151 )
2011-04-21 21:40:28 -07:00
Adrian Sampson
2c81b40952
make bluelet resilient to "broken pipe" errors (client disconnects)
2011-04-21 20:50:26 -07:00
Adrian Sampson
072680e894
"profile" command in BPD for memory debugging
2011-04-21 20:31:44 -07:00
Adrian Sampson
2768e71c21
config option for disabling automatic embedding
2011-04-21 01:42:08 -07:00
Adrian Sampson
e8d54af9df
NEWS note; check for missing art when extracting
2011-04-21 01:33:56 -07:00
Adrian Sampson
415fe0be31
"embedart" and "extractart" commands
2011-04-21 01:20:50 -07:00
Adrian Sampson
866c662014
use imghdr directly instead of MIME lib (which uses imghdr)
2011-04-21 00:42:16 -07:00
Adrian Sampson
c20ce11a8c
update album art embed plugin for new API
...
--HG--
rename : beetsplug/embedcoverart.py => beetsplug/embedart.py
2011-04-21 00:01:34 -07:00
Adrian Sampson
a1996472e8
close gstreamer pipeline after each track
...
(*maybe* addressing BPD memory leak)
2011-04-20 10:34:44 -07:00
Adrian Sampson
a0e0104d83
clean up some log handler addtions
2011-04-15 12:30:12 -07:00
Adrian Sampson
6ba433e3b1
fix track query syntax
...
It turns out the documentation for MB was wrong here:
http://wiki.musicbrainz.org/XMLWebService#Searching_Tracks
At the time that I read it, at least, that said the field for track title was
named "title". It's actually named "track".
2011-04-13 21:33:37 -07:00
Adrian Sampson
f567c505d8
plugin item candidates, including lastid support for singletons
2011-04-13 21:20:21 -07:00
Adrian Sampson
88fd6c604c
merge event fix from Lugoues
2011-04-10 22:22:16 -07:00
Adrian Sampson
e669868896
move a bunch of functions to util
2011-04-10 21:48:05 -07:00
Peter B
9df548c738
updated embedcoverart plugin for album_imported change
2011-04-11 00:23:54 -04:00
Adrian Sampson
2aa9a17fb3
rename albumart_data to albumart; fix indentation
2011-04-10 12:11:22 -07:00
Daniele Sluijters
00c5a275a4
*facepalm* and fix some Engrish.
2011-04-10 16:12:21 +02:00
Daniele Sluijters
1859375593
Only try to add albumart if the MIME-type is correct, log if it's not.
2011-04-10 14:54:32 +02:00
Daniele Sluijters
0628d8df0e
Add initial version of the embed coverart plugin.
...
This plugin allows users to embed the cover into the audio file.
Probaly still has a few bugs but it should work in most cases right
now.
2011-04-10 14:51:01 +02:00
Adrian Sampson
bb8ebd24b0
fix adding tracks in BPD
2011-04-09 10:44:56 -07:00
mdecker
4eead8d846
fix divzero error in distance debug output in lastid plugin
2011-04-04 20:52:06 +02:00
mdecker
4d571b2281
fix lastid plugin breakage introduced in f256726
2011-04-04 11:22:31 +02:00
Adrian Sampson
379b998a02
merge
2011-04-02 22:38:28 -07:00
Adrian Sampson
effc338957
"info" command for dumping file metadata
2011-04-02 19:59:22 -07:00
Adrian Sampson
5f993a0bfe
BPD now lists albumartists instead of artists, works with VA releases
2011-04-02 18:49:15 -07:00
Adrian Sampson
945e253c2f
fix artist field in BPD file browser
2011-02-07 19:47:23 -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
20fe707a09
change BPD browser to use albumartist instead of artist
2011-01-24 16:08:04 -08:00
Adrian Sampson
2ed72f796a
preliminary replacement of eventlet with my own bluelet library in BPD
2011-01-02 18:46:03 -08:00
Adrian Sampson
5cab0ede24
fix lastid bug when plurality artist name was None
2010-10-10 12:37:45 -07:00
Adrian Sampson
c885b7b2b5
use logging a bit more instead of print_
2010-09-28 10:40:44 -07:00
Adrian Sampson
86d9d75db4
outdated reference to _ie_dist
2010-09-22 19:59:08 -07:00
Adrian Sampson
a5cc58e228
merge
2010-09-21 10:41:48 -07:00
Adrian Sampson
ed89394368
mpdupdate plugin (and config system for plugins)
2010-09-21 10:40:39 -07:00
Adrian Sampson
751a46c716
more efficiently limit the number of results returned from MB
2010-09-18 11:01:20 -07:00
Adrian Sampson
4adb76bb65
fix parsing of escaped characters in MPD commands
2010-09-16 23:06:33 -07:00
Adrian Sampson
fc6f6750f7
more tag_album refactoring; typo fixed in lastid
2010-09-16 12:56:53 -07:00
Adrian Sampson
8b02dd176c
lastid plugin can now generate its own candidates
...
That is, in addition to contributing to the distance function, the plugin can
also influence the initial search into MusicBrainz. This will allow albums to be
tagged even when they're missing metadata entirely. This change required a
significant bit of refactoring to the "mb" module -- it's much nicer now.
2010-09-16 12:27:04 -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
99cd36e34f
weighting for fingerprinted metadata
2010-09-14 11:16:13 -07:00
Adrian Sampson
b7518038be
fingerprinting track distance based on MB track IDs
2010-09-14 11:08:16 -07:00
Adrian Sampson
fba874932c
beginnings of last.fm fingerprinting plugin for autotagger
...
This required the introduction of a track_distance method on plugins. We'll also
need to add an album_distance method as well as a mechanism for extending the
search routine (so we can search for albums in MusicBrainz even when they have
no tags). This commit also adds the '-v' flag for printing debug logs (something
we should do more of).
2010-09-13 21:14:49 -07:00
Adrian Sampson
514d1bc706
fixed silly error when listing tracks in BPD
2010-08-09 21:57:06 -07:00
Adrian Sampson
5b2653bb53
albumify plugin for upgrading old databases
2010-07-22 10:52:43 -07:00
Adrian Sampson
6754155c71
Albums now have an internal cache of their values
...
This makes way more sense than fetching every metadata request from the
database. The performance of "beet ls -a" and the like should be drastically
better.
2010-07-21 16:04:59 -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
6c0895de96
make sure beetsplug is loaded as a namespace package
2010-07-20 23:15:19 -07:00
Adrian Sampson
f8c317a2cd
undefined variable reported by pylint
2010-07-09 18:16:40 -07:00
Adrian Sampson
6e90009b07
remove outdated references to beets.player module
2010-07-09 18:12:18 -07:00
Adrian Sampson
8ccc8e1ccd
move bpd and dadd commands to plugins
...
--HG--
rename : beets/player/bpd.py => beetsplug/bpd/__init__.py
rename : beets/player/gstplayer.py => beetsplug/bpd/gstplayer.py
rename : beets/device.py => beetsplug/device.py
2010-07-08 17:09:07 -07:00
Adrian Sampson
78efe771b1
extremely simple plugin system with discovery
2010-07-08 16:35:15 -07:00