google-code-export / beets

Automatically exported from code.google.com/p/beets
MIT License
0 stars 0 forks source link

mpdupdate: Run on all metadata changes, not just import #508

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
I just installed beets on an Ubuntu system (yaVDR) (via pip install beets)and 
wanted to use the MPDUpdate Plugin, but it doesn’t update anything. Here is 
my config:

[beets]
directory: /home/media/Musik/Library
library: /home/media/Musik/musiclibrary.blb
#import_copy: no
plugins = web mpdupdate

[mpdupdate]
host = localhost
port = 6600
user = klodeckl
password =

[paths]
default: $albumartist/$album/$artist %if{$track, - $track - ,- }$title
singleton: Non-Album/$artist/$title
comp: Compilations/$album/$track title

Original issue reported on code.google.com by bernhard...@googlemail.com on 26 Jan 2013 at 1:00

GoogleCodeExporter commented 9 years ago
Have you tried tapping your local traffic (e.g., using tcpdump/tcpflow) to make 
sure the message is being sent? Or, alternatively, enabling verbosity in MPD to 
see if it gets the message? It's possible the problem is on MPD's side.

Original comment by adrian.sampson on 26 Jan 2013 at 2:11

GoogleCodeExporter commented 9 years ago
I just turned on verbose logging, but there is nothing interesting regarding 
beets in the output (tail -f). 
Jan 26 03:22 : client: [0] process command "status"
Jan 26 03:22 : client: [0] command returned 0
Jan 26 03:22 : client: [0] process command "idle"
Jan 26 03:22 : client: [0] command returned 1

And I tried tcpdump port 6600, but only IP6 messages appeared. So I think the 
command will not get sent to MPD. I also tried not to set user and pass in the 
beets config (and no pass in MPD config), no change.

I test it by using
beet modify "4 Chords" artist="The Axis of Awesome1"
and 
beet modify "4 Chords" artist="The Axis of Awesome"

In this case I think the MPD database should be updated.

What else can I check?

Original comment by bernhard...@googlemail.com on 26 Jan 2013 at 2:29

GoogleCodeExporter commented 9 years ago
I also tried tcpdump -i lo, but no message. Also I just disabled IPV6 (but it 
might have nothing to do with the issue).

Original comment by bernhard...@googlemail.com on 26 Jan 2013 at 3:04

GoogleCodeExporter commented 9 years ago
The actual config is:

[beets]
directory: /home/media/Musik/Library
library: /home/media/Musik/musiclibrary.blb
#import_copy: no
plugins = web mpdupdate rdm info

[mpdupdate]
host = localhost
port = 6600

[paths]
default: $albumartist/$album/$artist %if{$track, - $track - ,- }$title
singleton: Non-Album/$artist/$title
comp: Compilations/$album/$track title

Original comment by bernhard...@googlemail.com on 26 Jan 2013 at 3:06

GoogleCodeExporter commented 9 years ago
Aha, thanks for clarifying! I should have mentioned that the plugin currently 
only runs after imports -- not in other commands that modify the library. (It 
was written before the modify command, for example.)

This should be fixed, but I currently don't exactly know the best way to do so. 
For example, it would be overkill to rescan the library for *every* modified 
item. And it would be messy to add new hooks for every UI command. Any ideas 
about how to do this cleanly? I'll continue to think about it too.

Original comment by adrian.sampson on 26 Jan 2013 at 3:20

GoogleCodeExporter commented 9 years ago
I just checked out I had a conflict, I had beets installed through apt-get and 
pip. Now I only have it installed only via apt-get (not the newest version but 
I prefer apt). Now I can see 
Updating MPD database...
... updated.
but as you mentioned it is not implemented yet. 

To solve it, how about giving the update command the path of the files which 
should be updated instead of updating everything? E.g. in Theremin I can choose 
Edit -> Update Database -> Selective and then choose the folder which should 
get updated. So there can be a path to update and not everything (passing the 
directories as variables in Python?). But I think you already do that. I’m 
sorry I can not help directly because I have no skills in Python). 
Another way to solve it could be to directly use the mpd database instead of 
having an own database. Would not be so simple I think.

The next thing is that the .m3u playlists should also get updated. Maybe the 
plugin could parse all m3u files and if the file is present in the list it 
should change the path.

I also tried bpd, but I didn’t get it to work. I also think it is better to 
just have an adapter (the mpdupdater plugin) instead of having an own player 
(the mpd has much more functionality and rebuilding or backporting it to bpd 
could cause problems and is more time consuming). Maybe the two projects could 
be merged in the future? I love mpd ;-)

GN8

Original comment by bernhard...@googlemail.com on 26 Jan 2013 at 3:42

GoogleCodeExporter commented 9 years ago
Thanks for all the ideas. I'll continue to consider the simplest way to ensure 
that MPD is updated if any tags change.

Original comment by adrian.sampson on 26 Jan 2013 at 6:29

GoogleCodeExporter commented 9 years ago
Fixed by @dangmai on GitHub.
https://github.com/sampsyo/beets/pull/85

Original comment by adrian.sampson on 1 Feb 2013 at 12:36