Add to wishlist - nookazon.com

Allow to add multiple items to a whishlist at once. Go to wishlist, enter the items separated by coma in the search bar and click the import button. Format is itemName - variante. Ex: Avery - ungifted,stone,wood,Sasha. If no variante specified, all are added. Works on both PC and mobile (firefox). The sharing of script on nookazon discord is prohibited, so please keep this to yourself.

// ==UserScript==
// @name        Add to wishlist - nookazon.com
// @namespace   Tampermonkey Scripts
// @match       http*://nookazon.com/*
// @grant window.onurlchange
// @grant GM_addElement
// @version     1.0
// @license MIT
// @author      Hijack Hornet
// @description Allow to add multiple items to a whishlist at once. Go to wishlist, enter the items separated by coma in the search bar and click the import button. Format is itemName - variante. Ex: Avery - ungifted,stone,wood,Sasha. If no variante specified, all are added. Works on both PC and mobile (firefox). The sharing of script on nookazon discord is prohibited, so please keep this to yourself.
// ==/UserScript==

var totalToDo = 9999999
var totalDone = 0
function runWhenReady(readySelector, callback) {
    var numAttempts = 0;
    var tryNow = function() {
        var elem = document.querySelector(readySelector);
        if (elem) {
            callback(elem);
        } else {
            numAttempts++;
            if (numAttempts >= 34) {
                console.warn('Giving up after 34 attempts. Could not find: ' + readySelector);
            } else {
                setTimeout(tryNow, 250 * Math.pow(1.1, numAttempts));
            }
        }
    };
    tryNow();
}
const regex = /https?:\/\/nookazon\.com\/profile\/([0-9]+)\/wishlist\/?([0-9]*)?/;

if(regex.test(window.location.href)){
    runWhenReady('.wishlist-content .listing-search-input', addButtonOnPage);
}
if (window.onurlchange === null) {
    window.addEventListener('urlchange', (info) => {
        if(regex.test(info.url)){
            runWhenReady('.wishlist-content .listing-search-input', addButtonOnPage);
        }
    });
}

function addButtonOnPage(titleNode){
    var elem = document.querySelector("#wishlistClipboard");
    if(!elem){

        console.log("Adding button for whishlist import")
        console.log(titleNode.parentNode)
        var button = GM_addElement(titleNode.parentNode, 'button', {
            'aria-label': 'Import',
            textContent: 'Import',
            style:'margin-left:10px;',
            id:"wishlistClipboard"
        });
        button.addEventListener (
            "click", importItems, false
        );
    }
}
function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
function addToWishlist(profileNumber,wishlistNumber,itemId,diy,itemType,variant,all){
    const addToWishlistUrl = "https://nookazon.com/api/public/listings/create"
    var xhr = new XMLHttpRequest();
    var url = addToWishlistUrl;
    var formData = new FormData();


    if(all){
        formData.append('body', '{"all":true,"diy":'+diy+',"item":"'+itemId.toString()+'","itemMode":null,"itemType":"'+itemType.toString()+'","selling":false,"wishlist":"'+wishlistNumber?.toString()+'","amount":1}');
    }
    else if(!variant){
        formData.append('body', '{"all":false,"diy":'+diy+',"item":"'+itemId.toString()+'","itemMode":null,"itemType":"'+itemType.toString()+'","selling":false,"wishlist":"'+wishlistNumber?.toString()+'","amount":1}');
    }
    else{
        formData.append('body', '{"all":false,"diy":'+diy+',"item":"'+itemId.toString()+'","itemMode":null,"itemType":"'+itemType.toString()+'","selling":false,"wishlist":"'+wishlistNumber?.toString()+'","amount":1,"variant":"'+variant.toString()+'"}');
    }
    fetch(addToWishlistUrl,
          {
        method: 'POST',
        body: formData,
        headers: new Headers({
            "Authorization": "Bearer "+ localStorage.getItem('jwt'),
            "Accept": "*/*",
            "X-Requested-With": "XMLHttpRequest",
            "Accept-Language": localStorage.getItem('defaultLanguage')
        }),

    }
         ).then((response) => {
        updateProgress()
    })
}
function searchReq(itemName,profileNumber,wishlistNumber,delay){
    var splittedName = itemName.split(" - ")
    var searchUrl = "https://nookazon.com/api/public/items?variants=&search="+splittedName[0]+"&user="+profileNumber
    sleep(delay).then(()=>{
        fetch(searchUrl,
              {
            headers: new Headers({
                "Authorization": "Bearer "+ localStorage.getItem('jwt'),
                "Accept": "*/*",
                "X-Requested-With": "XMLHttpRequest",
                "Accept-Language": localStorage.getItem('defaultLanguage')
            }),

        })
            .then((response) => response.json())
            .then((json) => {
            if(json.items && json.items.length >=1){
                var itemId = json.items[0].id
                var diy = json.items[0].diy
                var itemType = json.items[0].type
                var variant = undefined
                if(splittedName.length >1 && json.items[0].variants){
                    for(var j = 0; j<json.items[0].variants.length;j++){
                        if(json.items[0].variants[j].name.toLowerCase() == splittedName[1].toLowerCase()){
                            variant = json.items[0].variants[j].id
                            break;
                        }
                    }

                }
                if(variant == undefined && json.items[0].variants){
                    // Add them all
                    addToWishlist(profileNumber,wishlistNumber,itemId,diy,itemType,variant,true)
                }
                else{
                    //Add the one
                    addToWishlist(profileNumber,wishlistNumber,itemId,diy,itemType,variant,false)
                }

            }
        });
    })
}

function importItems(){
    var res = window.location.href.match(regex);
    var profileNumber = res[1]
    var wishlistNumber = res[2]?res[2]:""


    var elem = document.querySelector('.wishlist-content .listing-search-input');
    var items = elem.value.split(",")
    totalToDo = items.length
    totalDone = 0
    for(var i=0; i<items.length;i++){
        searchReq(items[i],profileNumber,wishlistNumber,i*100);
    }
    var progress = GM_addElement(document.body, 'div', {
            textContent: 'Progression : 0/'+totalToDo,
            style:'margin-left:10px;border-radius:20px;position:absolute;',
            id:"progressImport"
        });
    return;
}
function updateProgress(){
    totalDone++;
    var prog = document.querySelector("#progressImport")
    prog.textContent = 'Progression : '+totalDone+'/'+totalToDo
    if(totalDone == totalToDo){
        //location.reload();
    }
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址