mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-11 18:41:47 +00:00
Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5ac356bf91 | |||
| 35ceb7e83e | |||
| 5c0cc08d80 | |||
| 0bf77e592a | |||
| ec3c1578d2 | |||
| e8ed580ecc | |||
| e2cc2628ae | |||
| 9e31e753f0 | |||
| af02b60ce3 | |||
| fbdae0452c | |||
| d68d73eb4c | |||
| 2de27d2e24 | |||
| 15591e24d7 | |||
| 715d59e3d4 | |||
| f71e0e9da9 | |||
| ba3779db07 | |||
| d99aa0242f | |||
| 3ea859de09 | |||
| 7473677477 | |||
| c3e2c13808 | |||
| 5074ba2f48 | |||
| a8b8f1079f | |||
| e52987df92 | |||
| 01fc965170 | |||
| ff71f29206 | |||
| a47c5144ac | |||
| 9b979b2273 | |||
| 81198192bb |
15
package.json
15
package.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "youtube-music",
|
"name": "youtube-music",
|
||||||
"productName": "YouTube Music",
|
"productName": "YouTube Music",
|
||||||
"version": "1.7.4",
|
"version": "1.8.0",
|
||||||
"description": "YouTube Music Desktop App - including custom plugins",
|
"description": "YouTube Music Desktop App - including custom plugins",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": "th-ch/youtube-music",
|
"repository": "th-ch/youtube-music",
|
||||||
@ -22,7 +22,8 @@
|
|||||||
},
|
},
|
||||||
"linux": {
|
"linux": {
|
||||||
"icon": "assets/generated/icons/png",
|
"icon": "assets/generated/icons/png",
|
||||||
"category": "AudioVideo"
|
"category": "AudioVideo",
|
||||||
|
"target": ["AppImage", "snap", "freebsd", "deb", "rpm"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@ -48,19 +49,19 @@
|
|||||||
"npm": "Please use yarn and not npm"
|
"npm": "Please use yarn and not npm"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cliqz/adblocker-electron": "^1.18.8",
|
"@cliqz/adblocker-electron": "^1.19.0",
|
||||||
"@ffmpeg/core": "^0.8.4",
|
"@ffmpeg/core": "^0.8.5",
|
||||||
"@ffmpeg/ffmpeg": "^0.9.5",
|
"@ffmpeg/ffmpeg": "^0.9.6",
|
||||||
"YoutubeNonStop": "git://github.com/lawfx/YoutubeNonStop.git#v0.8.0",
|
"YoutubeNonStop": "git://github.com/lawfx/YoutubeNonStop.git#v0.8.0",
|
||||||
"downloads-folder": "^3.0.1",
|
"downloads-folder": "^3.0.1",
|
||||||
"electron-debug": "^3.1.0",
|
"electron-debug": "^3.1.0",
|
||||||
"electron-is": "^3.0.0",
|
"electron-is": "^3.0.0",
|
||||||
"electron-localshortcut": "^3.2.1",
|
"electron-localshortcut": "^3.2.1",
|
||||||
"electron-store": "^6.0.1",
|
"electron-store": "^6.0.1",
|
||||||
"electron-updater": "^4.3.5",
|
"electron-updater": "^4.3.6",
|
||||||
"filenamify": "^4.2.0",
|
"filenamify": "^4.2.0",
|
||||||
"node-fetch": "^2.6.1",
|
"node-fetch": "^2.6.1",
|
||||||
"ytdl-core": "^4.1.1"
|
"ytdl-core": "^4.1.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "^10.1.3",
|
"electron": "^10.1.3",
|
||||||
|
|||||||
110
plugins/touchbar/back.js
Normal file
110
plugins/touchbar/back.js
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
const {
|
||||||
|
TouchBar, nativeImage
|
||||||
|
} = require('electron');
|
||||||
|
const {
|
||||||
|
TouchBarButton,
|
||||||
|
TouchBarLabel,
|
||||||
|
TouchBarSpacer,
|
||||||
|
TouchBarSegmentedControl,
|
||||||
|
TouchBarScrubber
|
||||||
|
} = TouchBar;
|
||||||
|
const fetch = require('node-fetch');
|
||||||
|
|
||||||
|
// This selects the song title
|
||||||
|
const titleSelector = '.title.style-scope.ytmusic-player-bar';
|
||||||
|
|
||||||
|
// This selects the song image
|
||||||
|
const imageSelector = '#layout > ytmusic-player-bar > div.middle-controls.style-scope.ytmusic-player-bar > img';
|
||||||
|
|
||||||
|
// These keys will be used to go backwards, pause, skip songs, like songs, dislike songs
|
||||||
|
const keys = ['k', 'space', 'j', '_', '+'];
|
||||||
|
|
||||||
|
const presskey = (window, key) => {
|
||||||
|
window.webContents.sendInputEvent({
|
||||||
|
type: 'keydown',
|
||||||
|
keyCode: key
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Grab the title using the selector
|
||||||
|
const getTitle = win => {
|
||||||
|
return win.webContents.executeJavaScript(
|
||||||
|
'document.querySelector(\'' + titleSelector + '\').innerText'
|
||||||
|
).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Grab the image src using the selector
|
||||||
|
const getImage = win => {
|
||||||
|
return win.webContents.executeJavaScript(
|
||||||
|
'document.querySelector(\'' + imageSelector + '\').src'
|
||||||
|
).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = win => {
|
||||||
|
// Songtitle label
|
||||||
|
const songTitle = new TouchBarLabel({
|
||||||
|
label: ''
|
||||||
|
});
|
||||||
|
|
||||||
|
// This will store the song image once available
|
||||||
|
const songImage = {};
|
||||||
|
|
||||||
|
// The song control buttons (keys to press are in the same order)
|
||||||
|
const buttons = new TouchBarSegmentedControl({
|
||||||
|
mode: 'buttons',
|
||||||
|
segments: [
|
||||||
|
new TouchBarButton({
|
||||||
|
label: '⏮'
|
||||||
|
}),
|
||||||
|
new TouchBarButton({
|
||||||
|
label: '⏯️'
|
||||||
|
}),
|
||||||
|
new TouchBarButton({
|
||||||
|
label: '⏭'
|
||||||
|
}),
|
||||||
|
new TouchBarButton({
|
||||||
|
label: '👎'
|
||||||
|
}),
|
||||||
|
new TouchBarButton({
|
||||||
|
label: '👍'
|
||||||
|
})
|
||||||
|
],
|
||||||
|
change: i => presskey(win, keys[i])
|
||||||
|
});
|
||||||
|
|
||||||
|
// This is the touchbar object, this combines everything with proper layout
|
||||||
|
const touchBar = new TouchBar({
|
||||||
|
items: [
|
||||||
|
new TouchBarScrubber({
|
||||||
|
items: [songImage, songTitle],
|
||||||
|
continuous: false
|
||||||
|
}),
|
||||||
|
new TouchBarSpacer({
|
||||||
|
size: 'flexible'
|
||||||
|
}),
|
||||||
|
buttons
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
// If the page title changes, update touchbar and song title
|
||||||
|
win.on('page-title-updated', async () => {
|
||||||
|
// Set the song title
|
||||||
|
songTitle.label = await getTitle(win);
|
||||||
|
|
||||||
|
// Get image source
|
||||||
|
const imageSrc = await getImage(win);
|
||||||
|
|
||||||
|
// Fetch and set song image
|
||||||
|
await fetch(imageSrc)
|
||||||
|
.then(response => response.buffer())
|
||||||
|
.then(data => {
|
||||||
|
songImage.icon = nativeImage.createFromBuffer(data).resize({height: 23});
|
||||||
|
});
|
||||||
|
|
||||||
|
win.setTouchBar(touchBar);
|
||||||
|
});
|
||||||
|
};
|
||||||
@ -12,7 +12,13 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||||
|
<img src="web/youtube-music.svg" width="400" height="100">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
**Electron wrapper around YouTube Music featuring:**
|
**Electron wrapper around YouTube Music featuring:**
|
||||||
|
|
||||||
@ -37,6 +43,7 @@ Install the `youtube-music-bin` package from the AUR. For AUR installation instr
|
|||||||
- **Auto confirm when paused**: when the "Continue Watching?" modal appears, automatically click "Yes"
|
- **Auto confirm when paused**: when the "Continue Watching?" modal appears, automatically click "Yes"
|
||||||
- **Hide video player**: no video in the interface when playing music
|
- **Hide video player**: no video in the interface when playing music
|
||||||
- **Notifications**: display a notification when a song starts playing
|
- **Notifications**: display a notification when a song starts playing
|
||||||
|
- **Touchbar**: custom TouchBar layout for macOS
|
||||||
|
|
||||||
## Dev
|
## Dev
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 816 KiB After Width: | Height: | Size: 816 KiB |
379
web/youtube-music.svg
Normal file
379
web/youtube-music.svg
Normal file
@ -0,0 +1,379 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 800 300" width="800" height="300">
|
||||||
|
<foreignObject width="100%" height="100%">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<style>
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
h1.main, p.demos {
|
||||||
|
-webkit-animation-delay: 18s;
|
||||||
|
-moz-animation-delay: 18s;
|
||||||
|
-ms-animation-delay: 18s;
|
||||||
|
animation-delay: 18s;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
left: 0px;
|
||||||
|
top: 0px;
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
.container h2 {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
line-height: 100px;
|
||||||
|
height: 90px;
|
||||||
|
margin-top: -90px;
|
||||||
|
font-size: 90px;
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
color: transparent;
|
||||||
|
-webkit-animation: blurFadeInOut 3s ease-in backwards;
|
||||||
|
-moz-animation: blurFadeInOut 3s ease-in backwards;
|
||||||
|
-ms-animation: blurFadeInOut 3s ease-in backwards;
|
||||||
|
animation: blurFadeInOut 3s ease-in backwards;
|
||||||
|
}
|
||||||
|
.container h2.frame-1 {
|
||||||
|
-webkit-animation-delay: 0s;
|
||||||
|
-moz-animation-delay: 0s;
|
||||||
|
-ms-animation-delay: 0s;
|
||||||
|
animation-delay: 0s;
|
||||||
|
}
|
||||||
|
.container h2.frame-2 {
|
||||||
|
-webkit-animation-delay: 3s;
|
||||||
|
-moz-animation-delay: 3s;
|
||||||
|
-ms-animation-delay: 3s;
|
||||||
|
animation-delay: 3s;
|
||||||
|
}
|
||||||
|
.container h2.frame-3 {
|
||||||
|
-webkit-animation-delay: 6s;
|
||||||
|
-moz-animation-delay: 6s;
|
||||||
|
-ms-animation-delay: 6s;
|
||||||
|
animation-delay: 6s;
|
||||||
|
}
|
||||||
|
.container h2.frame-4 {
|
||||||
|
-webkit-animation-delay: 9s;
|
||||||
|
-moz-animation-delay: 9s;
|
||||||
|
-ms-animation-delay: 9s;
|
||||||
|
animation-delay: 9s;
|
||||||
|
}
|
||||||
|
.container h2.frame-5 {
|
||||||
|
-webkit-animation: none;
|
||||||
|
-moz-animation: none;
|
||||||
|
-ms-animation: none;
|
||||||
|
animation: none;
|
||||||
|
color: transparent;
|
||||||
|
text-shadow: 0px 0px 1px #fff;
|
||||||
|
}
|
||||||
|
.container h2.frame-5 span {
|
||||||
|
-webkit-animation: blurFadeIn 3s ease-in 12s backwards;
|
||||||
|
-moz-animation: blurFadeIn 1s ease-in 12s backwards;
|
||||||
|
-ms-animation: blurFadeIn 3s ease-in 12s backwards;
|
||||||
|
animation: blurFadeIn 3s ease-in 12s backwards;
|
||||||
|
color: transparent;
|
||||||
|
text-shadow: 0px 0px 1px #fff;
|
||||||
|
}
|
||||||
|
.container h2.frame-5 span:nth-child(2) {
|
||||||
|
-webkit-animation-delay: 13s;
|
||||||
|
-moz-animation-delay: 13s;
|
||||||
|
-ms-animation-delay: 13s;
|
||||||
|
animation-delay: 13s;
|
||||||
|
}
|
||||||
|
.container h2.frame-5 span:nth-child(3) {
|
||||||
|
-webkit-animation-delay: 14s;
|
||||||
|
-moz-animation-delay: 14s;
|
||||||
|
-ms-animation-delay: 14s;
|
||||||
|
animation-delay: 14s;
|
||||||
|
}
|
||||||
|
.circle-link {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||||
|
bottom: 50px;
|
||||||
|
margin-left: -100px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 200px;
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
background: #cc0000;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 25px;
|
||||||
|
-webkit-border-radius: 50%;
|
||||||
|
-moz-border-radius: 50%;
|
||||||
|
border-radius: 50%;
|
||||||
|
box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1);
|
||||||
|
-webkit-animation: fadeInRotate 0.8s ease 16s backwards;
|
||||||
|
-moz-animation: fadeInRotate 0.8s ease 16s backwards;
|
||||||
|
-ms-animation: fadeInRotate 0.8s ease 16s backwards;
|
||||||
|
animation: fadeInRotate 0.8s ease 16s backwards;
|
||||||
|
-webkit-transform: scale(1) rotate(0deg);
|
||||||
|
-moz-transform: scale(1) rotate(0deg);
|
||||||
|
-o-transform: scale(1) rotate(0deg);
|
||||||
|
-ms-transform: scale(1) rotate(0deg);
|
||||||
|
transform: scale(1) rotate(0deg);
|
||||||
|
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: -250px -250px, 0 0;
|
||||||
|
|
||||||
|
background-image: -webkit-linear-gradient(
|
||||||
|
top left,
|
||||||
|
rgba(255, 255, 255, 0.2) 0%,
|
||||||
|
rgba(255, 255, 255, 0.2) 37%,
|
||||||
|
rgba(255, 255, 255, 0.8) 45%,
|
||||||
|
rgba(255, 255, 255, 0.0) 50%
|
||||||
|
);
|
||||||
|
background-image: -moz-linear-gradient(
|
||||||
|
0 0,
|
||||||
|
rgba(255, 255, 255, 0.2) 0%,
|
||||||
|
rgba(255, 255, 255, 0.2) 37%,
|
||||||
|
rgba(255, 255, 255, 0.8) 45%,
|
||||||
|
rgba(255, 255, 255, 0.0) 50%
|
||||||
|
);
|
||||||
|
background-image: -o-linear-gradient(
|
||||||
|
0 0,
|
||||||
|
rgba(255, 255, 255, 0.2) 0%,
|
||||||
|
rgba(255, 255, 255, 0.2) 37%,
|
||||||
|
rgba(255, 255, 255, 0.8) 45%,
|
||||||
|
rgba(255, 255, 255, 0.0) 50%
|
||||||
|
);
|
||||||
|
background-image: linear-gradient(
|
||||||
|
0 0,
|
||||||
|
rgba(255, 255, 255, 0.2) 0%,
|
||||||
|
rgba(255, 255, 255, 0.2) 37%,
|
||||||
|
rgba(255, 255, 255, 0.8) 45%,
|
||||||
|
rgba(255, 255, 255, 0.0) 50%
|
||||||
|
);
|
||||||
|
|
||||||
|
-moz-background-size: 250% 250%, 100% 100%;
|
||||||
|
background-size: 250% 250%, 100% 100%;
|
||||||
|
|
||||||
|
-webkit-transition: background-position 0s ease;
|
||||||
|
-moz-transition: background-position 0s ease;
|
||||||
|
-o-transition: background-position 0s ease;
|
||||||
|
transition: background-position 0s ease;
|
||||||
|
}
|
||||||
|
.circle-link:hover {
|
||||||
|
background-position: 0 0, 0 0;
|
||||||
|
|
||||||
|
-webkit-transition-duration: 0.5s;
|
||||||
|
-moz-transition-duration: 0.5s;
|
||||||
|
transition-duration: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes blurFadeInOut {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 40px #fff;
|
||||||
|
-webkit-transform: scale(1.3);
|
||||||
|
}
|
||||||
|
20%, 75% {
|
||||||
|
opacity: 1;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 1px #fff;
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
text-shadow: 0px 0px 50px #fff;
|
||||||
|
-webkit-transform: scale(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes blurFadeIn {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 40px #fff;
|
||||||
|
-webkit-transform: scale(1.3);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.5;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 10px #fff;
|
||||||
|
-webkit-transform: scale(1.1);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
text-shadow: 0px 0px 1px #fff;
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes fadeInBack {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: scale(0);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.4;
|
||||||
|
-webkit-transform: scale(2);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0.2;
|
||||||
|
-webkit-transform: scale(5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes fadeInRotate {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: scale(0) rotate(360deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: scale(1) rotate(0deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-keyframes blurFadeInOut {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 40px #fff;
|
||||||
|
-moz-transform: scale(1.3);
|
||||||
|
}
|
||||||
|
20%, 75% {
|
||||||
|
opacity: 1;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 1px #fff;
|
||||||
|
-moz-transform: scale(1);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
text-shadow: 0px 0px 50px #fff;
|
||||||
|
-moz-transform: scale(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-moz-keyframes blurFadeIn {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 40px #fff;
|
||||||
|
-moz-transform: scale(1.3);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
text-shadow: 0px 0px 1px #fff;
|
||||||
|
-moz-transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-moz-keyframes fadeInBack {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
-moz-transform: scale(0);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.4;
|
||||||
|
-moz-transform: scale(2);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0.2;
|
||||||
|
-moz-transform: scale(5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-moz-keyframes fadeInRotate {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
-moz-transform: scale(0) rotate(360deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
-moz-transform: scale(1) rotate(0deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blurFadeInOut {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 40px #fff;
|
||||||
|
transform: scale(1.3);
|
||||||
|
}
|
||||||
|
20%, 75% {
|
||||||
|
opacity: 1;
|
||||||
|
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 1px #fff;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
text-shadow: 0px 0px 50px #fff;
|
||||||
|
transform: scale(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes blurFadeIn {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 40px #fff;
|
||||||
|
transform: scale(1.3);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.5;
|
||||||
|
color: #cc0000;
|
||||||
|
text-shadow: 0px 0px 10px #fff;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
text-shadow: 0px 0px 1px #fff;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fadeInBack {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.4;
|
||||||
|
transform: scale(2);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0.2;
|
||||||
|
transform: scale(5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fadeInRotate {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0) rotate(360deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1) rotate(0deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div class="container">
|
||||||
|
<div class="content">
|
||||||
|
<h2 class="frame-1">YouTube Music Desktop App</h2>
|
||||||
|
<h2 class="frame-2">With built-in ad blocker</h2>
|
||||||
|
<h2 class="frame-3">And built-in downloader</h2>
|
||||||
|
<h2 class="frame-4">Cross-platform</h2>
|
||||||
|
<h2 class="frame-5">
|
||||||
|
<span>Free,</span>
|
||||||
|
<span>Open source</span>
|
||||||
|
</h2>
|
||||||
|
<a class="circle-link" href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||||
|
Download
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 9.2 KiB |
161
yarn.lock
161
yarn.lock
@ -372,36 +372,36 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||||
|
|
||||||
"@cliqz/adblocker-content@^1.18.8":
|
"@cliqz/adblocker-content@^1.19.0":
|
||||||
version "1.18.8"
|
version "1.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/@cliqz/adblocker-content/-/adblocker-content-1.18.8.tgz#96473f14c098a20091298d34a6addcd430aceebd"
|
resolved "https://registry.yarnpkg.com/@cliqz/adblocker-content/-/adblocker-content-1.19.0.tgz#c3e8ce50a719905cfcb66b114882c086b5074131"
|
||||||
integrity sha512-YZ1xYBVG3LmxsdTYvTs/Bc7pzCw/Dy4HFo6N+oIuGP+Le/0aGSkACUl3ue5I2+Cx0WmL0Z8I4QonTKDc06HR+A==
|
integrity sha512-sciMicb+zmN5+iKCiDnWPegepgI32XzX4Snf1VxR+HAFwYGJmfk25vpL6ONd6hOlpmumxHkE/y5l7suH0ziP5g==
|
||||||
|
|
||||||
"@cliqz/adblocker-electron-preload@^1.18.8":
|
"@cliqz/adblocker-electron-preload@^1.19.0":
|
||||||
version "1.18.8"
|
version "1.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron-preload/-/adblocker-electron-preload-1.18.8.tgz#c2058647e015b6f61c222e7d58040347324c63b0"
|
resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron-preload/-/adblocker-electron-preload-1.19.0.tgz#960332fb3bc6e68e13596bc280f68aa9ee5e3170"
|
||||||
integrity sha512-/FAzyhNUj+8fwqSGth7ndaC+8huEANvVquYkDVmjM38uryxFgcJJI6Bij1l1zABIbskAaSN4G4RI3oERyd9/KQ==
|
integrity sha512-ns+VCyb+H8U5rKC4lfvAbb1KxZiIKFs3F8HvivRkGBFqjEzaCUC4s/kf6P+tWCLC69lVgrZUDIzFHkKmGG9LPA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@cliqz/adblocker-content" "^1.18.8"
|
"@cliqz/adblocker-content" "^1.19.0"
|
||||||
|
|
||||||
"@cliqz/adblocker-electron@^1.18.8":
|
"@cliqz/adblocker-electron@^1.19.0":
|
||||||
version "1.18.8"
|
version "1.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron/-/adblocker-electron-1.18.8.tgz#5f697c5dc65cd936b3908078a6e4516ec995567a"
|
resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron/-/adblocker-electron-1.19.0.tgz#9be5e10e93cd0488b79c54e44a265687b3d07a87"
|
||||||
integrity sha512-CrsFjSwenWQogsAg4sHFaXZbu7hzs9dMdsZM5wxb+5QfZ3MSH3PBYAeAUnsmP3UOTZ423+6ErOUE1vzj3UrK9w==
|
integrity sha512-UFhhHAQUI02HXWEX0Yjw+sCzJrdLbcGjCdjbaPjkYSv/w+uGaq7TahE1IXGALkS8vXHenA2iJdJglt2mh96Uuw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@cliqz/adblocker" "^1.18.8"
|
"@cliqz/adblocker" "^1.19.0"
|
||||||
"@cliqz/adblocker-electron-preload" "^1.18.8"
|
"@cliqz/adblocker-electron-preload" "^1.19.0"
|
||||||
tldts-experimental "^5.6.21"
|
tldts-experimental "^5.6.21"
|
||||||
|
|
||||||
"@cliqz/adblocker@^1.18.8":
|
"@cliqz/adblocker@^1.19.0":
|
||||||
version "1.18.8"
|
version "1.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/@cliqz/adblocker/-/adblocker-1.18.8.tgz#f6e5724fe6573c2e68f2545d90bcce3e1ecfbae9"
|
resolved "https://registry.yarnpkg.com/@cliqz/adblocker/-/adblocker-1.19.0.tgz#1521673172998d0a691aeb1f2b2c1732c9b8c6ab"
|
||||||
integrity sha512-19m0GhlOcdSvQ/BqVuaMgbYkgQ4ys8koBRW4K7Ua4V5fFWL0t8ckdcZ/gBOqwECS2m8agXSpEbbyJjNmHBHpMQ==
|
integrity sha512-sy/aBjPoQsqLI5XYHAaZfgi+7HpddJmoHn/UMyX0dx0/jnnaM2/Z2LGylOsGwjW97GsNvvqSwXgxsEH2R0K9SQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@remusao/guess-url-type" "^1.1.2"
|
"@remusao/guess-url-type" "^1.1.2"
|
||||||
"@remusao/small" "^1.1.2"
|
"@remusao/small" "^1.1.2"
|
||||||
"@remusao/smaz" "^1.7.1"
|
"@remusao/smaz" "^1.7.1"
|
||||||
"@types/chrome" "^0.0.126"
|
"@types/chrome" "^0.0.127"
|
||||||
"@types/firefox-webext-browser" "^82.0.0"
|
"@types/firefox-webext-browser" "^82.0.0"
|
||||||
tldts-experimental "^5.6.21"
|
tldts-experimental "^5.6.21"
|
||||||
|
|
||||||
@ -469,15 +469,15 @@
|
|||||||
minimatch "^3.0.4"
|
minimatch "^3.0.4"
|
||||||
strip-json-comments "^3.1.1"
|
strip-json-comments "^3.1.1"
|
||||||
|
|
||||||
"@ffmpeg/core@^0.8.4":
|
"@ffmpeg/core@^0.8.5":
|
||||||
version "0.8.4"
|
version "0.8.5"
|
||||||
resolved "https://registry.yarnpkg.com/@ffmpeg/core/-/core-0.8.4.tgz#69062a9b257792a9a8445e1f01e68c3e5e7fe58b"
|
resolved "https://registry.yarnpkg.com/@ffmpeg/core/-/core-0.8.5.tgz#2d0b7d4409a4348fa6a1888c247de706ffc0e63f"
|
||||||
integrity sha512-gEr4qXZpShZpIVUO3hc5Vz7bkk/jLYuzVVQtHluUwrui5eAooQwExOGiEovzLVkRwjJ707/qqfmTrK3r80UkWw==
|
integrity sha512-hemVFmhVLbD/VZaCG2BvCzFglKytMIMJ5aJfc12eXN4O4cG0wXnGTMVzlK1KKW/6viHhJMPkc9h4UDnJW8Uivg==
|
||||||
|
|
||||||
"@ffmpeg/ffmpeg@^0.9.5":
|
"@ffmpeg/ffmpeg@^0.9.6":
|
||||||
version "0.9.5"
|
version "0.9.6"
|
||||||
resolved "https://registry.yarnpkg.com/@ffmpeg/ffmpeg/-/ffmpeg-0.9.5.tgz#6624747dc331632bc7c581e8d4f2046abc933798"
|
resolved "https://registry.yarnpkg.com/@ffmpeg/ffmpeg/-/ffmpeg-0.9.6.tgz#b44fa1ab34dd860785bb7c317dbfbe8b9ded7036"
|
||||||
integrity sha512-Vtxgi5C89n36pJ3I1/l6xd2qSwn+s1tAtLvFJ98N9P2ZorBvxXCEwTkt2yL7GuOUX9wpdG/vLFqp7iLso8LDwg==
|
integrity sha512-ov5FAV3dHRJ/+ZxQH9V5GvY/iczwq5vrKWeu4tpytxZewTSAhZ1aKD/sFBzd79nQNF+CTktxUp3LWuGECXBNeA==
|
||||||
dependencies:
|
dependencies:
|
||||||
is-url "^1.2.4"
|
is-url "^1.2.4"
|
||||||
node-fetch "^2.6.1"
|
node-fetch "^2.6.1"
|
||||||
@ -1100,10 +1100,10 @@
|
|||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
"@types/responselike" "*"
|
"@types/responselike" "*"
|
||||||
|
|
||||||
"@types/chrome@^0.0.126":
|
"@types/chrome@^0.0.127":
|
||||||
version "0.0.126"
|
version "0.0.127"
|
||||||
resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.126.tgz#f9f3436712f0c7c12ea9798abc9b95575ad7b23a"
|
resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.127.tgz#9e29f351d558f60e95326ceadc586fdcc824151b"
|
||||||
integrity sha512-191z7uoyfbGU+z7/m45j9XbWugWqVHVPMM4hJV5cZ+3YzGCT9wFjMUHO3Wr3Xvo8aVodvRNu28u7lvEaAnfbzg==
|
integrity sha512-hBB9EApLYKKn2GvklVkTxVP6vZvxsH9okyIRUinNtMzZHIgIKWQk/ESbX+O5g4Bihfy38+aFGn7Kl7Cxou5JUg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/filesystem" "*"
|
"@types/filesystem" "*"
|
||||||
"@types/har-format" "*"
|
"@types/har-format" "*"
|
||||||
@ -1258,12 +1258,10 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/semver@^7.3.1":
|
"@types/semver@^7.3.4":
|
||||||
version "7.3.1"
|
version "7.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.1.tgz#7a9a5d595b6d873f338c867dcef64df289468cfa"
|
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.4.tgz#43d7168fec6fa0988bb1a513a697b29296721afb"
|
||||||
integrity sha512-ooD/FJ8EuwlDKOI6D9HWxgIgJjMg2cuziXm/42npDC8y4NjxplBUn9loewZiBNCt44450lHAU0OSb51/UqXeag==
|
integrity sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ==
|
||||||
dependencies:
|
|
||||||
"@types/node" "*"
|
|
||||||
|
|
||||||
"@types/stack-utils@^1.0.1":
|
"@types/stack-utils@^1.0.1":
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
@ -2091,6 +2089,14 @@ builder-util-runtime@8.7.2:
|
|||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
sax "^1.2.4"
|
sax "^1.2.4"
|
||||||
|
|
||||||
|
builder-util-runtime@8.7.3:
|
||||||
|
version "8.7.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.3.tgz#0aaafa52d25295c939496f62231ca9ff06c30e40"
|
||||||
|
integrity sha512-1Q2ReBqFblimF5g/TLg2+0M5Xzv0Ih5LxJ/BMWXvEy/e6pQKeeEpbkPMGsN6OiQgkygaZo5VXCXIjOkOQG5EoQ==
|
||||||
|
dependencies:
|
||||||
|
debug "^4.3.2"
|
||||||
|
sax "^1.2.4"
|
||||||
|
|
||||||
builder-util@22.8.1:
|
builder-util@22.8.1:
|
||||||
version "22.8.1"
|
version "22.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.8.1.tgz#efdfb327dbc22c59aa1e2f55adbe0e771086e839"
|
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.8.1.tgz#efdfb327dbc22c59aa1e2f55adbe0e771086e839"
|
||||||
@ -2690,6 +2696,13 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms "^2.1.1"
|
ms "^2.1.1"
|
||||||
|
|
||||||
|
debug@^4.3.2:
|
||||||
|
version "4.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
|
||||||
|
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
|
||||||
|
dependencies:
|
||||||
|
ms "2.1.2"
|
||||||
|
|
||||||
decamelize-keys@^1.1.0:
|
decamelize-keys@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
|
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
|
||||||
@ -3092,18 +3105,18 @@ electron-store@^6.0.1:
|
|||||||
conf "^7.1.2"
|
conf "^7.1.2"
|
||||||
type-fest "^0.16.0"
|
type-fest "^0.16.0"
|
||||||
|
|
||||||
electron-updater@^4.3.5:
|
electron-updater@^4.3.6:
|
||||||
version "4.3.5"
|
version "4.3.7"
|
||||||
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.3.5.tgz#4fb36f593a031c87ea07ee141c9f064d5deffb15"
|
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.3.7.tgz#632434cf1dd856e37f5557a68b55867fae29c39e"
|
||||||
integrity sha512-5jjN7ebvfj1cLI0VZMdCnJk6aC4bP+dy7ryBf21vArR0JzpRVk0OZHA2QBD+H5rm6ZSeDYHOY6+8PrMEqJ4wlQ==
|
integrity sha512-F7l1ZdslA5Do9kABNhiYKMPzreLulFTv+rsbGUQJ3TnRKrEb3JAi/n/jco3mI8LOEG/pgS5f9ytQ+D+5r/PvQw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/semver" "^7.3.1"
|
"@types/semver" "^7.3.4"
|
||||||
builder-util-runtime "8.7.2"
|
builder-util-runtime "8.7.3"
|
||||||
fs-extra "^9.0.1"
|
fs-extra "^9.0.1"
|
||||||
js-yaml "^3.14.0"
|
js-yaml "^3.14.1"
|
||||||
lazy-val "^1.0.4"
|
lazy-val "^1.0.4"
|
||||||
lodash.isequal "^4.5.0"
|
lodash.isequal "^4.5.0"
|
||||||
semver "^7.3.2"
|
semver "^7.3.4"
|
||||||
|
|
||||||
electron@^10.1.3:
|
electron@^10.1.3:
|
||||||
version "10.1.3"
|
version "10.1.3"
|
||||||
@ -4384,11 +4397,6 @@ html-encoding-sniffer@^2.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
whatwg-encoding "^1.0.5"
|
whatwg-encoding "^1.0.5"
|
||||||
|
|
||||||
html-entities@^1.3.1:
|
|
||||||
version "1.3.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
|
|
||||||
integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==
|
|
||||||
|
|
||||||
html-escaper@^2.0.0:
|
html-escaper@^2.0.0:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
|
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
|
||||||
@ -5412,6 +5420,14 @@ js-yaml@^3.14.0:
|
|||||||
argparse "^1.0.7"
|
argparse "^1.0.7"
|
||||||
esprima "^4.0.0"
|
esprima "^4.0.0"
|
||||||
|
|
||||||
|
js-yaml@^3.14.1:
|
||||||
|
version "3.14.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
|
||||||
|
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
|
||||||
|
dependencies:
|
||||||
|
argparse "^1.0.7"
|
||||||
|
esprima "^4.0.0"
|
||||||
|
|
||||||
jsbn@~0.1.0:
|
jsbn@~0.1.0:
|
||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||||
@ -6237,9 +6253,9 @@ node-modules-regexp@^1.0.0:
|
|||||||
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
|
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
|
||||||
|
|
||||||
node-notifier@^8.0.0:
|
node-notifier@^8.0.0:
|
||||||
version "8.0.0"
|
version "8.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620"
|
resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1"
|
||||||
integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA==
|
integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==
|
||||||
dependencies:
|
dependencies:
|
||||||
growly "^1.3.0"
|
growly "^1.3.0"
|
||||||
is-wsl "^2.2.0"
|
is-wsl "^2.2.0"
|
||||||
@ -7503,12 +7519,7 @@ semver-diff@^3.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
semver "^6.3.0"
|
semver "^6.3.0"
|
||||||
|
|
||||||
"semver@2 || 3 || 4 || 5", semver@^5.5.0:
|
"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.7.1:
|
||||||
version "5.6.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
|
|
||||||
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
|
|
||||||
|
|
||||||
semver@^5.4.1, semver@^5.7.1:
|
|
||||||
version "5.7.1"
|
version "5.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||||
@ -7518,15 +7529,12 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||||
|
|
||||||
semver@^7.1.2, semver@^7.2.1:
|
semver@^7.1.2, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4:
|
||||||
version "7.2.2"
|
version "7.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.2.2.tgz#d01432d74ed3010a20ffaf909d63a691520521cd"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
|
||||||
integrity sha512-Zo84u6o2PebMSK3zjJ6Zp5wi8VnQZnEaCP13Ul/lt1ANsLACxnJxq4EEm1PY94/por1Hm9+7xpIswdS5AkieMA==
|
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
|
||||||
|
dependencies:
|
||||||
semver@^7.3.2:
|
lru-cache "^6.0.0"
|
||||||
version "7.3.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
|
|
||||||
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
|
|
||||||
|
|
||||||
serialize-error@^5.0.0:
|
serialize-error@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
@ -8522,9 +8530,9 @@ uuid@^3.3.2:
|
|||||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||||
|
|
||||||
uuid@^8.0.0, uuid@^8.3.0:
|
uuid@^8.0.0, uuid@^8.3.0:
|
||||||
version "8.3.0"
|
version "8.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
||||||
integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==
|
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
|
||||||
|
|
||||||
v8-compile-cache@^2.0.3:
|
v8-compile-cache@^2.0.3:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
@ -8936,12 +8944,11 @@ yauzl@^2.10.0:
|
|||||||
buffer-crc32 "~0.2.3"
|
buffer-crc32 "~0.2.3"
|
||||||
fd-slicer "~1.1.0"
|
fd-slicer "~1.1.0"
|
||||||
|
|
||||||
ytdl-core@^4.1.1:
|
ytdl-core@^4.1.2:
|
||||||
version "4.1.1"
|
version "4.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.1.1.tgz#191fabf472c44f969fe3eca15cb4d1c094e46282"
|
resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.2.1.tgz#afcc1577a2a35701a5e1369f2ad3b0d1a7d2419d"
|
||||||
integrity sha512-T2VIS64sHKdLLqvuTV7S4WyoUCZLdR7HOP/9jX1CyXKYUjKLFP9UpVIFH0ZUvFSmK48eNFErWLOO5dGouwqztQ==
|
integrity sha512-7zAoJiWpaBGgiAUCQuvKBuWom7tmSCV0A70gRdrPxR96yQoJOrCZkW6Wg1CofvPtAeQVWTVWThC8bXRsE+SBeA==
|
||||||
dependencies:
|
dependencies:
|
||||||
html-entities "^1.3.1"
|
|
||||||
m3u8stream "^0.8.3"
|
m3u8stream "^0.8.3"
|
||||||
miniget "^4.0.0"
|
miniget "^4.0.0"
|
||||||
sax "^1.1.3"
|
sax "^1.1.3"
|
||||||
|
|||||||
Reference in New Issue
Block a user