Skip to content

Instantly share code, notes, and snippets.

@lemenkov
Last active December 2, 2022 01:27
Show Gist options
  • Save lemenkov/9588282 to your computer and use it in GitHub Desktop.
Save lemenkov/9588282 to your computer and use it in GitHub Desktop.
Rutracker Magnet + trackers addon for GreaseMonkey
// ==UserScript==
// @name Rutracker.org Magnet URLs
// @namespace rutrackerorg-magnet-urls
// @description Transforms torrent hash into a magnet url
// @include https://rutracker.org/*
// @include https://rutracker.cr/*
// @include https://rutracker.net/*
// @include https://rutracker.nl/*
// @include http://rutrackerripnext.onion/*
// @version 9
// @grant none
// ==/UserScript==
// No longer using udp://tracker.opentrackr.org:1337/announce - it has hash blacklists
// No longer using udp://open.demonii.com:1337 - stopped operation
var trackers = [
"udp://tracker.coppersurfer.tk:6969/announce",
"udp://tracker.leechers-paradise.org:6969/announce",
"udp://tracker.internetwarriors.net:1337/announce",
"udp://exodus.desync.com:6969/announce",
"udp://tracker.openbittorrent.com:80/announce",
"udp://tracker.sktorrent.net:6969/announce",
"udp://tracker.zer0day.to:1337/announce",
"udp://tracker.pirateparty.gr:6969/announce"
]
if (window.BB.IS_GUEST) {
var e = document.getElementsByClassName('magnet-link')[0];
if (e) {
var magnet_link = e.getAttribute("href");
var hash = magnet_link.match(/^magnet:\?xt=urn:btih:([0-9A-F]{40})&tr=.*/)[1];
if (hash) {
var rutracker_tracker = decodeURIComponent(magnet_link.match(/.*\&tr=(.*)$/)[1]);
trackers.unshift(rutracker_tracker);
var urlencoded_trackers = trackers.map(function(tracker) {
return "&tr=" + encodeURIComponent(tracker);
});
e.innerText = hash;
e.innerHTML = "<a href='magnet:?xt=urn:btih:" + hash + urlencoded_trackers.join('') + "'>" + hash + "</a>";
}
}
}
else {
var e = document.getElementById("tor-hash");
if (e) {
var hash = e.innerText;
if (/^[0-9A-F]{40}$/.test(hash)) {
var parent_href = document.getElementsByClassName('med magnet-link magnet-link-16')[0];
var magnet_link = decodeURIComponent(parent_href.getAttribute("href"));
var rutracker_tracker = decodeURIComponent(magnet_link.match(/.*\&tr=(.*)$/)[1]);
if(rutracker_tracker)
trackers.unshift(rutracker_tracker);
var urlencoded_trackers = trackers.map(function(tracker) {
return "&tr=" + encodeURIComponent(tracker);
});
e.innerHTML = "<a href='magnet:?xt=urn:btih:" + hash + urlencoded_trackers.join('') + "'>" + hash + "</a>";
//e.innerHTML = rutracker_tracker;
}
}
}
@igormukhin
Copy link

Thanks!

@lemenkov
Copy link
Author

lemenkov commented Jun 7, 2015

Updated list of working trackers.

@lemenkov
Copy link
Author

Updated again.

@lemenkov
Copy link
Author

Updated to be usable w/o registration.

@Xant1k
Copy link

Xant1k commented Feb 18, 2017

Спасибо за скрипт.
Публичные трекеры можно взять у меня https://github.com/Xant1k/Trackers
И ещё когда-то скрипт не работал для Firefox. Советовали заменить e.innerText; > e.textContent;

@lemenkov
Copy link
Author

@Xant1k, о круто - там onion-трекер есть. А есть какие-то ограничения на недоступные трекеры и на их количество? Хотя это все, скорее всего, зависит от реализации torrent-клиента.

@Xant1k
Copy link

Xant1k commented Mar 6, 2017

есть какие-то ограничения на недоступные трекеры и на их количество?

Вряд ли. Я пробовал добавлять множество различных (доступных и недоступных), никаких замечаний со стороны клиента не было.

@lemenkov
Copy link
Author

Удалил http://rutracker.org, добавил другие домены для https://, добавил *.onion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment