Chrome 웹 스토어에서 확장 프로그램을 정렬하는 방법은 무엇입니까?

Chrome 웹 스토어에서 확장 프로그램을 정렬하는 방법은 무엇입니까?

Google Chrome 웹 스토어는 나에게 재앙처럼 보입니다. 나는 그것을 이해할 수 없습니다.

확장 프로그램을 인기순으로 정렬하려면 어떻게 해야 합니까? 평가로? 다운로드 수로? 최신순으로? 최근 업데이트로?

내가 뭔가를 완전히 간과하고 있는 걸까?

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

답변1

Chrome Dev 도구 콘솔에서 작동하는 간단한 분류기 js를 만들었습니다. GitHub 페이지에 접속할 수 있습니다여기.

주로 Chrome 웹 스토어의 확장 프로그램을 정렬합니다. Ctrl+Shift+I로 시작되는 Chrome 개발자 도구 콘솔에서 실행됩니다.

링크에서 검색 확장 페이지를 연 후https://chrome.google.com/webstore/search/PHRASE?_category=extensions검색 문구가 PHRASE로 바뀌었습니다. 그리고 sorter.js 아래의 코드는 chrome dev cosole에서 실행됩니다.

먼저 스크롤되지 않을 때까지 페이지를 자동으로 스크롤하여 무한 스크롤 페이지의 모든 확장 프로그램을 로드합니다. 그런 다음 투표 수를 기준으로 정렬합니다.

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();

답변2

할 일은 많지 않지만 할 수 있는 작은 일은 다음과 같습니다.

  • 등급 별 (1) :
    • 등급별로 필터링할 수 있습니다. 결과에 대한 시작 횟수 하한을 설정하세요.
  • 최근 업데이트됨 (2) :
    • Google에서 명시한 대로 최근 업데이트되었지만 그 뒤에 더 많은 내용이 있는지 알 수 없습니다. 내 생각에는 (내가 보기에) 실제로 "최근에 업데이트된 인기 확장 프로그램"인 것 같습니다.
  • 인기도 (3) :
    • 내 생각엔 가장 가까운 곳이에디터 추천부분. 이는 일반적으로 훌륭하고 인기 있는 앱/확장 프로그램이며, 선택된다는 사실도 이를 향상시킵니다.
  • 최신:
    • 안타깝게도 불가능할 것 같습니다. 웹 스토어에 업데이트 피드가 있는 경우 거기에서 이 정보를 얻을 수 있습니다.
  • 다운로드:
    • 실제로 옵션은 아니지만 다른 매개변수(평가, 추천, 편집자 추천 등)를 통해 (다소간) 알 수 있다고 생각합니다.

여기에 이미지 설명을 입력하세요

답변3

Google을 사용하여 약간 우회적인 방식으로 '최근 업데이트'별로 확장 프로그램을 정렬하는 방법을 찾았습니다.

예를 들어, 최근 jQuery 애드온을 찾고 있었습니다.

  • 이동www.google.com, 검색...
    '사이트:chrome.google.com "jquery"'(또는 '를 사용할 수도 있습니다.제목:"jquery"')
  • 클릭 '도구 > 언제든지', '로 바꾸세요.지난 주' 또는 원하는 기간

결과에는 최근 추가된 애드온과 업데이트된 애드온이 모두 포함됩니다.

답변4

이것은 나에게 효과적입니다 (2024년 3월)

"더 보기" 버튼을 여러 번 누르세요

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();

평점별로 확장 프로그램을 정렬하려면

// 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();

관련 정보