Direct Image Link E6AI

Рипалка картиночных ( ссылок для скачивалок | имён для файлменеджеров )

As of 04. 10. 2023. See the latest version.

// ==UserScript==
// @name           Direct Image Link E6AI
// @name:en        Direct Image Link E6AI
// @version        2023.10.04
// @description    Рипалка картиночных ( ссылок для скачивалок | имён для файлменеджеров )
// @description:en Ripper of image ( links for download | names for file ) managers
// @match          http*://e6ai.net/posts?*
// @author         Rainbow-Spike
// @namespace      https://greasyfork.org/users/7568
// @homepage       https://greasyfork.org/ru/users/7568-dr-yukon
// @icon           https://www.google.com/s2/favicons?domain=e6ai.net
// @grant          none
// @run-at         document-end
// ==/UserScript==

var post_list = document . querySelectorAll ( '.post-preview' );
if ( post_list != null ) {
	var wanted = {
			lever: 1,
			tags: /[^_]pussy[^_]|tribadism|camel_toe/,
		},
		unwanted = {
			lever: 1,
			style: 'opacity: 0.05; border: dashed red;',
			tags: /censored|gore|male\/male|my_little_pony/,
		},
		toplinks = {
			lever: 1,
			mode_lever: 1, // 0 - имена файлов file names, 1 - полные ссылки full links, 2 - номера постов post numbers
			style: 'display: inline-block; column-gap: 3px; column-count: 7; font-size: 40%; line-height: .25em; max-height: 200px; overflow: auto;',
			node: document . querySelector ( '#top' ),
			newnode: document . createElement ( 'span' ),
		},
		piclinks = {
			lever: 1,
			style: 'word-wrap: anywhere;',
		},
		downloaded = {
			lever: 1,
			style: 'border: double green;',
			codes: [ // список MD5-кодов уже закачанных файлов, ВСТАВЬ СВОЙ СПИСОК list of MD5-codes of already downloaded files, INSERT YOUR LIST
'00000000000000000000000000000000', '00000000000000000000000000000000'
			],
		},
		x, y, tags, num, src, split, name, md5, insert;
	for ( x = 0; x < post_list . length; x++ ) {
		tags = post_list [ x ] . getAttribute ( 'data-tags' );
		if ( wanted . lever && wanted . tags . test ( tags ) ) {
			num = post_list [ x ] . getAttribute ( 'data-id' );
			src = post_list [ x ] . getAttribute ( 'data-file-url' );
			split = src . split ( '/' );
			name = split [ split . length - 1 ];
			md5 = name . split ( '.' ) [ 0 ];
			if ( downloaded . lever ) {
				for ( y = 0; y < downloaded . codes . length; y++ ) {
					if ( downloaded . codes [ y ] == md5 ) {
						post_list [ x ] . style =+ downloaded . style;
						md5 = '';
						break;
					};
				};
			};
			if ( md5 != '' ) {
				if ( toplinks . lever && toplinks . node != null ) {
					switch ( toplinks . mode_lever ) {
						case 0: insert = name; break;
						case 1: insert = src; break;
						case 2: insert = num; break;
					};
					toplinks . newnode . innerHTML += '<a href = "' + src + '">' + insert + ' </a><br>';
				};
				if ( piclinks . lever ) post_list [ x ] . innerHTML += '<a href = "' + src + '" style = "' + piclinks . style + '">' + md5 + ' </a>';
			};
		};
		if ( unwanted . lever && unwanted . tags . test ( tags ) ) post_list [ x ] . style += unwanted . style;
	};
	if ( toplinks . lever && toplinks . node != null ) {
		toplinks . newnode . style = toplinks . style;
		toplinks . node . appendChild ( toplinks . newnode );
		// SELECT
		function selectblock ( name ) {
			var rng = document . createRange ( );
			rng . selectNode ( name );
			var sel = window . getSelection ( );
			sel . removeAllRanges ( );
			sel . addRange ( rng );
		};
		selectblock ( toplinks . newnode );
	}
}