metalfinder is a command-line tool that scans a music directory to find concerts near a specified location.
Installation
Using pip
You can install metalfinder using pip:
$ pip install metalfinder
Using the Debian package
metalfinder is available in the Debian archive, starting with Debian 12 (Bookworm). You can install it by running:
$ apt install metalfinder
From source
You can install metalfinder from source using flit:
$ apt install flit $ git clone https://gitlab.com/baldurmen/metalfinder $ cd metalfinder $ flit install
Run without installing
If you already have all the required dependencies, you can run metalfinder directly from the source without installing it:
$ python3 -m metalfinder
API Providers
Bandsintown
To use the Bandsintown API provider, you will need a Bandsintown App ID. This is your API key and it should be kept private.
Other providers
Do you know a good website that tracks concerts and has a somewhat public API? If keys are not too hard to get, I’d be more than happy to implement it!
CLI options
Here is an example of how to use metalfinder:
$ export METALFINDER_BIT_APPID=mysecretapikey $ metalfinder -d "/home/foo/Music" -o "/home/foo/metalfinder.atom" -l "Montreal" "Laval"
The complete CLI parameters can be found below and in the man page:
Usage:
metalfinder [-d <directory>] -o <output> -l <location> [<location> ...] -b <app_id> [-c <cache>] [-m <date>] [--verbose]
metalfinder (-h | --help)
metalfinder --version
Options:
-h --help Show the help screen
--version Output version information
--verbose Run the program in verbose mode
-d --directory <directory> Music directory to scan to create artist list
-o --output <output> Path to the desired output file. You can either
chose a text file (foo.txt), a JSON file (foo.json)
or an ATOM file (foo.atom)
-l --location <location> Name of the city to use when looking for
concerts. Accepts one or more cities.
-b --bit-appid <app_id> Bandsintown App ID (API key). Optional when the
METALFINDER_BIT_APPID environment variable is set.
-c --cache-dir <cache_dir> Path to the cache directory. Defaults to
$HOME/.cache/metalfinder/
-m --max-date <date> Max date in YYYY-MM-DD format (ISO 8601)
Environment Variables
metalfinder uses the following environment variables:
METALFINDER_BIT_APPID: Bandsintown API key. Useful to keep your API key from leaking when running metalfinder on the command line.
Running without a local directory
Even though metalfinder defaults to scanning a local directory to create a list of artists, it is possible to use an existing artist list created by some other program.
Using a subsonic server
This feature has not yet been implemented. See issue #15.
Using an MDP server
Since the --directory option is optional, if it is missing, only the cache directory will be inspected. In this directory, metalfinder looks for a file named artist_cache which consists of a list of artist names separated by new lines.
If you have an MPD server, you can generate this file with the help of the mpc client:
$ mpc list Artist > ~/.cache/metalfinder/artist_cache
Development
Running the test suite
You can run the test suite locally using pip and pytest:
$ python3 -m venv metalfinder $ cd metalfinder $ source bin/activate $ git clone https://gitlab.com/baldurmen/metalfinder $ cd metalfinder $ python3 -m pip install .[test] $ python3 -m pytest
Building the man page
The man page for metalfinder can be generated using the rst2man command line tool provided by the docutils project:
$ rst2man manpage.rst metalfinder.1
License
This project was written by Louis-Philippe Véronneau and is licensed under the GNU GPLv3 or any later version.
The code to query the Bandsintown API (metalfinder/api/bandsintown.py) and the tests that accompany it (tests/test_api_bandsintown.py) come from the python-bandsintown project. These files were written by Chris Forrette and are licensed under the MIT license. As such, specific license headers have been added to them.
Metadata
Release files for metalfinder 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| metalfinder-2.2.0.tar.gz | 32.2 kB | Without provenance | Details for metalfinder-2.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| metalfinder-2.2.0-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for metalfinder-2.2.0-py2.py3-none-any.whl |
Total release size: 56.3 kB
Release files / metalfinder-2.2.0.tar.gz
| Download URL | metalfinder-2.2.0.tar.gz |
|---|---|
| Size | 32.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9375d19c5fdd087a430d9e5c443250c7affab57f5bcd0a7339bd426d903f3fc4
|
|
BLAKE2b-256 checksum How to use checksums |
2dc7e3da0cf7aea98ad3925d897b40e12ebf19c66ab81222dced43093a79043f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.34.2
|
Release files / metalfinder-2.2.0-py2.py3-none-any.whl
| Download URL | metalfinder-2.2.0-py2.py3-none-any.whl |
|---|---|
| Size | 24.1 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
1e30eb0b9f76b741b59680118cdeea8a2a609039373d9f8633c986340fa77630
|
|
BLAKE2b-256 checksum How to use checksums |
6fbc3521a0b682fc45b6aa5028eeb1a1816501a930d70ccb0daf24d04fa78d6e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.34.2
|
Security for metalfinder 2.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.