// ==UserScript== // @name sukebei preview // @namespace https://sukebei.nyaa.si/ // @author darkyop // @version 0.24 // @description sukebei preview script // @include http*://sukebei.nyaa.si/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js // @require http://cdnjs.cloudflare.com/ajax/libs/markdown-it/8.3.1/markdown-it.min.js // @grant GM_xmlhttpRequest // @copyright 2012+, You // @downloadURL none // ==/UserScript== var markdownOptions = { html: false, breaks: true, linkify: true, typographer: true }; var markdown = window.markdownit(markdownOptions); markdown.renderer.rules.table_open = function(tokens, idx) { return ''; }; $(function() { $("body").append(""); $("#nyaa_check").on("change", function() { localStorage.setItem("nyaa_check", this.checked ? "use" : "no"); if(this.checked) { location.reload(); } }); var getNyaaUse = localStorage.getItem("nyaa_check"); if(getNyaaUse != undefined && getNyaaUse != null && getNyaaUse == "no") { $("#nyaa_check").prop("checked",false).trigger("change"); return false; } page.load(); page.convertload(); var convertIdx = 0; $(".torrent-list tbody tr").each(function(key) { var getTarget = $(this); var getUrl = getTarget.find("td:eq(1) a").attr("target","_blank").attr("href"); var getTime = getTarget.find("td:eq(4)").text(); if(getUrl != undefined && getUrl != "" && getUrl.indexOf("view") > -1) { page.checkpoint(true, getUrl); if(page.data[getUrl] == undefined) { page.list.push([getTarget, getUrl, getTime]); } else { convertIdx += 1; setTimeout(function() { page.convert(getTarget, page.data[getUrl][0], page.data[getUrl][1]); }, convertIdx * page.delay); } } }); //임시 클릭시 실행하기 if(page.autoload == false) { $("body").on("click", ".torrent-list .preview_box", function() { var getTarget = $(this); if(!getTarget.hasClass(".preview_box")) getTarget = $(this).closest(".preview_box"); var target = getTarget.data("target"); var data = getTarget.data("data"); var time = getTarget.data("time"); page.converthtml(getTarget, target, data, time); return false; }); } page.detail(0); if(page.debug == true) { $("body").append(""); $("#input_debug").on("focusin", function() { $(this).css({ width:500, height:200 }); }).on("focusout", function() { $(this).css({ width:80, height:60 }); }); } }); var page = { autoload: true, debug: false, delay: 600, list: [], data: {}, link: {}, prevlist: [0], detail: function(idx) { if(page.list[idx] == undefined) return; $.ajax({ url:page.list[idx][1], dataType:"html", success:function(data) { //console.log(data); if(data && data.indexOf("torrent-description") > -1) { var getHtml = $(data).find("#torrent-description").html(); page.data[page.list[idx][1]] = [getHtml, page.list[idx][2]]; page.convert(page.list[idx][0], getHtml, page.list[idx][2]); page.save(); } setTimeout(function() { page.detail(idx + 1); }, page.delay); }, error:function() { setTimeout(function() { page.detail(idx + 1); }, page.delay); } }); }, convert: function(target, data, time) { //console.log(data); var getDescHtml = markdown.render(data); var getPreviewBox = $("").insertAfter(target); getPreviewBox.data({ target:target, data:data, time:time }); //클릭시 실행하게 막기 if(page.autoload == true) { page.converthtml(getPreviewBox, target, data, time); } }, converthtml: function(getPreviewBox, target, data, time) { getPreviewBox.find("a").each(function() { var getText = $(this).text(); if(getText.indexOf("[/img") > -1) { getText = getText.replace("[/img]", "").replace("[/img", ""); $(this).attr("href",getText).empty().append(""); } }); getPreviewBox.find("img").css({ "maxWidth": 500 }).eq(0).each(function() { //if($(this).parent()[0].tagName == "A" && $(this).parent().attr("href") != "") { // return true; //} var getImg = $(this); var getLinkSrc = getImg.attr("src"); if(page.link[getLinkSrc] != undefined && page.link[getLinkSrc] != "") { console.log("link data", getLinkSrc, page.link[getLinkSrc]); getImg.attr("src",page.link[getLinkSrc]); } else { var getSrc = page.image("img", getImg, getLinkSrc, time); } }); getPreviewBox.find("a").attr("target","_blank").each(function() { $(this).slice(0,2).each(function() { var getLink = $(this); var getLinkSrc = getLink.attr("href"); if(getLinkSrc.indexOf("imgur.com") > -1) { if(getLinkSrc.indexOf(".jpg") == -1 && getLinkSrc.indexOf(".jpeg") == -1 && getLinkSrc.indexOf(".png") == -1) { var getImg = $("").attr("src", getLinkSrc + ".jpg").css("maxWidth", 500); var getImg2 = $("").attr("src", getLinkSrc + ".png").css("maxWidth", 500); getLink.empty().append(getImg).append(getImg2); } else { var getImg = $("").attr("src", getLinkSrc).css("maxWidth", 500); getLink.empty().append(getImg); } } else if(getLinkSrc.indexOf("jav321.com") > -1 && (getLinkSrc.indexOf(".jpg") > -1 || getLinkSrc.indexOf(".png") > -1)) { var getImg = $("").attr("src", getLinkSrc).css("maxWidth", 500); getLink.empty().append(getImg); } else if((getLinkSrc.indexOf("img169.com") > -1 || getLinkSrc.indexOf("imgtuku.com") > -1) && getLinkSrc.indexOf(".jp") > -1) { var getImg = $("").attr("src", getLinkSrc).css("maxWidth", 500); getLink.empty().append(getImg); } else { if(page.link[getLinkSrc] != undefined && page.link[getLinkSrc] != "") { console.log("link data", getLinkSrc, page.link[getLinkSrc]); var getImg = $("").attr("src", page.link[getLinkSrc]).css("maxWidth", 500); getLink.empty().append(getImg); } else { var getSrc = page.image("html", getLink, getLinkSrc, time); } } }); }); }, onload: function(type, target, src, img) { if(src != "") { console.log("onload",type,src,img); if(type == "img") { var imgObj = new Image(); imgObj.onload = function() { page.link[img] = src; page.convertsave(); console.log("onload success",type,src,img); target.addClass("active").attr("src",src).on("click", function() { window.open(src,"_blank"); return false; }); }; imgObj.src = src; } else { if(target.find("img.active").length > 0) return; var imgObj = new Image(); imgObj.onload = function() { page.link[img] = src; page.convertsave(); console.log("onload success",type,src,img); var getImg = $("").attr("src", src).css("maxWidth", 500); target.attr("src",src).empty().append(getImg); }; imgObj.src = src; } } }, image: function(type, target, img, time) { var getSrc = ""; //핫링크 차단 //imgadult.com imgtaxi.com imgdrive.net if(type == "img") { if(img.indexOf("pixsense.net") > -1) { getSrc = img.replace("small/","big/").replace("/small-","/"); } //else if(img.indexOf("imgwallet.com") > -1 || img.indexOf("img.yt") > -1 || img.indexOf("imgstudio.org") > -1 || img.indexOf("hentai-jav.top") > -1 || img.indexOf("hentai-sun.top") > -1 || img.indexOf("imageteam.org") > -1 || img.indexOf("imgdrive.net") > -1 || img.indexOf("imgadult.com") > -1 || img.indexOf("imgtaxi.com") > -1) { else if(img.indexOf("imgwallet.com") > -1 || img.indexOf("img.yt") > -1 || img.indexOf("imgstudio.org") > -1 || img.indexOf("hentai-jav.top") > -1 || img.indexOf("hentai-sun.top") > -1 || img.indexOf("star-hentai.com") > -1 || img.indexOf("hentai-baka.com") > -1 || img.indexOf("imageteam.org") > -1) { getSrc = img.replace("small/","big/"); } else { console.log("image", type,target,img,time); } if(getSrc != "") { page.onload(type, target, getSrc, img); } } else { //if(img.indexOf("imagetwist.com") > -1 || img.indexOf("imgazel.info") > -1 || img.indexOf("55888.eu") > -1 || img.indexOf("imgadult.com") > -1 || img.indexOf("dimtus.com") > -1 || img.indexOf("damimage.com") > -1 || img.indexOf("imagedecode.com") > -1 || img.indexOf("pixsense.net") > -1 || img.indexOf("imgtaxi.com") > -1 || img.indexOf("imgseed.com") > -1 || img.indexOf("imgchili.net") > -1 || img.indexOf("h-hentai.com") > -1) { if(img.indexOf("imagetwist.com") > -1 || img.indexOf("imgazel.info") > -1 || img.indexOf("55888.eu") > -1 || img.indexOf("imgadult.com") > -1 || img.indexOf("dimtus.com") > -1 || img.indexOf("damimage.com") > -1 || img.indexOf("imagedecode.com") > -1 || img.indexOf("pixsense.net") > -1 || img.indexOf("imgtaxi.com") > -1 || img.indexOf("imgseed.com") > -1 || img.indexOf("h-hentai.com") > -1) { console.log("html ajax", img); page.ajax(type, target, img); } else if(img.indexOf("imgchili.net") > -1) { getSrc = img.replace("imgchili.net/show/","i13.imgchili.net/"); page.onload(type, target, getSrc, img); } else { console.log("html", type,target,img,time); } } page.onload(type, target, getSrc, img); }, ajax: function(type, target, img) { GM_xmlhttpRequest({ method: "GET", url: img, overrideMimeType:"text/html; charset=utf-8", headers:{ "Content-Type": "text/html; charset=utf-8", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36", // If not specified, navigator.userAgent will be used. "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" // If not specified, browser defaults will be used. }, onload: function(response) { if(response && response.status && response.status == 200 && response.responseText) { var getHtml = $(response.responseText); console.log("html ajax onload", img); if(page.debug == true) { $("#input_debug").val(response.responseText); } var getSrc = ""; if(img.indexOf("pixsense.net") > -1) { if(getHtml.find("#myUniqueImg").length > 0) { getSrc = getHtml.find("#myUniqueImg").attr("src"); if(getSrc.indexOf("pixsense.net") == -1) { getSrc = getHtml.find("#myUniqueImg").parent().attr("href"); } } } else if(img.indexOf("imgadult.com") > -1 || img.indexOf("imgtaxi.com") > -1) { if(response.responseText.indexOf("og:image") > -1) { var getSrcArray = response.responseText.split("og:image")[1].split("\""); console.log(getSrcArray[2]); if(getSrcArray.length > 2 && getSrcArray[2] != "") { getSrc = getSrcArray[2]; } } //if(getHtml.find("meta[property='og:image']").length > 0) { //getSrc = getHtml.find("meta[property='og:image']").attr("content"); //if(getSrc != undefined && getSrc != null && getSrc != "") { // getSrc = getSrc.replace("/small","/big"); //} //else getSrc = ""; //} } else if(img.indexOf("imgazel.info") > -1 || img.indexOf("55888.eu") > -1 || img.indexOf("dimtus.com") > -1 || img.indexOf("damimage.com") > -1 || img.indexOf("imgseed.com") > -1 || img.indexOf("imagedecode.com") > -1) { if(getHtml.find("img.centred").length > 0) { getSrc = getHtml.find("img.centred").attr("src"); } else if(getHtml.find("img.centred_resized").length > 0) { getSrc = getHtml.find("img.centred_resized").attr("src"); } } else if(img.indexOf("imgchili.net") > -1) { if(getHtml.find("#show_image").length > 0) { getSrc = getHtml.find("#show_image").attr("src"); } } else if(img.indexOf("h-hentai.com") > -1) { if(getHtml.find(".dishImage").length > 0) { getSrc = getHtml.find(".dishImage > .attachment-full").attr("src"); } } else if(img.indexOf("imagetwist.com") > -1) { if(getHtml.find(".img-responsive").length > 0) { getSrc = getHtml.find(".img-responsive").attr("src"); } } if(getSrc != "") { page.onload(type, target, getSrc, img); } } } }); }, load: function() { var getLastTime = localStorage.getItem("sukebie_time"); var getNowTime = new Date().getTime(); var timeCheck = false; console.log("page load", parseInt(getLastTime, 10), getNowTime, getNowTime - parseInt(getLastTime, 10), getNowTime - parseInt(getLastTime, 10) < 1000 * 60 * 60); if(getLastTime == null || getLastTime == undefined || getLastTime == "" || getNowTime - parseInt(getLastTime, 10) < 1000 * 60 * 60) { timeCheck = true; } var getData = localStorage.getItem("sukebie_data"); if(timeCheck == true && getData != null && getData !=="") { getData = $.parseJSON(getData); if(getData != null && getData != undefined && getData.data != undefined) { page.data = getData.data; console.log("page load", page.data); } } else { console.log("데이터 초기화"); localStorage.removeItem("sukebie_data"); localStorage.removeItem("sukebie_list"); } page.checkpoint(false, ""); }, saveinterval: null, save: function() { clearTimeout(page.saveinterval); page.saveinterval = setTimeout(function() { console.log("page save", page.data); localStorage.setItem("sukebie_data",JSON.stringify({ time:new Date().getTime(), data:page.data })); localStorage.setItem("sukebie_time", new Date().getTime()); }, 3000); }, convertload: function() { var getData = localStorage.getItem("sukebie_list"); if(getData != null && getData !=="") { getData = $.parseJSON(getData); if(getData != null && getData != undefined && getData.data != undefined) { page.link = getData.data; console.log("page convertload", page.link); } } }, convertsaveinterval: null, convertsave: function() { clearTimeout(page.convertsaveinterval); page.convertsaveinterval = setTimeout(function() { console.log("page convertsave", page.link); localStorage.setItem("sukebie_list",JSON.stringify({ time:new Date().getTime(), data:page.link })); localStorage.setItem("sukebie_time", new Date().getTime()); }, 3000); }, checkpoint: function(type,url) { if(type == true) { var currCheck = parseInt(url.replace("/view/",""), 10); var maxCheck = true; $.each(page.prevlist, function(key, value) { if(currCheck <= value) { maxCheck = false; return false; } }); if(maxCheck == true) { page.prevlist.push(currCheck); localStorage.setItem("sukebie_checkpoint_list", JSON.stringify(page.prevlist.slice(-7))); } } else { var getPrev = localStorage.getItem("sukebie_checkpoint_list"); if(getPrev != null && getPrev != undefined && getPrev != "") { page.prevlist = $.parseJSON(getPrev); $.each(page.prevlist, function(key, value) { var getLast = $(".torrent-list tbody tr a[href='/view/" + value + "']"); if(getLast.length > 0) { $("").insertBefore(getLast.closest("tr")); } }); } } } };
" + getDescHtml + "

▼ 이전에 여기까지 읽음