Coder Social home page Coder Social logo

hayate891 / youtube-music Goto Github PK

View Code? Open in Web Editor NEW

This project forked from th-ch/youtube-music

0.0 0.0 0.0 6.76 MB

YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)

Home Page: https://th-ch.github.io/youtube-music/

License: MIT License

JavaScript 88.96% CSS 4.94% HTML 6.09%

youtube-music's Introduction

YouTube Music

GitHub release GitHub license XO code style Build status Known Vulnerabilities GitHub All Releases AUR

Screenshot

Electron wrapper around YouTube Music featuring:

  • Native look & feel, aims at keeping the original interface
  • Framework for custom plugins: change YouTube Music to your needs (style, content, features), enable/disable plugins in one click

Download

You can check out the latest release to quickly find the latest version.

Arch Linux

Install the youtube-music-bin package from the AUR. For AUR installation instructions, take a look at this wiki page.

Available plugins:

  • Ad Blocker: Block all ads and tracking out of the box

  • Audio Compressor: Apply compression to audio (lowers the volume of the loudest parts of the signal and raises the volume of the softest parts)

  • Blur Nav Bar: makes navigation bar transparent and blurry

  • Bypass age restrictions: bypass YouTube's age verification

  • Disable Autoplay: Makes every song start in "paused" mode

  • Discord: Show your friends what you listen to with Rich Presence

  • Downloader: downloads MP3 directly from the interface (youtube-dl)

  • Exponential Volume: Makes the volume slider exponential so it's easier to select lower volumes.

  • In-App Menu: gives bars a fancy, dark look

    (see this post if you have problem accessing the menu after enabling this plugin and hide-menu option)

  • Last.fm: Scrobbles support

  • Lyrics Genius: Adds lyrics support for most songs

  • Navigation: Next/Back navigation arrows directly integrated in the interface, like in your favorite browser

  • No Google Login: Remove Google login buttons and links from the interface

  • Notifications: Display a notification when a song starts playing (interactive notifications are available on windows)

  • Picture in picture: allows to switch the app to picture-in-picture mode

  • Playback Speed: Listen fast, listen slow! Adds a slider that controls song speed

  • Precise Volume: Control the volume precisely using mousewheel/hotkeys, with a custom hud and customizable volume steps

  • Quality Changer: Allows changing the video quality with a button on the video overlay

  • Shortcuts: Allows setting global hotkeys for playback (play/pause/next/previous) + disable media osd by overriding media keys + enable Ctrl/CMD + F to search + enable linux mpris support for mediakeys + custom hotkeys for advanced users

  • Skip-Silences - Automatically skip silenced sections

  • SponsorBlock: Automatically Skips non-music parts like intro/outro or parts of music videos where the song isn't playing

  • Taskbar Media Control: Control playback from your Windows taskbar

  • Touchbar: Custom TouchBar layout for macOS

  • Tuna-OBS: Integration with OBS's plugin Tuna

  • Video Toggle: Adds a button to switch between Video/Song mode. can also optionally remove the whole video tab


  • Auto confirm when paused (Always Enabled): disable the "Continue Watching?" popup that pause music after a certain time

If using Hide Menu option - you can show the menu with the alt key (or escape if using the in-app-menu plugin)

Dev

git clone https://github.com/th-ch/youtube-music
cd youtube-music
yarn
yarn start

Build your own plugins

Using plugins, you can:

  • manipulate the app - the BrowserWindow from electron is passed to the plugin handler
  • change the front by manipulating the HTML/CSS

Creating a plugin

Create a folder in plugins/YOUR-PLUGIN-NAME:

  • if you need to manipulate the BrowserWindow, create a file back.js with the following template:
module.exports = win => {
	// win is the BrowserWindow object
};
  • if you need to change the front, create a file front.js with the following template:
module.exports = () => {
	// This function will be called as a preload script
	// So you can use front features like `document.querySelector`
};

Common use cases

  • injecting custom CSS: create a style.css file in the same folder then:
const path = require("path");
const { injectCSS } = require("../utils");

// back.js
module.exports = win => {
	injectCSS(win.webContents, path.join(__dirname, "style.css"));
};
  • changing the HTML:
// front.js
module.exports = () => {
	// Remove the login button
	document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
};
  • communicating between the front and back: can be done using the ipcMain module from electron. See utils.js file and example in navigation plugin.

Build

yarn build

Builds the app for macOS, Linux, and Windows, using electron-builder.

Tests

yarn test

Uses Playwright to test the app.

License

MIT © th-ch

youtube-music's People

Contributors

araxeus avatar arunim2405 avatar cpiber avatar dependabot[bot] avatar esmailelbobdev2 avatar hbarsaiyan avatar im-noahh avatar imgbotapp avatar itzmanish avatar keyboardsheep avatar konhi avatar lazerl0rd avatar markbaas avatar mesmerx avatar miephd avatar mulverinex avatar nnowakowski avatar rubecks avatar sapuseven avatar sebihotza avatar semvis123 avatar snyk-bot avatar th-ch avatar thymue avatar

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.