Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Bandcamp autotagger plugin for beets. It mostly focuses on
Thanks to unrblt for beets-bandcamp providing the idea and initial implementation.
beets
with pipx
so that it's isolated from your system and other projectspipx install beets
beetcamp
and other dependencies that you need. The --include-apps
flag is required to make sure that beetcamp
is made available in your command line.pipx inject --include-apps beets beetcamp [python-mpd2 ...]
bandcamp
to the plugins
list to your beets configuration file.Navigate to your beets
virtual environment and install the plug-in with
pip install beetcamp
The plugin exposes some of its functionality through a command-line application beetcamp
:
usage: beetcamp [-h] [-a] [-l] [-t] [-o INDEX] [-p PAGE] (release_url | query)
Get bandcamp release metadata from the given <release-url> or perform
bandcamp search with <query>. Anything that does not start with https://
will be assumed to be a query. Search type flags: -a for albums, -l for
labels and artists, -t for tracks. By default, all types are searched.
positional arguments:
release_url Release URL, starting with https:// OR
query Search query
optional arguments:
-h, --help show this help message and exit
-a, --album Search albums
-l, --label Search labels and artists
-t, --track Search tracks
-o INDEX, --open INDEX
Open search result indexed by INDEX in the browser
-p PAGE, --page PAGE The results page to show, 1 by default
beetcamp <bandcamp-release-url>
to return release metadata in JSON format.beetcamp [-alt] <query>
to search albums, labels and tracks on Bandcamp and return
results in JSON.-o <index>
in order to open the chosen URL in the browser.You can see how the data looks below (the output is prettified with rich-tables).
bandcamp:
include_digital_only_tracks: true
search_max: 2
art: yes
comments_separator: "\n---\n"
exclude_extra_fields: []
genre:
capitalize: no
maximum: 0
always_include: []
mode: progressive # classical, progressive or psychedelic
include_digital_only_tracks
true
For media that isn't Digital Media
, include all tracks, even if their titles contain
digital only (or alike).
If you have False
here, then, for example, a Vinyl
media of an album will only include
the tracks that are supposed to be found in that media.
search_max
2
.Number of items to fetch through search, maximum is 18. Usually, a matching release should be found among the first two items.
art
false
.Add a source to the
FetchArt plug-in to
download album art for Bandcamp albums (requires FetchArt
plug-in enabled).
comments_separator
"\n---\n"
.The separator that divides release, media descriptions and credits within the comments
field. By default you would get
Description
---
Media description
---
Credits
exclude_extra_fields
empty
List of fields that you do not want to see in the metadata. For example, if you find the
inclusion of comments
irrelevant and are not interested in lyrics, you could specify
bandcamp:
search_max: 5
exclude_extra_fields:
- lyrics
- comments
and the plugin will skip them.
You cannot exclude album
, album_id
, artist_id
, media
and data_url
album fields.
genre
(new since 0.11.0)genre:
capitalize: no
maximum: 0 # no maximum
mode: progressive
always_include: []
genre.capitalize: Classical, Techno instead of default classical, techno.
For consistency, this option also applies to the style
field.
genre.maximum caps the maximum number of included genres. This may be of value in those cases where artists/labels begin the list with the most relevant keywords, however be aware it is rarely the case.
genre.mode accepts one of the following options: classical (less genres) or progressive or psychedelic (more genres). Each later one is more flexible regarding what is a valid genre and what is not. See below (we use the list of musicbrainz genres for reference).
genre.always_include: genre patterns that override the mode and always match
successfully. For example, if you want to bypass checks for every keyword that ends with
core
, you could specify
genre:
always_include:
- "core$"
genre
modesWe can place all keywords into the following buckets:
type | ||
---|---|---|
1 | genre | a valid single-word musicbrainz genre |
1 | more specific genre | a valid musicbrainz genre made of multiple words |
2 | somegenre someothergenre | each of the words is a valid musicbrainz genre, but the combo is not |
3 | very specific genre | not all words are valid genres, but the very last one is |
4 | maybe genre but | but it is followed by noise at the end |
4 | some sort of location | irrelevant |
<some-label>-<genre>
or <some-city>-<some-very-generic-genre>
trends which may
not be ideal. It should though be the best option for those who enjoy detailed, fine-grained
stats.genre.include
option).See below for some examples and a comparison between the modes.
type | keyword | classical | progressive | psychedelic |
---|---|---|---|---|
1 | techno | ✔ | ✔ | ✔ |
1 | funk | ✔ | ✔ | ✔ |
1 | ambient | ✔ | ✔ | ✔ |
1 | noise | ✔ | ✔ | ✔ |
1 | ambient techno | ✔ | ✔ | ✔ |
2 | techno funk | ✖ | ✔ | ✔ |
4 | funky | ✖ | ✖ | ✖ |
4 | bleep | ✖ | ✖ | ✖ |
3 | funky techno | ✖ | ✖ | ✔ |
4 | bleepy beep | ✖ | ✖ | ✖ |
3 | bleepy beep noise | ✖ | ✖ | ✔ |
4 | bleepy noise beep | ✖ | ✖ | ✖ |
This plug-in uses Bandcamp release URL as album_id
(.../album/...
for albums and
.../track/...
for singletons). If no matching release is found during the import you can
select enter Id
and paste the URL that you have.
field | singleton | album track | album | note |
---|---|---|---|---|
album | ✔ | |||
album_id | ✔ | release Bandcamp URL | ||
albumartist | ✔ | |||
albumstatus | ✔ | |||
albumtype | *✔ | ✔ | ||
albumtypes | *✔ | *✔ | ||
artist | ✔ | ✔ | ✔ | |
artist_id | ✔ | ✔ | label / publisher Bandcamp URL | |
catalognum | *✔ | ✔ | ||
comments | *✔ | *✔ | release and media descriptions, and credits | |
country | *✔ | ✔ | ||
day | *✔ | ✔ | ||
disctitle | *✔ | ✔ | ||
genre | *✔ | *✔ | comma-delimited list of release keywords which match musicbrainz genres | |
index | ✔ | |||
label | *✔ | ✔ | ||
length | ✔ | ✔ | ||
lyrics | *✔ | *✔ | ||
media | *✔ | ✔ | ✔ | |
medium | ✔ | likely to be inaccurate, since it depends on information in the release description | ||
mediums | ✔ | |||
medium_index | ✔ | for now, same as index | ||
medium_total | ✔ | total number of tracks in the release | ||
month | *✔ | ✔ | ||
style | *✔ | *✔ | Bandcamp genre tag | |
title | ✔ | ✔ | ||
track_alt | ✔ | ✔ | ||
track_id | ✔ | track URL | ||
va | ✔ | |||
year | *✔ | ✔ |
* Available with beets
versions 1.5
or higher.
FAQs
Bandcamp autotagger source for beets (http://beets.io).
We found that beetcamp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.