No description
Find a file
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
beets introducing "slow queries" 2013-08-16 14:28:46 -07:00
beetsplug introducing "slow queries" 2013-08-16 14:28:46 -07:00
docs introducing "slow queries" 2013-08-16 14:28:46 -07:00
extra remove Tomahawk resolver 2012-08-24 20:39:55 -07:00
test fix regex (and other) queries in path field 2013-08-04 13:12:25 -07:00
.gitignore Add .tox to .gitignore 2012-06-24 00:42:45 -07:00
.hgignore hg-compatible tox config 2012-06-24 13:06:34 -07:00
.hgtags Added tag v1.2.1 for changeset bd7259ac13b5 2013-06-22 15:58:29 -07:00
.travis.yml travis: don't --use-mirrors with pip 2013-07-05 09:36:08 -07:00
beet happy new year 2013-01-11 10:43:41 -08:00
LICENSE add readme and news files 2010-06-09 12:37:26 -07:00
MANIFEST.in have setup.py install the default config 2012-12-19 18:29:14 +01:00
README.rst Update examples in docs to reflect new UI enhancements. 2013-05-27 01:25:13 +10:00
setup.py changelog for #335, version bump 2013-06-26 22:03:02 -07:00
tox.ini hg-compatible tox config 2012-06-24 13:06:34 -07:00

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