Mangaupdates - Custom releases page

Splits releases page into to areas. One for Novels and one for Mangas. Also adds menu bar that allows to hide novels,mangas and oneshots.

当前为 2016-10-24 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Mangaupdates - Custom releases page
  3. // @version 2.21
  4. // @description Splits releases page into to areas. One for Novels and one for Mangas. Also adds menu bar that allows to hide novels,mangas and oneshots.
  5. // @namespace https://greasyfork.org/en/scripts/10937-mangaupdates-custom-releases-page
  6. // @include https://www.mangaupdates.com/releases.html*
  7. // @include http://www.mangaupdates.com/releases.html*
  8. // @copyright 2015+, MiPo91
  9. // @grant none
  10. // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js
  11. // ==/UserScript==
  12.  
  13. $( document ).ready(function() {
  14.  
  15. // Otsikoiden laitto (paivamaarat)
  16. $(".titlesmall").each(function (){
  17. $(this).next().children().children().prepend('<tr><td width="44%" class="pad" style="background: rgb(240, 243, 247) none repeat scroll 0% 0%;"><b><a href="/releases.html?orderby=title">Title<span style="display:none;">(Novel)</span></a></b></td><td width="20%" class="pad" style="background: rgb(240, 243, 247) none repeat scroll 0% 0%;"><b><a href="/releases.html?">Release</a></b></td><td width="36%" class="pad" style="background: rgb(240, 243, 247) none repeat scroll 0% 0%;"><b><a href="/releases.html?orderby=groups">Groups</a></b></td></tr>');
  18. $(this).next().children().children().prepend("<tr><td colspan='3' style='background: #d1d1d1;color:#f3f3f3;font-size: 16px;padding:5px 0;'>" + $(this).text() + " (Novel)</td></tr>");
  19. });
  20. // Deleting oneshots
  21. if(document.cookie.indexOf('oneshot') >=0 && document.cookie.indexOf('mangas') < 0) {
  22. $("#main_content div div tr:contains('Oneshot')").each(function () {
  23. $(this).remove();
  24. });
  25. }
  26. var novellit = [];
  27. $("#main_content div div tr:contains('(Novel)')").each(function () {
  28. $(this).children().removeAttr("bgcolor");
  29. novellit.push($(this).html());
  30. $(this).remove();
  31. });
  32. // Deleting mangas
  33. if(document.cookie.indexOf('oneshot') < 0 && document.cookie.indexOf('mangas') >=0) {
  34. $("#main_content div div tr:not(:contains('Oneshot'))").each(function () {
  35. $(this).remove();
  36. });
  37. }
  38. var muut = "";
  39. $("#main_content .alt").each(function(){
  40. // Otsikoiden laitto (paivamaarat)
  41. $(this).children().prepend("<tr><td colspan='3' style='background: #d1d1d1;color:#f3f3f3;font-size: 16px;padding:5px 0;'>"+ $(this).prev().text()+"</td></tr>");
  42. // Vanhat varit pois pohjasta
  43. $(this).children().children().children().children().removeAttr("bgcolor");
  44. $(this).children().children().children().each(function(i, el) {
  45. if (i % 2 === 0) {}
  46. else {
  47. $(el).children().css('background', '#F0F3F7');
  48. }
  49. });
  50. muut += $(this).html();
  51. });
  52. var valikko = '<div id="valikko" style="margin-bottom:10px;">Options: <span id="oneshot" style="background:#d1d1d1;padding:3px;color:#fff;cursor:pointer;margin:0 3px;">Oneshots: '+(document.cookie.indexOf('oneshot') >=0 ? '<i style="color:#ff0000;">Hidden</i>' : '<i style="color:#00ff00;">Visible</i>')+'</span><span id="novels" style="background:#d1d1d1;padding:3px;color:#fff;cursor:pointer;margin:0 3px;">Novels: '+(document.cookie.indexOf('novels') >=0 ? '<i style="color:#ff0000;">Hidden</i>' : '<i style="color:#00ff00;">Visible</i>')+'</span><span id="mangas" style="background:#d1d1d1;padding:3px;color:#fff;cursor:pointer;margin:0 3px;">Mangas: '+(document.cookie.indexOf('mangas') >=0 ? '<i style="color:#ff0000;">Hidden</i>' : '<i style="color:#00ff00;">Visible</i>')+'</span><span id="hoverShow" style="background:#d1d1d1;padding:3px;color:#fff;cursor:pointer;margin:0 3px;">Hover: '+(document.cookie.indexOf('hoverShow') >=0 ? '<i style="color:#ff0000;">Hidden</i>' : '<i style="color:#00ff00;">Visible</i>')+'</span></div>';
  53. var info = '<div id="info" style="margin-bottom:30px;font-size:10px;"><i>- Click options from above to hide/show content of your choice</i></div>';
  54. var otsikko = '<div style="margin-top:-30px;"><h3 style="float:left; width:49%;">Novels</h3><h3 style="float:right; width:49%;">'+(document.cookie.indexOf('oneshot') >= 0 ? "Mangas" : (document.cookie.indexOf('mangas') >= 0 ? "Oneshots" : "Mangas / Oneshots"))+'</h3></div>';
  55. var otsikko2 = '<div style="margin-top:-30px;"><h3 style="float:left; width:100%;">Novels</h3></div>';
  56. var otsikko3 = '<div style="margin-top:-30px;"><h3 style="float:left; width:100%;">'+(document.cookie.indexOf('oneshot') >= 0 ? "Mangas" : (document.cookie.indexOf('mangas') >= 0 ? "Oneshots" : "Mangas / Oneshots"))+'</h3></div>';
  57. var sisusNovellit = '<div class="alt" style="width:'+(document.cookie.indexOf('mangas') >=0 && document.cookie.indexOf('oneshot') >= 0 ? "100%" : "49%")+'; float:left; border:1px solid #ccc;overflow:hidden;margin-top:-10px;"><table class="text" cellspacing="0" cellpadding="0" border="0">';
  58. var sisusMuut = '<div class="alt" style="width:'+(document.cookie.indexOf('novels') >=0 ? "100%" : "49%")+'; float:right; border:1px solid #ccc;overflow:hidden;margin-top:-10px;">' + muut + '</div>';
  59. var novellit = novellit.map(function(d) { return d.replace('(Novel)', ''); });
  60. for(i = 0; i < novellit.length;i++) {
  61. j = i;
  62. if(j % 2 === 0) {
  63. sisusNovellit += "<tr style='padding: 3px;'>"+novellit[i]+"</tr>";
  64. }else {
  65. sisusNovellit += "<tr style='background: #F0F3F7; padding: 3px;'>"+novellit[i]+"</tr>";
  66. }
  67. }
  68. sisusNovellit += "</table></div>";
  69. var loput = "<div style='width: 100%;overflow:hidden;'>";
  70. loput += "<br /><center>" + $("#main_content div table:last").html() + "</center><br />";
  71.  
  72. $("#main_content center").each(function() {
  73. loput += "<center>" + $(this).html() + "</center><br />";
  74. });
  75. loput += "</div>";
  76. if(document.cookie.indexOf('novels') >=0) {
  77. $("#main_content div").html(valikko + info + otsikko3 + sisusMuut);
  78. }
  79. if(document.cookie.indexOf('mangas') >=0) {
  80. $("#main_content div").html(valikko + info + otsikko2 + sisusNovellit);
  81. }
  82. if((document.cookie.indexOf('mangas') < 0) && (document.cookie.indexOf('novels') < 0)) {
  83. $("#main_content div").html(valikko + info + otsikko + sisusNovellit + sisusMuut);
  84. }
  85. if((document.cookie.indexOf('mangas') >=0) && (document.cookie.indexOf('novels') >=0)) {
  86. $("#main_content div").html(valikko + info);
  87. }
  88. if((document.cookie.indexOf('mangas') >=0) && (document.cookie.indexOf('novels') >=0) && (document.cookie.indexOf('oneshot') < 0)) {
  89. $("#main_content div").html(valikko + info + otsikko3 + sisusMuut);
  90. }
  91. if((document.cookie.indexOf('mangas') >=0) && (document.cookie.indexOf('novels') < 0) && (document.cookie.indexOf('oneshot') < 0)) {
  92. $("#main_content div").html(valikko + info + otsikko + sisusNovellit + sisusMuut);
  93. }
  94. $("#main_content").append(loput);
  95. $("#valikko span").click(function(e){
  96. var cookie_nimi = $(this).closest('span').attr('id');
  97.  
  98. if(document.cookie.indexOf(cookie_nimi) >= 0) {
  99. document.cookie = cookie_nimi + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
  100. }
  101. else {
  102. document.cookie = cookie_nimi + '=;expires=Thu, 01 Jan 2018 00:00:01 GMT;';
  103. }
  104. location.reload();
  105. });
  106.  
  107. if(document.cookie.indexOf('hoverShow') < 0) {
  108. hoverStuff();
  109. var kuvanHaku;
  110. function hoverStuff() {
  111. $("#main_content").append("<div id=\"seriesHover\"></div>");
  112.  
  113. $(".alt tr").mouseenter(function(e){
  114. e.stopPropagation();
  115.  
  116. linkki = $(this).children().children('a[title="Series Info"]');
  117.  
  118.  
  119. if (linkki.attr('href').length != 30) {
  120. if(kuvanHaku && kuvanHaku.abort) kuvanHaku.abort();
  121.  
  122. parentOffset = $(this).position();
  123. parentWidth = $(this).width();
  124.  
  125. relX = parentOffset.left;
  126. relY = parentOffset.top + $(this).outerHeight(true);
  127.  
  128. elementti = this;
  129. kuvaDivi = $(this).find('.hoverInfo');
  130.  
  131. if(typeof kuvaDivi.html() == 'undefined') {
  132. kuvanHaku = $.ajax({
  133. url: linkki.attr('href'),
  134. type: 'GET',
  135. beforeSend: function() {
  136. $("#seriesHover").html('<div style="padding:0 5px;">Loading image...</div>');
  137. },
  138. success: function(data) {
  139. kuva = $(data).find('.sContainer:last .sContent:first img').attr('src');
  140. genretTeksti = '';
  141. genretPath = $(data).find('.sContainer:last .sContent:eq(1) a');
  142. author = $(data).find('.sContainer:last .sContent:eq(5)').text().split('[Add]');
  143. author = author.join();
  144. author = author.replace(/\s/g, '');
  145.  
  146. artist = $(data).find('.sContainer:last .sContent:eq(6)').text().split('[Add]');
  147. artist = artist.join();
  148. artist = artist.replace(/\s/g, '');
  149.  
  150. //artist = $(data).find('.sContainer:last .sContent:eq(6)').text();
  151. year = $(data).find('.sContainer:last .sContent:eq(7)').text();
  152. rating = $(data).find('.sContainer:first .sContent:eq(11)').text().split(".0")[0].substr(9);
  153.  
  154. genret = genretPath.each(function(index){
  155. if(index == genretPath.length - 2) {
  156. genretTeksti += $(this).text();
  157. }
  158. else if(index != genretPath.length - 1) {
  159. genretTeksti += $(this).text() +', ';
  160. }
  161. });
  162.  
  163. if(typeof kuva != 'undefined') {
  164. kuva = '<div class="kuva"><img src="'+kuva+'" width="121px"/></div>';
  165. } else {
  166. kuva = '<div class="kuva" style="padding:5px 5px;">No image has been found.</div>';
  167. }
  168.  
  169. $(elementti).append('<div class="hoverInfo" style="display: none;">'+kuva+'<div class="genret">'+genretTeksti+'</div><div class="muut"><div>Year: '+year+'</div><div>Rating: '+rating+'</div><div>Author: '+author+'</div><div>Artist: '+artist+'</div></div></div>');
  170. $("#seriesHover").html('<div class="kuva">'+kuva+'</div><div class="genret">'+genretTeksti+'</div><div class="muut"><div>Year: '+year+'</div><div>Rating: '+rating+'</div><div>Author: '+author+'</div><div>Artist: '+artist+'</div></div>');
  171.  
  172. $(".kuva, .genret").css({float:"left", display:"inline-block"});
  173. $(".genret").css({width:(parentWidth-131),padding:"0 5px"});
  174. $(".muut").css({width:(parentWidth-131),padding:"5px 5px",float:"left"});
  175.  
  176. $(linkki).css({color:"#282828"});
  177. }
  178. });
  179. } else {
  180. $("#seriesHover").html("<div>"+kuvaDivi.html()+"</div>");
  181. }
  182.  
  183.  
  184. isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
  185. if($(this).offset().top + 200 > ($(window).height() + $(window).scrollTop()) && isFirefox) {
  186. $("#seriesHover").css({position:"absolute", left:relX,top:(relY-($('#seriesHover').height() + $(elementti).height())),background:"#ccc",width:parentWidth,opacity:0.9});
  187. } else {
  188. $("#seriesHover").css({position:"absolute", left:relX,top:relY,background:"#ccc",width:parentWidth,opacity:0.9});
  189. }
  190.  
  191.  
  192. $(".kuva, .genret").css({float:"left", display:"inline-block"});
  193. $(".genret").css({width:(parentWidth-131),padding:"0 5px"});
  194. $("#seriesHover").show();
  195. }
  196. });
  197.  
  198. $(".alt tr").mouseleave(function(e){
  199. e.stopPropagation();
  200. $("#seriesHover").html("");
  201. $("#seriesHover").hide();
  202. });
  203. }
  204. }
  205. });