```
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
MPD_HOST=localhost
MPD_PORT=6600
WEB_PORT=8080
+DIRBLE_API_TOKEN=2e223c9909593b94fc6577361a
# Exit if the package is not installed
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
-DAEMON_OPT="--user $YMPD_USER --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT"
+DAEMON_OPT="--user $YMPD_USER --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT --dirbletoken $DIRBLE_API_TOKEN"
do_start()
{
MPD_PORT=6600
WEB_PORT=8080
YMPD_USER=nobody
+DIRBLE_API_TOKEN=2e223c9909593b94fc6577361a
Environment=MPD_PORT=6600
Environment=WEB_PORT=8080
Environment=YMPD_USER=nobody
+Environment=DIRBLE_API_TOKEN=2e223c9909593b94fc6577361a
EnvironmentFile=/etc/default/ympd
-ExecStart=/usr/bin/ympd --user $YMPD_USER --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT
+ExecStart=/usr/bin/ympd --user $YMPD_USER --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT --dirbletoken $DIRBLE_API_TOKEN
Type=simple
[Install]
/* 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
var dirble_catid = "";
var dirble_page = 1;
var isTouch = Modernizr.touch ? 1 : 0;
+var dirble_api_token = "";
+var dirble_stations = false;
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();
+ }
});
$('#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) {
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},
$('#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');
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');
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');
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({
"<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({
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({
"<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({
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)
"{\"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"))
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) \
unsigned queue_version;
} mpd;
+char dirble_api_token[28];
+
struct t_mpd_client_session {
int song_id;
unsigned queue_version;
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 },
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;
" -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"
" --help\t\t\t\tthis help\n"
, argv[0]);