Created
August 2, 2022 01:58
-
-
Save camerican/aeee6f0ff6e3d43e419047365cb2e2dc to your computer and use it in GitHub Desktop.
Tampermonkey Script for TopShot Lock page Select All feature
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name TopShot Locking Page Enhancements | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description Add the ability to select multiple moments to the Top Shot lock page | |
// @author Camerican | |
// @match https://nbatopshot.com/lock* | |
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== | |
// @grant none | |
// @require http://code.jquery.com/jquery-latest.js | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
var intervalId = setInterval( function() { | |
var elHeading = document.querySelector("h2.chakra-heading"); | |
if (elHeading) { | |
clearInterval(intervalId); | |
intervalId = null; | |
adjustPage(elHeading); | |
} | |
}, 1000); | |
var selectedSelector = 'svg path[d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10Zm-.997-6 7.07-7.07-1.414-1.415-5.656 5.657-2.829-2.829-1.414 1.414L11.003 16Z"]'; | |
var unselectedSelector = 'svg path[d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10Zm0-2a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z"]'; | |
function adjustPage(elHeading) { | |
var arElMoments = document.querySelectorAll("button.YFXSP"); | |
$('<div style="margin-top:10px;"><label for="start_after"><button id="select_all" class="css-1qrxf63">Select all moments</button> after # <input name="start_after" type="number" style="border:1px solid #808396; width:40px;" /><button style="float: right;" id="deselect_all" class="css-1qrxf63">Deselect All</button></div>').insertAfter(elHeading); | |
document.querySelector("#select_all").addEventListener('click', function(e) { | |
selectAllMoments(); | |
}); | |
document.querySelector("#deselect_all").addEventListener('click', function(e) { | |
deselectAllMoments(); | |
}); | |
} | |
function selectAllMoments() { | |
var elStartAfter = document.querySelector("input[name='start_after']"); | |
var startAfter = elStartAfter.value || 0; | |
selectorWorker(startAfter, unselectedSelector); | |
} | |
function deselectAllMoments() { | |
selectorWorker(0, selectedSelector); | |
} | |
function selectorWorker(startAfter, selector) { | |
Array.from(document.querySelectorAll("button.YFXSP")) | |
.slice(startAfter) | |
.filter( function(el) { | |
return el.querySelector(selector); | |
}) | |
.forEach( function(el) { | |
el.click(); | |
}); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment