NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Ace Links for r/SoccerStreams // @namespace http://www.nikosk93.io // @description A basic script that highlights the acestream links on r/SoccerStreams // @include /^.*\:\/\/.*\.reddit\.com\/r\/soccerstreams\/comments\/.*$/ // ==/UserScript== const $comments = document.querySelectorAll('div.commentarea div[data-type="comment"]'); const aceRegex = /(?:acestream\:\/\/)?([a-z0-9]{40})/gi; const getAceID = u => { let prefix = 'acestream://'; if (u.substr(0, prefix.length) == prefix) return u.substr(prefix.length); return u; } const getAceURL = id => 'acestream://' + id; const aceStyles = { 'color': '#fff', 'display': 'inline-block', 'backgroundColor': '#386D7A', 'borderRadius': '4px', 'padding': '4px 6px', 'border': '1px solid #fff' } const labelStyles = { 'color': '#444', 'display': 'inline-block', 'backgroundColor': '#fff', 'borderRadius': '2px', 'marginRight': '4px', 'padding': '0 3px', 'fontSize': '11px', 'fontWeight': 'bold' } const setStyles = ($el, styles) => { for (let key in styles) $el.style[key] = styles[key]; } const makeAceLink = (u, id) => { let $el = document.createElement('a'); $el.href = u; $el.className = 'ace-url'; $el.setAttribute('target', '_blank'); setStyles($el, aceStyles); $label = document.createElement('span'); $id = document.createElement('span'); $label.innerHTML = 'ace'; setStyles($label, labelStyles); $id.innerHTML = id; $el.appendChild($label); $el.appendChild($id); return $el; } for (let $comment of $comments) { let $commentBody = $comment.querySelector('div.usertext-body'); let content = $commentBody.innerHTML; let matches = null; if (matches = content.match(aceRegex)) { for (let aceMatch of matches) { let aceID = getAceID(aceMatch); let aceURL = getAceURL(aceID); let $link = makeAceLink(aceURL, aceID); console.log('[url] ' + aceURL + ' [id] ' + aceID); $commentBody.innerHTML = $commentBody.innerHTML.replace(aceMatch, $link.outerHTML); } } }