mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-13 19:31:46 +00:00
Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 15275236b0 | |||
| 639ae28122 | |||
| d3453a600b | |||
| caf76e7588 | |||
| 2d3f77d962 | |||
| 5279a45f35 | |||
| e52e522d22 | |||
| aa3e4b32eb | |||
| eb63917b5d | |||
| 6e037483c7 | |||
| 941477bb0c | |||
| abc2bb8a4f | |||
| 253e82a2d7 | |||
| 708ba3167e | |||
| b3c24a5212 | |||
| 9d343bf779 | |||
| cd78db4e84 | |||
| 5648a3020b | |||
| 828e8d472c |
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
node_modules
|
node_modules
|
||||||
/dist
|
/dist
|
||||||
/assets/generated
|
/assets/generated
|
||||||
|
electron-builder.yml
|
||||||
|
|||||||
43
.travis.yml
Normal file
43
.travis.yml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode9.4
|
||||||
|
language: node_js
|
||||||
|
node_js: "10"
|
||||||
|
env:
|
||||||
|
- ELECTRON_CACHE=$HOME/.cache/electron
|
||||||
|
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
services: docker
|
||||||
|
language: generic
|
||||||
|
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- node_modules
|
||||||
|
- $HOME/.cache/electron
|
||||||
|
- $HOME/.cache/electron-builder
|
||||||
|
|
||||||
|
script:
|
||||||
|
- |
|
||||||
|
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
|
||||||
|
docker run --rm \
|
||||||
|
$(env | \
|
||||||
|
grep -Eo '^[^\s=]*(DEBUG|NODE_|ELECTRON_|YARN_|NPM_|CI|CIRCLE|TRAVIS|APPVEYOR_|CSC_|_TOKEN|_KEY|AWS_|STRIP|BUILD_)[^\s=]*' | \
|
||||||
|
sed '/^$/d;s/^/-e /' | \
|
||||||
|
paste -sd ' ' \
|
||||||
|
) \
|
||||||
|
-v ${PWD}:/project \
|
||||||
|
-v ~/.cache/electron:/root/.cache/electron \
|
||||||
|
-v ~/.cache/electron-builder:/root/.cache/electron-builder \
|
||||||
|
electronuserland/builder \
|
||||||
|
/bin/bash -c "npm install && npm run release:linux"
|
||||||
|
else
|
||||||
|
npm run release:mac
|
||||||
|
fi
|
||||||
|
before_cache:
|
||||||
|
- rm -rf $HOME/.cache/electron-builder
|
||||||
|
|
||||||
|
branches:
|
||||||
|
except:
|
||||||
|
- "/^v\\d+\\.\\d+\\.\\d+$/"
|
||||||
20
appveyor.yml
Normal file
20
appveyor.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
image: Visual Studio 2017
|
||||||
|
|
||||||
|
platform:
|
||||||
|
- x64
|
||||||
|
|
||||||
|
cache:
|
||||||
|
- node_modules
|
||||||
|
- '%USERPROFILE%\.electron'
|
||||||
|
|
||||||
|
init:
|
||||||
|
- git config --global core.autocrlf input
|
||||||
|
|
||||||
|
install:
|
||||||
|
- ps: Install-Product node 8 x64
|
||||||
|
- npm install
|
||||||
|
|
||||||
|
build_script:
|
||||||
|
- npm run release:win
|
||||||
|
|
||||||
|
test: off
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 40 KiB |
20
index.js
20
index.js
@ -1,8 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
const electron = require("electron");
|
const electron = require("electron");
|
||||||
const isDev = require("electron-is-dev");
|
const isDev = require("electron-is-dev");
|
||||||
|
const { autoUpdater } = require("electron-updater");
|
||||||
|
|
||||||
const { setApplicationMenu } = require("./menu");
|
const { setApplicationMenu } = require("./menu");
|
||||||
const { getEnabledPlugins, store } = require("./store");
|
const { getEnabledPlugins, store } = require("./store");
|
||||||
@ -15,6 +16,7 @@ require("electron-debug")();
|
|||||||
|
|
||||||
// Prevent window being garbage collected
|
// Prevent window being garbage collected
|
||||||
let mainWindow;
|
let mainWindow;
|
||||||
|
autoUpdater.autoDownload = false;
|
||||||
|
|
||||||
let icon = "assets/youtube-music.png";
|
let icon = "assets/youtube-music.png";
|
||||||
if (process.platform == "win32") {
|
if (process.platform == "win32") {
|
||||||
@ -120,6 +122,20 @@ app.on("activate", () => {
|
|||||||
app.on("ready", () => {
|
app.on("ready", () => {
|
||||||
setApplicationMenu();
|
setApplicationMenu();
|
||||||
mainWindow = createMainWindow();
|
mainWindow = createMainWindow();
|
||||||
|
if (!isDev) {
|
||||||
|
autoUpdater.checkForUpdatesAndNotify();
|
||||||
|
autoUpdater.on("update-available", () => {
|
||||||
|
const dialogOpts = {
|
||||||
|
type : "info",
|
||||||
|
buttons: ["OK"],
|
||||||
|
title : "Application Update",
|
||||||
|
message: "A new version is available",
|
||||||
|
detail :
|
||||||
|
"A new version is available and can be downloaded at https://github.com/th-ch/youtube-music/releases/latest"
|
||||||
|
};
|
||||||
|
electron.dialog.showMessageBox(dialogOpts);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Optimized for Mac OS X
|
// Optimized for Mac OS X
|
||||||
if (process.platform === "darwin") {
|
if (process.platform === "darwin") {
|
||||||
|
|||||||
1204
package-lock.json
generated
1204
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
42
package.json
42
package.json
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name" : "youtube-music",
|
"name" : "youtube-music",
|
||||||
"productName": "YouTube Music",
|
"productName": "YouTube Music",
|
||||||
"version" : "1.0.0",
|
"version" : "1.1.1",
|
||||||
"description": "",
|
"description": "YouTube Music Desktop App - including custom plugins",
|
||||||
"license" : "MIT",
|
"license" : "MIT",
|
||||||
"repository" : "th-ch/youtube-music",
|
"repository" : "th-ch/youtube-music",
|
||||||
"author" : {
|
"author" : {
|
||||||
@ -10,28 +10,50 @@
|
|||||||
"email": "th-ch@users.noreply.github.com",
|
"email": "th-ch@users.noreply.github.com",
|
||||||
"url" : "https://github.com/th-ch/youtube-music"
|
"url" : "https://github.com/th-ch/youtube-music"
|
||||||
},
|
},
|
||||||
|
"build": {
|
||||||
|
"appId" : "com.github.th-ch.youtube-music",
|
||||||
|
"productName": "YouTube Music",
|
||||||
|
"mac" : {
|
||||||
|
"identity": null,
|
||||||
|
"icon" : "assets/generated/icons/mac/icon.icns"
|
||||||
|
},
|
||||||
|
"win": {
|
||||||
|
"icon": "assets/generated/icons/win/icon.ico"
|
||||||
|
},
|
||||||
|
"linux": {
|
||||||
|
"icon" : "assets/generated/icons/png",
|
||||||
|
"category": "AudioVideo"
|
||||||
|
}
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test" : "xo",
|
"test" : "xo",
|
||||||
"start" : "electron .",
|
"start" : "electron .",
|
||||||
"icon" : "electron-icon-maker --input=assets/youtube-music.png --output=assets/generated",
|
"icon" : "rimraf assets/generated && electron-icon-maker --input=assets/youtube-music.png --output=assets/generated",
|
||||||
"postinstall": "npm run icon && npm rebuild && node plugins/adblocker/generator.js && electron-rebuild",
|
"postinstall" : "npm run icon && npm rebuild && node plugins/adblocker/generator.js && electron-rebuild",
|
||||||
"build" : "electron-packager . --out=dist --asar --overwrite --all --icon=assets/generated/icons/mac/icon.icns --prune=true",
|
"clean" : "rimraf dist",
|
||||||
"build:macos": "electron-packager . --platform=darwin --arch=x64 --out=dist --asar --overwrite --icon=assets/generated/icons/mac/icon.icns --prune=true"
|
"build" : "npm run clean && build --win --mac --linux",
|
||||||
|
"build:mac" : "npm run clean && build --mac",
|
||||||
|
"build:win" : "npm run clean && build --win",
|
||||||
|
"release:linux": "npm run clean && build --linux -p always",
|
||||||
|
"release:mac" : "npm run clean && build --mac -p always",
|
||||||
|
"release:win" : "npm run clean && build --win -p always"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ad-block" : "^4.1.3",
|
"ad-block" : "^4.1.3",
|
||||||
"electron-debug" : "^2.0.0",
|
"electron-debug" : "^2.0.0",
|
||||||
"electron-is-dev" : "^1.0.1",
|
"electron-is-dev" : "^1.0.1",
|
||||||
"electron-localshortcut": "^3.1.0",
|
"electron-localshortcut": "^3.1.0",
|
||||||
"electron-store" : "^2.0.0"
|
"electron-store" : "^2.0.0",
|
||||||
|
"electron-updater" : "^4.0.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"devtron" : "^1.4.0",
|
"devtron" : "^1.4.0",
|
||||||
"electron" : "^4.0.8",
|
"electron" : "^4.0.8",
|
||||||
|
"electron-builder" : "^20.40.2",
|
||||||
"electron-devtools-installer": "^2.2.4",
|
"electron-devtools-installer": "^2.2.4",
|
||||||
"electron-icon-maker" : "0.0.4",
|
"electron-icon-maker" : "0.0.4",
|
||||||
"electron-packager" : "^13.1.1",
|
|
||||||
"electron-rebuild" : "^1.8.4",
|
"electron-rebuild" : "^1.8.4",
|
||||||
|
"rimraf" : "^2.6.3",
|
||||||
"xo" : "^0.24.0"
|
"xo" : "^0.24.0"
|
||||||
},
|
},
|
||||||
"xo": {
|
"xo": {
|
||||||
|
|||||||
37
readme.md
37
readme.md
@ -1,4 +1,9 @@
|
|||||||
# YouTube Music [](https://github.com/sindresorhus/xo)
|
# YouTube Music
|
||||||
|
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||||
|
[](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
|
||||||
|
[](https://github.com/sindresorhus/xo)
|
||||||
|
[](https://ci.appveyor.com/project/th-ch/youtube-music)
|
||||||
|
[](https://travis-ci.org/th-ch/youtube-music)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@ -7,6 +12,15 @@
|
|||||||
- Native look & feel, aims at keeping the original interface
|
- 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
|
- 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](https://github.com/th-ch/youtube-music/releases/latest) to quickly find the latest version.
|
||||||
|
Here are the links to the current version:
|
||||||
|
|
||||||
|
- [Mac](https://github.com/th-ch/youtube-music/releases/download/v1.0.0/youtube-music-1.0.0.dmg)
|
||||||
|
- [Windows](https://github.com/th-ch/youtube-music/releases/download/v1.0.0/youtube-music-setup-1.0.0.exe)
|
||||||
|
- [Linux](https://github.com/th-ch/youtube-music/releases/download/v1.0.0/youtube-music-1.0.0-x86_64.AppImage)
|
||||||
|
|
||||||
## Available plugins:
|
## Available plugins:
|
||||||
|
|
||||||
- **Ad Blocker**: block all ads and tracking out of the box
|
- **Ad Blocker**: block all ads and tracking out of the box
|
||||||
@ -16,7 +30,7 @@
|
|||||||
|
|
||||||
## Dev
|
## Dev
|
||||||
|
|
||||||
```
|
```sh
|
||||||
git clone https://github.com/th-ch/youtube-music
|
git clone https://github.com/th-ch/youtube-music
|
||||||
cd youtube-music
|
cd youtube-music
|
||||||
npm install
|
npm install
|
||||||
@ -36,7 +50,7 @@ Create a folder in `plugins/YOUR-PLUGIN-NAME`:
|
|||||||
|
|
||||||
- if you need to manipulate the BrowserWindow, create a file `back.js` with the following template:
|
- if you need to manipulate the BrowserWindow, create a file `back.js` with the following template:
|
||||||
|
|
||||||
```
|
```node
|
||||||
module.exports = win => {
|
module.exports = win => {
|
||||||
// win is the BrowserWindow object
|
// win is the BrowserWindow object
|
||||||
};
|
};
|
||||||
@ -44,10 +58,10 @@ module.exports = win => {
|
|||||||
|
|
||||||
- if you need to change the front, create a file `front.js` with the following template:
|
- if you need to change the front, create a file `front.js` with the following template:
|
||||||
|
|
||||||
```
|
```node
|
||||||
module.exports = () => {
|
module.exports = () => {
|
||||||
// This function will be called as a preload script
|
// This function will be called as a preload script
|
||||||
// So you can use front features like `document.querySelector`
|
// So you can use front features like `document.querySelector`
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -55,7 +69,10 @@ module.exports = () => {
|
|||||||
|
|
||||||
- injecting custom CSS: create a `style.css` file in the same folder then:
|
- injecting custom CSS: create a `style.css` file in the same folder then:
|
||||||
|
|
||||||
```
|
```node
|
||||||
|
const path = require("path");
|
||||||
|
const { injectCSS } = require("../utils");
|
||||||
|
|
||||||
// back.js
|
// back.js
|
||||||
module.exports = win => {
|
module.exports = win => {
|
||||||
injectCSS(win.webContents, path.join(__dirname, "style.css"));
|
injectCSS(win.webContents, path.join(__dirname, "style.css"));
|
||||||
@ -64,7 +81,7 @@ module.exports = win => {
|
|||||||
|
|
||||||
- changing the HTML:
|
- changing the HTML:
|
||||||
|
|
||||||
```
|
```node
|
||||||
// front.js
|
// front.js
|
||||||
module.exports = () => {
|
module.exports = () => {
|
||||||
// Remove the login button
|
// Remove the login button
|
||||||
@ -76,11 +93,11 @@ module.exports = () => {
|
|||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
```
|
```sh
|
||||||
$ npm run build
|
npm run build
|
||||||
```
|
```
|
||||||
|
|
||||||
Builds the app for macOS, Linux, and Windows, using [electron-packager](https://github.com/electron-userland/electron-packager).
|
Builds the app for macOS, Linux, and Windows, using [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user