NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name LegendasTV+ // @namespace http://www.legendas.tv // @description Melhora a navegação e adiciona recursos ao site Legendas.tv // @include http://legendas.tv/* // @version 0.0.8 // @updateURL https://openuserjs.org/meta/nwolf/LegendasTV+.meta.js // @downloadURL https://openuserjs.org/install/nwolf/LegendasTV+.user.js // @grant GM_getResourceURL // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js // @require https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js // @resource yt_logo https://www.youtube.com/yt/brand/media/image/YouTube-logo-full_color.png // ==/UserScript== //inject JQuery UI $("head").append ( '<link href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css" ' + 'rel="stylesheet" type="text/css">' ); addGlobalStyle('.ui-tooltip {color: #58595B; font-size: 13px; font-weight: normal;}'); start(); function start() { var path = window.location.pathname; if(path === '/') { startMain(); } else { var download = /\/download\/(\w*)+\/[\w\/]*/i; if(download.test(path)){ startDownloadPage(download.exec(path)[1]); } } } // -------------------------------------------------------------------- // function startMain() { var target = document.querySelector('#pagination_target'); var observer = new MutationObserver(function(mutations) { addPosterLinks(); addNameDetails(); forceDirectDownloadLink(); }); var config = { childList: true }; observer.observe(target, config); } function addPosterLinks(){ var items = $('div.film'); var tooltip = getTooltip(); items.each(function(index, element){ var href = $(element).find('h3>a').attr('href'); var poster = $(element).children('img'); var link = document.createElement('a'); $(link).attr('href', href); $(link).attr('title', '_'); $(link).tooltip(tooltip); $(poster).wrapAll(link); }); } function addNameDetails(){ var links = $('div.film > h3 > a'); $(links).attr('title', '_'); $(links).tooltip(getTooltip()); } function getTooltip() { var onOpened = function(event, ui) { ui.tooltip[0].textContent = 'Carregando detalhes...'; var href = $(event.target).attr('href'); $.get(href, function(data){ var description = $('.t1 > p:nth-child(1)', data).text(); ui.tooltip[0].textContent = description; }); }; return { open: onOpened }; } function forceDirectDownloadLink() { var links = $('span.bt_seta_download>a'); links.each(function(index, element) { var href = $(element).attr('href').replace('download', 'downloadarquivo'); $(element).attr('href', href); }); } // -------------------------------------------------------------------- // function startDownloadPage(subId) { addTitleSearch(); addSearch(); addYoutube(); if(isSeriesDownload()) { //TODO; } else { //TODO; } } function addYoutube() { var title = $('div.middle.download>section.first h3').text(); var search = 'https://www.youtube.com/results?search_query=' + title; var mainText = $('div.middle.download>section>div.t2>p'); mainText.before( '<p>' + '<a href="' + search + '" target="_blank">' + '<img id="yt" src="' + GM_getResourceURL('yt_logo') + '" style="cursor:pointer;width:70px">' + '<span>Procurar no YouTube</span>' + '</a>' + '</p>' ); } function addSearch() { var description = $('div.middle.download>section>div.t2>p'); var textLines = document.evaluate(".//text()", description[0], null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); var isRelease = /\b(?:\w+[\. ]){3,}\w+-\w+\b/i; for (var i = 0; i < textLines.snapshotLength; i++) { var line = textLines.snapshotItem(i); if(isRelease.test($(line).text())) { var release = isRelease.exec($(line).text())[0]; var link = document.createElement('a'); $(link).attr('href', 'https://thepiratebay.org/search/' + release); $(line).wrap(link); } } } function addTitleSearch() { var title = $('div.middle.download>section.first h3'); var link = document.createElement('a'); $(link).attr('href', '/busca/' + title.text().replace(':', '')); $(title).wrap(link); } function isSeriesDownload() { var title1 = $('div.middle.download>section.first h3').text(); var title2 = $('div.middle.download>section.first h5').text(); var release = $('div.middle.download>section h1').text(); var hasSeason = /.*\s*S\d+E\d+.*\s*/i; return title1.toLowerCase().indexOf('temporada') > -1 || title2.toLowerCase().indexOf('temporada') > -1 || hasSeason.test(release); } // -------------------------------------------------------------------- // function searchImdbId() { var imdb = null; var imdbLink = /(http)?s?(:\/\/)?(www.)?imdb.com\/title\/(tt\d+)\/?/i; var links = $('div.middle.download>section>div.t2>p>a'); links.each(function(index, link){ var href = $(link).attr('href'); if(imdb === null && imdbLink.test(href)){ var groups = imdbLink.exec(href); imdb = groups[groups.length -1]; } }); return imdb; } function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); }