Ileca's Fap Viewer

Fap hand in hand with Ileca for a better tomorrow.

  1. // ==UserScript==
  2. // @namespace ileca
  3. // @name Ileca's Fap Viewer
  4. // @description Fap hand in hand with Ileca for a better tomorrow.
  5. // @version 2.1.0
  6. // @include https://exhentai.org/s/*
  7. // @include https://e-hentai.org/s/*
  8. // @require https://code.jquery.com/jquery-3.3.1.min.js
  9. // @grant GM_getValue
  10. // @grant GM_setValue
  11. // @grant GM_registerMenuCommand
  12. // ==/UserScript==
  13.  
  14. var auto, now;
  15. auto = now = GM_getValue('auto');
  16. if(auto === undefined)
  17. {
  18. auto = 'y';
  19. now = 'y';
  20. }
  21.  
  22. $('body').css('background','#34353b').css('color','#f1f1f1');
  23. $('#i1').css('background','#4f535b');
  24. $('a').css('color','#f1f1f1');
  25. $('div.sni').css('border-color','#000000');
  26.  
  27. function pageNumber() {
  28. var page_number = $('#i2 .sn > div').text();
  29. $('#img').prop('title', page_number);
  30. }
  31. pageNumber();
  32.  
  33. function resizer(){
  34. observer.disconnect();
  35. pageNumber();
  36. var img = $("#img");
  37. var ViewportH = $(window).height();
  38. wrapper.css('position','fixed').css('top',0).css('left',0).css('z-index',10).css('width','100%').css('height',ViewportH+'px').css('line-height',ViewportH+'px').css('background-color','black');
  39. imgH = img.height();
  40. imgW = img.width();
  41. var ratio = ViewportH/imgH;
  42. img.css('height',ViewportH+'px').css('width',ratio*imgW+'px');
  43. observer.observe(target,config);
  44. }
  45.  
  46. function desizer(){
  47. $(window).off('resize');
  48. observer.disconnect();
  49. wrapper.css('position','static').css('background-color','').css('height','').css('line-height','');
  50. $("#img").css('height','auto').css('width','auto');
  51. }
  52.  
  53. wrapper = $("#i3");
  54. var target = wrapper.get(0);
  55. var observer = new MutationObserver(resizer);
  56. var config = {
  57. attributes: true,
  58. childList: true,
  59. characterData: true,
  60. subtree: true
  61. };
  62. if(auto == 'y') observer.observe(target,config);
  63.  
  64. $(document).keypress(function(e) {
  65. if(e.which == 43 || e.which == 109) $('#i5 a')[0].click();//(+)/(M) >gallery main page
  66. else if(e.which == 13)
  67. {
  68. if(now == 'y')
  69. {
  70. desizer();
  71. now = 'n';
  72. }
  73. else
  74. {
  75. resizer();
  76. now = 'y';
  77. }
  78. }
  79. else if(e.which == 45 || e.which == 102) $('.ip a')[0].click();//(-)/(F) Key >front page
  80. else if(e.which == 103) $('#i6 a')[0].click();//(G) Key >show all galleries with this file
  81. });
  82.  
  83. function setSetting(){
  84. newSet = prompt('Auto-trigger IFV at start? Choices: y/n.\nPlaceholder = current setting.',auto);
  85. if(newSet == 'y' || newSet == 'n')
  86. {
  87. if(newSet != auto) GM_setValue('auto',newSet);
  88. auto = newSet;
  89. alert('New setting properly saved. Refresh if you want to see the change.');
  90. }
  91. else if(newSet !== null) alert('Wrong value. New setting could not be set.');
  92. }
  93. GM_registerMenuCommand("Ileca's Fap Viewer > settings",setSetting);