Advertisement
Chessax

E621 Sound/Epilepsy warning

Jun 26th, 2016
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name             E621 Sound/Epilepsy warning
  3. // @description      Temporarily blocks potentially harmful content, I (Chessax) hereby release this into the public domain free of use for any purpose.
  4. // @include          http*://e621.net/post/show/*
  5. // @grant            none
  6. // ==/UserScript==
  7.  
  8. //Tags to filter, 'message' key is optional
  9. var entries = [
  10.   {
  11.     tag: 'epilepsy_warning',
  12.     message: 'flashing or strobing lights or fast or disorienting movements'
  13.   },
  14.   {
  15.     tag: 'sound_warning',
  16.     message: 'loud sound'
  17.   }
  18. ]
  19.  
  20. //window.onload = function tagWarning(){
  21. var tagList = document.getElementById('post_tags').value;
  22. var header = '<h1>Warning!</h1><br /><p>This post has been tagged with ';
  23. var tags = '';
  24. var message = '';
  25. for (var i = 0; i < entries.length; ++i){
  26.   if ((new RegExp('\\b'+entries[i].tag+'\\b').test(tagList))){
  27.     tags += '<i>' + entries[i].tag + '</i>, ';
  28.     if (typeof entries[i].message != 'undefined' && entries[i].message != '' && entries[i].message != null){
  29.      message += entries[i].message + '; ';
  30.     }
  31.   }
  32. }
  33. tags = tags.slice(0, -2);
  34. if (message.length > 0){
  35.   message = ' and may contain:<br />' + message.slice(0, -2) + '.';
  36. }
  37. else{
  38.   message = '.';
  39. }
  40. var footer = '<br />Viewer discretion is advised.</p>';
  41.  
  42. var width, height;
  43. var found = false;
  44. //Image
  45. var img = document.getElementById('image')
  46. if (img) {
  47.   found = true;
  48.   width = img.clientWidth;
  49.   height = img.clientHeight;
  50. }
  51. //SWF
  52. if (!found) {
  53.   var imgs = document.getElementsByTagName('param')
  54.   for (var i = 0; i < imgs.length; ++i) {
  55.     if (/e621\.net\/data\//.test(imgs[i].value)) {
  56.       found = true;
  57.       img = imgs[i].parentNode;
  58.       width = img.width;
  59.       height = img.height;
  60.       break;
  61.     }
  62.   }
  63. }
  64. //WebM
  65. if (!found) {
  66.   img = document.getElementById('webm-container');
  67.   if (img) {
  68.     found = true;
  69.     width = img.clientWidth;
  70.     height = img.clientHeight;
  71.   }
  72. }
  73. if (!found) {
  74.   var script = document.createElement('script')
  75.   script.setAttribute('type', 'text/javascript');
  76.   script.textContent = '(warning(\'Sound/Epilepsy warning is broken, please contact user script developer (not e621 developer)\'))();';
  77.   document.body.appendChild(script);
  78.   document.body.removeChild(script);
  79.   return;
  80. }
  81.  
  82. var outer = document.createElement('div');
  83. outer.style.minWidth = Math.max(350, width) + 'px';
  84. outer.style.minHeight = Math.max(200, height) + 'px';
  85. outer.style.width = '0px';
  86. outer.style.height = '0px'
  87. outer.style.textAlign = 'center';
  88. outer.style.display = 'flex';
  89. outer.style.alignItems = 'center';
  90. outer.style.border = '1px solid white';
  91. var inner = document.createElement('div');
  92. inner.style.margin = '20px';
  93. inner.style.width = '100%';
  94. var warning = document.createElement('div');
  95. warning.innerHTML = header + tags + message + footer;
  96. var button = document.createElement('button');
  97. button.innerHTML = 'Understood'
  98. button.addEventListener('click', function () {
  99.   outer.parentNode.removeChild(outer);
  100.   img.style.display = '';
  101. });
  102. inner.appendChild(warning);
  103. inner.appendChild(button);
  104. outer.appendChild(inner);
  105. img.parentNode.insertBefore(outer, img.parentNode.firstChild)
  106. img.style.display = 'none';
  107. //}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement