/DMusic

Open source Yandex.Music client / Music player

Primary LanguageNimGNU General Public License v3.0GPL-3.0

DMusic

DMusic: open source Yandex.Music client / music player

Uses unoffical Yandex.Music Api translated from Python to Nim

Screenshot

Version Stable    Nim QML    Code size Total lines

Installation

  • See releases

  • Compile for Linux (from source code)

    Install Nim

    yay -S choosenim-bin
    choosenim stable

    Download and compile DMusic

    git clone https://github.com/levovix0/DMusic
    cd DMusic
    nimble install  # result will be ~/.nimble/bin/dmusic

    If you have Qt in non-standard location, specify -d:qtInclude:path/to/qt/include, -d:qtLib:path/to/qt/lib and -d:qtBin:path/to/qt/bin in nimble install BEFORE word "install"

    Add nimble dir to path (bash):

    echo "export PATH='\$PATH:~/.nimble/bin/dmusic'" >> ~/.bashrc

    Add nimble dir to path (fish):

    fish_add_path ~/.nimble/bin/dmusic
  • AUR (from source code), see package

    yay -S dmusic
  • Cross-compile to Windows (requires Linux)

    Install all from "Compile from source code" and download DMusic sources, then

    nimble buildWindows

    all sholud prombably myabe work automatically...

    result will be in build-windows/DMusic and build-windows/DMusic.zip

  • (NOT WORK NOW) Flatpak (from source code)

    git clone https://github.com/levovix0/DMusic
    cd DMusic
    flatpak install org.kde.Sdk/x86_64/5.15-23.08
    flatpak install org.kde.Platform/x86_64/5.15-23.08
    flatpak-builder --user --install --force-clean build-flatpak org.DTeam.DMusic.yml
  • (DEPRECATED) Compile for source code on Windows

    see [wiki](https://github.com/levovix0/DMusic/wiki/Building-on-Windows)
Compile flags

-d:debugRequests - print all requested urls to stdout

-d:yandexMusic_oneRequestAtOnce - make only one request to yandex music at once

-d:debugYandexMusicBehaviour - debug Yandex.Music service and api behaviour

Dependencies (excluding nim libraries)

  • Nim >= 2.0.0
  • Qt == 5.15.2 (declarative, imageformats, graphicaleffects, multimedia, quickcontrols, quickcontrols2, svg)
  • TagLib

Contributions

If you want to support this project, here is some tasks to do:

  • See issues
  • Any bugfixes is always accepted, just describe somewhere what you fixed
  • Refactoring (my code is bad, i know it)
    • if you doing big refactoring, first create issue to ask is all your changes needed, and if it is, refactor
  • Add/fix translations (see translations directory, translations is made via localize)
    • note: currently, there is no much text to translate there, because most of UI is translated via qt translator, but i want to migrate to localize
  • Documentation
  • Optimization
    • Force Qml to compile to C++ at compile time instead of be interpreted like js in runtime
  • Add integrations to other music streaming platforms (for example, soundcloud, spotify, etc)
  • Design (pin figma project to issue or something like it)
  • Make better Qt wrapper (see my wrapper)
  • Create simpler way to build DMusic on Windows
  • Port DMusic on other platforms
  • Create any Qt infrastructure replacement (this includes: easy 2d gpu rendering, components, markup language/macros, audio output, etc)
    Qt is not made for Nim
  • Make cool site that adverts DMusic
  • Make DMusic legal?

Just fork levovix0/DMusic to your account, make changes and submit a pull request.
Or if it requires new repository to be created, create it and add an "change dependency" issue.