您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This adds a button to spankbang playlists to grab links to all videos of this playlist
// ==UserScript== // @name spankbang.com playlist videos link grabber // @description This adds a button to spankbang playlists to grab links to all videos of this playlist // @namespace https://sleazyfork.org/it/users/1091587 // @version 1.0.0 // @license MIT // @grant none // @match https://*.spankbang.com/*/playlist/* // ==/UserScript== (function() { 'use strict'; var btnContainer = document.querySelector('.profile'); var linkGrabberBtn = document.createElement('button'); linkGrabberBtn.onclick = grabVideoList; linkGrabberBtn.classList.add('buttons', 'ft-button-bordered', 'ft-button-size-sm'); linkGrabberBtn.innerText = 'Get all video links'; btnContainer.appendChild(linkGrabberBtn); var footer = document.querySelector('footer'); var linkGrabberBtnEnd = document.createElement('button'); linkGrabberBtnEnd.onclick = grabVideoList; linkGrabberBtnEnd.classList.add('buttons', 'ft-button-bordered', 'ft-button-size-sm'); linkGrabberBtnEnd.innerText = 'Get all video links'; footer.before(linkGrabberBtnEnd); function grabVideoList(){ var linkList = []; var videoPlaylists = document.querySelectorAll(":not(.videos)> .video-list"); for(var i = 0; i< videoPlaylists.length; i++){ var links = videoPlaylists[i].querySelectorAll(".video-item > a"); linkList.push(...links); } console.log(linkList.length); for(var j = 0; j< linkList.length; j++){ console.log(linkList[j].href); } showLinks(linkList); } function showLinks(linkList){ var outerModalDiv = document.createElement('div'); var innerModalDiv = document.createElement('div'); outerModalDiv.id = 'playlistVidsLinkContainingModalPanel'; //use a long id to avoid name conflicts outerModalDiv.style.display = 'block'; outerModalDiv.style.position = 'fixed'; outerModalDiv.style.zIndex = '100'; outerModalDiv.style.paddingTop = '100px'; outerModalDiv.style.left = '0'; outerModalDiv.style.top = '0'; outerModalDiv.style.width = '100%'; outerModalDiv.style.height = '100%'; outerModalDiv.style.backgroundColor = 'rgb(0,0,0)'; outerModalDiv.style.backgroundColor = 'rgb(0,0,0,0.4)'; //start X var buttonContainerEnd = document.createElement('div'); buttonContainerEnd.className = 'userButtons'; var closeBtnEnd = document.createElement('div'); var innerCloseBtnEnd = document.createElement('button'); closeBtnEnd.classList.add('close-button-end'); closeBtnEnd.classList.add('mainButton'); closeBtnEnd.classList.add('addFriendButton'); closeBtnEnd.classList.add('add'); innerCloseBtnEnd.innerText = 'X'; innerCloseBtnEnd.className = 'buttonBase' closeBtnEnd.onclick = RemoveOuterModalPanel; closeBtnEnd.appendChild(innerCloseBtnEnd); buttonContainerEnd.appendChild(closeBtnEnd); innerModalDiv.appendChild(buttonContainerEnd); innerModalDiv.style.backgroundColor = '#1b1b1b'; innerModalDiv.style.margin = 'auto'; innerModalDiv.style.padding = '20px'; innerModalDiv.style.border = '1px solid #888'; innerModalDiv.style.width = '80%'; innerModalDiv.style.color = '#ababab'; innerModalDiv.style.overflowY = 'auto'; innerModalDiv.style.height = '80%'; //founds! var length = document.createElement('p'); length.innerHTML = linkList.length+" videos found!"; //Copy manager start var copyAllLinksBtn = document.createElement('button'); copyAllLinksBtn.textContent = 'Copy All Links'; copyAllLinksBtn.className = 'copy-all-links-btn'; copyAllLinksBtn.classList.add('buttons', 'ft-button-bordered', 'ft-button-size-sm'); innerModalDiv.appendChild(copyAllLinksBtn); copyAllLinksBtn.onclick = function() { let textToCopy = ''; linkList.forEach(link => { textToCopy += link.href + '\n'; }); navigator.clipboard.writeText(textToCopy) .then(() => { copyAllLinksBtn.textContent = 'Copied!'; }) .catch(err => { copyAllLinksBtn.textContent = 'Error!'; }); }; innerModalDiv.appendChild(length); for(var i = 0; i < linkList.length; i++){ var a = document.createElement('a'); a.innerHTML = linkList[i].href; a.href = linkList[i].href; innerModalDiv.appendChild(a); innerModalDiv.appendChild(document.createElement('br')); } //end x var buttonContainer = document.createElement('div'); buttonContainer.className = 'userButtons'; var closeBtn = document.createElement('div'); var innerCloseBtn = document.createElement('button'); closeBtn.style.cssFloat = 'right'; closeBtn.classList.add('mainButton'); closeBtn.classList.add('addFriendButton'); closeBtn.classList.add('add'); innerCloseBtn.innerText = 'X'; innerCloseBtn.className = 'buttonBase'; closeBtn.onclick = RemoveOuterModalPanel; closeBtn.appendChild(innerCloseBtn); buttonContainer.appendChild(closeBtn); innerModalDiv.appendChild(buttonContainer); outerModalDiv.appendChild(innerModalDiv); document.body.appendChild(outerModalDiv); // Copy manager end var copyAllLinksBtnEnd = document.createElement('button'); copyAllLinksBtnEnd.textContent = 'Copy All Links'; copyAllLinksBtnEnd.className = 'copy-all-links-btn'; copyAllLinksBtnEnd.classList.add('buttons', 'ft-button-bordered', 'ft-button-size-sm'); innerModalDiv.appendChild(copyAllLinksBtnEnd); copyAllLinksBtnEnd.onclick = function() { let textToCopy = ''; linkList.forEach(link => { textToCopy += link.href + '\n'; }); navigator.clipboard.writeText(textToCopy) .then(() => { copyAllLinksBtnEnd.textContent = 'Copied!'; }) .catch(err => { copyAllLinksBtnEnd.textContent = 'Error!'; }); }; } function RemoveOuterModalPanel(){ var toRemove = document.getElementById('playlistVidsLinkContainingModalPanel'); toRemove.parentNode.removeChild(toRemove); } })();