Merge branch 'master' of https://github.com/lesderid/ympd into lesderid-master

This commit is contained in:
Andrew Karpow 2018-01-22 04:58:17 +01:00
commit ceee8bd90a
8 changed files with 64 additions and 18 deletions

View File

@ -28,12 +28,13 @@ Run flags
```
Usage: ./ympd [OPTION]...
-h, --host <host> connect to mpd at host [localhost]
-p, --port <port> connect to mpd at port [6600]
-w, --webport [ip:]<port> listen interface/port for webserver [8080]
-u, --user <username> drop priviliges to user after socket bind
-V, --version get version
--help this help
-h, --host <host> connect to mpd at host [localhost]
-p, --port <port> connect to mpd at port [6600]
-w, --webport [ip:]<port> listen interface/port for webserver [8080]
-d, --dirbletoken <apitoken> Dirble API token
-u, --user <username> drop priviliges to user after socket bind
-V, --version get version
--help this help
```
SSL Support

View File

@ -24,6 +24,7 @@ YMPD_USER=nobody
MPD_HOST=localhost
MPD_PORT=6600
WEB_PORT=8080
DIRBLE_API_TOKEN=2e223c9909593b94fc6577361a
# Exit if the package is not installed
@ -35,7 +36,7 @@ WEB_PORT=8080
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
DAEMON_OPT="--user $YMPD_USER --mpdpass '$MPD_PASSWORD' --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT"
DAEMON_OPT="--user $YMPD_USER --mpdpass '$MPD_PASSWORD' --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT --dirbletoken $DIRBLE_API_TOKEN"
do_start()
{

View File

@ -3,3 +3,4 @@ MPD_PORT=6600
MPD_PASSWORD=
WEB_PORT=8080
YMPD_USER=nobody
DIRBLE_API_TOKEN=2e223c9909593b94fc6577361a

View File

@ -8,8 +8,9 @@ Environment=MPD_PORT=6600
Environment=MPD_PASSWORD=
Environment=WEB_PORT=8080
Environment=YMPD_USER=nobody
Environment=DIRBLE_API_TOKEN=2e223c9909593b94fc6577361a
EnvironmentFile=/etc/default/ympd
ExecStart=/usr/bin/ympd --user $YMPD_USER --mpdpass "$MPD_PASSWORD" --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT
ExecStart=/usr/bin/ympd --user $YMPD_USER --mpdpass "$MPD_PASSWORD" --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT --dirbletoken $DIRBLE_API_TOKE
Type=simple
[Install]

View File

@ -1,6 +1,6 @@
/* ympd
(c) 2013-2014 Andrew Karpow <andy@ndyk.de>
This project's homepage is: http://www.ympd.org
This project's homepage is: https://www.ympd.org
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -30,6 +30,8 @@ var dirble_catid = "";
var dirble_page = 1;
var isTouch = Modernizr.touch ? 1 : 0;
var filter = undefined;
var dirble_api_token = "";
var dirble_stations = false;
var app = $.sammy(function() {
@ -130,7 +132,13 @@ var app = $.sammy(function() {
dirble_catid = this.params['splat'][0];
dirble_page = this.params['splat'][1];
dirble_load_stations();
dirble_stations = true;
if(dirble_api_token) {
dirble_load_stations();
} else {
getDirbleApiToken();
}
});
@ -147,7 +155,13 @@ var app = $.sammy(function() {
$('#panel-heading').text("Dirble");
$('#dirble').addClass('active');
dirble_load_categories();
dirble_stations = false;
if(dirble_api_token) {
dirble_load_categories();
} else {
getDirbleApiToken();
}
});
this.get("/", function(context) {
@ -546,6 +560,15 @@ function webSocketConnect() {
if(obj.data.passwort_set)
$('#mpd_password_set').removeClass('hide');
break;
case "dirbleapitoken":
dirble_api_token = obj.data;
if(dirble_stations) {
dirble_load_stations();
} else {
dirble_load_categories();
}
break;
case "error":
$('.top-right').notify({
message:{text: obj.data},
@ -748,6 +771,10 @@ function getHost() {
$('#mpd_pw_con').keypress(onEnter);
}
function getDirbleApiToken() {
socket.send('MPD_API_GET_DIRBLEAPITOKEN');
}
$('#search').submit(function () {
app.setLocation("#/search/"+$('#search > div > input').val());
$('#wait').modal('show');
@ -880,7 +907,7 @@ function dirble_load_categories() {
dirble_page = 1;
$.getJSON( "http://api.dirble.com/v2/categories?token=2e223c9909593b94fc6577361a", function( data ) {
$.getJSON( "https://api.dirble.com/v2/categories?token=" + dirble_api_token, function( data ) {
$('#dirble_loading').addClass('hide');
@ -928,7 +955,7 @@ function dirble_load_categories() {
function dirble_load_stations() {
$.getJSON( "http://api.dirble.com/v2/category/"+dirble_catid+"/stations?page="+dirble_page+"&per_page=20&token=2e223c9909593b94fc6577361a", function( data ) {
$.getJSON( "https://api.dirble.com/v2/category/"+dirble_catid+"/stations?page="+dirble_page+"&per_page=20&token=" + dirble_api_token, function( data ) {
$('#dirble_loading').addClass('hide');
if (data.length == 20) $('#next').removeClass('hide');
@ -955,7 +982,7 @@ function dirble_load_stations() {
click: function() {
var _this = $(this);
$.getJSON( "http://api.dirble.com/v2/station/"+$(this).attr("radioid")+"?token=2e223c9909593b94fc6577361a", function( data ) {
$.getJSON( "https://api.dirble.com/v2/station/"+$(this).attr("radioid")+"?token=" + dirble_api_token, function( data ) {
socket.send("MPD_API_ADD_TRACK," + data.streams[0].stream);
$('.top-right').notify({
@ -973,7 +1000,7 @@ function dirble_load_stations() {
"<span class=\"glyphicon glyphicon-play\"></span></a>").find('a').click(function(e) {
e.stopPropagation();
$.getJSON( "http://api.dirble.com/v2/station/"+_this.attr("radioid")+"?token=2e223c9909593b94fc6577361a", function( data ) {
$.getJSON( "https://api.dirble.com/v2/station/"+_this.attr("radioid")+"?token=" + dirble_api_token, function( data ) {
socket.send("MPD_API_ADD_PLAY_TRACK," + data.streams[0].stream);
$('.top-right').notify({
@ -994,7 +1021,7 @@ function dirble_load_stations() {
click: function() {
var _this = $(this);
$.getJSON( "http://api.dirble.com/v2/station/"+$(this).attr("radioid")+"?token=2e223c9909593b94fc6577361a", function( data ) {
$.getJSON( "https://api.dirble.com/v2/station/"+$(this).attr("radioid")+"?token=" + dirble_api_token, function( data ) {
socket.send("MPD_API_ADD_TRACK," + data.streams[0].stream);
$('.top-right').notify({
@ -1012,7 +1039,7 @@ function dirble_load_stations() {
"<span class=\"glyphicon glyphicon-play\"></span></a>").find('a').click(function(e) {
e.stopPropagation();
$.getJSON( "http://api.dirble.com/v2/station/"+_this.attr("radioid")+"?token=2e223c9909593b94fc6577361a", function( data ) {
$.getJSON( "https://api.dirble.com/v2/station/"+_this.attr("radioid")+"?token=" + dirble_api_token, function( data ) {
socket.send("MPD_API_ADD_PLAY_TRACK," + data.streams[0].stream);
$('.top-right').notify({

View File

@ -64,7 +64,8 @@ int callback_mpd(struct mg_connection *c)
return MG_TRUE;
if(mpd.conn_state != MPD_CONNECTED && cmd_id != MPD_API_SET_MPDHOST &&
cmd_id != MPD_API_GET_MPDHOST && cmd_id != MPD_API_SET_MPDPASS)
cmd_id != MPD_API_GET_MPDHOST && cmd_id != MPD_API_SET_MPDPASS &&
cmd_id != MPD_API_GET_DIRBLEAPITOKEN)
return MG_TRUE;
switch(cmd_id)
@ -290,6 +291,10 @@ out_host_change:
"{\"host\" : \"%s\", \"port\": \"%d\", \"passwort_set\": %s}"
"}", mpd.host, mpd.port, mpd.password ? "true" : "false");
break;
case MPD_API_GET_DIRBLEAPITOKEN:
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\":\"dirbleapitoken\", \""
"data\": \"%s\"}", dirble_api_token);
break;
case MPD_API_SET_MPDPASS:
p_charbuf = strdup(c->content);
if(strcmp(strtok(p_charbuf, ","), "MPD_API_SET_MPDPASS"))

View File

@ -40,6 +40,7 @@
X(MPD_API_GET_QUEUE) \
X(MPD_API_GET_BROWSE) \
X(MPD_API_GET_MPDHOST) \
X(MPD_API_GET_DIRBLEAPITOKEN) \
X(MPD_API_ADD_TRACK) \
X(MPD_API_ADD_PLAY_TRACK) \
X(MPD_API_ADD_PLAYLIST) \
@ -97,6 +98,8 @@ struct t_mpd {
unsigned queue_version;
} mpd;
char dirble_api_token[28];
struct t_mpd_client_session {
int song_id;
unsigned queue_version;

View File

@ -80,10 +80,13 @@ int main(int argc, char **argv)
mpd.port = 6600;
strcpy(mpd.host, "127.0.0.1");
strcpy(dirble_api_token, "2e223c9909593b94fc6577361a");
static struct option long_options[] = {
{"host", required_argument, 0, 'h'},
{"port", required_argument, 0, 'p'},
{"webport", required_argument, 0, 'w'},
{"dirbletoken", required_argument, 0, 'd'},
{"user", required_argument, 0, 'u'},
{"version", no_argument, 0, 'v'},
{"help", no_argument, 0, 0 },
@ -103,6 +106,9 @@ int main(int argc, char **argv)
case 'w':
webport = strdup(optarg);
break;
case 'd':
strncpy(dirble_api_token, optarg, sizeof(dirble_api_token));
break;
case 'u':
run_as_user = strdup(optarg);
break;
@ -122,6 +128,7 @@ int main(int argc, char **argv)
" -p, --port <port>\t\tconnect to mpd at port [6600]\n"
" -w, --webport [ip:]<port>\tlisten interface/port for webserver [8080]\n"
" -u, --user <username>\t\tdrop priviliges to user after socket bind\n"
" -d, --dirbletoken <apitoken>\tDirble API token\n"
" -V, --version\t\t\tget version\n"
" -m, --mpdpass <password>\tspecifies the password to use when connecting to mpd\n"
" --help\t\t\t\tthis help\n"