GithubHelp home page GithubHelp logo

hyperblast / beefweb Goto Github PK

View Code? Open in Web Editor NEW
239.0 6.0 31.0 1.52 MB

Web interface plugin for DeaDBeeF and foobar2000 players

License: MIT License

Shell 1.89% CMake 4.08% C++ 42.80% JavaScript 31.03% HTML 0.08% CSS 0.01% C 17.53% Batchfile 0.79% Less 1.67% Dockerfile 0.12%
deadbeef foobar2000 webui remote-control http-api

beefweb's People

Contributors

augustjanse avatar courtarro avatar dependabot[bot] avatar hyperblast avatar sir-photch avatar stengerh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

beefweb's Issues

Use same units for durations in APIs

Currently we use seconds when dumping player status (e.g. current track duration, position).
However when changing current position milliseconds are used.

Rework artwork API

We should reference playlist items rather than file names on disk, e.g.

/api/artwork/:plref/:item

If no artwork was found default artwork should be provided unless overridden by ?allowDefault=false

Default artwork should be available via explicit query:

/api/artwork/default

libevhtp fails to build with -m32

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:
LIB_DL
    linked by target "test_vhost" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_client" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_query" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_perf" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_basic" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
LIB_RT
    linked by target "test_vhost" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_client" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_query" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_perf" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_basic" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples

Periodic segfault in 32-bit builds

beefweb: listening on [ipv4:127.0.0.1]:8879
beefweb: failed to bind to address [ipv6:::1]:8879: Cannot assign requested address
Segmentation Fault
backtrace() returned 17 addresses
/home/travis/build/hyperblast/beefweb/tools/deadbeef.x86/deadbeef() [0x804b1e2]
[0xf76decb0]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0xccac) [0xf71b6cac]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x4148b) [0xf71eb48b]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x48323) [0xf71f2323]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x482c3) [0xf71f22c3]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x57eec) [0xf7201eec]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x58dfc) [0xf7202dfc]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x5890c) [0xf720290c]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x5802d) [0xf720202d]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x59a6d) [0xf7203a6d]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x68457) [0xf7212457]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x60df0) [0xf720adf0]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x64d45) [0xf720ed45]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x683a4) [0xf72123a4]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x62cec) [0xf720ccec]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x89f1a) [0xf7233f1a]

Rework setting model

Introduce object model for various setting types (boolean, enum, etc). Those should be self-describing to allow more automatic UI generation. For example setting description, default value, enum names could be defined in setting metadata.

Each setting could be persistent or non-persistent. Second option is useful for global options that are defined by environment. For example "touch support" or "compact UI layout" for small screens.

Persistence should be extracted to separate class. It is useful for testing.

Existing TouchSupport class could be converted to controller that dynamically updates setting depending on browser capabilities.

MediaSizeController similarly should use this new setting model.

Windows port

  • Minimally builds on Windows with MSVC
  • Platform specific functions are implemented
  • HTTP server is implemented
  • Continuous integration via AppVeyor or other service
  • Final clean up

Improve server threading correctness

  • All callbacks should capture this via weak reference
  • doPollEventSources() should use work queue of corresponding request handler
  • Current async restart model probably could be simplified: if settings are changed server is destroyed and created with new settings

Document event stream APIs

Swagger currently does not support that, but we still can add it somehow.
Probably pretend to be regular JSON, but describe actual behavior in comments.

Consider migration to boost beast

This has several advantages over existing solution:

  • Single implementation for all platforms
  • Nothing to build because library is header-only and we already using boost
  • Supports web sockets
  • No special configuration is required for Windows platform (unlike HTTP server API and its URL reservations)

TypeError: rows is undefined

Steps to reproduce:

  • Start playback
  • Switch to playlist browser
  • Try to switch back
  • Nothing happens, error is displayed in console

Add integration tests for API

Considering we already use nodejs for building client using it for API tests would not introduce additional dependencies.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.