beetbox / beets

music library manager and MusicBrainz tagger
http://beets.io/
MIT License
12.89k stars 1.82k forks source link

telegram bot #1922

Closed HappyWheels closed 8 years ago

HappyWheels commented 8 years ago

1921

feature request

Would love to see a Telegram bot plugin for interacting with beets through the Telegram messaging app. It's beyond my knowledge to implement, but I could see it as a great way for importing and updating the beets library on a remote machine, with the bot just relaying between the beets cli and user. It would be quite useful in an automated type set-up, where a folder that gets new music starts a beet import automatically and the telegram bot would message you with the result or output, you can then reply with a message dictating the action to take.

The bots can even have custom keyboards (user selected replies,) so after the bot messages you with the results of an import command for example, you can simply select a predefined reply as you would for the cli, like 'Use as is.' This would be passed to beets, and again any output sent back to you as a message.

The bot could act as just a message middle man between the cli and user, and perhaps in conjunction with the Web plugin there might be further scope to allow for requesting and messaging of music files from the beets library.

While it's probably only got appeal to users of telegram, I think it would be nice way to use beets without having to use/set-up a remote terminal connection, perfect for on the go library management.

Thanks for making such an awesome program, and all the effort in maintaining and building upon it, amazing stuff!

Aaron

sampsyo commented 8 years ago

Interesting! I'm not familiar with Telegram, but what you're describing probably requires similar refactoring to the proposed web-based GUI for the importer. Maybe it would be worth digging up those tickets and trying to collaborate?

ab623 commented 8 years ago

Ideally the best way to go about implementing this, and the way I would like to see beets going is to run beats in a deamonised mode. Running beets in a beet -d mode will starts the beets server. This will in fact also start a number of processes such as a task queue. This way when running a beet import or beet fetchart each album could be run as a separate task added to the queue.

This way beets can background process, and once a task is completed a number of "post task actions" could happen, e.g. sending a message to IRC, Slack, or Telegram. In the case of an exception, this could be raised in a task and handled later without holding up the rest of the task queue.

In addition the queue could be queried seperately by other processes and be monitored from a web interface. As all the interface has to do is selection actions and queue up fro background processing.

ghost commented 8 years ago

it'd be cool if beets had a dbus interface (and even worked with the mpris protocol), then you could script all those things, without prescribing a particular programming langauge

sampsyo commented 8 years ago

Yeah! This is actually almost exactly what's been proposed in the past, namely in #1375 and on the wiki page linked therein. The idea there was to support ordinary GUIs, but exactly the same machinery would be useful for a chatbot interface.

Maybe we should move the discussion there?