Greasy Fork is available in English.

BTS2 - FC-Research Table Parser

Parses defined items in a table and retrieve data from them in array

// ==UserScript==
// @name         BTS2 - FC-Research Table Parser
// @namespace    BTS2, amazon, fcresearch, parser
// @version      0.1
// @description  Parses defined items in a table and retrieve data from them in array
// @author       AA from BTS2
// @match        file:///*/LPN*.htm
// @include      http://fcresearch-eu.aka.amazon.com/*/results?*
// @include      https://fcresearch-eu.aka.amazon.com/*/results?*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function getColumn(table_id, col){
        var tab = document.getElementById(table_id);
        var header_nodes = document.getElementById(table_id+'_wrapper').querySelectorAll("th");
        var header_length = header_nodes.length / 2;
        var header_arr = new Array(header_length);
        while(header_length--){
            header_arr[header_length] = header_nodes[header_length]; // convert NodeList to an Array (half-sized) of Nodes
        }

        var n = tab.rows.length;
        var i, tr, td, items_arr = [];

        if (col < 0) return null;

        for (i = 0; i < n; i++) {
            tr = tab.rows[i];
            if (tr.cells.length > col){
                items_arr.push(tab.rows[i].cells[col].textContent);
            }
        }
        return delDups(items_arr);
    }

    function delDups(array){
        var seen = [];
        array.splice(0, 1); // deletes the first empty item in array
        return array.filter(function(item){
            return seen.hasOwnProperty(item) ? false : (seen[item] = true); // returns only the unique items
        });
    }

    function addParserIcon(){
        var elm = document.getElementById('inventory-lpn');
        var icon = '<span id="parserIcon" class="ui-icon ui-icon-circle-check" style="margin-left:45px;margin-top:-23px"></span>';
        elm.insertAdjacentHTML('beforeend', icon);
        elm.addEventListener('click', function(){
            var data = [];
            data = getColumn('table-inventory', 4);
            downloadFile(data, 'LPN_list.txt', 'text/plain');
        });
    }

    function downloadFile(data, name, type, stringify = false){
        if (stringify) data = JSON.stringify(data);
        var a = document.createElement('a');
        var file = new Blob([data], {type: type});
        a.href = URL.createObjectURL(file);
        a.download = name;
        a.click();
    }

    function ready(fn) {
        if (document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading'){
            fn();
        } else {
            document.addEventListener('DOMContentLoaded', fn);
        }
    }
    // ----------------------------------------------------------
    ready(function(){
        addParserIcon();
    });

})();