Skip to content

haturatu/ViMusic

Repository files navigation

ViMusic

An Android application for streaming music from YouTube Music


About

  • Currently maintained as a hobby project.

This Repository

  • Maintain the original ViMusic small binary size as much as possible and avoid unnecessary bloat
  • Make things asynchronous wherever possible
  • Refactor the codebase
  • Improve network stability
  • Focus on performance while preserving existing features
  • Keep the implementation as minimal as possible
    • In other words, even if my repository dies, I want to keep it easy for others to fork

because this repository is maintained with these principles in mind, issues that require large or fundamental changes may be closed.

Features

  • Play (almost) any song or video from YouTube Music
  • Background playback
  • Cache audio chunks for offline playback
  • Search for songs, albums, artists videos and playlists
  • Bookmark artists and albums
  • Import playlists
  • Fetch, display and edit songs lyrics or synchronized lyrics
  • Local playlist management
  • Reorder songs in playlist or queue
  • Light/Dark/Dynamic theme
  • Skip silence
  • Sleep timer
  • Audio normalization
  • Android Auto
  • Persistent queue
  • Open YouTube/YouTube Music links (watch, playlist, channel)
  • ...

Installation

  • Currently, this version is distributed only on GitHub.

Get it on GitHub

Build

Requirements

  • JDK 17 (OpenJDK)
  • Android SDK cmdline-tools (latest)
  • Android SDK
  • Android SDK platform-tools
  • Android SDK build-tools r36.1

Install (Arch Linux)

sudo pacman -S jdk17-openjdk
yay -S android-sdk-cmdline-tools-latest android-sdk android-sdk-platform-tools android-sdk-build-tools

User-local SDK (copy cmdline-tools)

If your SDK under /opt/android-sdk is read-only, copy cmdline-tools to a user-writable SDK:

mkdir -p ~/.android-sdk/cmdline-tools/
cp -pr /opt/android-sdk/cmdline-tools/latest ~/.android-sdk/cmdline-tools/

Then update the .bashrc environment variables to point to the user-local SDK (see the section above).

Accept licenses and install required packages:

sdkmanager --licenses
sdkmanager "platforms;android-36" "build-tools;34.0.0"

Environment variables (.bashrc)

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH

export ANDROID_SDK_ROOT=$HOME/.android-sdk
export ANDROID_HOME=$HOME/.android-sdk
export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools

local.properties

cp local.properties.example local.properties

Then edit local.properties to match your SDK path:

sdk.dir=/home/youruser/.android-sdk

Build APK

make build

The debug APK will be generated at:

app/build/outputs/apk/debug/app-debug.apk

Acknowledgments

  • YouTube-Internal-Clients: A python script that discovers hidden YouTube API clients. Just a research project.
  • NewPipeExtractor: Extractor library used for stream and metadata resolution.
  • ionicons: Premium hand-crafted icons built by Ionic, for Ionic apps and web apps everywhere.

App icon based on icon created by Ilham Fitrotul Hayat - Flaticon

Disclaimer

This project and its contents are not affiliated with, funded, authorized, endorsed by, or in any way associated with YouTube, Google LLC or any of its affiliates and subsidiaries.

Any trademark, service mark, trade name, or other intellectual property rights used in this project are owned by the respective owners.

Maintainers

If you plan to maintain or release this app yourself, generate your own signing certificate before creating a release build:

keytool -genkeypair -v -keystore vimusic-release.jks -keyalg RSA -keysize 4096 -validity 10000 -alias vimusic

For make release, set the signing properties in ~/.gradle/gradle.properties:

VIMUSIC_KEYSTORE_PASSWORD=your_password
VIMUSIC_KEY_PASSWORD=your_password
VIMUSIC_KEY_ALIAS=vimusic

When updating the app version, bump the version value in gradle.properties.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Languages