Created
November 22, 2016 20:55
-
-
Save thedward/fa78b2ad7815b874b62cadc5ef1d4ac2 to your computer and use it in GitHub Desktop.
adds magnet links to torrentz2.eu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name torrentz2.eu magnet links | |
// @author [email protected] | |
// @namespace [email protected] | |
// @version 0.3 | |
// @description adds magnet links to torrentz2.eu | |
// @match *://torrentz.eu/* | |
// @match *://torrentz.me/* | |
// @match *://torrentz.ch/* | |
// @match *://torrentz.in/* | |
// @match *://torrentz2.eu/* | |
// @match *://torrentz2.me/* | |
// @match *://torrentz2.ch/* | |
// @match *://torrentz2.in/* | |
// @copyright 2016+, Thedward Blevins | |
// ==/UserScript== | |
(function () { | |
'use strict'; | |
var call = Function.prototype.call ; | |
var slice = call.bind([].slice) ; | |
function createMagnetURI (btih,query) { | |
var uri = 'magnet:?xt=urn:btih:' + btih.match(/[0-9a-f]{40}/)[0]; | |
var names = Object.keys(query); | |
names.forEach( function (k) { | |
var val = encodeURIComponent(query[k]); | |
if ( k == 'kt' ) { val = val.replace('%20','+'); } | |
uri += '&' + k + '=' + val; | |
}); | |
//for (key in query) { | |
// var val = encodeURIComponent(query[key]); | |
// if ( key == 'kt' ) { val = val.replace('%20','+'); } | |
// uri += '&' + key + '=' + val; | |
//}; | |
return uri; | |
} | |
function createMagnetLink (dt) { | |
var a = dt.querySelector('a[href^="/"]'); | |
if (a) { | |
var query = {}; | |
var btih = a.href.match(/[0-9a-f]{40}/)[0]; | |
query.dn = a.textContent; | |
query.kt = a.nextSibling.textContent | |
.replace(/^\W+/,'') | |
.replace(/\b(non) (fiction)\b/,'$1-$2'); | |
var href = createMagnetURI(btih,query); | |
var link = document.createElement('a'); | |
link.classList.add('magnetLink'); | |
link.href = href; | |
return link; | |
} else { | |
console.log(dt); | |
return null; | |
} | |
} | |
function addStyle () { | |
var link = document.createElement('link'); | |
link.rel = 'stylesheet'; | |
link.href = '//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css'; | |
try { | |
document.head.appendChild(link); | |
} catch (e) { | |
console.log('Line 64'); | |
console.log(e); | |
} | |
var sheet = (function() { | |
// Create the <style> tag | |
var style = document.createElement("style"); | |
// WebKit hack :( | |
style.appendChild(document.createTextNode("")); | |
// Add the <style> element to the page | |
document.head.appendChild(style); | |
return style.sheet; | |
})(); | |
sheet.insertRule('i.fa-warning{color:rgb(255,0,0);}',0); | |
sheet.insertRule('i.magnet-incomplete{opacity:0.5}',0); | |
sheet.insertRule('a.magnetLink{padding-right: 10px;}',0); | |
return sheet; | |
} | |
var magnetIcon = function () { | |
var icon = document.createElement('i'); | |
icon.classList.add('fa','fa-magnet'); | |
return function (title) { | |
return icon.cloneNode(true); | |
}; | |
}(); | |
function insertMagnetLink (dt) { | |
var magnet = createMagnetLink(dt); | |
var icon = magnetIcon(); | |
try { | |
magnet.appendChild(icon); | |
} catch (e) { | |
console.log('Line 102'); | |
console.log(e); | |
} | |
var link = dt.querySelector('a[href^="/"]'); | |
if ( link ) { | |
dt.insertBefore(magnet,link); | |
} | |
} | |
function addMagnetLinks (node) { | |
var results = slice(node.querySelectorAll('div.results dl dt')).filter(dt => dt.querySelector('a') && ! dt.querySelector('a.magnetLink') ); | |
results.map( insertMagnetLink ); | |
} | |
if ( document.querySelector('div.results') ) { | |
addStyle(); | |
addMagnetLinks(document); | |
var observer = new MutationObserver( function (mutations) { | |
mutations.forEach(m => addMagnetLinks(m.target)) ; } | |
); | |
observer.observe(document,{childList:true,subtree:true}); | |
} | |
}()); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment