NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name hf toolkit for my repo // @namespace http://tampermonkey.net/ // @version 0.3 // @description straight from hell // @author Kuroi_Mato_O // @require https://cdnjs.cloudflare.com/ajax/libs/tinysort/3.2.5/tinysort.min.js // @match https://huggingface.co/KuroiMatoO/loras/tree/main // @icon https://www.google.com/s2/favicons?sz=64&domain=huggingface.co // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; (new MutationObserver(check)).observe(document, {childList: true, subtree: true}); function check(changes, observer) { if(document.querySelector('.mb-8')) { observer.disconnect(); //ThE sLeEp FeAtuRe YeAhHh function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function wait() { await sleep(3000); // https://cdnjs.cloudflare.com/ajax/libs/tinysort/3.2.5/tinysort.min.js tinysort.defaults.order = 'desc'; tinysort('.mb-8 li',{selector:'time',attr:'datetime'}); let loadButton = document.querySelectorAll('.flex-grow.items-center')[1]; if(loadButton){ loadButton.click(); wait(); tinysort('.mb-8 li',{selector:'time',attr:'datetime'}); document.querySelector('li:has(a[href="/KuroiMatoO/loras/resolve/main/.gitattributes"])').remove(); } } wait(); } //create links window const linkContainer = document.body.appendChild(document.createElement('div')); linkContainer.id = 'linkContainer'; const linkTextarea = linkContainer.appendChild(document.createElement('textarea')); const loraText = '%cd /content/stable-diffusion-webui/extensions/sd-webui-additional-networks/models/lora\n'; linkTextarea.value = loraText; const buttonContainer = linkContainer.appendChild(document.createElement('div')); buttonContainer.id = 'buttonContainer'; const leftButton = buttonContainer.appendChild(document.createElement('button')); leftButton.innerHTML = '♻'; leftButton.classList.add('linkButtons'); const linksPageNumber = buttonContainer.appendChild(document.createElement('div')); linksPageNumber.id = 'linksPageNumber'; const rightButton = buttonContainer.appendChild(document.createElement('button')); rightButton.innerHTML = '⏩'; rightButton.classList.add('linkButtons'); //styling linkContainer.style = 'position: fixed; background: #111827; width: 500px; height: 250px; top: 10px; left: 20px;display: flex; justify-content: center; flex-wrap: wrap; border: 2px solid #323f50'; linkTextarea.style = 'width: 100%; height: 80%; align-self: flex-start; resize: none; color: black; caret-color: black!important;'; buttonContainer.style = 'width: 50%; height: 10%; display: flex; justify-content: space-between; background: #323f50; border-radius: 10px;'; leftButton.style = 'width: 40%;'; rightButton.style = 'width: 40%;'; linksPageNumber.style = 'background: white; width: 10%; text-align: center; align-self: center; color: black; border-radius:50%;'; //all rows let totalRows; let totalRowsLi; //get the number of rows with the same commit href let lastCommit; let totalNum = 0; let n = 0; let myHrefs; let href; function commitCheck(){ totalRows = document.querySelectorAll('.mb-8 li:has(time)').length; lastCommit = document.querySelectorAll('.mb-8 li a.col-span-4[href*="/KuroiMatoO/loras/commit"]'); console.log('n is ' + n) lastCommit[n].scrollIntoView(); if (totalNum < totalRows - 5){ while (lastCommit[totalNum].href === lastCommit[n].href) { totalNum++; console.log('total number is ' + totalNum); } } else { console.log(myHrefs[n]); linkTextarea.value = loraText; href = myHrefs[n].href; linkTextarea.value += `!wget ${href}\n`; linksPageNumber.innerHTML = totalNum; } wget(); linksPageNumber.innerHTML = totalNum; console.log('total number is ' + totalNum); console.log('n is ' + n) } //write all hrefs of the same commit inside textarea function wget(){ totalRowsLi = document.querySelectorAll('.mb-8 li:has(time)'); myHrefs = document.querySelectorAll(".mb-8 li:has(time) a[title='Download file']"); console.log('inside wget n ' + n); console.log('inside wget totalNum ' + totalNum); for (let i = 0; i < totalRows; i++) { totalRowsLi[i].style = 'background: rgb(17 24 39);' } for (n; n < totalNum; n++) { href = myHrefs[n].href; totalRowsLi[n].style = 'background: rgb(19 31 56);' linkTextarea.value += `!wget ${href}\n`; } console.log('inside wget n2 ' + n); console.log('inside wget totalNum2 ' + totalNum); } //next commit function rightClick(){ if (totalNum == 0){ linkTextarea.value = loraText; commitCheck(); } else if (totalNum < totalRows - 1){ linkTextarea.value = loraText; commitCheck(); } else { linkTextarea.value = loraText; href = myHrefs[n].href; linkTextarea.value += `!wget ${href}\n`; linksPageNumber.innerHTML = totalNum; console.log('eblan') } } //reset function leftClick(){ n = 0; totalNum = 0; linkTextarea.value = ''; } rightButton.addEventListener("click", rightClick); leftButton.addEventListener("click", leftClick); } })();