MetroSave

Add Save button to Metrolyrics site

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

You will need to install an extension such as Tampermonkey to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

Advertisement:

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

Advertisement:

// ==UserScript==
// @name         MetroSave
// @namespace    greasyfork.org/Zart
// @version      2.2
// @date         2017-03-16
// @description  Add Save button to Metrolyrics site
// @author       Zart
// @icon         http://www.metrolyrics.com/favicon.ico
// @include      http://www.metrolyrics.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
  /*  //Fix Mozilla bug with innerText
    if (/Firefox/.test(navigator.userAgent)){
        var it = function(){var r=document.createRange();r.selectNode(this);var sel=window.getSelection();sel.addRange(r);var s=sel.toString();sel.removeAllRanges();return s;};
        Object.defineProperty(HTMLElement.prototype, 'innerText', {get: it});}

    var lyr = document.getElementsByClassName('verse');
    if (!lyr.length) return false;
    for (var i=0,s=[]; i<lyr.length; s.push(lyr[i++].innerText));
    var cop = document.getElementsByClassName('writers');
    for (i=0; i<cop.length-1; s.push(cop[i++].innerText));
    var src = document.getElementsByClassName('lyric-source')[0]; //mobile
    if(src) {src.lastChild.remove();src.lastChild.remove();s.push(src.innerText);}
    s = s.join('\n\n').replace(/\n/gm,'\r\n');*/

    var r=document.querySelectorAll('.verse,.writers:not(:last-child),.lyric-source>*:not(:nth-last-child(-n+2))');
    if (!r.length) return;
    for (var i=0,s=[]; i<r.length; i++){
        for (var j=0; j<r[i].childNodes.length; s.push(r[i].childNodes[j++].textContent));
        if(r[i].tagName=='P') s.push('\n\n'); else s.push('\n');}
    s = s.join('\n').replace(/\n{2,3}/g,'\n').replace(/\n/gm,'\r\n');

    var ss = document.styleSheets[0];
    ss.insertRule('.lyrics-top .social-bar a{width:calc((100% - 10px)/4)!important}',0);
    ss.insertRule('.container-8 .social-bar a{width: 20%!important}',0); //mobile
    var btn = document.getElementsByClassName('social-link');
    var a = btn[0].parentNode.insertBefore(document.createElement('A'), btn[0]);
    a.target = 'void';
    a.download = ml.lyricName + '.txt';
    var unsafe = /[^\0-\x7f\xa9]/, BOM = '\ufeff';
    if (unsafe.test(s))
        a.href = encodeURI('data:text/plain;utf8,' + BOM + s);
    else
        a.href = 'data:text/plain;quoted-printable,' + escape(s);

    a.style.cssText = 'background-color: green; background-position: center; background-repeat: no-repeat;';
    a.style.backgroundImage='url("data:image/gif;base64,R0lGODlhEAARAIABAP///wAAACH5BAkKAAEALAAAAAAQABEAAAIjjA2px6jfzoMxzFVvqlZzDXxeNjrg1Z1YejYqiYoUx9LMFhUAOw==")';
    a.style.marginRight = window.getComputedStyle(btn[0]).marginRight;  //mobile+desktop
})();