mirror of
https://github.com/beetbox/beets.git
synced 2026-03-02 19:26:29 +01:00
No description
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. |
||
|---|---|---|
| beets | ||
| beetsplug | ||
| docs | ||
| extra | ||
| test | ||
| .gitignore | ||
| .hgignore | ||
| .hgtags | ||
| .travis.yml | ||
| beet | ||
| LICENSE | ||
| MANIFEST.in | ||
| README.rst | ||
| setup.py | ||
| tox.ini | ||
Beets is the media library management system for obsessive-compulsive music
geeks.
The purpose of beets is to get your music collection right once and for all.
It catalogs your collection, automatically improving its metadata as it goes.
It then provides a bouquet of tools for manipulating and accessing your music.
Here's an example of beets' brainy tag corrector doing its thing::
$ beet import ~/music/ladytron
Tagging:
Ladytron - Witching Hour
(Similarity: 98.4%)
* Last One Standing -> The Last One Standing
* Beauty -> Beauty*2
* White Light Generation -> Whitelightgenerator
* All the Way -> All the Way...
Because beets is designed as a library, it can do almost anything you can
imagine for your music collection. Via `plugins`_, beets becomes a panacea:
- Embed and extract album art from files' metadata.
- Listen to your library with a music player that speaks the `MPD`_ protocol
and works with a staggering variety of interfaces.
- Fetch lyrics for all your songs from databases on the Web.
- Manage your `MusicBrainz music collection`_.
- Analyze music files' metadata from the command line.
- Clean up crufty tags left behind by other, less-awesome tools.
- Browse your music library graphically through a Web browser and play it in any
browser that supports `HTML5 Audio`_.
If beets doesn't do what you want yet, `writing your own plugin`_ is
shockingly simple if you know a little Python.
.. _plugins: http://beets.readthedocs.org/page/plugins/
.. _MPD: http://mpd.wikia.com/
.. _MusicBrainz music collection: http://musicbrainz.org/doc/Collections/
.. _writing your own plugin:
http://beets.readthedocs.org/page/plugins/#writing-plugins
.. _HTML5 Audio:
http://www.w3.org/TR/html-markup/audio.html
Read More
---------
Learn more about beets at `its Web site`_. Follow `@b33ts`_ on Twitter for
news and updates.
You can install beets by typing ``pip install beets``. Then check out the
`Getting Started`_ guide.
.. _its Web site: http://beets.radbox.org/
.. _Getting Started: http://beets.readthedocs.org/page/guides/main.html
.. _@b33ts: http://twitter.com/b33ts/
Authors
-------
Beets is by `Adrian Sampson`_.
.. _Adrian Sampson: mailto:adrian@radbox.org