mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-10 10:11:46 +00:00
Add downloader (video -> mp3) plugin (in music menu)
This commit is contained in:
54
plugins/downloader/front.js
Normal file
54
plugins/downloader/front.js
Normal file
@ -0,0 +1,54 @@
|
||||
const { ElementFromFile, templatePath, triggerAction } = require("../utils");
|
||||
const { ACTIONS, CHANNEL } = require("./actions.js");
|
||||
const { downloadVideoToMP3 } = require("./youtube-dl");
|
||||
|
||||
let menu = null;
|
||||
let progress = null;
|
||||
const downloadButton = ElementFromFile(
|
||||
templatePath(__dirname, "download.html")
|
||||
);
|
||||
|
||||
const observer = new MutationObserver((mutations, observer) => {
|
||||
if (!menu) {
|
||||
menu = document.querySelector("ytmusic-menu-popup-renderer paper-listbox");
|
||||
}
|
||||
|
||||
if (menu && !menu.contains(downloadButton)) {
|
||||
menu.prepend(downloadButton);
|
||||
progress = document.querySelector("#ytmcustom-download");
|
||||
}
|
||||
});
|
||||
|
||||
global.download = () => {
|
||||
const videoUrl = window.location.href;
|
||||
|
||||
downloadVideoToMP3(
|
||||
videoUrl,
|
||||
(feedback) => {
|
||||
if (!progress) {
|
||||
console.warn("Cannot update progress");
|
||||
} else {
|
||||
progress.innerHTML = feedback;
|
||||
}
|
||||
},
|
||||
(error) => {
|
||||
triggerAction(CHANNEL, ACTIONS.ERROR, error);
|
||||
},
|
||||
() => {
|
||||
if (!progress) {
|
||||
console.warn("Cannot update progress");
|
||||
} else {
|
||||
progress.innerHTML = "Download";
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
function observeMenu() {
|
||||
observer.observe(document, {
|
||||
childList: true,
|
||||
subtree: true,
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = observeMenu;
|
||||
Reference in New Issue
Block a user