您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Scans the filename for month, year, issue, format, language and fills in info based on that
- // ==UserScript==
- // @name GGn E-Books upload assistant
- // @namespace http://tampermonkey.net/
- // @version 0.2
- // @description Scans the filename for month, year, issue, format, language and fills in info based on that
- // @author fordtransit
- // @match https://gazellegames.net/upload.php*
- // @grant GM.xmlHttpRequest
- // @grant GM_xmlhttpRequest
- // ==/UserScript==
- (function() {
- 'use strict';
- const MonthsToFind = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december', 'christmas']; // Possible additions could be Summer, Fall, Spring, Easter, ...
- const languageMap = {
- 'en': 'English',
- 'fr': 'French',
- 'es': 'Spanish',
- 'de': 'German',
- 'it': 'Italian',
- 'pt': 'Portuguese',
- 'cz': 'Czech',
- 'zh': 'Chinese',
- 'ja': 'Japanese',
- 'ko': 'Korean',
- 'pl': 'Polish',
- 'ru': 'Russian'
- };
- const fileFormats = ['pdf', 'epub', 'mobi', 'cbz', 'cbr', 'cb7', 'azw3'];
- function performScript() {
- let FoundMonth = [];
- let FoundYear = [];
- let FullTitle = [];
- let FoundLanguages = [];
- let FoundFileFormats = [];
- let Issue = [];
- const Title = document.getElementById('title').value;
- const fileInputValue = $("#file").val().toLowerCase();
- MonthsToFind.forEach(month => {
- const capitalizedMonth = month.charAt(0).toUpperCase() + month.slice(1);
- if (fileInputValue.includes(month.toLowerCase())) {
- FoundMonth.push(capitalizedMonth);
- }
- });
- const yearPattern = /\b(19|20)\d{2}\b/g;
- let yearmatch;
- while ((yearmatch = yearPattern.exec(fileInputValue)) !== null) {
- const year = parseInt(yearmatch[0]);
- FoundYear.push(year);
- }
- const regex = /\((.*?)\)/g;
- let match;
- while ((match = regex.exec(fileInputValue)) !== null) {
- const abbreviation = match[1].toLowerCase();
- if (languageMap[abbreviation]) {
- FoundLanguages.push(languageMap[abbreviation]);
- }
- }
- fileFormats.forEach(format => {
- if (fileInputValue.includes(format)) {
- FoundFileFormats.push(format.toUpperCase());
- }
- });
- // Issue number patterns
- const numberPattern = /\b\d{3,}\b/g; // At least 3 digits
- const hashPattern = /#(\d+)/g; // Digits after #
- const issuePattern = /Issue\s+(\d+)/gi; // Digits after Issue
- function formatIssueNumber(number) {
- return number.padStart(3, '0');
- }
- function isValidIssue(number) {
- const num = parseInt(number);
- return !FoundYear.includes(num);
- }
- while ((match = numberPattern.exec(fileInputValue)) !== null) {
- const number = match[0];
- if (isValidIssue(number)) {
- Issue.push(formatIssueNumber(number));
- }
- }
- while ((match = hashPattern.exec(fileInputValue)) !== null) {
- const number = match[1];
- if (isValidIssue(number)) {
- Issue.push(formatIssueNumber(number));
- }
- }
- while ((match = issuePattern.exec(fileInputValue)) !== null) {
- const number = match[1];
- if (isValidIssue(number)) {
- Issue.push(formatIssueNumber(number));
- }
- }
- Issue = [...new Set(Issue)];
- if (FoundMonth.length > 0 && FoundYear.length > 0) {
- FullTitle = Title + " (" + FoundMonth.join(", ") + " " + FoundYear.join(", ") + ")";
- document.getElementById('remaster').checked = !document.getElementById('remaster').checked;
- document.getElementById('remaster_true').classList.remove('hidden');
- $("#remaster_year").val(FoundYear.join(", "));
- } else if (FoundYear.length > 0) {
- FullTitle = Title + " (" + FoundYear.join(", ") + ")";
- document.getElementById('remaster').checked = !document.getElementById('remaster').checked;
- document.getElementById('remaster_true').classList.remove('hidden');
- $("#remaster_year").val(FoundYear.join(", "));
- } else {
- FullTitle = Title;
- }
- $("#release_title").val(FullTitle);
- if (FoundLanguages.length > 0) {
- const detectedLanguage = FoundLanguages[0];
- $("#language").val(detectedLanguage);
- } else {
- $("#language").val('English');
- }
- if (FoundFileFormats.length > 0) {
- const detectedFormat = FoundFileFormats[0];
- $("#format").val(detectedFormat);
- }
- if (Issue.length > 0) {
- const detectedIssue = Issue[0];
- $("#issue").val(detectedIssue);
- }
- }
- $("#file").on('change', function() {
- if ($("#categories").val() === 'E-Books') {
- performScript();
- }
- });
- })();