Add downloader (video -> mp3) plugin (in music menu)

This commit is contained in:
TC
2020-11-21 22:50:33 +01:00
parent e0f61f128e
commit e197087a50
9 changed files with 518 additions and 9 deletions

View 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;