- // Видео на ссылке или строке адреса: проиграть/скачать внешним приложением. Текст в Clipboard = mpv Title
- (goVideo=> {
- var player = "mpv"; quality = 720;
- function goLink(link, e) {
- xclip = custombuttons.cbService.readFromClipboard().replace(/\s+/g,' ').replace(/^\s*/,''); // убрать служ. символы, пробелы в начале, конце
- if (xclip != '') xclip = '--force-media-title='+ xclip.substr(0, 128);
- if (/youtube.com/.test(link)) link = link.replace(/&t=.*/g,''); // убрать время перехода
- if (e.button == 0) {
- bash = [ player,'--fs','--player-operation-mode=pseudo-gui','--ytdl-format=bestvideo[height<=?'+ quality +']+bestaudio/best', window.convertFromUnicode("UTF-8", xclip), link ];
- param = [ '/C', 'echo', String.fromCharCode(7) ]; // Windows beep
- } else {
- bash = [ 'xterm', '-T', 'Download video: youtube-dl', '-e', 'youtube-dl', link ]; // батник youtube-dl в $PATH
- param = link;
- }
- window.exec('', bash ) // команда Linux
- window.statusTextField('Видео загружается, Ожидайте…', 7000);
- };
- var menuitem = goVideo.insertBefore(document.createElement("menuitem"), document.getElementById("context-selectall")); // context-selectall context-copyvideourl context-sep-open context-inspect
- menuitem.setAttribute("label", "Проиграть видео-ссылку");
- menuitem.setAttribute("class", "menuitem-iconic");
- menuitem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAACNElEQVR42pWVA4xcYRDHN9ZtpLNt21JY23aERmWs2rYUqVLsOmp0mO+dbb25+a8tPc38RliDt1d3frqRMuLzKDVmDSVH7Sd8cZ6ZkNddkG50U/AOSjOK4kqVFPlEJYT/V/Fh4/KdwxfnuEdJkY9FZgXlpfkGi/U4ET6vEsL6VHyorsWHsacvnolMLyVFnaesxDjvsMTIp+LFrIoLhaLPL2QgKw48ha57mMlR5yGgxVkUoJgYYT569dQKjTrXnZdqD59SY1fKg14I2ISTo3jo0B4e2LCStdQYeOTL015hrDB7V5ARQihAnEvOUmN58s1Lnu/s4LGrF7ivuRoeyzN3MHSVFEqqH2KgjIQ8VA4PXIFT716zruusz8/x7K8fPHLiOPeU5LDyEDoYkstcA3oL7eANaH0BvDQ5wdOf3vPg3u2sZSU6pQEMSotdbUDDIrH+gGaqGbzQ38cTj+5zb2MlvLMC54S1LyigbgEuDg7wxPPH3NdUbQsfDDMwLTbwkKemePr7F0b1tZxkQNxDRiL9FmVhgef+/eGRsye4pzwfyi6FcSgKSo3Z9NY2C9TN47eucV97PWtJkR77EbrCeNSdL22DFwbdY2MfO8ADW9axlh4XeGPj1Z2H0Ys0jZ5D1cwe4dzfPCe7jB5e2BoYdEeoFsAcY8ooMzHWy8YBFOsrvFeEdY9gM8i8vpIjz3mD2cPPTTUip5hNbwsWzyBjDjPAF5n/AnJFcbWShiX54lxmP1eq6RW0DCJr1gH3GbOvAAAAAElFTkSuQmCC");
- addEventListener("popupshowing",()=> menuitem.hidden=( !gContextMenu.onLink && // показывать на ссылке и сайтах из списка
- !/www.youtube.com|ok.ru|vk.com|mail.ru/.test(content.location))
- , false, goVideo);
- menuitem.onclick = function(e) { // клик на ссылке (желательно на видео-ссылке)
- gContextMenu.onLink ? goLink(gContextMenu.getLinkURL(), e) : goLink(content.location.href, e);
- };
- // подсказка к пункту меню
- addEventListener("mouseover", function(e) {
- var target = e.target;
- var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
- var label1 = tooltip.appendChild(document.createElement("label"));
- var txt = tooltip.appendChild(document.createElement("label"));
- var image = tooltip.appendChild( document.createElement("image") );
- var info = tooltip.appendChild(document.createElement("label"));
- label1.style.cssText = "font-weight: bold !important;";
- label1.setAttribute("value", "Открыть в плеере: " + player);
- txt.setAttribute("value", "Правый клик 🖰: скачать");
- image.setAttribute("src",'data:image/gif;base64,R0lGODlhAQABAIAAMQAAAP///ywAAAAAAQABAAACAkQBADs='); // чёрная точка
- info.setAttribute("value", "Текст в Clipboard = Title");
- tooltip.showPopup(e.target, -1, -1, "popup", "topleft", "topright");
- setTimeout(()=>tooltip.remove(), 20000);
- e.target.onmouseleave =()=> { tooltip.remove(); e.target.onmouseleave = null;};
- }, true, menuitem);
- addDestructor(()=> menuitem.remove() );
- })(document.getElementById("contentAreaContextMenu"));
- window.statusTextField = function (text, time) { // Показ сообщения в строке статуса
- time = time || 3000; // аргумент функции не указан
- XULBrowserWindow.statusTextField.label = text; setTimeout(()=> XULBrowserWindow.statusTextField.label = '',time); // window.sleep( time/2 );
- };
- window.convertFromUnicode = function(charset, str) {
- var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
- converter.charset = charset;
- str = converter.ConvertFromUnicode(str);
- return str + converter.Finish();
- };
- window.exec = function (path, args ) { // указать полный путь команды Windows
- if (!path) path = '/usr/bin/nohup'; // для Linux нужен только параметр: имя команды, скрипта
- var file = Services.dirsvc.get('CurProcD', Ci.nsIFile);
- file.initWithPath(path);
- if(file.exists()) {
- var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
- process.init(file);
- process.run(false, args, args.length);
- } else custombuttons. alertBox ("Файл не найден", path); // Сообщение об ошибке
- };
Видео на ссылке или строке адреса: проиграть/скачать внешним приложением. Текст в Clipboard = mpv Title