Mydealz Script

Versteckt abgelaufene Dealz, verbreitert die Seitenansicht, entfernt den Newsletterhinweis und entfernt einige Referrerlinks

  1. // ==UserScript==
  2. // @name Mydealz Script
  3. // @description Versteckt abgelaufene Dealz, verbreitert die Seitenansicht, entfernt den Newsletterhinweis und entfernt einige Referrerlinks
  4. // @namespace cuzi
  5. // @oujs:author cuzi
  6. // @version 6
  7. // @license GPL-3.0
  8. // @include /^https?:\/\/www\.mydealz\.de\/.*/
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12.  
  13. if(document.querySelector('.page-canvas>.page-content')) {
  14.  
  15.  
  16.  
  17. // Old page
  18.  
  19.  
  20.  
  21.  
  22. (function main() {
  23. 'use strict';
  24.  
  25.  
  26. function decodeHtml(html) {
  27. var txt = document.createElement("textarea");
  28. txt.innerHTML = html;
  29. txt.innerHTML = txt.value;
  30. txt.innerHTML = txt.value;
  31. txt.innerHTML = txt.value;
  32. return txt.value;
  33. }
  34.  
  35. function putDealzToSleep() {
  36. var lis = document.querySelectorAll('.thread--expired .thread-title');
  37. for(let i = 0; i < lis.length; i++) {
  38. let li = lis[i].parentNode.parentNode.parentNode.parentNode;
  39. let s = li.style;
  40. s.maxHeight = '10em';
  41. s.overflow = 'auto';
  42. s.opacity = 0.5;
  43. li.addEventListener('click',reviveDeal);
  44. }
  45. }
  46.  
  47. function reviveDeal() {
  48. this.removeEventListener('click',reviveDeal);
  49. this.style.maxHeight = "";
  50. this.style.opacity = 1.0;
  51. }
  52.  
  53. function restoreLinks() {
  54.  
  55. var patterns = [
  56. {
  57. pattern: /^http:\/\/www\.mydealz\.de\/visit\?.*&d=(.+)/,
  58. test: (a, pattern) => pattern.test(a.href),
  59. decode: (a, pattern) => decodeHtml(decodeURIComponent(pattern.exec(a.href)[1]))
  60. },
  61. {
  62. pattern: /&amp;redir=(http.+)"/,
  63. test: (a, pattern) => "track" in a.dataset && pattern.test(a.dataset.track),
  64. decode: (a, pattern) => decodeHtml(decodeURIComponent(pattern.exec(a.dataset.track)[1]))
  65. },
  66. {
  67. pattern: /"label":"(http.+)"/,
  68. test: (a, pattern) => "track" in a.dataset && pattern.test(a.dataset.track),
  69. decode: (a, pattern) => decodeHtml(JSON.parse(a.dataset.track).label)
  70. }
  71. ];
  72. var a = document.querySelectorAll("a[target]");
  73. for(let i = 0; i < a.length; i++) {
  74. for(let j = 0, o = patterns[0]; j < patterns.length; o = patterns[++j]) {
  75. if(o.test(a[i], o.pattern)) {
  76. a[i].href = o.decode(a[i], o.pattern);
  77. }
  78. }
  79. }
  80. }
  81.  
  82.  
  83. // Widen page content
  84. document.querySelector('.page-canvas>.page-content').style.maxWidth = '120em';
  85.  
  86. // Restore links
  87. restoreLinks();
  88.  
  89. // Remove newsletter info
  90. try {
  91. let n = document.querySelector('li.inline-newsletter');
  92. n.parentNode.removeChild(n);
  93. } catch(e) {}
  94.  
  95. // Semi-hide expired dealz
  96. var exclude = [
  97. /^https?:\/\/www\.mydealz\.de\/(deals)|(freebies)|(gutscheine)\/.+-\d+/,
  98. /^https?:\/\/www\.mydealz\.de\/profile\/.*/,
  99. /^https?:\/\/www\.mydealz\.de\/search.*/];
  100. if(!exclude.some((pattern) => document.location.href.match(pattern))) {
  101. putDealzToSleep();
  102. }
  103.  
  104. // Change search form to https
  105. var form = document.querySelectorAll("form.search");
  106. for(let i = 0; i < form.length; i++) {
  107. form[i].setAttribute("action", form[i].getAttribute("action").replace(/^http:/,"https:"));
  108. }
  109.  
  110. })();
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121. } else {
  122. // New page
  123.  
  124. (function main() {
  125. 'use strict';
  126.  
  127.  
  128. function decodeHtml(html) {
  129. var txt = document.createElement("textarea");
  130. txt.innerHTML = html;
  131. txt.innerHTML = txt.value;
  132. txt.innerHTML = txt.value;
  133. txt.innerHTML = txt.value;
  134. return txt.value;
  135. }
  136.  
  137. function putDealzToSleep() {
  138. var lis = document.querySelectorAll('.ico--type-clock-grey');
  139. for(let i = 0; i < lis.length; i++) {
  140. let li = lis[i].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
  141. let s = li.style;
  142. s.maxHeight = '10em';
  143. s.overflow = 'auto';
  144. s.opacity = 0.5;
  145. li.addEventListener('click',reviveDeal);
  146. }
  147. }
  148.  
  149. function reviveDeal() {
  150. this.removeEventListener('click',reviveDeal);
  151. this.style.maxHeight = "";
  152. this.style.opacity = 1.0;
  153. }
  154.  
  155. function restoreLinks() {
  156.  
  157. var patterns = [
  158. {
  159. pattern: /^http:\/\/www\.mydealz\.de\/visit\?.*&d=(.+)/,
  160. test: (a, pattern) => pattern.test(a.href),
  161. decode: (a, pattern) => decodeHtml(decodeURIComponent(pattern.exec(a.href)[1]))
  162. },
  163. {
  164. pattern: /&amp;redir=(http.+)"/,
  165. test: (a, pattern) => "track" in a.dataset && pattern.test(a.dataset.track),
  166. decode: (a, pattern) => decodeHtml(decodeURIComponent(pattern.exec(a.dataset.track)[1]))
  167. },
  168. {
  169. pattern: /"label":"(http.+)"/,
  170. test: (a, pattern) => "track" in a.dataset && pattern.test(a.dataset.track),
  171. decode: (a, pattern) => decodeHtml(JSON.parse(a.dataset.track).label)
  172. }
  173. ];
  174. var a = document.querySelectorAll("a[target]");
  175. for(let i = 0; i < a.length; i++) {
  176. for(let j = 0, o = patterns[0]; j < patterns.length; o = patterns[++j]) {
  177. if(o.test(a[i], o.pattern)) {
  178. a[i].href = o.decode(a[i], o.pattern);
  179. }
  180. }
  181. }
  182. }
  183.  
  184.  
  185. // Restore links
  186. restoreLinks();
  187.  
  188. // Remove newsletter info
  189. try {
  190. let n = document.querySelector('.vwo-newsletterWidget-close1');
  191. n.parentNode.removeChild(n);
  192. } catch(e) {}
  193.  
  194. // Semi-hide expired dealz
  195. var exclude = [
  196. /^https?:\/\/www\.mydealz\.de\/(deals)|(freebies)|(gutscheine)\/.+-\d+/,
  197. /^https?:\/\/www\.mydealz\.de\/profile\/.*/,
  198. /^https?:\/\/www\.mydealz\.de\/search.*/];
  199. if(!exclude.some((pattern) => document.location.href.match(pattern))) {
  200. putDealzToSleep();
  201. }
  202.  
  203. })();
  204.  
  205.  
  206.  
  207.  
  208. }
  209.  
  210.  
  211.  
  212.  
  213.  
  214.