Como classificar a extensão na Chrome Web Store?

Como classificar a extensão na Chrome Web Store?

A Google Chrome Web Store parece um desastre para mim. Não consigo entender isso.

Como você pode classificar as extensões por popularidade? Por classificação? Por quantidade de downloads? Por mais novo? Por atualizado recentemente?

Estou negligenciando completamente alguma coisa?

https://chrome.google.com/webstore/category/extensions

Responder1

Eu criei um classificador js simples que funciona no console de ferramentas do Chrome Dev. Você pode acessar a página do GitHubaqui.

Ele classifica principalmente as extensões na Chrome Web Store. Ele é executado no console Chrome Dev Tools, iniciado por Ctrl+Shift+I.

Depois de abrir a página de extensões de pesquisa no linkhttps://chrome.google.com/webstore/search/PHRASE?_category=extensionscom sua frase de pesquisa substituída por PHRASE. E então o código em sorter.js é executado no chrome dev cosole.

Em primeiro lugar, ele carrega todas as extensões na página de rolagem infinita, rolando automaticamente a página até não rolar. Em seguida, ele os classifica por número de votos.

var i = 0;
var num_of_items = 0;
var stop = false;
function startCheck(max)
{
    i++;
    
    //document.querySelectorAll('div.h-a-Kd.a-Hd-mb')[0];
    var bottom = document.querySelectorAll('div.h-a-Hd-mb.a-Hd-mb')[0];
    bottom.scrollIntoView();
    //scrollTo(scrollX,scrollY+1000); 
    console.log(i.toString());  
    
    var items = document.querySelectorAll('.a-d-na.a-d.webstore-test-wall-tile.a-d-zc.Xd.dd');
    var new_num_of_items = items.length;
    if (num_of_items != new_num_of_items)
    {
        num_of_items = new_num_of_items;
        console.log('Loaded items : ' + new_num_of_items);
    }   
    
    if (i>max || stop) 
    {
        i = 0;
        num_of_items = 0;
        stop = false;
        items[new_num_of_items-1].scrollIntoView(false);
        sortsort();
        return;
    }
    
    var t = setTimeout(function (){startCheck(max);}, 100);
}

var MAX_COUNT = 25;
var counter = 0;
function stopCheck()
{   
    var spin = document.querySelectorAll('div.h-a-Kd.a-Hd-mb')[0];  
    var state_new = spin.attributes.style.value == "display: none;"
    
    if (state_new)
        counter++;
    else
        counter=0;
    
    console.log('Counter : ' + counter);
    if (counter > MAX_COUNT)
    {
        counter = 0;
        stop = true;        
        return;
    }
    
    var t = setTimeout(function (){stopCheck();}, 100);
}

var sortsort = function() {

    var ab = document.querySelectorAll('.a-d-na.a-d.webstore-test-wall-tile.a-d-zc.Xd.dd');
    console.log(ab.length);
    var ab_arry = Array.from(ab);

    var index_str;
    var star_str;
    ab_arry.forEach((star) => {
        
        index_str = star.attributes.hasOwnProperty("index") ? Number(star.attributes.index.value.toString().replace(/,/g, '')) : 0
        star_str  = star.getElementsByClassName("nAtiRe").length > 0 ? Number(star.getElementsByClassName("nAtiRe")[0].textContent.toString().replace(/,/g, '')).toString() : "Not voted";

        console.log( index_str + " = >>>> " + star_str);        
    });

    ab_arry.sort(function (a,b) {
        var a_star =  a.getElementsByClassName("nAtiRe").length > 0 ? Number(a.getElementsByClassName("nAtiRe")[0].textContent.toString().replace(/,/g, '')) : 0;
        var b_star =  b.getElementsByClassName("nAtiRe").length > 0 ? Number(b.getElementsByClassName("nAtiRe")[0].textContent.toString().replace(/,/g, '')) : 0;
        
        return (b_star - a_star);   
    });


    let row_nodes = document.querySelectorAll('.h-a-x > [role="grid"] > [role="row"]');
    var row_nodes_arry = Array.from(row_nodes);
    var sr;

    for (var rr = 0; rr < row_nodes_arry.length; rr++)
    {   
        sr_start = rr * 3;
        
        var msg = rr.toString() + ' <--- ';
        for (var sr = sr_start; sr < sr_start + 3 && sr < ab_arry.length ; sr++)
        {
            msg += '1:' + sr + ' ';
            row_nodes_arry[rr].appendChild(ab_arry[sr]);
        }   
        console.log(msg);
    }

}

startCheck(3000);
stopCheck();

Responder2

Não há muito o que fazer, mas aqui estão as pequenas coisas que você pode fazer:

  • Por classificação (1) :
    • Você pode filtrar por classificação - defina o limite inferior de partidas para seus resultados.
  • Por atualizado recentemente (2) :
    • Atualizado recentemente conforme declarado pelo Google, não podemos saber se há mais por trás disso. Eu acho (pelo que vejo), na verdade são "extensões populares atualizadas recentemente".
  • Popularidade (3) :
    • Acho que o mais próximo seria oEscolhas dos editoresseção. Esses geralmente são aplicativos/extensões bons e populares, e o fato de estarem sendo escolhidos também os impulsiona.
  • O mais novo:
    • Infelizmente não parece ser possível. Talvez se houver um feed de atualizações da Web Store, você possa obter essas informações de lá.
  • Transferências:
    • Não é realmente uma opção, embora eu ache que pode ser conhecida (mais ou menos) pelos outros parâmetros (classificação, destaque, escolhas do editor etc.)

insira a descrição da imagem aqui

Responder3

Encontrei uma maneira de classificar as extensões por 'atualizadas recentemente' de uma forma um pouco indireta usando o Google:

Por exemplo, eu estava procurando complementos recentes do jQuery:

  • Vá parawww.google.com, procurar...
    'site:chrome.google.com"jquery"' (ou você também pode usar 'título:"jquery"')
  • Clique em 'Ferramentas > A qualquer hora', mude para 'Semana passada' ou qualquer período de tempo que você quiser

os resultados incluirão complementos adicionados recentemente e atualizados

Responder4

isso funciona para mim (março de 2024)

pressionar o botão "Carregar mais" várias vezes

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function demo() {
    for (let i = 0; i < 5; i++) {
        document.querySelector('button.Vs7jVd').click();
        await sleep(i * 1000);
    }
    console.log('Done');
}

demo();

para classificar extensões por classificações

// Function to sort extensions by downloads
function sortExtensionsByDownloads() {
  var extensions = [];
  // Selecting each extension item
  var extensionElements = document.querySelectorAll('[jsname="hs2VQd"]:not(.load-more-button)');
  extensionElements.forEach(function(extension) {
    var name = extension.querySelector('.GzKZcb').innerText.trim();
    var downloadsText = extension.querySelector('.Y30PE').innerText.trim();
    extensions.push({ name: name, downloadsText: downloadsText, element: extension });
  });

  // Sorting extensions by number of downloads
  extensions.sort(function(a, b) {
    return compareDownloads(a.downloadsText, b.downloadsText);
  });

  // Reordering extensions on the webpage
  var parentElement = extensionElements[0].parentNode;
  extensions.forEach(function(extension) {
    parentElement.appendChild(extension.element);
  });
}

// Function to compare download counts
function compareDownloads(a, b) {
  // Regular expression to extract numeric value and unit
  var regex = /([\d.]+)\s*([KM]*)/;
  var matchA = regex.exec(a);
  var matchB = regex.exec(b);

  // Extract numeric value and unit
  var aValue = parseFloat(matchA[1]);
  var aUnit = matchA[2];
  var bValue = parseFloat(matchB[1]);
  var bUnit = matchB[2];

  // Convert units to numerical values
  if (aUnit === 'K') aValue *= 1000;
  if (bUnit === 'K') bValue *= 1000;
  if (aUnit === 'M') aValue *= 1000000;
  if (bUnit === 'M') bValue *= 1000000;

  // Compare numerical values
  return bValue - aValue;
}

// Call the function to sort extensions by downloads
sortExtensionsByDownloads();

informação relacionada