Do you want to see what's in your library? 🀩

Hi Beeters!

The other day I had to sit through a super-long meeting over skype so I started to play around with numpy and pandas and firends. Since I needed some datasets to work with I though: β€œWhy not play around with my music library?”

So, this is what I ended up with at the end of the meeting:

$ beet describe bpm albumartist:'Various Artists'
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Name       β”‚                      Value β”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•ͺ════════════════════════════║
β”‚ Field name β”‚                        bpm β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Field type β”‚ beets.dbcore.types.Integer β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Count      β”‚                       1392 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Min        β”‚              65.9922409058 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Max        β”‚                      185.0 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Mean       β”‚         122.99097545119291 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Median     β”‚                      122.0 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Empty      β”‚                          0 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Distribution(bins=10) histogram
66.0 - 77.9    [ 30]  β–ˆβ–ˆβ–ˆβ–ˆβ–Š
77.9 - 89.8    [ 73]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–
89.8 - 101.7   [203]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š
101.7 - 113.6  [221]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ
113.6 - 125.5  [256]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
125.5 - 137.4  [208]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ
137.4 - 149.3  [183]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹
149.3 - 161.2  [ 87]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹
161.2 - 173.1  [107]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š
173.1 - 185.0  [ 24]  β–ˆβ–ˆβ–ˆβ–Š

let’s see genres:

$ beet describe genre albumartist:'Various Artists'
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Name           β”‚                     Value β”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•ͺ═══════════════════════════║
β”‚ Field name     β”‚                     genre β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Field type     β”‚ beets.dbcore.types.String β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Count          β”‚                      1392 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Unique         β”‚                        91 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Most frequent  β”‚               Oldies(202) β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Least frequent β”‚              Dance-Pop(1) β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Empty          β”‚                        19 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Unique element histogram
Oldies                  [202]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
Classic Rock            [139]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ
Soul                    [124]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ
Blues                   [120]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š
Rock                    [109]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹
Pop                     [105]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š
Dance                   [ 86]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
New Wave                [ 48]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ
Reggae                  [ 44]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š
Heavy Metal             [ 33]  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ
Trance                  [ 24]  β–ˆβ–ˆβ–ˆβ–ˆβ–Š
Jazz                    [ 20]  β–ˆβ–ˆβ–ˆβ–ˆ
Blues Rock              [ 20]  β–ˆβ–ˆβ–ˆβ–ˆ
                        [ 19]  β–ˆβ–ˆβ–ˆβ–Š
Soundtrack              [ 17]  β–ˆβ–ˆβ–ˆβ–
Synthpop                [ 16]  β–ˆβ–ˆβ–ˆβ–
Ska                     [ 16]  β–ˆβ–ˆβ–ˆβ–
Rap                     [ 15]  β–ˆβ–ˆβ–ˆ
Pop Rock                [ 14]  β–ˆβ–ˆβ–Š
Funk                    [ 12]  β–ˆβ–ˆβ–
Metal                   [ 12]  β–ˆβ–ˆβ–
Alternative Metal       [ 12]  β–ˆβ–ˆβ–
Alternative Rock        [ 11]  β–ˆβ–ˆβ–
Hard Rock               [ 10]  β–ˆβ–ˆ
Soft Rock               [ 10]  β–ˆβ–ˆ
Singer-Songwriter       [  9]  β–ˆβ–Š
Rockabilly              [  8]  β–ˆβ–‹
R&B                     [  6]  β–ˆβ–Ž
Rock And Roll           [  6]  β–ˆβ–Ž
Electronic              [  6]  β–ˆβ–Ž
Metalcore               [  6]  β–ˆβ–Ž
Progressive Rock        [  5]  β–ˆ
Disco                   [  5]  β–ˆ
House                   [  5]  β–ˆ
Psychedelic Rock        [  5]  β–ˆ
Punk Rock               [  4]  β–Š
Progressive Metal       [  4]  β–Š
Thrash Metal            [  4]  β–Š
Funk Soul               [  3]  β–‹
Nu Metal                [  3]  β–‹
Death Metal             [  3]  β–‹
Contemporary R&B        [  3]  β–‹
World Music             [  3]  β–‹
Symphonic Metal         [  3]  β–‹
Post-Grunge             [  2]  ▍
Pop Punk                [  2]  ▍
Industrial Metal        [  2]  ▍
Blue-Eyed Soul          [  2]  ▍
Black Metal             [  2]  ▍
Surf Rock               [  2]  ▍
Psychedelic             [  2]  ▍
PMEDIA                  [  2]  ▍
Motown                  [  2]  ▍
Industrial              [  2]  ▍
Indie Rock              [  2]  ▍
Rock, Hard Rock, Metal  [  2]  ▍
Britpop                 [  2]  ▍
Contemporary Classical  [  2]  ▍
Glam Rock               [  2]  ▍
Indie Pop               [  2]  ▍
Lo-Fi                   [  1]  β–Ž
Power Metal             [  1]  β–Ž
Pop Soul                [  1]  β–Ž
Folk Rock               [  1]  β–Ž
Pinoy Rock              [  1]  β–Ž
Post-Punk               [  1]  β–Ž
Speed Metal             [  1]  β–Ž
Doo Wop                 [  1]  β–Ž
Gothic Metal            [  1]  β–Ž
Hip Hop                 [  1]  β–Ž
Downtempo               [  1]  β–Ž
Southern Soul           [  1]  β–Ž
Melodic Metalcore       [  1]  β–Ž
Ragga                   [  1]  β–Ž
Classical               [  1]  β–Ž
Teen Pop                [  1]  β–Ž
Country                 [  1]  β–Ž
Grunge                  [  1]  β–Ž
Sludge Metal            [  1]  β–Ž
Industrial Rock         [  1]  β–Ž
Ballad                  [  1]  β–Ž
Southern Rock           [  1]  β–Ž
Grindcore               [  1]  β–Ž
Country Rock            [  1]  β–Ž
Indie                   [  1]  β–Ž
Gospel                  [  1]  β–Ž
Vocal Trance            [  1]  β–Ž
Gypsy Jazz              [  1]  β–Ž
Blackgaze               [  1]  β–Ž
Viking Metal            [  1]  β–Ž
Dance-Pop               [  1]  β–Ž

Quite neat isn’t it? You can easily catch missing/suspicious tags (I have β€œViking Metal” :rofl:) and probably much more. I haven’t give this plugin much thought yet… I have too many ideas…

Anyways, there is a repo of this stuff here but it is 0% tested and probably full of issues. You can clone it and add it to your beets deployment by using the pluginpath config option to have a go at it.

If you think this plugin can be a useful tool for you give your contribution in the form of ideas and/or PRs so we can make at least the first PyPi release so that less savvy users can also install it.

3 Likes

Thanks for sharing. This looks like a really useful tool. I’m going to try to install it. But not so tech savvy so not sure if I will succeed.

I put installation instructions on the github page. If you have issues let me know and I’ll give you a hand.

Works like a charm Adam @jakabadambalazs thanks a lot.

A suggestion for this plugin would be to add a album -a option so that I can check the stats for album genres with beet describe -a genre.

1 Like

Great! Could you open an issue on github and add your request there so it does not disappear in the digital fog?

Will do that!

1 Like

Useful tool, thank you …

1 Like

Just a quick note: This plugin is now installable from pypi with pip install beets-describe.