notandy / ympd Goto Github PK
View Code? Open in Web Editor NEWStandalone MPD Web GUI written in C, utilizing Websockets and Bootstrap/JS
Home Page: http://www.ympd.org
License: GNU General Public License v2.0
Standalone MPD Web GUI written in C, utilizing Websockets and Bootstrap/JS
Home Page: http://www.ympd.org
License: GNU General Public License v2.0
Hi,
I am a noob, how hard would it be to include a systemd service for arch linux?
This a enhancement request.
In the queue, on the right is the length of each song. It would be very helpful (in many situations I imagine) to have a total time for all songs.
If you have 3 songs for 3 minutes each, it would show 9 minutes (possibly updating after every song?)
When attempting to add opus files, it does not detect them.
Is there a way to support opus files?
Hi
I am trying to set up a nginx
reverse proxy for ympd
to use https
and allow basic authentication of the service. I did the following:
# https only
server {
listen 443 ssl;
server_name 127.0.0.1;
root /srv/http;
index index.html index.php index.htm;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Without the ^~ the static files like css and js would not load.
location ^~ /ympd {
# Basic HTTP auth
auth_basic "Welcome to ympd on mikupi!";
auth_basic_user_file /etc/nginx/.htpasswd;
# Reverse proxy
proxy_pass http://127.0.0.1:8080;
# Websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Without this I would get "Not found"
rewrite /ympd/(.*) /$1 break;
proxy_redirect off;
}
}
Trying to debug using Firefox, it seems that the Websocket requests are being denied by the webserver. This is the kind of error that get logged in my /var/log/nginx/error.log
:
2015/06/08 23:45:46 [error] 10080#0: *270 directory index of "/srv/http/" is forbidden, client: 192.168.1.11, server: 127.0.0.1, request: "GET / HTTP/1.1", host: "192.168.1.15"
2015/06/08 23:46:46 [error] 10080#0: *316 directory index of "/srv/http/" is forbidden, client: 192.168.1.11, server: 127.0.0.1, request: "GET / HTTP/1.1", host: "192.168.1.15"
2015/06/08 23:47:46 [error] 10080#0: *360 directory index of "/srv/http/" is forbidden, client: 192.168.1.11, server: 127.0.0.1, request: "GET / HTTP/1.1", host: "192.168.1.15"
2015/06/08 23:48:46 [error] 10080#0: *405 directory index of "/srv/http/" is forbidden, client: 192.168.1.11, server: 127.0.0.1, request: "GET / HTTP/1.1", host: "192.168.1.15"
2015/06/08 23:49:47 [error] 10080#0: *452 directory index of "/srv/http/" is forbidden, client: 192.168.1.11, server: 127.0.0.1, request: "GET / HTTP/1.1", host: "192.168.1.15"
Or my /var/log/nginx/access.log
:
192.168.1.11 - - [08/Jun/2015:23:57:47 -0300] "GET / HTTP/1.1" 403 141 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0"
Seeing issue #24 it seems reverse proxy with nginx should work, but what am I doing wrong?
This is needed for support of OpenBSD (successor of the #65 bug).
I'm using OSX with Macports, where my installed libs are in /opt/local/lib and /opt/local/include. I tryied:
$ cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/opt/local -DCMAKE_INCLUDE_PATH:PATH=/opt/local/include -DCMAKE_PREFIX_PATH:PATH=/opt/local
Also tried prepending this to cmake_install.cmake
:
INCLUDE_DIRECTORIES(/opt/local/include)
LINK_DIRECTORIES(/opt/local/lib)
But still getting error on make
$ make
[ 12%] Built target mkdata
[ 25%] Building C object CMakeFiles/ympd.dir/src/mpd_client.c.o
/Users/rafi/code/c/ympd/src/mpd_client.c:24:10: fatal error: 'mpd/client.h' file not found
#include <mpd/client.h>
^
1 error generated.
make[2]: *** [CMakeFiles/ympd.dir/src/mpd_client.c.o] Error 1
make[1]: *** [CMakeFiles/ympd.dir/all] Error 2
make: *** [all] Error 2
I am wondering if I could use ympd to stream through mpd's built-in http streaming?
It would be useful if the add symbol (+) also gave additional options so that the user could choose between
a) clear queue and add
or
b) append to the end of the queue
Currently - it just appends to the queue
I tried compiling the mongoose release and it fails if I use make -j8
.
[ 12%] Generating assets.c
[ 25%] /bin/sh: /home/phmongeau/packages/ympd-git/src/ympd/build/mkdata: No such file or directory
CMakeFiles/ympd.dir/build.make:72: recipe for target 'assets.c' failed
make[2]: *** [assets.c] Error 127
CMakeFiles/Makefile2:98: recipe for tnarget 'CMakeFiles/ympd.dir/all' failed
make[1]: *** [CMakeFiles/ympd.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
Building C object CMakeFiles/mkdata.dir/htdocs/mkdata.c.o
Linking C executable mkdata
[ 25%] Built target mkdata
Makefile:116: recipe for target 'all' failed
make: *** [all] Error 2
ympd doesn't take long to build, so I could just specify -j1
in my build script, but I feel like there must be a better way to fix this. Unfortunatly, I'm not familiar with cmake, so I have no idea how to do it myself.
Hey, you currently use "window.webkitNotifications", which obviously don't work in browsers that don't use webkit. I think there is a official html5 notification specification now, but I don't know which browser implements it how, so yeah…
or in short.
current behaviour: notifications don't work in firefox
expected behaviour: notifications work in firefox
Debian 7 use libmpdclient2 and not libmpdclient.
htpc@htpc:~/ympd/src/build$ sudo cmake .. -DCMAKE_INSTALL_PREFIX_PATH=/usr
-- The CXX compiler identification is GNU 4.7.2
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
Could NOT find LibMPDClient (missing: LIBMPDCLIENT_LIBRARY
LIBMPDCLIENT_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE)
cmake/FindLibMPDClient.cmake:27 (find_package_handle_standard_args)
CMakeLists.txt:11 (find_package)
Hi,
I have written a init script for Debian and ympd.
https://gist.github.com/zoide/feb3f207403d5fb642b2
Have fun!
After succesfully building, compiling and installing, I am unable to connect ympd to mpd. I did ensure that mpd was indeed running.
What happens when I try to connect is this:
Hello!
I think it would be great to have an option to protect this with an htauthentication (browser authentication).
Can this be implemented easily?
When the host, where the build-process is run, isn't the same as the target running ympd, it is most likely not possible to run mkdata during the build-process.
So, when cross compiling, it would be nice to create a version of mkdata which is a native executable for the host.
If a file name contains a comma, the file is listed when browsing the database. However, when I try to add it to the queue, an error popup “Not Found” appears. When I remove the comma from the file name, it works.
I detected, that some songs are not listet in the database-view of ympd, but the database of mpd contains them, because ncmpc lists them. Unfortunately I did't see something special on this songs...
File names are not parsed, with a non-root access on the server you can run code on guests
cp file.mp3 "file <img src=\"qwertyu\" onerror=\"alert('Hacko IO?')\" style=\"visibility:hidden\">.mp3"
Please add armv7h to pkgbuild.
Would be great if ympd support scrobbling to last.fm!
Hi. First off, let me say your web gui is killer, beautiful design and great layout!
I've got it running on Raspbian, but cannot seem to get it to run under an unprivileged user. Under root it works great
$ sudo ./ympd --webport 80
MPD Connecting to 127.0.0.1:6600
MPD connected.
but sudo ./ympd --user pi --webport 80
produces no output on the command line. I can see the process is created
$ ps aux | grep ympd
pi 5697 79.8 0.1 2940 796 ? R 00:45 1:01 /usr/bin/ympd --user pi --webport 80
but the web interface is not reachable. Am I doing something dumb? Any help is greatly appreciated!
Hi, it would be nice to have the possibity to add an url to the queue.
Thanks !
Hello,
when you have a huge music collection and search for one song, it is very hard to tell, from which band it is (cover songs or original?), or if it is a live/acoustic/instrumental version etc.
So could you please add the artist, album and track number to both the playlist view and the search results?
In case you fear that this will take up too much space, you could group albums in a cool way like (among lots of other players) cantata does:
Thanks for creating this lightweight webinterface!
well, ympd works fine, but the volume slider seems to only have 2 possible values: max volume and a really low volume setting.
other mpd client seems to be fine to me.
can this be fixed/investigated?
I can't use passwords with spaces in web-gui: it is rejected as incorrect password.
It is possible to run mpd as ympd -h "<password with spaces>@localhost"
but as a result my password appears in settings as a part of MPD Host/IP.
If I use only digits, letters(in both upper and lower cases) and punctuation symbols(dot,comma,exclamation mark) web-gui works well.
The feature would allow a user to us the web GUI to:
a) Enable Output 2 just like "mpc enable 2"
b) Disable Output 1 just like "mpc disable 1"
I couldn't see any questions regarding mopidy support so here it is.
Would it be possible? And be it only by using the mpd extension nopidy provides.
How to reproduce:
I'm not familiar with gdb, but below is short backtrace:
https://gist.github.com/tm-calculate/ff6dc980ed26a8d0d9c0
centos 6
mpd: 0.17.5
libmpdclient2: 2.5
Can there be a function added that allows for uploading of files to the music folder?
I'm checking the possibilitys for this but it seems LAU is not being supported by the http server you created, is this correct?
I noticed the fav icon disappears after logging in.
I added the stuff from #46, and added stunnel.
All works perfectly but I noticed that after the browser is asked to log in the icon disappears.
A minor thing really, but if possible I'd like to iron it out.
It would be totally great if ympd could support reordering the Queue via drag and drop.
Could you please add either "basic" or "digest" http authentication feature (rfc2617)
As for me it's very necessary feature.
Just installed libwebsockets from aur and I get this error when running cmake
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28")
-- Found LibMPDClient: /usr/lib/libmpdclient.so
-- Found LibWebSockets: /usr/lib/libwebsockets.so
-- Found OpenSSL: /usr/lib/libssl.so;/usr/lib/libcrypto.so (found version "1.0.1f")
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.8")
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
LIBWEBSOCKETS_LIBRARY_STATIC
linked by target "ympd" in directory /home/demil133/ympd
-- Configuring incomplete, errors occurred!
See also "/home/demil133/ympd/build/CMakeFiles/CMakeOutput.log".
I thought it could be LIBWEBSOCKETS_LIBRARY_STATIC, that seems like it should be called LIBWEBSOCKETS_LIBRARY_DIR, so I changed it with no luck.
DAEMON
is hardcoded to /usr/bin/$NAME
, while the default installation path is /usr/local/bin/ympd
. The init script should be generated based on the installation path. Also it would be more polite to provide the init file as an example, and not install it in the system's init.d
directory, I think.
therefore multiple instances can't be started
I am running ympd as a service.
It would be good if there was a configuration file, so I could specify the webport (i.e. change it to 80 from 8080).
I expect this to be a documentation issue :)
Cheers,
Mahesh
First off, this app is fantastic, great work! Only issue I've come across is that the UI isn't as touch friendly, I can't add a whole album to the queue from my phone/tablet. Running Firefox 29 client-side. Maybe it'd be possible to show the add to queue links on smaller devices rather than having them only show up on hover?
would be a nice feature ;)
Hi,
Could you add the ability to select the output?
Thanks for your work. It's the best web gui for mpd.
\Ilgiz.
There's currently no way to play a playlist http://mpd.wikia.com/wiki/Playlists, can this be added?
Is there a way to communicate with the ympd server using regular HTTP requests (not websockets)? e.g. I want to send MPD_API_SET_PAUSE
without needing to load the ympd frontend - so I can quickly play/pause.
e.g. http://raspberrypi.local:2938/?command=MPD_API_SET_PAUSE
I'm noticing a strange behaviour with CLI options:
$ ympd
MPD Connecting to 127.0.0.1:6600
MPD connected.
But then if I use an explicit port number I got:
$ ympd -p6600
Mongoose error: Cannot bind to port
What did I get wrong?
Hey,
i want to use ympd behind an apache2 proxy to have a shorter and more comfortable domain.
This is the vhost i have defined:
<VirtualHost *:80>
ServerName music
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://mediacenter:9080/
ProxyPassReverse / http://mediacenter:9080/
When i navigate there by browser, it error is "Connection to ympd lost, retrying in 3 seconds". Firefox goes a little bit more into details and complains about "Firefox kann keine Verbindung zu dem Server unter ws://music/ aufbauen. mpd.js:121
"disconnected"
Is there someting i can do?
Thanks!
First of all: Thanks a lot for your work, i love this software.
Second: A feature request: it would be amazing if it was possible to store playlists!
cheers,
t.
Cover can be read from a web server as per:
https://github.com/abarisain/dmix/wiki/Album-Art-on-your-LAN
Hi,
First of all: great project! Now a feature request by me:
It would be nice if you could implement a shutdown button to gracefully poweroff the Raspi.
Of course the system user has to be privileged but that's only a configuration issue.
Perhaps just call /sbin/poweroff
or let the user configure the shutdown command himself (e.g. sudo /sbin/poweroff
) with an appropriate sudoers entry.
That would enormously increase the lifetime of the filesystem.
What do you think?
OpenBSD 5.6 i386
gcc 4.2.1 20070719
cmake 2.8.12.2
libmpdclient 2.9
# pwd
/root/ympd/build
# cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr
-- The C compiler identification is GNU 4.2.1
-- The CXX compiler identification is GNU 4.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1")
-- Found LibMPDClient: /usr/local/lib/libmpdclient.so.2.0
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /root/ympd/build
# make
Scanning dependencies of target mkdata
[ 12%] Building C object CMakeFiles/mkdata.dir/tools/mkdata.c.o
Linking C executable mkdata
[ 12%] Built target mkdata
[ 25%] Generating assets.c
Scanning dependencies of target ympd
[ 37%] Building C object CMakeFiles/ympd.dir/src/ympd.c.o
[ 50%] Building C object CMakeFiles/ympd.dir/src/mpd_client.c.o
/root/ympd/src/mpd_client.c:24:24: error: mpd/client.h: No such file or directory
/root/ympd/src/mpd_client.c: In function 'callback_mpd':
/root/ympd/src/mpd_client.c:61: warning: implicit declaration of function 'mpd_run_update'
/root/ympd/src/mpd_client.c:64: warning: implicit declaration of function 'mpd_run_toggle_pause'
/root/ympd/src/mpd_client.c:67: warning: implicit declaration of function 'mpd_run_previous'
/root/ympd/src/mpd_client.c:70: warning: implicit declaration of function 'mpd_run_next'
/root/ympd/src/mpd_client.c:73: warning: implicit declaration of function 'mpd_run_play'
/root/ympd/src/mpd_client.c:76: warning: implicit declaration of function 'mpd_run_stop'
/root/ympd/src/mpd_client.c:79: warning: implicit declaration of function 'mpd_run_clear'
/root/ympd/src/mpd_client.c:83: warning: implicit declaration of function 'mpd_run_delete_id'
/root/ympd/src/mpd_client.c:87: warning: implicit declaration of function 'mpd_run_play_id'
/root/ympd/src/mpd_client.c:91: warning: implicit declaration of function 'mpd_run_random'
/root/ympd/src/mpd_client.c:95: warning: implicit declaration of function 'mpd_run_repeat'
/root/ympd/src/mpd_client.c:99: warning: implicit declaration of function 'mpd_run_consume'
/root/ympd/src/mpd_client.c:103: warning: implicit declaration of function 'mpd_run_single'
/root/ympd/src/mpd_client.c:107: warning: implicit declaration of function 'mpd_run_crossfade'
/root/ympd/src/mpd_client.c:111: warning: implicit declaration of function 'mpd_run_set_volume'
/root/ympd/src/mpd_client.c:115: warning: implicit declaration of function 'mpd_run_seek_id'
/root/ympd/src/mpd_client.c:122: warning: unknown conversion type character 'm' in format
/root/ympd/src/mpd_client.c:122: warning: too many arguments for format
/root/ympd/src/mpd_client.c:129: warning: unknown conversion type character 'm' in format
/root/ympd/src/mpd_client.c:129: warning: too many arguments for format
/root/ympd/src/mpd_client.c:131: warning: implicit declaration of function 'mpd_run_add'
/root/ympd/src/mpd_client.c:136: warning: unknown conversion type character 'm' in format
/root/ympd/src/mpd_client.c:136: warning: too many arguments for format
/root/ympd/src/mpd_client.c:138: warning: implicit declaration of function 'mpd_run_add_id'
/root/ympd/src/mpd_client.c:145: warning: unknown conversion type character 'm' in format
/root/ympd/src/mpd_client.c:145: warning: too many arguments for format
/root/ympd/src/mpd_client.c:147: warning: implicit declaration of function 'mpd_run_load'
/root/ympd/src/mpd_client.c:152: warning: unknown conversion type character 'm' in format
/root/ympd/src/mpd_client.c:152: warning: too many arguments for format
/root/ympd/src/mpd_client.c:162: warning: unknown conversion type character 'm' in format
/root/ympd/src/mpd_client.c:162: warning: too many arguments for format
/root/ympd/src/mpd_client.c:178: warning: unknown conversion type character 'm' in format
/root/ympd/src/mpd_client.c:178: warning: too many arguments for format
/root/ympd/src/mpd_client.c:191: warning: implicit declaration of function 'mpd_connection_get_error'
/root/ympd/src/mpd_client.c:191: error: 'MPD_ERROR_SUCCESS' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:191: error: (Each undeclared identifier is reported only once
/root/ympd/src/mpd_client.c:191: error: for each function it appears in.)
/root/ympd/src/mpd_client.c:194: warning: implicit declaration of function 'mpd_connection_get_error_message'
/root/ympd/src/mpd_client.c:194: warning: format '%s' expects type 'char *', but argument 4 has type 'int'
/root/ympd/src/mpd_client.c:197: warning: implicit declaration of function 'mpd_connection_clear_error'
/root/ympd/src/mpd_client.c: In function 'mpd_poll':
/root/ympd/src/mpd_client.c:268: warning: implicit declaration of function 'mpd_connection_new'
/root/ympd/src/mpd_client.c:268: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:275: error: 'MPD_ERROR_SUCCESS' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:276: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
/root/ympd/src/mpd_client.c:283: warning: implicit declaration of function 'mpd_run_password'
/root/ympd/src/mpd_client.c:285: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
/root/ympd/src/mpd_client.c:293: warning: implicit declaration of function 'mpd_connection_set_timeout'
/root/ympd/src/mpd_client.c:303: warning: implicit declaration of function 'mpd_connection_free'
/root/ympd/src/mpd_client.c: At top level:
/root/ympd/src/mpd_client.c:315: warning: 'struct mpd_song' declared inside parameter list
/root/ympd/src/mpd_client.c:315: warning: its scope is only this definition or declaration, which is probably not what you want
/root/ympd/src/mpd_client.c: In function 'mpd_get_title':
/root/ympd/src/mpd_client.c:319: warning: implicit declaration of function 'mpd_song_get_tag'
/root/ympd/src/mpd_client.c:319: error: 'MPD_TAG_TITLE' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:321: warning: implicit declaration of function 'mpd_song_get_uri'
/root/ympd/src/mpd_client.c: In function 'mpd_put_state':
/root/ympd/src/mpd_client.c:332: warning: implicit declaration of function 'mpd_run_status'
/root/ympd/src/mpd_client.c:332: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:334: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
/root/ympd/src/mpd_client.c:346: warning: implicit declaration of function 'mpd_status_get_state'
/root/ympd/src/mpd_client.c:347: warning: implicit declaration of function 'mpd_status_get_volume'
/root/ympd/src/mpd_client.c:348: warning: implicit declaration of function 'mpd_status_get_repeat'
/root/ympd/src/mpd_client.c:349: warning: implicit declaration of function 'mpd_status_get_single'
/root/ympd/src/mpd_client.c:350: warning: implicit declaration of function 'mpd_status_get_crossfade'
/root/ympd/src/mpd_client.c:351: warning: implicit declaration of function 'mpd_status_get_consume'
/root/ympd/src/mpd_client.c:352: warning: implicit declaration of function 'mpd_status_get_random'
/root/ympd/src/mpd_client.c:353: warning: implicit declaration of function 'mpd_status_get_song_pos'
/root/ympd/src/mpd_client.c:354: warning: implicit declaration of function 'mpd_status_get_elapsed_time'
/root/ympd/src/mpd_client.c:355: warning: implicit declaration of function 'mpd_status_get_total_time'
/root/ympd/src/mpd_client.c:356: warning: implicit declaration of function 'mpd_status_get_song_id'
/root/ympd/src/mpd_client.c:359: warning: implicit declaration of function 'mpd_status_get_queue_version'
/root/ympd/src/mpd_client.c:360: warning: implicit declaration of function 'mpd_status_free'
/root/ympd/src/mpd_client.c: In function 'mpd_put_current_song':
/root/ympd/src/mpd_client.c:370: warning: implicit declaration of function 'mpd_run_current_song'
/root/ympd/src/mpd_client.c:370: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:375: warning: implicit declaration of function 'mpd_song_get_pos'
/root/ympd/src/mpd_client.c:377: warning: passing argument 1 of 'mpd_get_title' from incompatible pointer type
/root/ympd/src/mpd_client.c:379: error: 'MPD_TAG_ARTIST' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:379: warning: comparison between pointer and integer
/root/ympd/src/mpd_client.c:382: warning: passing argument 3 of 'json_emit_quoted_str' makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:385: error: 'MPD_TAG_ALBUM' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:385: warning: comparison between pointer and integer
/root/ympd/src/mpd_client.c:388: warning: passing argument 3 of 'json_emit_quoted_str' makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:392: warning: implicit declaration of function 'mpd_song_free'
/root/ympd/src/mpd_client.c:393: warning: implicit declaration of function 'mpd_response_finish'
/root/ympd/src/mpd_client.c: In function 'mpd_put_queue':
/root/ympd/src/mpd_client.c:404: warning: implicit declaration of function 'mpd_send_list_queue_range_meta'
/root/ympd/src/mpd_client.c:405: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
/root/ympd/src/mpd_client.c:405: warning: format '%s' expects type 'char *', but argument 4 has type 'int'
/root/ympd/src/mpd_client.c:409: warning: implicit declaration of function 'mpd_recv_entity'
/root/ympd/src/mpd_client.c:409: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:412: warning: implicit declaration of function 'mpd_entity_get_type'
/root/ympd/src/mpd_client.c:412: error: 'MPD_ENTITY_TYPE_SONG' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:413: warning: implicit declaration of function 'mpd_entity_get_song'
/root/ympd/src/mpd_client.c:413: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:416: warning: implicit declaration of function 'mpd_song_get_id'
/root/ympd/src/mpd_client.c:420: warning: implicit declaration of function 'mpd_song_get_duration'
/root/ympd/src/mpd_client.c:422: warning: passing argument 1 of 'mpd_get_title' from incompatible pointer type
/root/ympd/src/mpd_client.c:425: warning: implicit declaration of function 'mpd_entity_free'
/root/ympd/src/mpd_client.c: In function 'mpd_put_browse':
/root/ympd/src/mpd_client.c:442: warning: implicit declaration of function 'mpd_send_list_meta'
/root/ympd/src/mpd_client.c:443: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
/root/ympd/src/mpd_client.c:443: warning: format '%s' expects type 'char *', but argument 4 has type 'int'
/root/ympd/src/mpd_client.c:447: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:468: error: 'MPD_ENTITY_TYPE_UNKNOWN' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:471: error: 'MPD_ENTITY_TYPE_SONG' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:472: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:474: warning: passing argument 3 of 'json_emit_quoted_str' makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:478: warning: passing argument 1 of 'mpd_get_title' from incompatible pointer type
/root/ympd/src/mpd_client.c:482: error: 'MPD_ENTITY_TYPE_DIRECTORY' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:483: warning: implicit declaration of function 'mpd_entity_get_directory'
/root/ympd/src/mpd_client.c:483: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:486: warning: implicit declaration of function 'mpd_directory_get_path'
/root/ympd/src/mpd_client.c:486: warning: passing argument 3 of 'json_emit_quoted_str' makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:490: error: 'MPD_ENTITY_TYPE_PLAYLIST' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:491: warning: implicit declaration of function 'mpd_entity_get_playlist'
/root/ympd/src/mpd_client.c:491: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:493: warning: implicit declaration of function 'mpd_playlist_get_path'
/root/ympd/src/mpd_client.c:493: warning: passing argument 3 of 'json_emit_quoted_str' makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:501: error: 'MPD_ERROR_SUCCESS' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:502: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
/root/ympd/src/mpd_client.c: In function 'mpd_search':
/root/ympd/src/mpd_client.c:521: warning: implicit declaration of function 'mpd_search_db_songs'
/root/ympd/src/mpd_client.c:521: error: 'false' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:522: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
/root/ympd/src/mpd_client.c:522: warning: format '%s' expects type 'char *', but argument 4 has type 'int'
/root/ympd/src/mpd_client.c:523: warning: implicit declaration of function 'mpd_search_add_any_tag_constraint'
/root/ympd/src/mpd_client.c:523: error: 'MPD_OPERATOR_DEFAULT' undeclared (first use in this function)
/root/ympd/src/mpd_client.c:524: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
/root/ympd/src/mpd_client.c:524: warning: format '%s' expects type 'char *', but argument 4 has type 'int'
/root/ympd/src/mpd_client.c:525: warning: implicit declaration of function 'mpd_search_commit'
/root/ympd/src/mpd_client.c:526: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
/root/ympd/src/mpd_client.c:526: warning: format '%s' expects type 'char *', but argument 4 has type 'int'
/root/ympd/src/mpd_client.c:530: warning: implicit declaration of function 'mpd_recv_song'
/root/ympd/src/mpd_client.c:530: warning: assignment makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:532: warning: passing argument 3 of 'json_emit_quoted_str' makes pointer from integer without a cast
/root/ympd/src/mpd_client.c:536: warning: passing argument 1 of 'mpd_get_title' from incompatible pointer type
*** Error 1 in . (CMakeFiles/ympd.dir/build.make:105 'CMakeFiles/ympd.dir/src/mpd_client.c.o': /usr/bin/cc -DNS_ENABLE_IPV6 -std=gnu99 -Wal...)
*** Error 1 in . (CMakeFiles/Makefile2:99 'CMakeFiles/ympd.dir/all')
*** Error 1 in /root/ympd/build (Makefile:117 'all')
ympd
doesn't seem to support IPv6:
$ ympd -w 8080 &
MPD Connecting to 127.0.0.1:6600
MPD connected.
$ netstat -an | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
I would have expected to see an additional line like this:
tcp6 0 0 :::8080 :::* LISTEN
mpd
, by the way, supports IPv6 fine.
Hi,
The compliation fails at the make
step on FreeBSD 10.0-RELEASE:
marduk# cd ympd
marduk# mkdir build && cd build
marduk# mkdir -p build; cd build
marduk# pwd
/root/ympd/build
marduk# cmake .. -DCMAKE_INSTALL_PREFIX_PATH=/usr
-- The C compiler identification is Clang 3.3.0
-- The CXX compiler identification is Clang 3.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/CC
-- Check for working CXX compiler: /usr/bin/CC -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.28")
-- Found LibMPDClient: /usr/local/lib/libmpdclient.so
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
CMake Warning (dev) at CMakeLists.txt:32 (get_target_property):
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The LOCATION property should not be read from target "mkdata". Use the
target name directly with add_custom_command, or use the generator
expression $<TARGET_FILE>, as appropriate.
This warning is for project developers. Use -Wno-dev to suppress it.
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_INSTALL_PREFIX_PATH
-- Build files have been written to: /root/ympd/build
marduk# make
Scanning dependencies of target mkdata
[ 12%] Building C object CMakeFiles/mkdata.dir/htdocs/mkdata.c.o
/root/ympd/htdocs/mkdata.c:10:10: fatal error: 'error.h' file not found
#include <error.h>
^
1 error generated.
*** Error code 1
Stop.
make[2]: stopped in /root/ympd/build
*** Error code 1
Stop.
make[1]: stopped in /root/ympd/build
*** Error code 1
Stop.
make: stopped in /root/ympd/build
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.