Basta pressionar "a" em ncmpcpp para exibir uma tela onde você pode selecionar uma lista de reprodução para adicionar o item atualmente em reprodução (ou selecionado).
Eu costumava fazer isso com spotify. Eu gosto de ter listas de reprodução específicas de tópicos ou climas, como "academia" ou "estudo". Então, ao ouvir músicas aleatórias e encontrar uma música que eu acho que se encaixaria em uma dessas playlists, eu poderia pedir para enviar a música para uma playlist específica.
Tanto quanto eu posso dizer, o mpd só me permite editar a lista de reprodução "atual", que alguns outros chamam de "fila", e potencialmente sobrescrever uma lista existente ao salvá-la. Então eu poderia "cortar" a música atual, "adicionar" a lista de reprodução necessária e "salvar" a lista de reprodução. Mas desta forma eu perdi qualquer playlist que eu estava ouvindo antes; e gostaria de continuar a ouvi-lo.
Posso emular meu fluxo de trabalho spotify-ish com o mpd de alguma forma?
Isso adicionará a música atualmente sendo reproduzida a uma lista de reprodução definida no código. Requer o libmpdclient.
Outras melhorias incluem a permissão de argumentos e / ou um arquivo de configuração para host, porta, passagem, playlist. doc do libmpdclient é seu amigo.
#include <stdio.h>
#include <mpd/client.h>
//D(x) function for debug messages
//#define DEBUG
#ifdef DEBUG
#define D(x) do { x; } while(0)
#else
#define D(x) do { } while(0)
#endif
#define HOST "YOUR_HOSTNAME"
#define PORT YOUR_PORTNUMBER //usually it's 6600
#define PASS "YOUR_PASSWORD" //comment out if no password
#define PLAYLIST "PLAYLIST_NAME_TO_ADD_CURRENT_SONG_TO"
struct mpd_connection* conn(){
D(printf("%s %s\n","Connecting to",HOST));
const char* host = HOST;
unsigned port = PORT;
struct mpd_connection* c = mpd_connection_new(host,port,0);
enum mpd_error err = mpd_connection_get_error(c);
if(err != 0){
printf("Error code: %u. View error codes here: https://www.musicpd.org/doc/libmpdclient/error_8h.html\n",err);
return 0;
}
#ifdef PASS
const char* pass = PASS;
if(mpd_run_password(c,pass) == false){
printf("%s\n","Bad password");
return 0;
}
#endif
D(printf("%s %s\n","Connected to",HOST));
return c;
}
int main(){
struct mpd_connection* c = conn();
if(c == 0) return -1;
struct mpd_song* curr = mpd_run_current_song(c);
const char* curr_uri = mpd_song_get_uri(curr);
D(printf("Currently playing: %s\n",curr_uri));
if(mpd_run_playlist_add(c,PLAYLIST,curr_uri)){
printf("%s %s %s %s\n","Added",curr_uri,"to playlist",PLAYLIST);
}
else{
printf("%s\n","Some error");
return -1;
}
return 0;
}
Eu coloquei algumas verificações e um pouco de depuração também; faça com o código que você quiser.
Tags mpd