Beets Music Tagger Plugin for Unraid 5.x


Recommended Posts

 

Ok thanks, will be away for work for the next day or so, so may wait until you get to update.

 

Will try your edit tomorrow night.

 

Thanks

Updated plugin on GitHub to 1.4b.

 

Changed max field length for PATH_DEFAULT, PATH_SINGLETON, PATH_COMPILATION to 120 chars (from 60). 

Link to comment
  • Replies 77
  • Created
  • Last Reply

Top Posters In This Topic

  • 3 weeks later...

 

No sure if I am misunderstanding the way this works, but I have flac source files, that I want to copy tagged to -> /mnt/user/My Data/MusicTaggedflac

 

I have convert set to 32ok mp3 to here -> /mnt/user/My Data/MusicTaggedmp3

 

I was expecting my flac files to get tagged and placed in the flac directory above, while the flac files were also converted to mp3 and place in the mp3 directory too.

 

Have I misunderstood, as I import the files and it places the converted mp3's into -> /mnt/user/My Data/MusicTaggedflac  :o

 

 

Link to comment

 

No sure if I am misunderstanding the way this works, but I have flac source files, that I want to copy tagged to -> /mnt/user/My Data/MusicTaggedflac

 

I have convert set to 32ok mp3 to here -> /mnt/user/My Data/MusicTaggedmp3

 

I was expecting my flac files to get tagged and placed in the flac directory above, while the flac files were also converted to mp3 and place in the mp3 directory too.

 

Have I misunderstood, as I import the files and it places the converted mp3's into -> /mnt/user/My Data/MusicTaggedflac  :o

 

It's probably best if you have a look through the official beets documentation especially the convert plugin section.  Suspect this will answer your questions better than I can.  The plugin is just a pretty way of configuring the config.yaml file which beets relies on.  It might be that something is missing or needs tweaking to make it work the way you expect.  Once you've had a chance to look over the docs, let me know if there's anything which the plugin could do better.

 

 

Regards,

overbyrn

Link to comment

Hi there

 

I've read the docs before posting, as I wasn't sure whether I misunderstanding the action.

 

I found out that when convert is selected in the plugin, it converts and deletes the original files, while placing the newly converted files into the same directory as the original files.

 

Whereas, if I first tag the flac files and then run 'beet convert' then beet assumes the correct directory to create the converted files -> /mnt/user/My Data/MusicTaggedmp3 which it must be getting from your plugin setting that directory in the config file.

 

The options for convert are as follows;

 

Usage: beet convert [options]

 

Options:

  -h, --help            show this help message and exit

  -a, --album          choose albums instead of tracks

  -t THREADS, --threads=THREADS

                        change the number of threads,

                        defaults to maximum available processors

  -k, --keep-new        keep only the converted

                        and move the old files

  -d DEST, --dest=DEST  set the destination directory

 

So it 'seems' by the way it is working, is that if conversion is enabled in the plugin, it is somehow running the '-k' option by default, rather then converting and leaving the originals in place?

 

For people with a flac library and convert on the fly for iPod etc, then not having the 'k option enabled is preferred....

 

Regards

 

Edit: It would also be great (your time permitting) to have access to set the embedding of cover art on 'embed: true' and the smartplaylist plugin :) But I apprecaite I may be coming across as ungrateful! Thats not the intention, your plugin has introduced me to beet and I am very glad it did :)

Link to comment
  • 2 months later...

So it 'seems' by the way it is working, is that if conversion is enabled in the plugin, it is somehow running the '-k' option by default, rather then converting and leaving the originals in place?

 

For people with a flac library and convert on the fly for iPod etc, then not having the 'k option enabled is preferred....

 

Regards

 

Edit: It would also be great (your time permitting) to have access to set the embedding of cover art on 'embed: true' and the smartplaylist plugin :) But I apprecaite I may be coming across as ungrateful! Thats not the intention, your plugin has introduced me to beet and I am very glad it did :)

 

Very late to reply, but I will make the changes you recommend.  v1.3.1 introduced the option to convert between a number of formats and so now would probably be a good time for me to review the settings made available in the webgu, add in the necessary 'format' entry to the convert plugin and perhaps tinker with a few others.

 

Happy to hear from anyone as to whether any of the current settings need tweaking or what other options could be added.  For instance, is it worth enabling other plugins such as EchoNest Tempo Plugin to obtain and store the tracks tempo in BPM field, or newer options like the ability to write older ID3v2.3 tags instead of default ID3v2.4?

 

Link to comment

Hello mate!

 

Again, no criticisms from me, love all your plugins! One though, on the plugin side... instead of having to ask for you to re-write the plugin to include a specific beets plugin, possibly add a text field or the like so we can just add it from the unRAID WebGUI and then good to go?!

 

Just a thought, slightly hungover so it might not be the best one! :)

 

Alex

Link to comment

Hello mate!

 

Again, no criticisms from me, love all your plugins! One though, on the plugin side... instead of having to ask for you to re-write the plugin to include a specific beets plugin, possibly add a text field or the like so we can just add it from the unRAID WebGUI and then good to go?!

 

Just a thought, slightly hungover so it might not be the best one! :)

 

Alex

Don't forget you can also directly modify /boot/config/plugins/beets/config.yaml.  Config changes made to beets via the plugin webgui settings page only affects the respective entries in config.yaml.

 

So for example, if you wanted to customise your installation of beets by adding another plugin, you can add that entry to the config file;

 

eg.

before:

plugins: fetchart embedart convert scrub replaygain lastgenre chroma discogs

after adding "zero" plugin;

plugins: fetchart embedart convert scrub replaygain lastgenre chroma discogs zero

 

Then you'd need to add in the zero plugin specific config entries at the bottom of the file;

 

before:

<...>
replaygain:
    auto: yes

 

after;

 

<...>
replaygain:
    auto: yes

zero:
    fields: month day genre comments
    comments: [EAC, LAME, from.+collection, 'ripped by']
    genre: [rnb, 'power metal']

 

Any changes you make to the plugin from the gui setting page wont modify the "plugins:" config line or other config entries that it doesn't know about.

 

The above example probably holds true for anything that doesn't have a new dependency.  For instance, in the case of EchoNest plugin, it needs pyechonest python module, so a change would be needed to the base plugin code so that this is also brought in during installation.  I think this would make it pretty hard to modify the gui by adding a text field as it wouldn't account for other changes which might be needed.

 

 

 

Regards,

overbyrn

 

Link to comment
  • 4 weeks later...

Great plugin.

 

Unfortunately it does not work with python 2.6.6.

I had to uninstall 2.7.3 as it broke functionality in other plugins.

 

Is it possible to compile this with Python 2.6.6?

I'm confused.  It sounds as if you are saying that you think beets uses python 2.7.x?  The beets plugin uses python 2.6.6.  If you have python 2.7.3 installing and breaking other plugins, then it's coming in from somewhere else.

Link to comment

I'm having the same issue,

I think what has happened is

Beets was updated, and some code in beets was modified to only work with python 2.7 (although on the beets site they state that it will work with python 2.6)

The team at beets must yet to have realised this error.

 

I installed beets and python 2.7 on my windows machine for now. until a fix.

 

Cheers,

Brett

Link to comment

I'm having the same issue,

I think what has happened is

Beets was updated, and some code in beets was modified to only work with python 2.7 (although on the beets site they state that it will work with python 2.6)

The team at beets must yet to have realised this error.

 

I installed beets and python 2.7 on my windows machine for now. until a fix.

 

Cheers,

Brett

Ahh, that makes more sense.  Just had a tinker with a virgin dev unraid VM and indeed beets barfed upon import.  No expert but the python traceback seemed to have an issue within the lastgenre plugin.  On a whim I set "Use LastFM Genre" to no and re-ran.  This time the import worked okay.

 

Might be a problem with last genre plugin.

 

 

Link to comment
  • 2 weeks later...

Tried searching and i know it's a dumb question, but what do you substitute for spaces in a folder name on the command line?

 

ex. "/mnt/user/music/The Black Keys" stops after "The"

In Linux, you can often just quote the whole thing. In your example you surrounded it with quotes but did you really try it that way?

 

Another way to do it is to just put a backslash \ before any special characters so your example would be

 

/mnt/user/music/The\ Black\ Keys

Link to comment

 

In Linux, you can often just quote the whole thing. In your example you surrounded it with quotes but did you really try it that way?

 

Another way to do it is to just put a backslash \ before any special characters so your example would be

 

/mnt/user/music/The\ Black\ Keys

 

double quotes worked perfectly. think I tried everything but those. Thank you

Link to comment
  • 3 weeks later...

So it 'seems' by the way it is working, is that if conversion is enabled in the plugin, it is somehow running the '-k' option by default, rather then converting and leaving the originals in place?

 

For people with a flac library and convert on the fly for iPod etc, then not having the 'k option enabled is preferred....

 

Regards

 

Edit: It would also be great (your time permitting) to have access to set the embedding of cover art on 'embed: true' and the smartplaylist plugin :) But I apprecaite I may be coming across as ungrateful! Thats not the intention, your plugin has introduced me to beet and I am very glad it did :)

 

Very late to reply, but I will make the changes you recommend.  v1.3.1 introduced the option to convert between a number of formats and so now would probably be a good time for me to review the settings made available in the webgu, add in the necessary 'format' entry to the convert plugin and perhaps tinker with a few others.

 

Happy to hear from anyone as to whether any of the current settings need tweaking or what other options could be added.  For instance, is it worth enabling other plugins such as EchoNest Tempo Plugin to obtain and store the tracks tempo in BPM field, or newer options like the ability to write older ID3v2.3 tags instead of default ID3v2.4?

 

Thats great news, thanks for your efforts and time!

 

I also wondered if changing the source file to the github latest version would cause any issues with your plugin?

 

I'm having issues with 1.3.2 beets and the dev has fixed my bug, but I cannot try the latest version, while waiting for him to release 1.3.3 :(

 

The link is -> pip install https://github.com/sampsyo/beets/tarball/master.

 

Info -> https://beets.readthedocs.org/en/v1.3.2/faq.html#run-the-latest-source-version-of-beets

Link to comment
  • 2 months later...

Hi, I've recently grabbed this plg and tried to install.

All looks good inthe web gui but I seem to have problems with setuptools, here's output from a manual installplg:

installplg /boot/config/plugins/beets_overbyrn.plg
installing plugin: beets_overbyrn
file /tmp/plugin-prepare: successfully wrote INLINE file contents
  /bin/bash /tmp/plugin-prepare ... success
file /boot/config/plugins/beets/beets.png: already exists
file /boot/config/plugins/images/device_status.png: already exists
file /boot/config/plugins/images/new_config.png: already exists
file /boot/config/plugins/images/information.png: already exists
file /boot/packages/python-2.6.6-i486-1.txz: already exists
  upgradepkg --install-new /boot/packages/python-2.6.6-i486-1.txz ...
+==============================================================================
| Skipping package python-2.6.6-i486-1 (already installed)
+==============================================================================


success
file /boot/packages/sqlite-3.7.14.1-i486-1_slack14.0.txz: already exists
  upgradepkg --install-new /boot/packages/sqlite-3.7.14.1-i486-1_slack14.0.txz ...
+==============================================================================
| Skipping package sqlite-3.7.14.1-i486-1_slack14.0 (already installed)
+==============================================================================


success
file /boot/packages/mp3gain-1.4.6-i486-3sl.txz: already exists
  upgradepkg --install-new /boot/packages/mp3gain-1.4.6-i486-3sl.txz ...
+==============================================================================
| Skipping package mp3gain-1.4.6-i486-3sl (already installed)
+==============================================================================


success
file /boot/config/plugins/beets/ffmpeg.static.32bit.2013-04-06.tar.gz: already exists
file /boot/config/plugins/beets/setuptools-0.9.8-py2.6.egg: already exists
file /boot/config/plugins/beets/pip-1.4.tar.gz: already exists
file /boot/config/plugins/beets/fpcalc: already exists
file /tmp/plugin-cleanup: successfully wrote INLINE file contents
  /bin/bash /tmp/plugin-cleanup ... success
file /boot/config/plugins/beets/beets.sh: already exists
file /boot/config/plugins/beets/config.yaml: already exists
file /boot/config/plugins/beets/beets.cfg: already exists
file /tmp/plugin-chkcfg: successfully wrote INLINE file contents
  /bin/bash /tmp/plugin-chkcfg ... success
file /etc/rc.d/rc.beets: successfully wrote INLINE file contents
  successfully changed file mode
file /usr/local/emhttp/plugins/beets/beets.png: successfully copied LOCAL file
file /usr/local/emhttp/plugins/beets/device_status.png: successfully copied LOCAL file
file /usr/local/emhttp/plugins/beets/new_config.png: successfully copied LOCAL file
file /usr/local/emhttp/plugins/beets/information.png: successfully copied LOCAL file
file /usr/local/emhttp/plugins/beets/beets.php: successfully wrote INLINE file contents
file /usr/local/emhttp/plugins/beets/beetsctl.php: successfully wrote INLINE file contents
file /tmp/plugin-install: successfully wrote INLINE file contents
  /bin/bash /tmp/plugin-install ... Processing setuptools-0.9.8-py2.6.egg
Removing /usr/lib/python2.6/site-packages/setuptools-0.9.8-py2.6.egg
Copying setuptools-0.9.8-py2.6.egg to /usr/lib/python2.6/site-packages
setuptools 0.9.8 is already the active version in easy-install.pth
Installing easy_install script to /usr/bin
Installing easy_install-2.6 script to /usr/bin

Installed /usr/lib/python2.6/site-packages/setuptools-0.9.8-py2.6.egg
Processing dependencies for setuptools==0.9.8
Finished processing dependencies for setuptools==0.9.8
pip-1.4/
pip-1.4/AUTHORS.txt
pip-1.4/CHANGES.txt
pip-1.4/docs/
pip-1.4/docs/configuration.rst
pip-1.4/docs/cookbook.rst
pip-1.4/docs/development.rst
pip-1.4/docs/index.rst
pip-1.4/docs/installing.rst
pip-1.4/docs/logic.rst
pip-1.4/docs/news.rst
pip-1.4/docs/other-tools.rst
pip-1.4/docs/quickstart.rst
pip-1.4/docs/usage.rst
pip-1.4/LICENSE.txt
pip-1.4/MANIFEST.in
pip-1.4/pip/
pip-1.4/pip/__init__.py
pip-1.4/pip/__main__.py
pip-1.4/pip/backwardcompat/
pip-1.4/pip/backwardcompat/__init__.py
pip-1.4/pip/backwardcompat/ssl_match_hostname.py
pip-1.4/pip/basecommand.py
pip-1.4/pip/baseparser.py
pip-1.4/pip/cacert.pem
pip-1.4/pip/cmdoptions.py
pip-1.4/pip/commands/
pip-1.4/pip/commands/__init__.py
pip-1.4/pip/commands/bundle.py
pip-1.4/pip/commands/completion.py
pip-1.4/pip/commands/freeze.py
pip-1.4/pip/commands/help.py
pip-1.4/pip/commands/install.py
pip-1.4/pip/commands/list.py
pip-1.4/pip/commands/search.py
pip-1.4/pip/commands/show.py
pip-1.4/pip/commands/uninstall.py
pip-1.4/pip/commands/unzip.py
pip-1.4/pip/commands/wheel.py
pip-1.4/pip/commands/zip.py
pip-1.4/pip/download.py
pip-1.4/pip/exceptions.py
pip-1.4/pip/index.py
pip-1.4/pip/locations.py
pip-1.4/pip/log.py
pip-1.4/pip/pep425tags.py
pip-1.4/pip/req.py
pip-1.4/pip/runner.py
pip-1.4/pip/status_codes.py
pip-1.4/pip/util.py
pip-1.4/pip/vcs/
pip-1.4/pip/vcs/__init__.py
pip-1.4/pip/vcs/bazaar.py
pip-1.4/pip/vcs/git.py
pip-1.4/pip/vcs/mercurial.py
pip-1.4/pip/vcs/subversion.py
pip-1.4/pip/vendor/
pip-1.4/pip/vendor/__init__.py
pip-1.4/pip/vendor/distlib/
pip-1.4/pip/vendor/distlib/__init__.py
pip-1.4/pip/vendor/distlib/_backport/
pip-1.4/pip/vendor/distlib/_backport/__init__.py
pip-1.4/pip/vendor/distlib/_backport/misc.py
pip-1.4/pip/vendor/distlib/_backport/shutil.py
pip-1.4/pip/vendor/distlib/_backport/sysconfig.py
pip-1.4/pip/vendor/distlib/_backport/tarfile.py
pip-1.4/pip/vendor/distlib/compat.py
pip-1.4/pip/vendor/distlib/database.py
pip-1.4/pip/vendor/distlib/index.py
pip-1.4/pip/vendor/distlib/locators.py
pip-1.4/pip/vendor/distlib/manifest.py
pip-1.4/pip/vendor/distlib/markers.py
pip-1.4/pip/vendor/distlib/metadata.py
pip-1.4/pip/vendor/distlib/resources.py
pip-1.4/pip/vendor/distlib/scripts.py
pip-1.4/pip/vendor/distlib/util.py
pip-1.4/pip/vendor/distlib/version.py
pip-1.4/pip/vendor/distlib/wheel.py
pip-1.4/pip/vendor/html5lib/
pip-1.4/pip/vendor/html5lib/__init__.py
pip-1.4/pip/vendor/html5lib/constants.py
pip-1.4/pip/vendor/html5lib/filters/
pip-1.4/pip/vendor/html5lib/filters/__init__.py
pip-1.4/pip/vendor/html5lib/filters/_base.py
pip-1.4/pip/vendor/html5lib/filters/alphabeticalattributes.py
pip-1.4/pip/vendor/html5lib/filters/inject_meta_charset.py
pip-1.4/pip/vendor/html5lib/filters/lint.py
pip-1.4/pip/vendor/html5lib/filters/optionaltags.py
pip-1.4/pip/vendor/html5lib/filters/sanitizer.py
pip-1.4/pip/vendor/html5lib/filters/whitespace.py
pip-1.4/pip/vendor/html5lib/html5parser.py
pip-1.4/pip/vendor/html5lib/ihatexml.py
pip-1.4/pip/vendor/html5lib/inputstream.py
pip-1.4/pip/vendor/html5lib/sanitizer.py
pip-1.4/pip/vendor/html5lib/serializer/
pip-1.4/pip/vendor/html5lib/serializer/__init__.py
pip-1.4/pip/vendor/html5lib/serializer/htmlserializer.py
pip-1.4/pip/vendor/html5lib/tokenizer.py
pip-1.4/pip/vendor/html5lib/treebuilders/
pip-1.4/pip/vendor/html5lib/treebuilders/__init__.py
pip-1.4/pip/vendor/html5lib/treebuilders/_base.py
pip-1.4/pip/vendor/html5lib/treebuilders/dom.py
pip-1.4/pip/vendor/html5lib/treebuilders/etree.py
pip-1.4/pip/vendor/html5lib/treebuilders/etree_lxml.py
pip-1.4/pip/vendor/html5lib/treewalkers/
pip-1.4/pip/vendor/html5lib/treewalkers/__init__.py
pip-1.4/pip/vendor/html5lib/treewalkers/_base.py
pip-1.4/pip/vendor/html5lib/treewalkers/dom.py
pip-1.4/pip/vendor/html5lib/treewalkers/etree.py
pip-1.4/pip/vendor/html5lib/treewalkers/genshistream.py
pip-1.4/pip/vendor/html5lib/treewalkers/lxmletree.py
pip-1.4/pip/vendor/html5lib/treewalkers/pulldom.py
pip-1.4/pip/vendor/html5lib/trie/
pip-1.4/pip/vendor/html5lib/trie/__init__.py
pip-1.4/pip/vendor/html5lib/trie/_base.py
pip-1.4/pip/vendor/html5lib/trie/datrie.py
pip-1.4/pip/vendor/html5lib/trie/py.py
pip-1.4/pip/vendor/html5lib/utils.py
pip-1.4/pip/vendor/six.py
pip-1.4/pip/wheel.py
pip-1.4/pip.egg-info/
pip-1.4/pip.egg-info/dependency_links.txt
pip-1.4/pip.egg-info/entry_points.txt
pip-1.4/pip.egg-info/not-zip-safe
pip-1.4/pip.egg-info/PKG-INFO
pip-1.4/pip.egg-info/requires.txt
pip-1.4/pip.egg-info/SOURCES.txt
pip-1.4/pip.egg-info/top_level.txt
pip-1.4/PKG-INFO
pip-1.4/PROJECT.txt
pip-1.4/README.rst
pip-1.4/setup.cfg
pip-1.4/setup.py
Traceback (most recent call last):
  File "setup.py", line 5, in <module>
    from setuptools import setup, find_packages
ImportError: No module named setuptools
/tmp/plugin-install: line 13: pip: command not found
/tmp/plugin-install: line 16: pip: command not found
/tmp/plugin-install: line 19: pip: command not found
/tmp/plugin-install: line 22: pip: command not found
ffmpeg
success
file /usr/local/emhttp/plugins/beets/beets.page: successfully wrote INLINE file contents
file /var/log/plugins/beets: successfully wrote INLINE file contents
file /tmp/plugin-development: successfully wrote INLINE file contents
  /bin/bash /tmp/plugin-development ... success
plugin successfully installed

 

I have tried performing the steps from the plg manually and while setuptools' egg file is there and no errors are returned when I run it, I can't install PIP..

 

Any tips greatfully received, I'm running beets remotely at the moment and while it's working perfectly, it' a bit sluggish :(

 

Unraid 5.0.5, beets_overbyrn.plg v.1.5

Link to comment
  • 4 months later...
Guest
This topic is now closed to further replies.