12 ms·
Beets – Command-line music manager and auto-tagger
- fortes 13y agoBeets is fantastic, really automates a ton of really annoying work. The author is pretty responsive with issues, and there's a growing community of contributors. Feel free to crib off of my config file: https://github.com/fortes/dotfiles/blob/master/.config/beets/config.yaml https://github.com/fortes/dotfiles/blob/master/.config/beets...
- fournm 13y agoOoh, this looks exactly like what I was looking for like ... a year and a half ago to go along with dmpc.
- bjackman 13y agoCool - I'll set this up tomorrow, it looks good and my Music library is a mess. It would be nice to have a centralised repository on the website where people can share plugins (like Sublime's Package Control, which is 3rd party). Programmable is great, but it would be a shame if everyone had their own half-arsed solutions to common problems.
- dewey 13y agoNot exactly what you are asking for but there's a section about available plugins on the website [0] and I guess you could submit your own plugins with a pull request [1]. [0] http://beets.readthedocs.org/en/v1.3.3/plugins/index.html http://beets.readthedocs.org/en/v1.3.3/plugins/index.html [1] https://github.com/sampsyo/beets/blob/v1.3.3/docs/plugins/index.rst https://github.com/sampsyo/beets/blob/v1.3.3/docs/plugins/in...
- jitl 13y agoI use Beets to tag and organize all the music I and my roommmates download. We feed just-completed media downloads into a version of FileBot[1]'s universal media filer[2] that delegates music sorting to the beets executable. Beets handles indexing music much more cleanly than the other solutions I tried, especially in a shared server environment. I've uploaded our media management scripts to GitHub here[3]. Note that there is some minor rude language in a few scripts ;) [1]: http://www.filebot.net/ http://www.filebot.net/ [2]: http://filebot.net/scripts/amc.groovy http://filebot.net/scripts/amc.groovy [3]: https://github.com/justjake/media-tools https://github.com/justjake/media-tools
- mattl 13y agoI wrote up a little guide on this a while back -- http://lttam.wordpress.com/2012/01/31/beets-and-an-unwavering-band-of-light/ http://lttam.wordpress.com/2012/01/31/beets-and-an-unwaverin...
- daturkel 13y agoThere is also an extensive ongoing thread about Beets in the what.cd (music torrent tracker) forum, where the creator posted about it: https://what.cd/forums.php?action=viewthread&threadid=97720 https://what.cd/forums.php?action=viewthread&threadid=97720 edit: available only to members, unfortunately
- Matsta 13y agoI love what.cd but the problem is their tracker has been non stopped ddos'd for the last few weeks that it's almost impossible to download anything.
- pikachu_is_cool 13y ago> almost impossible to download anything. More like literally impossible to download anything :(
- daturkel 13y agoYeah this is definitely unfortunate. The forums remain high-quality in the meantime.
- daurnimator 13y agoah; nice. A long time ago I was working on something similar: http://daurnimator.github.io/lomp2/ http://daurnimator.github.io/lomp2/ Got pushed to the side due to study; then work :(
- res0nat0r 13y agoBeets is awesome. It also supports acoustic fingerprinting, so you can pass it songs without any id3 tags at all and it will try and guess the song is.
- ihuman 13y agoWhy should I use this, as opposed to something like mpd and ncmpcpp?
- frewsxcv 13y agoThey're entirely different. mpd is an audio daemon that plays audio. Beets is a tool for organizing/tagging your audio files. There's a plugin for Beets called 'bpd' that acts like an mpd server on top of your beets audio library
- dewey 13y agoI can't say I know all the in's and out's of these two tools but I don't think they have build in auto-taggers and a library management like beets does.
- monkeynotes 13y agoIf only I had known about this before I moved all my music storage to iTunes Match.
- r00fus 13y agoDoesn't iTunes match support adding new content into iTunes (i.e., to be matched)? Why would there be an issue here?
- cobralibre 13y agoThe issue, I assume, is that the parent poster would have liked to use beets on his or her existing music collection but now cannot because it's no longer local.
- chacham15 13y agoThis looks awesome, and I've been wanting a library like this for some time. Only thing is that I'd need a C/C++ version. Is there one out there like that?
- hartror 13y agoCurious why you need a C/C++ version?
- chacham15 13y agoI want to integrate it with a fuse filesystem
- samps 13y agoSomeone has done this for beets some time ago already: https://code.google.com/p/beetfs/ https://code.google.com/p/beetfs/ But it has bitrotted pretty badly.
- icebraining 13y agoWell, there's fusepy and fuse-python.
- poolpool 13y agoAm I missing something or is the "web" command non existent?
- nilved 13y agoWhat would that command do?
- dewey 13y agoIt's showing in the (old) demo video [0] and makes it possible to query the database through a web interface. Maybe the web interface isn't enabled by default, add the plugin [1] to enable it. [0] http://beets.radbox.org/ http://beets.radbox.org/ [1] http://beets.readthedocs.org/en/v1.3.3/plugins/web.html http://beets.readthedocs.org/en/v1.3.3/plugins/web.html
- poolpool 13y agoAllegedly it starts a web server to browse + play music. I notice that theres a version disconnect between github (1.3.4) and pip (1.3.3) so I wonder if it snuck into that release.
- samps 13y agoEnable the web plugin first. :)
- mayneack 13y agoI see that they are plugged into musicbrainz[1]. Other than being a CLI, has anyone used this and picard[2]? What's the difference? I've used picard a lot. [1] http://musicbrainz.org http://musicbrainz.org [2] http://musicbrainz.org/doc/MusicBrainz_Picard http://musicbrainz.org/doc/MusicBrainz_Picard
- jitl 13y agobeets keeps a persistent index of all your music, and manages it as a whole library. It has a bunch of plugins, including a web-based music player, and provides a rich Python API if you want to extend it yourself. You can use beets as a CLI replacement to Picard, but beets offers a lot more to the hacker.
- siddboots 13y agoI used to use Picard as "pre-processing" step. I ran any new music through it before I added it to my music player's library. You can use beets in exactly the same way if you want, and it would be a like-for-like CLI replacement. The key difference that Beets brings is to unify the concept of a tagger with the concept of a music library, which made a lot of sense in my mind. In other words, Beets maintains a persistent database of your music collection, which can be kept in sync with Musicbrainz. You can query the database from the command line to get a list of files, and then pipe that list into a music player of choice, or just query the database from a script or web-app and build your own lightweight music player.
- deleted 13y ago[deleted]
- nilved 13y agoI've used beets for all my music for like a year and half. It's stellar. Use it.
- Wintamute 13y agoI would have been all over this if I hadn't of deleted my mp3 collection a few years ago and now just use Spotify. I was pretty OCD in terms of managing my mp3 collection, so dumping it all and using a streaming service is a welcome life simplification.
- imissmyjuno 13y ago…until Spotify dies or is replaced with something better. I haven't found a single way to manage a music library because I don't have a single music library. It's kind of crappy having it spread across MP3s, FLACs, and various music services :/
- dfc 13y agoYou just found your music management system:)
- computer 13y agoTry Clementine, it has both a local library and integration of Google Music, Spotify, Grooveshark, etc.
- dfc 13y agoI always dismissed this because it said amarok in every description. I just noticed it does not depend on kde-runtime. Someone needs to do this for rkward.
- Ricapar 13y agoWhy is Amarok something you would dismiss it on? Sure, they butchered it up in version 2.0 and above, but I've always felt version 1.4 was probably the best library manager I've used.
- dfc 13y agoI dismiss amarok and rkward for the same reason: a dependency on kde-runtime. This is just a philosophical decision that the kde community made that I disagree with. Why does rkward, a stats program, need to have the phonon-backend-vlc video or libkntlm dependencies? An RDF daemon or kio-audiocd (i don't have a CD drive)? I use awesome as a window manager, so I do not have KDE/GNOME installed. However i can and sometimes will install most "gnome" apps because they do not have a dependency on gnome-core. For comparison: Clementine vs Amarok # apt-get --no-install-recommends install clementine ... The following NEW packages will be installed: clementine libechonest2.1 libftgl2 liblastfm1 libprojectm2 libprotobuf8 libqjson0 libqt4-opengl libqxt-core0 libqxt-gui0 projectm-data ttf-dejavu-core 0 upgraded, 12 newly installed, 0 to remove and 19 not upgraded. Need to get 6,715 kB of archives. After this operation, 28.1 MB of additional disk space will be used. # apt-get --no-install-recommends install amarok ... The following NEW packages will be installed: amarok amarok-common amarok-utils kate-data katepart kde-runtime kde-runtime-data kdelibs-bin kdelibs5-data kdelibs5-plugins kdoctools libattica0.4 libdbusmenu-qt2 libdlrestrictions1 libepub0 libfam0 libiodbc2 libkactivities6 libkatepartinterfaces4 libkcmutils4 libkde3support4 libkdeclarative5 libkdecore5 libkdesu5 libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4 libkfile4 libkhtml5 libkidletime4 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkpty4 libkrosscore4 libktexteditor4 libkxmlrpcclient4 liblastfm1 libloudmouth1-0 libnepomuk4 libnepomukcore4 libnepomukquery4a libnepomukutils4 libnl-route-3-200 libntrack-qt4-1 libntrack0 libphonon4 libplasma3 libpolkit-qt-1-1 libqca2 libqjson0 libqt4-opengl libqt4-qt3support libqtscript4-core libqtscript4-gui libqtscript4-network libqtscript4-sql libqtscript4-uitools libqtscript4-xml libsolid4 libsoprano4 libssh-4 libstreamanalyzer0 libstreams0 libtag-extras1 libthreadweaver4 libzip2 nepomuk-core-data nepomuk-core-runtime ntrack-module-libnl-0 oxygen-icon-theme phonon phonon-backend-vlc plasma-scriptengine-javascript shared-desktop-ontologies soprano-daemon 0 upgraded, 82 newly installed, 0 to remove and 19 not upgraded. Need to get 75.9 MB of archives. After this operation, 202 MB of additional disk space will be used. Gnumeric vs Rkward # apt-get --no-install-recommends install gnumeric gnumeric-plugins-extra ... 0 upgraded, 8 newly installed, 0 to remove and 19 not upgraded. Need to get 456 kB/7,289 kB of archives. After this operation, 34.0 MB of additional disk space will be used. # apt-get --no-install-recommends install rkward ... 0 upgraded, 70 newly installed, 0 to remove and 19 not upgraded. Need to get 61.1 MB of archives. After this operation, 143 MB of additional disk space will be used.
- dfc 13y agoI have no problem being the 15th person to say "Beets is awesome!" In addition to the quality of the program sampsyo is a great maintainer. Quick to comment on issues and is usually available on IRC. Beets + the archive.org API for the Etree music collection would be awesome. Tip: If you are about to import all of your music you and you have enough space you can save some of the tedium by doing a quiet import initially: 1. Optional: `$ cp -r ~/Music ~/ImportMusic ; mv ~/Music ~/Music.orig` 2. enable whatever plugins you want (atleast: chroma fromfilename fetchart) 3. Set up config directory: ~/Music import: move: yes quiet_fallback: skip log: ~/.beets/imported-beets.log 4. `$ beet import -q ~/ImportMusic` This will take a little while depending on how big your collection is. When that is finished the only things left in ImportMusic will be the things beets need some help identifying. This part requires time and a little input from you so plan on being near your $TERM 5. `$ beet import ~/ImportMusic` Keeping the backup copy of Music is probably not needed but I like to play it safe. tldr: No matter how you want to import do the quiet+skip import initially. ADDENDUM: A similar program for pdf/epub/mobi --boox-- would be awesome. If Calibre worked half as well and was developed by someone half as nice as sampsyo the UI would almost be tolerable.
- egeozcan 13y agoResponding to the addendum; does anyone know of a good "personal digital asset/content management" tool to store and organize this data as well? There is camlistore [0] but I think it's too low level for general use. Someone needs to build something on top of it. I want the ultimate collection management! =) [0]: https://camlistore.org/ https://camlistore.org/
- fortes 13y agoWould LOVE a beets for books!
- aidos 13y agoThis is great. It looks like just the tool I need to try to beat my broken iTunes collection back into shape - it was once perfect, but a burglary of my machine and backup drive (same location, stupid me) meant I had to scrabble together a messy version from various backups etc. iTunes is unusable for me due to the collection size so I mostly just use spotify instead of fighting with it. I tried a test on a single artist tonight (2pac) but ran into a bit of a roadblock. There's no 'merge' function. So if you have an incomplete album in the library and you import a directory that contains the rest of the tracks, your choices are to delete the incomplete one or to put the new tracks into their own album. This might sound like an edge case but if you have an album that's currently in 2 directories (cd1 and cd2) then you're fairly well screwed.
- dfc 13y agoYou need to give it a little more time. It does not sound like you have spent much time looking through the documentation. Dont forget to check out the open and closed issues for your hiccups. Its worth pointing out that its not a mind reader, you do have to put in a little effort for corner cases. I am not 100% sure what you mean about merge. You can just `cp LATEADDITIONS Music/artist/ablum` and then "reimport the album" with `beet import Music/Artist/Album`. As far as cd1/cd2 goes you are only "fairly well screwed" if you can not type `$ mv cd1/* cd2 ; beet import cd2`. I think there is another way to do this but I am not a beets guru. I seem to recall there is a discussion of this in one of the issues on github. But lets face it `mv CD1/* CD2/ ; beet import CD2` is not that difficult. If you have a big directory full of unsorted albums there is also this new gem: The importer has a new interactive option (*G* for "Group albums"), command-line flag (``--group-albums``), and config option (:ref:`group_albums`) that lets you split apart albums that are mixed together in a single directory. Thanks to geigerzaehler.
- aidos 13y agoI'm going to give it more time, I didn't mean to sound like I was giving up. I spent the last hour reading through the importer code to see how it might handle this case but there's really no way of doing it in the tool (there's an open issue for it [0] [1]). I used "fairly well screwed" in the context of trying to automate the cleanup of 60,000+ songs. One album isn't an issue - 10,000 or so where you need to keep dipping in and out of the tool to manually move stuff around isn't really ideal. Just to confirm, since you seem to have some experience - you can reimport an album to clean it up again (say after adding additional files) by calling import on a path in your library? So it's ok to mess with the files in the library and then fix the db later by importing? From what I saw in the code I didn't see anything that would handle removing / moving files, do you know if it handles those cases? Again, my language was probably a little strong, and mostly only applies to the more extreme situation I'm in. ps your other comment about doing the import in 2 steps seems like a bit of a life saving hint. Will definitely go that way when / if I commit to this. [0] https://code.google.com/p/beets/issues/detail?id=380 https://code.google.com/p/beets/issues/detail?id=380 [1] https://github.com/sampsyo/beets/issues/112 https://github.com/sampsyo/beets/issues/112
- encoderer 13y agoBeats Music sends C&D in 3...2...
- glomph 13y agoBeets predates beats. Not sure that matters though.
- jzelinskie 13y agoI've been tempted to try tools like these throughout the years, but honestly I've come to learn that nothing is black and white about tagging. I usually use the "Album Artist" field to organize music into logical collections that I want. If I took everything literally, I'd have to deal digging through "Various Artists" and other disagreements I have with established music databases.
- dfc 13y agoIt is important to note that beets never forces you to use default format. If you want it to use your metadata you can tell beets to import it as is. More importantly there are two plugins that look perfect for you: (in order of effort) Rewrite Plugin: The rewrite plugin lets you easily substitute values in your templates and path formats. Specifically, it is intended to let you canonicalize names such as artists: for example, perhaps you want albums from The Jimi Hendrix Experience to be sorted into the same folder as solo Hendrix albums.[^1] Inline Plugin: The inline plugin lets you use Python to customize your path formats. Using it, you can define template fields in your beets configuration file and refer to them from your template strings in the paths: section of the configuration file.[^2] [^1]: https://beets.readthedocs.org/en/v1.3.3/plugins/rewrite.html https://beets.readthedocs.org/en/v1.3.3/plugins/rewrite.html [^2]: https://beets.readthedocs.org/en/v1.3.3/plugins/inline.html https://beets.readthedocs.org/en/v1.3.3/plugins/inline.html
- maxerickson 13y agoIt's more important to note that you can tell it to not move files and to not edit the metadata stored in files. This makes it useful for playback and finding information without first having to trust it.
- abruzzi 13y agoAmen. When ripping all my CDs, I hand entered all my metadata. My biggest pet peeve is filling out the "composer" field correctly. If I sort by composer, I don't want to find Beethoven under "L".
- ndrake 13y agoWill it play nice with my iTunes library?
- nilved 13y agoProbably not. iTunes has its own sorting policy that may conflict with beets'. But you could still add them to the database without the sorting feature, if you just wanted to query files by tags.
- kraymer 13y agoI use beets as an importer (filename + id3 tags cleaning) and keep using iTunes for browsing/playing. I glue the two together by using importfeeds plugin + Hazel(http://www.noodlesoft.com/hazel http://www.noodlesoft.com/hazel) to trigger iTunes import. Should probably blog about my setup as it's not the simplest one but works great.
- shawnj 13y agoI'd love to see a blog about that!
- heywire 13y agoKind of off topic, but pianobar is a great commandline Pandora client, if you're into that sort of thing.
- jonalmeida 13y agoFYI, a neat existing command-line music player that's already on debian repositories (and I'm guessing others as well) is called `mocp`.
- dfc 13y agobeets is also in Debian: https://packages.debian.org/sid/beets https://packages.debian.org/sid/beets
- voltagex_ 13y agoI'm wondering if it's valid to file a bug that Debian's source for beets is in SVN whereas beets moved to Git, and could be handled with git-buildpackage now.
- dfc 13y agoThat is just for the ./debian/ package directory. I think it is up to the DD how they want to maintain the packaging files. The BPP[1] do not mention anything about matching uptreams choice of vcs. You could file asking to package the latest upstream and casually mention the discrepancy:) I have just been building beets with uupdate lately. Debian's package is five months behind upstream. [1] https://www.debian.org/doc/manuals/developers-reference/best-pkging-practices.html#bpp-vcs https://www.debian.org/doc/manuals/developers-reference/best...
- jdangu 13y agoWould be perfect for my raspberry pi. Anyone tested?
- nilved 13y agoFrom what I can see, it's just a Python script, so you should be able to use it anywhere there's a Python interpreter. It has some optional compiled dependencies for features like ReplayGain that may not work on ARM, however.
- samps 13y agoI've heard from lots of folks running beets on their Pi.
- weavie 13y agoI was going to ask the same thing. The pi really struggles with XBMC to the point where I've given up on it. A command line version I can control via ssh is just what it needs. It says you need an html5 browser to play your music. Is there a plugin that can just play the music directly, so I can play via ssh and not have to kick off vnc?
- apag 13y agoWhy would you need VNC? You only need a browser. On the machine on which you thought you were going to run the VNC client, you open the browser and go to beets’s web UI. Then you pick some music to play, and beets streams it to the browser, which plays it on that machine. If you actually want the Pi itself to be playing music, then you probably want not the beets web plugin but the BPD plugin, which emulates an MPD server. You can use any MPD client you want to control it – CLI on the Pi, one of the GUI apps over the network, whatever. No matter what, VNC doesn’t enter the picture.
- smgoller 13y agoDoes this deal with FLAC album images properly?
- jaseemabid 13y agoI've been using it for a year or so. Yet another happy customer and would totally recommend it.
- andrewflnr 13y agoThis sounds like one of those wonderful programs I only wish I had the wherewithal to write. Hopefully I'll get to try it this weekend.
- halfoot 13y agoI have been using this for a few months now. great work.
- NoahTheDuke 13y agoThis looks like a pretty sweet non-Windows solution to the lack of foobar2k. As I'm currently using Windows, though, I can't see myself changing over. Foobar2k is just too good. Anyone else have experience with both, and would like to share their experiences?
- nettletea 13y agoIt's a CLI python app, so I'd have though that it was Windows friendly. I spent days trying to organise my collection of music (and still haven't suceeded). It's in many formats. In the past I've stripped metadata and just relied on file names, and file structure. I've later re-added it, due to helping playback on some devices. Tagging generally annoys me, and doesn't bring me much. The thing I'd quite like is sleeve notes, and good track info, who wrote the song, which artists played on it etc. Anyway I have tried a mix of quodlibet/exfalso (with plugins), foobar2k(with wine), mp3tag, and shell scripts. Then I discovered beets, and thought wow that's great. Only to later forget about the application and return to the laborious task of sorting out my files. I rediscovered beets and tested it on a directory of music and was pretty impressed with the ease of it all and the results. Far easier than attempting it by hand. Having said that the bit that takes me the longest is gathering up and organising orphans. If they are albums, I have to get them into order, then try and locate the tags. Or pepper the files with enough clues, for a tagger. It's all a bit of a yawn fest. Which reminds me, I bothered to apply replay gain to most of my albums with foobar2k but that sometimes results with very quiet playback on some albums on one of my players at least. I then curse profusely, and just want to rip all of the metadata back out, or even just throw the lot away...
- johnward 13y agoAnyone know how I can install this without PIP? I just spent time getting rid of the multiple package managers I had because they were causing conflicts. Now I only use homebrew and have no interested in adding more.
- dewey 13y agohttp://beets.readthedocs.org/en/v1.3.3/guides/main.html http://beets.readthedocs.org/en/v1.3.3/guides/main.html "To install without pip, download beets from its PyPI page and run python setup.py install in the directory therein." - https://pypi.python.org/pypi/beets#downloads https://pypi.python.org/pypi/beets#downloads
- johnward 13y agoThanks. I made the mistake of assuming that the git read me "pip install beets" was an requirement because it said install and then read this. "You can install beets by typing pip install beets. Then check out the Getting Started guide."
- staticshock 13y agoSerious question: what conflicts were you getting between pip and homebrew?
- johnward 13y agoNot PIP specifically. I had homebrew and macports problems. I remember RVM was complaining about it. I didn't really use ports for anything so I just got rid of it. I don't really know much more than that.
- digitalsushi 13y agoI dont really count myself as a real developer, but I released a little thing I have been using on github last week: https://github.com/digitalsushi/osx-filesystem-tags-music-playlist https://github.com/digitalsushi/osx-filesystem-tags-music-pl... I am using the OS X 10.9 filesystem tags as playlist markers for my music - dirs or individual songs. I can just run my script and it will create m3u playlists off of all the tags I have applied. I really wish these tags worked in linux. I'm obviously on a mac, and it hurts my heart I can't use it 'where I come from'. Cause I find it ridiculously simple/useful.
- bonkabonka 13y agoMost often these days, distros ship with filesystem extended attributes enabled (though you might have to add the user_xattr flag to the mount options to be able to actually use them).
- noisy_boy 13y agoI can't find the config to make in-place auto-tagging and renaming for singletons. At the moment I'm setting move: yes, singleton: <path to some temp directory>, running an import with -s and then manually move the renamed tracks back to the original directory. Is there a simpler way?
- wernerb 13y agoThanks for the tip guys! One thing I found annoying was that it could not add replaygain for flac. To get around this, install metaflac and execute the following: find somealbum-with-cds -type f -name "*.flac" -print0 | xargs -0 metaflac --add-replay-gain Then import as normal and it will have replaygain included (and store the replaygain in the library).
- kurtschwanda 13y agoNobody likes beets, Dwight.