// ==UserScript== // @name get douban info at BYRBT moive|北邮人增加豆瓣评分及收藏按钮 // @author Exhen // @description 在北邮人增加豆瓣评分,看过的显示评分,没看过的增加“看过”“想看”按钮 // @namespace exhen_js // @include http://bt.byr.cn/torrents.php* // @include https://bt.byr.cn/torrents.php* // @include http://bt.byr.cn/details.php* // @include https://bt.byr.cn/details.php* // @icon http://bt.byr.cn/favicon.ico // @connect douban.com // @grant GM_xmlhttpRequest // @grant GM_setClipboard // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @version 20180115.1 // @downloadURL https://update.greasyfork.icu/scripts/36947/get%20douban%20info%20at%20BYRBT%20moive%7C%E5%8C%97%E9%82%AE%E4%BA%BA%E5%A2%9E%E5%8A%A0%E8%B1%86%E7%93%A3%E8%AF%84%E5%88%86%E5%8F%8A%E6%94%B6%E8%97%8F%E6%8C%89%E9%92%AE.user.js // @updateURL https://update.greasyfork.icu/scripts/36947/get%20douban%20info%20at%20BYRBT%20moive%7C%E5%8C%97%E9%82%AE%E4%BA%BA%E5%A2%9E%E5%8A%A0%E8%B1%86%E7%93%A3%E8%AF%84%E5%88%86%E5%8F%8A%E6%94%B6%E8%97%8F%E6%8C%89%E9%92%AE.meta.js // ==/UserScript== var dialog_html = '
x

添加收藏:我看过这部电影

给个评价吧?(可选):
  • 140 简短评论:
'; var myScriptStyle = document.createElement("style"); myScriptStyle.innerHTML = ''; document.getElementsByTagName("head")[0].appendChild(myScriptStyle); var myScriptFunction = document.createElement('script'); myScriptFunction.innerHTML = 'function setRating(rating) { $("#n_rating").attr("rating", rating); $("#dialog #stars span").slice(0, rating).text("★"); $("#dialog #stars span").slice(0, rating).css("color", "#f9ba23"); $("#dialog #stars span").slice(rating, 5).text("☆"); $("#dialog #stars span").slice(rating, 5).css("color", "grey"); } function checkPrivate(disabled) { $("#share-shuo").attr("disabled", disabled); $(".share-shuo").css("color",disabled?"#ccc":"#666666"); } function close_dialog() { $("#dialog").remove(); } function starFocus(num, stat) { if (stat) { $("#dialog #stars span").slice(0, num).text("★"); $("#dialog #stars span").slice(0, num).css("color", "#f9ba23"); } else { $("#dialog #stars span").slice($("#n_rating").attr("rating"), num).text("☆"); $("#dialog #stars span").slice($("#n_rating").attr("rating"), num).css("color", "grey"); } }'; document.getElementsByTagName("head")[0].appendChild(myScriptFunction); var getDoc, getJSON, parseURL, postDoc; getDoc = function (url, meta, callback) { GM_xmlhttpRequest({ method: 'GET', url: url, headers: { 'User-agent': window.navigator.userAgent, 'Content-type': 'text/html; charset=utf-8' }, onload: function (responseDetail) { var doc; doc = ''; if (responseDetail.status == 200) { doc = (new DOMParser).parseFromString(responseDetail.responseText, 'text/html'); if (doc == undefined) { doc = document.implementation.createHTMLDocument(''); doc.querySelector('html').innerHTML = responseText; } } callback(doc, responseDetail, meta); } }); }; postDoc = function (url, data, meta, callback) { GM_xmlhttpRequest({ anonymous: true, method: 'POST', url: url, headers: { 'User-agent': window.navigator.userAgent, 'Content-type': 'text/html; charset=utf-8' }, data: data, onload: function (responseDetail) { callback(responseDetail.responseText, responseDetail, meta); } }); }; getJSON = function (url, callback) { GM_xmlhttpRequest({ method: 'GET', url: url, headers: { 'Accept': 'application/json' }, onload: function (response) { if (response.status >= 200 && response.status < 400) { callback(JSON.parse(response.responseText), url); } else { // console.log('Error getting ' + url + ': ' + response.statusText); } } }); }; parseURL = function (url) { var a; a = document.createElement('a'); a.href = url; return { source: url, protocol: a.protocol.replace(':', ''), host: a.hostname, port: a.port, query: a.search, params: (function () { var i, len, ret, s, seg; ret = {}; seg = a.search.replace(/^\?/, '').split('&'); len = seg.length; i = 0; s = void 0; while (i < len) { if (!seg[i]) { i++; continue; } s = seg[i].split('='); ret[s[0]] = s[1]; i++; } return ret; })(), file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1], hash: a.hash.replace('#', ''), path: a.pathname.replace(/^([^\/])/, '/$1'), relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1], segments: a.pathname.replace(/^\//, '').split('/') }; }; var doubanPlugin = function (imdb) { // console.log("i1", imdb); var douban_icon = $(''); douban_icon.attr('imdb', imdb); douban_icon.click(function () { // console.log('i2', imdb); var douban_id; $('button.douban_icon').filter(function () { // console.log('current checking',imdb); return $(this).attr('imdb') == imdb; }).hide(); getJSON('http://api.douban.com/v2/movie/search?q=' + imdb, function (res, url) { douban_id = res.subjects[0].id; var douban_rating = res.subjects[0].rating.average; // var imdb = url.slice(40); // console.log('slice got', imdb); // alert(douban_id); var douban_url = 'https://movie.douban.com/j/subject/' + douban_id + '/interest'; var douban_rating_icon = $(' /10'); douban_rating_icon.find('a').attr('href', 'https://movie.douban.com/subject/' + douban_id); // rating_icon.append('my rating'); // rating_icon.append((rating * 2)); // rating_icon.append('/10'); // rating_icon.attr('href', douban_url); getJSON(douban_url, function (res, url) { var douban_html = $(res.html); var user_stat = res.interest_status; var user_rating = douban_html.find('#n_rating').attr('value'); var ck = douban_html.find('input[name="ck"]').attr('value'); // console.log("ck=" + ck); if (user_stat) { if (user_rating) { // alert('yes'); var rating_icon = $(' /10'); rating_icon.find('a').attr('href', 'https://movie.douban.com/subject/' + douban_id); // rating_icon.append('my rating'); // rating_icon.append((rating * 2)); // rating_icon.append('/10'); // rating_icon.attr('href', douban_url); rating_icon.find('#my_rating').text(user_rating * 2); $('.imdbRatingPlugin').filter(function () { // console.log('current checking',imdb); return $(this).attr('data-title') == imdb; }).parent().append(rating_icon); $('.imdbRatingPlugin').filter(function () { // console.log('current checking',imdb); return $(this).attr('data-title') == imdb; }).parent().append(user_stat == 'wish' ? '我想看这部电影' : '我看过这部电影'); } else { collectPlugin(imdb, douban_id, ck); } $('button.douban_rating').filter(function () { // console.log('current checking',imdb); return $(this).attr('imdb') == imdb; }).hide(); } else { wishPlugin(imdb, douban_id, ck); collectPlugin(imdb, douban_id, ck); } }); douban_rating_icon.find('#my_rating').text(douban_rating); $('.imdbRatingPlugin').filter(function () { // console.log('current checking',imdb); return $(this).attr('data-title') == imdb; }).after(douban_rating_icon); }); }); // console.log('inPluginThisis', $(this).attr('class')); return douban_icon; }; var wishPlugin = function (imdb, douban_id, ck) { var douban_wish = $(''); douban_wish.attr('imdb', imdb); douban_wish.click(function open_dialog() { $(this).after(dialog_html); $('#dialog .interest-form-hd h2').text('添加收藏:我想看这部电影'); $('#dialog .interest-rating').remove(); $("#dialog textarea.comment").keyup(function () { var comment = $(this).attr('value'); var eng = comment.match(/[^\x00-\xff]/gi), engCount = eng ? eng.length : 0, chsCount = comment.length - engCount; var maxlength = 140 + Math.ceil(chsCount / 2); $("#dialog textarea.comment").attr("maxlength", maxlength); $("#dialog span.num").text(maxlength - comment.length); }); $(this).siblings().find('input[type="submit"]').click(function () { var comment = $('#dialog').find('textarea').attr('value'); var share = $('#dialog').find('#share-shuo:checked').attr('value'); var private = $('#dialog').find('#inp-private:checked').attr('name'); // console.log('share', share); GM_xmlhttpRequest({ method: 'POST', url: 'https://movie.douban.com/j/subject/' + douban_id + '/interest', data: "ck=" + ck + "&interest=wish&" + "&foldwish=U&comment=" + comment + (share ? "&share-shuo=" + share : "") + (private ? "&private=on" : ""), headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" }, onload: function (responseDetails) { alert(responseDetails.status + ' ' + responseDetails.statusText); } }); $('.imdbRatingPlugin').filter(function () { // console.log('current checking',imdb); return $(this).attr('data-title') == imdb; }).parent().append('我想看这部电影'); $('button.douban_wish').filter(function () { // console.log('current checking',imdb); return $(this).attr('imdb') == imdb; }).hide(); close_dialog(); }); // console.log(douban_id); }); $('.imdbRatingPlugin').filter(function () { // console.log('current checking',imdb); return $(this).attr('data-title') == imdb; }).parent().append(douban_wish); }; var collectPlugin = function (imdb, douban_id, ck) { var douban_collect = $(''); douban_collect.attr('imdb', imdb); douban_collect.click(function open_dialog() { $(this).after(dialog_html); $("#dialog textarea.comment").keyup(function () { var comment = $(this).attr('value'); var eng = comment.match(/[^\x00-\xff]/gi), engCount = eng ? eng.length : 0, chsCount = comment.length - engCount; var maxlength = 140 + Math.ceil(chsCount / 2); $("#dialog textarea.comment").attr("maxlength", maxlength); $("#dialog span.num").text(maxlength - comment.length); }); $(this).siblings().find('input[type="submit"]').click(function () { var user_rating = $('#dialog').find('#n_rating').attr('rating'); var comment = $('#dialog').find('textarea').attr('value'); var share = $('#dialog').find('#share-shuo:checked').attr('value'); var private = $('#dialog').find('#inp-private:checked').attr('name'); // console.log('share', share); GM_xmlhttpRequest({ method: 'POST', url: 'https://movie.douban.com/j/subject/' + douban_id + '/interest', data: "ck=" + ck + "&interest=collect&" + (user_rating ? 'rating=' + user_rating : '') + "&foldcollect=U&comment=" + comment + (share ? "&share-shuo=" + share : "") + (private ? "&private=on" : ""), headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" }, onload: function (responseDetails) { // alert(responseDetails.status + // ' ' + responseDetails.statusText + '\n\n' + // 'Feed data:\n' + responseDetails.responseText); alert(responseDetails.status + ' ' + responseDetails.statusText); } }); var rating_icon = $(' /10我看过这部电影'); rating_icon.find('a').attr('href', 'https://movie.douban.com/subject/' + douban_id); rating_icon.find('#my_rating').text(user_rating * 2); $('.imdbRatingPlugin').filter(function () { // console.log('current checking',imdb); return $(this).attr('data-title') == imdb; }).parent().find('span#status').remove(); $('.imdbRatingPlugin').filter(function () { // console.log('current checking',imdb); return $(this).attr('data-title') == imdb; }).parent().append(rating_icon); $('button').filter(function () { // console.log('current checking',imdb); return $(this).attr('imdb') == imdb; }).hide(); close_dialog(); }); // console.log(douban_id); }); $('.imdbRatingPlugin').filter(function () { // console.log('current checking',imdb); return $(this).attr('data-title') == imdb; }).parent().append(douban_collect); }; $('.torrents tbody tr .imdbRatingPlugin').each(function () { $(this).before('
'); var imdb = $(this).attr('data-title'); $(this).after(doubanPlugin(imdb)); }); $('#outer h1 .imdbRatingPlugin').each(function () { $(this).before('
'); var imdb = $(this).attr('data-title'); $(this).after(doubanPlugin(imdb)); $('button.douban_icon').click(); });