您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Download model, preview, model description by one-click
当前为
- // ==UserScript==
- // @name LiblibAI Helper
- // @namespace http://tampermonkey.net/
- // @version 0.2
- // @description Download model, preview, model description by one-click
- // @author Sleepy & NewBing
- // @license MIT
- // @match https://www.liblib.art/modelinfo/*
- // @grant GM_download
- // ==/UserScript==
- (function() {
- 'use strict';
- function getSelectedTabName() {
- // 获取所有的tab
- var tabs = document.querySelectorAll('.ant-tabs-tab');
- // 遍历所有的tab
- for (var i = 0; i < tabs.length; i++) {
- // 检查tab是否被选中
- if (tabs[i].classList.contains('ant-tabs-tab-active')) {
- // 获取tab的标题
- var title = tabs[i].textContent;
- return title; // 返回标题
- }
- }
- }
- function getModelName() {
- var version = getSelectedTabName();
- var modelName = document.querySelector('.ModelInfoHead_title__p5txd').innerText;
- modelName += "_" + version;
- return modelName;
- }
- // Create a MutationObserver to monitor DOM changes
- var observer = new MutationObserver(function(mutations) {
- mutations.forEach(function(mutation) {
- if (mutation.type === 'childList') {
- var generateButton = document.querySelector('.ModelActionCard_runPic__0I9wi');
- if (generateButton && !document.querySelector('.one-click-download')) {
- var downloadButton = document.createElement('button');
- downloadButton.innerHTML = '一键下载';
- downloadButton.className = 'one-click-download';
- downloadButton.onclick = autoDownload;
- var modelName = getModelName();
- // 创建"仅下载图片"按钮
- var downloadImageButton = document.createElement('button');
- downloadImageButton.innerHTML = '仅下载图片';
- downloadImageButton.className = 'download-images-only';
- downloadImageButton.style = 'margin-left: 10px; display: inline-block;';
- downloadImageButton.onclick = function() {
- var imageCount = document.querySelector('.image-count-selector').value;
- downloadImages(modelName, imageCount);
- };
- // 创建"仅下载文档"按钮
- var downloadDocButton = document.createElement('button');
- downloadDocButton.innerHTML = '仅下载文档';
- downloadDocButton.className = 'download-doc-only';
- downloadDocButton.style = 'margin-left: 10px; display: inline-block;';
- downloadDocButton.onclick = function() {
- recordURL(modelName);
- saveAsHTML(modelName);
- // saveAsMarkdown(modelName);
- saveAsPlainText(modelName);
- };
- // 创建图片数量选择器
- var imageCountSelector = document.createElement('input');
- imageCountSelector.type = 'number';
- imageCountSelector.min = '1';
- imageCountSelector.value = '10'; // 默认值为10
- imageCountSelector.className = 'image-count-selector';
- imageCountSelector.style = 'margin-left: 10px; display: inline-block;';
- // 将新的按钮和选择器添加到页面上
- generateButton.parentNode.insertBefore(downloadButton, generateButton.nextSibling);
- generateButton.parentNode.insertBefore(downloadImageButton, downloadButton.nextSibling);
- generateButton.parentNode.insertBefore(downloadDocButton, downloadImageButton.nextSibling);
- generateButton.parentNode.insertBefore(imageCountSelector, downloadImageButton.nextSibling);
- observer.disconnect();
- }
- }
- });
- });
- observer.observe(document.body, { childList: true, subtree: true });
- function autoDownload() {
- var modelName = getModelName();
- downloadModel();
- recordURL(modelName);
- saveAsHTML(modelName);
- // saveAsMarkdown(modelName);
- saveAsPlainText(modelName);
- var imageCount = document.querySelector('.image-count-selector').value;
- downloadImages(modelName, imageCount);
- }
- function downloadModel() {
- var downloadButton = document.querySelector('.ModelActionCard_inner__XBdzk');
- if (downloadButton) {
- downloadButton.click();
- }
- }
- async function downloadImages(modelName, maxImages) {
- var images = document.querySelectorAll('img');
- var count = 0;
- if (images.length > 0) {
- for (var i = 0; i < images.length && count < maxImages; i++) {
- if (images[i].src.startsWith('https://liblibai-online.vibrou.com/img/')) {
- var url = new URL(images[i].src);
- var cleanUrl = url.protocol + "//" + url.hostname + url.pathname;
- GM_download({
- url: cleanUrl,
- name: modelName + (count === 0 ? '' : '_preview_' + count) + '.png',
- saveAs: true
- });
- count++;
- await new Promise(resolve => setTimeout(resolve, 1000));
- }
- }
- }
- }
- function selectReadme() {
- var mainElement = document.querySelector('.mantine-AppShell-main');
- return mainElement.querySelector('[class^="ModelDescription_desc"]');
- }
- function recordURL(modelName) {
- var url = window.location.href;
- var blob = new Blob([url], {type: 'text/plain'});
- var urlObject = window.URL.createObjectURL(blob);
- var downloadLink = document.createElement('a');
- downloadLink.href = urlObject;
- downloadLink.download = modelName + '_URL.txt';
- downloadLink.click();
- window.URL.revokeObjectURL(urlObject);
- }
- function saveAsHTML(modelName) {
- var descriptionElement = selectReadme();
- if (descriptionElement) {
- var htmlText = descriptionElement.innerHTML;
- var blob = new Blob([htmlText], {type: 'text/html'});
- var url = window.URL.createObjectURL(blob);
- var link = document.createElement('a');
- link.href = url;
- link.download = modelName + '.html';
- link.style.display = 'none';
- document.body.appendChild(link);
- console.log('Attempting to download HTML file:', link.download);
- link.click();
- document.body.removeChild(link);
- } else {
- console.log('Description element not found.');
- }
- }
- function saveAsMarkdown(modelName) {
- var descriptionElement = selectReadme();
- if (descriptionElement) {
- var markdownText = convertHtmlToMarkdown(descriptionElement.innerHTML);
- var blob = new Blob([markdownText], {type: 'text/markdown'});
- var url = window.URL.createObjectURL(blob);
- var link = document.createElement('a');
- link.href = url;
- link.download = modelName + '.md';
- link.style.display = 'none';
- document.body.appendChild(link);
- console.log('Attempting to download markdown file:', link.download);
- link.click();
- document.body.removeChild(link);
- } else {
- console.log('Description element not found.');
- }
- }
- function saveAsPlainText(modelName) {
- var descriptionElement = selectReadme();
- if (descriptionElement) {
- var plainText = descriptionElement.innerText;
- var blob = new Blob([plainText], {type: 'text/plain'});
- var url = window.URL.createObjectURL(blob);
- var link = document.createElement('a');
- link.href = url;
- link.download = modelName + '.txt';
- link.style.display = 'none';
- document.body.appendChild(link);
- console.log('Attempting to download text file:', link.download);
- link.click();
- document.body.removeChild(link);
- } else {
- console.log('Description element not found.');
- }
- }
- function convertHtmlToMarkdown(html) {
- // This is a very basic implementation and might not work for all HTML.
- // Consider using a library like Turndown for a more robust solution.
- var tempDiv = document.createElement('div');
- tempDiv.innerHTML = html;
- return tempDiv.innerText;
- }
- })();