erome download links

Exposes media-download links for erome media galleries

  1. // ==UserScript==
  2. // @name erome download links
  3. // @author Arnold François Lecherche and EromeScriptThrowaway
  4. // @namespace greasyfork.org
  5. // @icon https://www.erome.com/android-chrome-192x192.png
  6. // @version 1.00
  7. // @description Exposes media-download links for erome media galleries
  8. // @include http://erome.com/*
  9. // @include http://*.erome.com/*
  10. // @include https://erome.com/*
  11. // @include https://*.erome.com/*
  12. // @grant none
  13. // @run-at document-end
  14. // @copyright 2020 Arnold François Lecherche
  15. // ==/UserScript==
  16. (function (A, w, d, b) {
  17. 'use strict';
  18. var v = A.from(d.getElementsByTagName('video'));
  19. function videoSourceFilter(n) {
  20. return n.tagName && n.tagName.toLowerCase() === 'source';
  21. }
  22. function videoHDFilter(s) {
  23. return s && s.src && s.getAttribute('label') === 'HD';
  24. }
  25. function videoMap(v) {
  26. var s = A.from(v.childNodes).filter(videoSourceFilter);
  27. if (s.length === 1) return s[0].src;
  28. return videoSources.filter(videoHDFilter)[0].src;
  29. }
  30. function addLink(s, e) {
  31. var l = d.createElement('a');
  32. l.setAttribute('href', s);
  33. l.download = '';
  34. l.textContent += s;
  35. e.parentElement.parentElement.appendChild(l);
  36. e.parentElement.parentElement.appendChild(d.createElement('br'));
  37. }
  38. function init() {
  39. var i = (v || '').length || 0, s, j;
  40. while (i--) {
  41. s = A.from(v[i].childNodes).filter(videoSourceFilter);
  42. j = s.length;
  43. while (j--) addLink(s[j].src, v[i]);
  44. }
  45. d.removeEventListener('DOMContentLoaded', init, false);
  46. w.removeEventListener('load', init, false);
  47. }
  48. switch (d.readyState) {
  49. case 'interactive':
  50. case 'complete':
  51. init();
  52. break;
  53. default:
  54. d.addEventListener('DOMContentLoaded', init, false);
  55. w.addEventListener('load', init, false);
  56. }
  57. })(Array, window, document, document.body || document.getElementsByTagName('body')[0] || document.getElementsByTagName('frameset')[0]);