Torrentz2 Magnet Links

Add magnet links to Torrentz2 search results

// ==UserScript==
// @name        Torrentz2 Magnet Links
// @namespace   mnewt
// @description Add magnet links to Torrentz2 search results
// @include     https://torrentz2.eu/*
// @include     https://torrentz2.me/*
// @include     https://torrentz2.is/*
// @include     https://torrentzwealmisr.onion.ly/*
// @version     1.2
// @grant       GM_addStyle
// @inject-into auto
// ==/UserScript==

const linkText = "🧲 ";
const defaultTrackers = `
udp://tracker.opentrackr.org:1337/announce
udp://tracker.internetwarriors.net:1337/announce
udp://exodus.desync.com:6969/announce
udp://tracker.cyberia.is:6969/announce
http://explodie.org:6969/announce
udp://opentracker.i2p.rocks:6969/announce
udp://47.ip-51-68-199.eu:6969/announce
http://open.acgnxtracker.com:80/announce
udp://open.stealth.si:80/announce
udp://www.torrent.eu.org:451/announce
udp://tracker.torrent.eu.org:451/announce
udp://tracker.tiny-vps.com:6969/announce
udp://tracker.ds.is:6969/announce
udp://retracker.lanta-net.ru:2710/announce
udp://tracker.moeking.me:6969/announce
udp://tracker.dler.org:6969/announce
udp://ipv4.tracker.harry.lu:80/announce
http://rt.tace.ru:80/announce
udp://valakas.rollo.dnsabr.com:2710/announce
udp://opentor.org:2710/announce
`;

const trackerQuery = defaultTrackers.replace(/\n/g,"&tr=");

document.querySelectorAll('dl dt a').forEach(function(a) {
  const hash = a.href.substr(a.href.length - 40);
  const magnetUri = "magnet:?xt=urn:btih:" + hash + "&dn=" + a.textContent + trackerQuery;
  const magnetLink = document.createElement("a");
  magnetLink.href = magnetUri;
  magnetLink.style.fontWeight = "bold";
  magnetLink.innerHTML = linkText;
  a.parentNode.insertBefore(magnetLink, a);
});