LastImport Plugin
=================

The ``lastimport`` plugin downloads play-count data from your `Last.fm`_
library into beets' database. You can later create :doc:`smart playlists
</plugins/smartplaylist>` by querying ``play_count`` and do other fun stuff
with this field.

.. _Last.fm: https://last.fm

Installation
------------

The plugin requires `pylast`_, which you can install using `pip`_ by typing::

    pip install pylast

After you have pylast installed, enable the ``lastimport`` plugin in your
configuration (see :ref:`using-plugins`).

Next, add your Last.fm username to your beets configuration file::

    lastfm:
        user: beetsfanatic

.. _pip: https://pip.pypa.io
.. _pylast: https://github.com/pylast/pylast

Importing Play Counts
---------------------

Simply run ``beet lastimport`` and wait for the plugin to request tracks from
Last.fm and match them to your beets library. (You will be notified of tracks
in your Last.fm profile that do not match any songs in your library.)

Then, your matched tracks will be populated with the ``play_count`` field,
which you can use in any query or template. For example::

    $ beet ls -f '$title: $play_count' play_count:5..
    Eple (Melody A.M.): 60

To see more information (namely, the specific play counts for matched tracks),
use the ``-v`` option.

Configuration
-------------

Aside from the required ``lastfm.user`` field, this plugin has some specific
options under the ``lastimport:`` section:

* **per_page**: The number of tracks to request from the API at once.
  Default: 500.
* **retry_limit**: How many times should we re-send requests to Last.fm on
  failure?
  Default: 3.

By default, the plugin will use beets's own Last.fm API key. You can also
override it with your own API key::

    lastfm:
        api_key: your_api_key
