您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows you to sort soundgasm.net posts by play count
- // ==UserScript==
- // @name Sort Soundgasm Posts
- // @version 1
- // @description Allows you to sort soundgasm.net posts by play count
- // @author Oniisama
- // @match *soundgasm.net/u/*
- // @namespace https://greasyfork.org/users/616912
- // ==/UserScript==
- // Get all posts on the page as a NodeList, then transform into Array
- let container = document.getElementsByTagName("body")[0];
- let posts = document.getElementsByClassName("sound-details");
- posts = Array.prototype.slice.call(posts, 0);
- let sorting_array = [];
- let default_post_array = [];
- // Add posts and their respective playcount to sorting_array
- posts.forEach(function(post){
- let playcount = post.getElementsByClassName("playCount")[0].textContent.slice(12);
- // [0] = playcount number (1 * string = number)
- // [1] = the element itself
- sorting_array.push([1 * playcount, post]);
- });
- // Keep a copy of this array so the page can be restored to default
- default_post_array = Array.from(sorting_array);
- function SortPage (sorting_array){
- // Sort the elements on the page itself
- for (let i=0; i<sorting_array.length; i++)
- {
- // sorting_array[ID][ELEMENT]
- container.appendChild(sorting_array[i][1]);
- }
- }
- function SortPostsDescending(sorting_array)
- {
- // I don't really get the function parameter but it works ig
- sorting_array.sort(function(x, y) {
- return y[0] - x[0];
- });
- SortPage(sorting_array);
- }
- function SortPostsAscending(sorting_array)
- {
- // I don't really get the function parameter but it works ig
- sorting_array.sort(function(x, y) {
- return x[0] - y[0];
- });
- SortPage(sorting_array);
- }
- function SortPostsDefault(default_post_array)
- {
- SortPage(default_post_array);
- }
- function CreateButton(text, func)
- {
- let btn = document.createElement("button");
- btn.innerHTML = text;
- btn.style.margin = "10px 5px 5px 0";
- btn.onclick = func;
- return btn;
- }
- // Create buttons
- let insertion_location = document.getElementsByClassName("sound-details")[0];
- container.insertBefore(CreateButton("Sort By Play Count (Desc)", function(){SortPostsDescending(sorting_array)}), insertion_location);
- container.insertBefore(CreateButton("Sort By Play Count (Asc)", function(){SortPostsAscending(sorting_array)}), insertion_location);
- container.insertBefore(CreateButton("Reset to Default", function(){SortPostsDefault(default_post_array)}), insertion_location);