Direct Image Link E6AI

Рипалка ссылок / имён / номеров картинок

Ekde 2023/10/07. Vidu La ĝisdata versio.

  1. // ==UserScript==
  2. // @name Direct Image Link E6AI
  3. // @name:en Direct Image Link E6AI
  4. // @version 2023.10.07
  5. // @description Рипалка ссылок / имён / номеров картинок
  6. // @description:en Ripper of image links / names / numbers
  7. // @match http*://e6ai.net/posts?*
  8. // @author Rainbow-Spike
  9. // @namespace https://greasyfork.org/users/7568
  10. // @homepage https://greasyfork.org/ru/users/7568-dr-yukon
  11. // @icon https://www.google.com/s2/favicons?domain=e6ai.net
  12. // @grant none
  13. // @run-at document-end
  14. // ==/UserScript==
  15.  
  16. var post_list = document . querySelectorAll ( '.post-preview' );
  17. if ( post_list != null ) {
  18. var mode = 2, // 0 - номера постов post numbers, 1 - имена файлов file names, 2 - полные ссылки full links
  19. lever = { // 0 - нет no, 1 - да yes
  20. nl: 1, // использовать "чёрный список" тегов use tag negative list
  21. pl: 1, // использовать "белый список" тегов use tag positive list
  22. dl: 1, // фильтр уже скачанных картинок filter of already downloaded pics
  23. top: 1, // полный список вверху страницы full list on page top
  24. pic: 1, // вставка под каждой картинкой insertion under every pic
  25. },
  26. tag = {
  27. nl: /censored|gore|male\/male|my_little_pony/,
  28. pl: /[^_]pussy[^_]|tribadism|camel_toe/,
  29. },
  30. css = { // стили styles
  31. nl: 'opacity: 0.2; border: dotted red;', // "чёрный список" negative list
  32. neut: 'opacity: 0.5; border: dashed gray;', // вне "белого списка" out of positive list
  33. dl: 'opacity: 0.2; border: double green;', // скачанное downloaded
  34. top: 'display: inline-block; column-gap: 3px; column-count: 7; font-size: 40%; line-height: .25em; max-height: 200px; overflow: auto;', // колонки в полном списке columns in full list
  35. pic: 'word-wrap: anywhere;', // под каждой картинкой under every pic
  36. },
  37. node = {
  38. top: document . querySelector ( '#top' ),
  39. new: document . createElement ( 'span' ),
  40. },
  41. md5_list = [ // список MD5-кодов уже закачанных файлов, ВСТАВЬ СВОЙ СПИСОК list of MD5-codes of already downloaded files, INSERT YOUR LIST
  42. '00000000000000000000000000000000', '00000000000000000000000000000000'
  43. ],
  44. x, y, post_tags, src, name, md5, ext, num, insert;
  45. for ( x = 0; x < post_list . length; x++ ) {
  46. // получение данных data mining
  47. post_tags = post_list [ x ] . getAttribute ( 'data-tags' );
  48. src = post_list [ x ] . getAttribute ( 'data-file-url' );
  49. name = src . split ( '/' ) . pop ( );
  50. [ md5, ext ] = name . split ( '.' );
  51. num = post_list [ x ] . getAttribute ( 'data-id' );
  52. // фильтрация filtering
  53. if ( md5 != '' && lever . nl && tag . nl . test ( post_tags ) ) { post_list [ x ] . style = css . nl; md5 = ''; }; // сначала "чёрный список" negative list in first
  54. if ( md5 != '' && lever . pl && !tag . pl . test ( post_tags ) ) { post_list [ x ] . style = css . neut; md5 = ''; }; // затем "белый список" positive list in middle
  55. if ( md5 != '' && lever . dl ) { // фильтр скачанного в конце filter of downloaded in last
  56. for ( y = 0; y < md5_list . length; y++ ) {
  57. if ( md5_list [ y ] == md5 ) { post_list [ x ] . style = css . dl; md5 = ''; break; };
  58. };
  59. };
  60. if ( md5 != '' ) {
  61. if ( lever . top && node . top != null ) { // пополнение и режим полного списка complection and mode of full list
  62. switch ( mode ) {
  63. case 0: insert = num + '.' + ext; break; // номер поста + расширение post number + extension
  64. case 1: insert = name; break; // имя файла file name
  65. case 2: insert = src; break; // путь картинки pic path
  66. };
  67. node . new . innerHTML += '<a href = "' + src + '">' + insert + ' </a><br>';
  68. };
  69. if ( lever . pic ) {
  70. switch ( mode ) {
  71. case 0: insert = num; break; // номер поста post number
  72. case 1: case 2: insert = md5; break; // MD5-код картинки pic MD5-code
  73. };
  74. post_list [ x ] . innerHTML += '<a href = "' + src + '" style = "' + css . pic + '">' + insert + ' </a>'; // вставка MD5-кода под избранными картинками insertion of MD5-code under the chosen pics
  75. };
  76. };
  77. };
  78. if ( lever . top && node . top != null ) { // вставка и выделение полного списка insertion and selection of full list
  79. node . new . style = css . top;
  80. node . top . appendChild ( node . new );
  81. function selectblock ( sel_node ) {
  82. var rng = document . createRange ( );
  83. rng . selectNode ( sel_node );
  84. var sel = window . getSelection ( );
  85. sel . removeAllRanges ( );
  86. sel . addRange ( rng );
  87. };
  88. selectblock ( node . new );
  89. }
  90. }