您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add working download links to Emuparadise
// ==UserScript== // @name Emuparadise Fix // @version 1.3.1 // @description Add working download links to Emuparadise // @author potato_potato // @match https://www.emuparadise.me/* // @grant none // @run-at document-end // @namespace https://greasyfork.org/users/445910 // ==/UserScript== 'use strict'; let style_content = ` .download_container { display: flex; flex-direction: row; align-items: center; vertical-align: middle; line-height: 2em; } .download_container > a { margin-right: 0.5em !important; } .download_container > .gamelist { line-height: inherit; float: none; } .download_icon_link { width: 15px !important; height: 15px !important; } .download_icon { width: 15px !important; height: 15px !important; } .top-menu-social-icon { width: 39px; } .pinned_icon { position: absolute; right: 0.25em; } `; // Inject our stylesheet into the page's <head>. function inject_style() { let head = document.head; let style = document.createElement('style'); style.type = 'text/css'; style.rel = 'stylesheet'; style.appendChild(document.createTextNode(style_content)); head.appendChild(style); } // Get the direct download link for a given ROM's gid. function download_url(gid) { return `https://www.emuparadise.me/roms/get-download.php?gid=${gid}&test=true` } // Returns `null` if it fails to find a valid integer function get_gid(url) { let parts = url.split('?')[0].split('/'); if (parts.length < 6) return 0; let gid = parseInt(parts[5]); if (!isNaN(gid)) return gid; } // Create a download `A` element with a download icon function create_download_link(gid, fancy) { let link = document.createElement('a'); link.href = download_url(gid); link.target = '_blank'; link.rel = 'alternate'; link.title = 'Download'; link.classList.add("download_icon_link"); if (fancy == true) { link.text = ''; let img = document.createElement('img'); img.classList.add("download_icon"); //img.src = 'https://freeiconshop.com/wp-content/uploads/edd/download-flat.png'; //img.src = 'https://img.icons8.com/officel/2x/download.png'; img.src = 'http://icons.iconarchive.com/icons/designbolts/thin-download/512/Simple-Download-icon.png'; link.appendChild(img); } else { link.text = '⬇️'; } return link; } // Pin a link to the top right of the page function corner_pin(link) { link.classList.add('top-level', 'pinned_icon', 'download_icon_link'); document.querySelector('.menu').appendChild(link); } // Replace the `href` for all download links to the current ROM with a direct download URL. function patch_download_links(gid) { let end = `${gid}-download`; document.querySelectorAll('.download-link > a').forEach(link => { if (link.href != null && link.href.endsWith(end)) { link.href = download_url(gid); }; }) } // Prepend direct download links to any links to ROM pages. // Note that we have to wrap the links in a Div. function patch_game_lists() { let game_links = document.querySelectorAll('a.gamelist'); game_links.forEach(link => { console.log(link.href); let gid = get_gid(link.href); if (gid != null) { let wrapper = document.createElement('div'); wrapper.classList.add("download_container"); link.parentElement.replaceChild(wrapper, link); let down = create_download_link(gid, true, '15px'); wrapper.appendChild(down); wrapper.appendChild(link); } }); } // Entry function. (function() { inject_style(); let gid = get_gid(document.location.href); if (gid != null && document.querySelector('.download-link') != null) { let download_link = create_download_link(gid, true); corner_pin(download_link); } patch_download_links(gid); patch_game_lists(); })();