SankakuDLNamer

Help with DL naming

Устаревшая версия за 04.03.2021. Перейдите к последней версии.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name        SankakuDLNamer
// @namespace   SankakuDLNamer
// @description Help with DL naming
// @match       http*://chan.sankakucomplex.com/*
// @match       http*://idol.sankakucomplex.com/*
// @match       http*://beta.sankakucomplex.com/*
// @run-at      document-end
// @version     1.0.0.1
// @grant       GM_download
// ==/UserScript==
(function() {
	'use strict';
	document.addEventListener("DOMContentLoaded", function() {
		const tagsidebar = document.getElementById('tag-sidebar');
		if (tagsidebar == null) { return; }

		let cats = GetSidebarTags(tagsidebar);

		let fileName = GenerateFilename(cats);

		let details = SetUpDLDetails(fileName);

		var dl_me = function() {
			GM_download(details)
		}

		const a = document.createElement('a');
		a.href = '#';
		a.innerText = 'DL_Me';
		a.onclick = dl_me;

		tagsidebar.insertBefore(a, tagsidebar.childNodes[0]);
	});

	function GetSidebarTags(tagsidebar) {
		const tagGroups = tagsidebar.getElementsByTagName('li');

		let cats = {};
		for (let tagGroup of tagGroups) {
			const cat = tagGroup.className.trim();
			const anchs = tagGroup.getElementsByTagName('a');
			let tag = '';
			for (let anch of anchs) {
				if (anch.hasAttribute('id')) {
					tag = anch.innerText.replace(/\s/g, '_').trim();
				}
			}
			if (cat in cats) {
				if (tag != '') {
					cats.cat = cats[cat].push(tag);
				}
			} else {
				if (tag != '') {
					cats[cat] = [];
					cats[cat].push(tag);
				}
			}
		}

		return cats;
	}

	function GenerateFilename(cats) {
		return `${cats['tag-type-character'] == null ? '' :
		cats['tag-type-character'].join('_')}_${cats['tag-type-copyright'] == null ? '' :
		cats['tag-type-copyright'].join('_')}by_${cats['tag-type-artist'] == null ? '' :
		cats['tag-type-artist'].join('_')}`;
	}

	function SetUpDLDetails(fileName) {
		const stat = document.getElementById('stats');
		let url = 'https:' + stat.querySelectorAll('#highres')[0].getAttribute("href").trim();
		let extension = url.split('?')[0].split('.');
		extension = extension[extension.length - 1];
		let details = {
			'url': url
			, 'name': fileName + '.' + extension
			, 'saveAs': true
		}

		return details;
	}
})();