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