【UE】自动添加Megascans所有资产到自己的账户
1. 复制如下代码:
((async (startPage = 0, autoClearConsole = true) => {const getCookie = (name) => {const value = `; ${document.cookie}`;const parts = value.split(`; ${name}=`);if (parts.length === 2) return parts.pop().split(';').shift();}const callCacheApi = async (params = {}) => {const defaultParams = {page: 0,maxValuesPerFacet: 1000,hitsPerPage: 1000,attributesToRetrieve: ["id", "name"].join(",")}const response = await fetch("https://proxy-algolia-prod.quixel.com/algolia/cache", {"headers": {"x-api-key": "2Zg8!d2WAHIUW?pCO28cVjfOt9seOWPx@2j"},"body": JSON.stringify({url: "https://6UJ1I5A072-2.algolianet.com/1/indexes/assets/query?x-algolia-application-id=6UJ1I5A072&x-algolia-api-key=e93907f4f65fb1d9f813957bdc344892",params: new URLSearchParams({ ...defaultParams, ...params }).toString()}),"method": "POST",})return await response.json()}const callAcl = async ({ id, name }) => {const response = await fetch("https://quixel.com/v1/acl", {"headers": {"authorization": "Bearer " + authToken,"content-type": "application/json;charset=UTF-8",},"body": JSON.stringify({ assetID: id }),"method": "POST",});const json = await response.json()if (json?.isError) {console.error(` --> **UNABLE TO ADD ITEM** Item ${id} | ${name} (${json?.msg})`)} else {console.log(` --> ADDED ITEM Item ${id} | ${name}`)}}const callAcquired = async () => {const response = await fetch("https://quixel.com/v1/assets/acquired", {"headers": {"authorization": "Bearer " + authToken,"content-type": "application/json;charset=UTF-8",},"method": "GET",});return await response.json()}// 1. Check token exist, quixel API needs itconsole.log("-> Checking Auth API Token...")let authToken = ""try {const authCookie = getCookie("auth") ?? "{}"authToken = JSON.parse(decodeURIComponent(authCookie))?.tokenif (!authToken) {return console.error("-> Error: cannot find authentication token. Please login again.")}} catch (_) {return console.error("-> Error: cannot find authentication token. Please login again.")}// 2. Get all currently acquired itemsconsole.log("-> Get Acquired Items...")const acquiredItems = (await callAcquired()).map(a => a.assetID)// 3. Get total count of itemsconsole.log("-> Getting Total Number of Pages....")const { nbPages: totalPages, hitsPerPage: itemsPerPage, nbHits: totalItems } = await callCacheApi()console.log("-> ==============================================")console.log(`-> Total # of items: ${totalItems}`)console.log(`-> ${totalPages} total pages with ${itemsPerPage} per page`)console.log(`-> Total Items to add: ${(totalItems - acquiredItems.length)}.`)console.log("-> ==============================================")if (!confirm(`Click OK to start adding ${(totalItems - acquiredItems.length)} items in your account.`)) return// Loopfor (let pageIdx = startPage || 0; pageIdx < totalPages; pageIdx++) {console.log(`-> ======================= PAGE ${pageIdx + 1}/${totalPages} START =======================`)console.log("-> Getting Items from page " + (pageIdx + 1) + " ...")const { hits: items } = await callCacheApi({ page: pageIdx })console.log("-> Adding non-acquired items...")// Filter out owned itemsconst unownedItems = items.filter(i => !acquiredItems.includes(i.id))const aclPromises = unownedItems.map(callAcl)await Promise.all(aclPromises)console.log(`-> ======================= PAGE ${pageIdx + 1}/${totalPages} COMPLETED =======================`)if (autoClearConsole) console.clear() // Fix the issue that too much log hangs the console. Set autoClearConsole = false to keep the logs}console.log("-> Getting new acquired info...")// Get acquired items againconst newItemsAcquired = (await callAcquired()).lengthconst newTotalCount = (await callCacheApi()).nbHitsconsole.log(`-> Completed. Your account now have a total of ${newItemsAcquired} out of ${newTotalCount} items.`)alert(`-> Your account now have a total of ${newItemsAcquired} out of ${newTotalCount} items.\n\nIf you find some items missing, try refresh the page and run the script again.`)
})())
2. 打开 Quixel官网并登陆

3. 进入Quixel Megascans
4. 在第3步的网页中,按F12进入控制台,然后点击“Console”,将第1步复制的代码粘贴到控制台中,然后回车。在弹出的提示框中点击确定,然后等待脚本把所有资产都加入到你的库存(不会占用电脑内存)

参考文章:
https://gist.github.com/jamiephan/0c04986c7f2e62d5c87c4e8c8ce115fc
相关文章:
【UE】自动添加Megascans所有资产到自己的账户
1. 复制如下代码: ((async (startPage 0, autoClearConsole true) > {const getCookie (name) > {const value ; ${document.cookie};const parts value.split(; ${name});if (parts.length 2) return parts.pop().split(;).shift();}const callCacheA…...
【函数】4.函数的单调性
本节课没有笔记示例,自己做好笔记! 复合函数的单调性 最值 没讲 提醒我...
网格剖分-耳切法效果展示
1.前言 将简单多边形转换成一组由同样顶点组成的三角形集合是计算机图形学中的一个经典问题。问题中,简单多边形是指由一组有序顶点组成的,点V0~点Vn-1。相邻的顶点之间通过边(Vi,Vi-1)连接,并且边(Vn-1,V0)连接起始点…...
电磁力、强相互作用力、弱相互作用力、强核力,以及它们之间的关系
电磁力、强相互作用力、弱相互作用力、强核力,以及它们之间的关系: 电磁力 (Electromagnetic Force): 定义:电磁力是带电粒子之间通过电荷相互作用产生的力。它由电场和磁场共同作用,影响带电粒子的运动。传递粒子:电磁…...
2.安装keepalived详细过程
1.下载地址: keepalived-2.3.1 keepalived-2.1.2 keepalived-2.0.18 三个版本tar包 2.keepalived安装详细过程 (1) 解压keepalived tar包 tar -zxvf keepalived-2.0.18.tar.gz(2)进入keepalived目录然后配置 #进入keepalived目录 cd keepalived-2.0.18/ #配置keepalived[配…...
面试题1-fail-safe机制与fail-fast 机制
1.定义 Fail-safe 和 Fail-fast,是多线程并发操作集合时的一种失败处理机制。 1.1.Fail-Safe机制 1.1.1.定义 Fail-Safe 机制的设计目标是在发生故障时,系统仍然能够继续运行,尽量避免导致整个系统崩溃。即使发生错误或异常,系统…...
C/C++复习(一)
1.sizeof 关于sizeof我们是经常使用的,所以使用方法就不需要提及了,这里我们需要注意的是,sizeof 后面如果是表达式可以不用括号,并且sizeof实际上不参与运算,返回的是内容的类型大小(size_t类型࿰…...
iOS Object-C 将数组倒置(倒叙)
使用NSArray自带的对象方法:reverseObjectEnumerator 代码如下: NSArray * tempArray [[NSArray alloc]initWithObjects:"a","b","c","d", nil]; //将tempArray转换成["d","c","b","a"]; …...
动态轻量级线程池项目
动态线程池: 使用线程池ThreadPoolExecutor过程中你是否有以下痛点呢? ① 代码中创建了一个ThreadPoolExecutor,但是不知道参数设置多少比较合适。 ② 凭经验设置参数值,上线后发现需要调整,改代码重新发布服务&…...
【AI知识点】批归一化(Batch Normalization)
更多AI知识点总结见我的专栏:【AI知识点】 AI论文精读、项目和一些个人思考见我另一专栏:【AI修炼之路】 有什么问题、批评和建议都非常欢迎交流,三人行必有我师焉😁 批归一化(Batch Normalization,BN&…...
【低代码】前端低代码开发日记2:遇到的问题(1)双向绑定
在前期的快速迭代阶段,虽然界面有些杂乱,但整体功能尚能凑合运行。真正让人头疼的,还是接下来几个关键功能的实现。 遇到的问题 双向绑定 在Vue中,v-model提供了方便的双向绑定功能,它是modelValue属性和onUpdate:m…...
10.9作业
1、鼠标和键盘事件 #include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QMouseEvent>widget::widget(QWidget *parent): QWidget(parent), ui(new Ui::widget) {ui->setupUi(this);this->setWindowFlag(Qt::Fram…...
Go 语言中的错误和异常:设计理念与优势
Go 语言中的错误和异常:设计理念与优势 在软件开发中,错误处理是一个至关重要的环节。不同的编程语言对于错误和异常的处理方式各有不同。Go 语言将错误和异常进行了明确区分,这种设计理念带来了许多独特的优势。本文将深入探讨 Go 语言中错误…...
sqli-labs less-20 less-21 less-22 cookie注入
COOKIE 作用:是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络行为有关,记录了当前用户的状态 形式:keyvalue 例如:当我们登录某个账号后,服务器会在cookies进行记录 个人理解…...
IDEA下“File is read-only”可能原因及“找不到或无法加载主类”问题的解决
1.File is read-only”可能原因 写代码时想要修改这个静态变量的值,把这个语句注释掉,发现在这个文件中File is read-only无法编辑修改,于是想去掉这个状态 网上查看的解释大多是在File栏目或File->File Properties下可以找到Make File W…...
MySQL【知识改变命运】03
表的基本操作 1:查看所有表2:创建表3:查看表结构4:修改表5: 删除表 前言:我们先了解一个知识: MySQL安装后会有MySQL服务——管理多个库——每个库管理多个表——每个表管理多行数据——数据行由…...
【测试】BUG篇——BUG
bug的概念 定义:⼀个计算机bug指在计算机程序中存在的⼀个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault),这些bug使程序⽆法正确的运⾏。Bug产⽣于程序的源代码或者程序设计阶段的疏忽或者错误。 准确的来说: 当且仅当规格说明&am…...
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油! 本章是高阶数据结构笔记的第一篇文章,将分享二叉搜索树的进阶概念及其高效实现的相关知识,欢迎大家阅读! 🌈个人主页:是店小二呀 dz…...
上传本地项目到GitHub远程仓库(极简洁操作版)
第一步:在GitHub创建一个空的仓库 第二步:将仓库克隆(下载)到本地 第三步:将你要上传的所有文件放到这个克隆的仓库文件夹中 第四步:通过git add .将待上传文件添加到暂存区 此时,可以通过git …...
在安卓中使用 `mobile-ffmpeg` 压缩后的视频,浏览器在线播放提示“没有找到支持的视频格式和 MIME 类型”的解决方案
在安卓中使用 mobile-ffmpeg 压缩后的视频,浏览器在线播放提示“没有找到支持的视频格式和 MIME 类型”的解决方案 你可能在安卓开发中使用了 mobile-ffmpeg 进行视频压缩,而当你尝试在浏览器中在线播放压缩后的视频时,看到提示:…...
桌面Z箍缩实验:从等离子体原理到聚变中子探测的DIY实践
1. 项目概述:从“人造太阳”到桌面实验的能源狂想“如何通过聚变制造能源及如何实现”,这个标题背后,是无数工程师和科学家为之奋斗终身的终极能源梦想。它听起来宏大得像是国家实验室的专属课题,但今天我想从一个更接地气的、带有…...
Zotero老用户必看!文献管理后的阅读断层,Scholaread如何让你的千篇文献库“活“起来?
你用Zotero管理了上千篇文献,却在阅读时不得不打开知云、翻译狗,笔记分散在多个软件,标注无法同步。这种"管理在Zotero,阅读在别处"的割裂体验,正在吞噬你的科研效率。本文将展示Scholaread如何通过一键导入…...
巧用Charles代理,根治Xposed资源库HTTPS迁移引发的下载难题
1. 当Xposed遇上HTTPS:一场协议升级引发的"断粮危机" 去年给家里老人用的那台小米4刷机时,突然发现Xposed框架死活下载不了资源包。屏幕上赫然显示着那个熟悉的错误提示:"Xposed Installer:下载http://dl.xposed.info/repo/fu…...
2026年便利店成交金额究竟要达到多少,才能摆脱亏损困境?
在便利店行业竞争日益激烈的当下,众多便利店品牌都在为实现盈利而努力。美喜福作为便利店行业的一员,在这一背景下有着独特的发展路径和潜力。那么,2026年便利店成交金额究竟要达到多少才能摆脱亏损困境呢?让我们结合美喜福的实际…...
【2026最新版Linux安装Mysql】CentOS 7 安装 MySQL 8.4.9 完整流程(RPM 手动安装+避坑+面试)
前言:本文记录在 CentOS 7 / RHEL 7 上,通过官网 RPM Bundle tar 包手动安装 MySQL 8.4.9(LTS) 的完整可复现流程。适合需要在老版本 CentOS 上部署 MySQL、为 Python/AI 后端或 Java 项目准备数据库环境的读者。读完可按步骤完成…...
毕业设计 深度学习多目标跟踪 实时检测
文章目录 0 前言2 目标跟踪效果3 目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 🔥 今天学长向大家分享一个毕业设计项目 为了大家能够顺利以及最少的精力通过毕设&…...
TVBox 最新版本 | 接口持续更新 | 追剧稳定不失效
分享一个自用很久、一直在持续维护更新的 TVBox 版本,主打稳定、流畅、长期可用,接口会定期更新,避免失效问题。 🔥资源特点 精准区分 64 位新设备 / 32 位老设备,安装更适配全设备兼容:电视、盒子、手机…...
如何快速掌握Switch文件管理神器:NSC_BUILDER完整新手指南
如何快速掌握Switch文件管理神器:NSC_BUILDER完整新手指南 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encr…...
别再怕模型不准了!用MATLAB的musyn命令搞定鲁棒控制器设计(附D-K迭代详解)
用MATLAB的musyn命令实现工业级鲁棒控制器设计实战指南 在控制系统的实际工程应用中,模型不确定性就像房间里的大象——人人都知道存在,却常常选择忽视。直到某天,精心设计的控制器在真实环境中表现失常,工程师们才意识到那些被忽…...
告别WinForm!用C#和MetroFramework快速搭建现代化工控上位机UI(附完整源码)
用C#和MetroFramework打造现代化工控上位机界面的实战指南 在工业自动化领域,上位机软件的用户体验往往被忽视。许多工程师仍然在使用传统的WinForm开发界面,这些界面虽然功能完备,但视觉效果和交互体验已经远远落后于现代软件的标准。本文将…...
