eps1lon
6/19/2017 - 12:18 PM

poe db unique item parsercan be used to diff http://cb.poedb.tw/us/unique.php?l=1 with http://poedb.tw/us/unique.php?l=1

poe db unique item parsercan be used to diff http://cb.poedb.tw/us/unique.php?l=1 with http://poedb.tw/us/unique.php?l=1

(() => {
   const items = {};

    for (const row of document.querySelectorAll('tr td:nth-of-type(2)')) {
        const full_name_element = row.querySelector('a.item_unique');

        if (full_name_element !== undefined) {
            const full_name = full_name_element.innerText;

            let implicits = [];
            let explicits = [];
            let is_implicit = true;

            for (const mod_candidate of row.querySelectorAll('span, div')) {
                if (mod_candidate.className.indexOf('item_magic') !== -1) {
                    const mod = mod_candidate.innerText;

                    if (is_implicit) {
                        implicits.push(mod)
                    } else {
                        explicits.push(mod)
                    }
                } else if (mod_candidate.className.indexOf('ItemUniqueSeparator') !== -1) {
                    is_implicit = false
                }
            }
            
            // no separator 
            if (is_implicit) {
                explicits = implicits.slice()
                implicits = []
            }

            const name_element = row.querySelector('span:last-child');
            let name, base_item

            if (name_element !== undefined) {
                name = name_element.innerText;
                base_item = full_name.replace(name, '').trim();
            } else {
                name = full_name;
                base_item = undefined
            }

            // remove accordingly to your prefered diff 
            items[name] = { base_item, implicits, explicits };
        }
    } 

    console.log(items)
})();