您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Batch process PTPImg URLs with option to preserve existing screenshots
- // ==UserScript==
- // @name GazelleGames Batch Screenshot Processor
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description Batch process PTPImg URLs with option to preserve existing screenshots
- // @author YourName
- // @match https://gazellegames.net/torrents.php?action=editgroup&groupid=*
- // @grant none
- // @run-at document-end
- // ==/UserScript==
- (function() {
- 'use strict';
- // Create batch processor UI
- function createBatchProcessor() {
- const container = document.createElement('div');
- container.style.flex = '1';
- container.style.marginLeft = '20px';
- container.style.marginTop = '5px';
- container.innerHTML = `
- <div style="margin-bottom: 10px;">
- <textarea id="gg-batch-urls" rows="10" style="width: 80%; padding: 5px; border: 1px solid #ccc; font-family: inherit; font-size: 13px;" placeholder="Paste PTPImg URLs here, one per line"></textarea>
- </div>
- <div style="margin-bottom: 8px;">
- <input type="checkbox" id="gg-keep-existing">
- <label for="gg-keep-existing" style="font-size: 13px;">Keep existing screenshots</label>
- </div>
- <input type="button" id="gg-process-btn" value="Fill Screenshot Fields">
- `;
- return container;
- }
- // Process URLs
- function processURLs(e) {
- e.preventDefault();
- const textarea = document.getElementById('gg-batch-urls');
- const keepExisting = document.getElementById('gg-keep-existing').checked;
- const urls = textarea.value.split('\n')
- .map(url => url.trim())
- .filter(url => url !== '');
- if (urls.length === 0) {
- alert('Please enter at least one URL');
- return;
- }
- // Get all existing fields and their values
- const existingFields = Array.from(document.querySelectorAll('#image_block input[name="screens[]"]'))
- .map(input => input.value.trim())
- .filter(val => val !== '');
- // Combine URLs based on checkbox
- const allUrls = keepExisting ? [...existingFields, ...urls] : urls;
- // Adjust field count if needed
- if (allUrls.length > existingFields.length) {
- const toAdd = allUrls.length - existingFields.length;
- for (let i = 0; i < toAdd; i++) {
- if (typeof AddScreenField === 'function') {
- AddScreenField(true);
- } else {
- const newField = document.createElement('span');
- newField.innerHTML = `<br><input type="text" name="screens[]" style="width: 90%;"><input type="button" value="PTPImg It">`;
- document.getElementById('image_block').appendChild(newField);
- }
- }
- } else if (allUrls.length < existingFields.length && !keepExisting) {
- const toRemove = existingFields.length - allUrls.length;
- for (let i = 0; i < toRemove; i++) {
- if (typeof RemoveScreenField === 'function') {
- RemoveScreenField();
- } else {
- const fields = document.querySelectorAll('#image_block span');
- if (fields.length > 1) {
- fields[fields.length - 1].remove();
- }
- }
- }
- }
- // Populate fields
- const inputs = document.querySelectorAll('#image_block input[name="screens[]"]');
- for (let i = 0; i < allUrls.length; i++) {
- if (i < inputs.length) {
- inputs[i].value = allUrls[i];
- }
- }
- }
- // Main function to set up the UI
- function init() {
- const imageBlock = document.getElementById('image_block');
- if (!imageBlock) return;
- // Create container for the row layout
- const wrapper = document.createElement('div');
- wrapper.style.display = 'flex';
- wrapper.style.gap = '20px';
- wrapper.style.marginTop = '5px';
- // Wrap the image block
- const screenshotsColumn = document.createElement('div');
- screenshotsColumn.style.flex = '1.2';
- screenshotsColumn.appendChild(imageBlock);
- // Create the batch processor
- const batchColumn = createBatchProcessor();
- // Add both columns to the wrapper
- wrapper.appendChild(screenshotsColumn);
- wrapper.appendChild(batchColumn);
- // Find the best insertion point
- const screenshotsHeader = [...document.querySelectorAll('h3')].find(h3 =>
- h3.textContent.includes('Screenshots')
- );
- if (screenshotsHeader) {
- screenshotsHeader.parentNode.insertBefore(wrapper, screenshotsHeader.nextSibling);
- } else {
- imageBlock.parentNode.insertBefore(wrapper, imageBlock);
- }
- // Add event listener to the process button
- document.getElementById('gg-process-btn').addEventListener('click', processURLs);
- }
- // Run the script
- setTimeout(init, 500);
- })();