Greasy Fork is available in English.

补全hash磁力链并粘贴至粘贴板

鼠标选中哈希值(散列),会自动进行相应的磁力链接下载

// ==UserScript==
// @name        补全hash磁力链并粘贴至粘贴板
// @namespace   sky
// @description 鼠标选中哈希值(散列),会自动进行相应的磁力链接下载
// @include     /^https?:*/
// @author      sky
// @icon        https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2166564894,3332278849&fm=26&gp=0.jpg
// @license     MIT
// @version     1.0.5
// @grant       none
// ==/UserScript==

function generateLink() {
    let textContent = window.getSelection().toString().trim();

    if (textContent.length === 40 || textContent.length === 32) {

        if (textContent.match(/^\w{40}|\w{32}/)) {
            magnetLink = "magnet:?xt=urn:btih:" + textContent;
            
            // 开始下载
          copyMagnetLink(magnetLink)

        } else {
            // 所选字符串并非HASH串
        }

    }

}

/**
 * 接受一个链接,自动开始下载
 * 建立一个a标签并设置其href属性,建立一个鼠标点击事件,让a模拟触发
 * @param link
 */
function autoDownload(link) {

    let btnDownload = document.createElement('a'),
        clickEvent = document.createEvent("MouseEvent");

    clickEvent.initEvent("click", true, false);
    btnDownload.setAttribute("href", link);

    btnDownload.dispatchEvent(clickEvent);

}
/**
 * 接受一个链接,复制到粘贴板
 * @param link
 */
function copyMagnetLink(link){
  if(window.clipboardData){
        window.clipboardData.setData('text',link);
    }else{
        (function(link){
            document.oncopy=function(e){
                e.clipboardData.setData('text',link);
                e.preventDefault();
                document.oncopy=null;
            }
        })(link);
        document.execCommand('Copy');
    }
}

window.addEventListener("mouseup", generateLink);