Greasy Fork is available in English.

Steam Store Title Mark

mark language support & card_info & positive percentage with game title

// ==UserScript==
// @name         Steam Store Title Mark
// @description  mark language support & card_info & positive percentage with game title
// @author       desc_inno
// @namespace    https://github.com/desc70865/Steam-Store-Title-Mark
// @supportURL   https://github.com/desc70865/Steam-Store-Title-Mark/issues
// @version      0.2
// @icon         https://store.steampowered.com/favicon.ico
// @match        https://store.steampowered.com/app/*
// @require      https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js
// ==/UserScript==

(function() {
    'use strict';
    window.load = titleMark();
})();

// set https://store.steampowered.com/account/languagepreferences both simplified & traditional chinese before use
function titleMark() { // add prefix & suffix to title if u need
    let trade_card = cardDetect(), // if has trade cards
        chinese_support = languageDetect(), // if supports simplified chinese or traditional chinese
        reviews_ratio = ratioDetect();
};

function cardDetect() {
    if((/Steam 集换式卡牌/g).test(document.body.innerText)){
        $('.apphub_AppName')[0].innerHTML = "📇 " + $('.apphub_AppName')[0].innerText; // add emoji to prefix for mark
        return 1;
    };
    return 0;
};

function languageDetect() { // 不支持默认语言时匹配"不支持",同时检测其他语言中包含的辅助语言
    let flag_schinese = $('.game_language_options')[0].innerText.match(/不支持/g) == null,
        flag_tchinese = $('.game_language_options')[0].innerText.match(/繁体中文/g) != null;
    if(flag_schinese == true || flag_tchinese == true){
        $('.apphub_AppName')[0].innerHTML = "🀄️ " + $('.apphub_AppName')[0].innerText; // add emoji to prefix for mark
        return 1;
    };
    return 0;
};

function ratioDetect() {
    let rate_panel = $("div.user_reviews_summary_row"), // get reviews panel
        last = rate_panel.length - 1; // if there is recent reviews, it should be 1, or just 0
    if((/%/g).test(rate_panel[0].dataset.tooltipHtml)){ // sometimes there wont be enough reviews
        let reviews_ratio = rate_panel[last].dataset.tooltipHtml.match(/\d+(?=%)/g), // overall percentage
            reviews_total = rate_panel[last].dataset.tooltipHtml.replace(',','').match(/\d+(?= 篇)/g), // a space here / sum of reviews
            reviews_positive = parseInt(reviews_total * reviews_ratio / 100);
        $('.apphub_AppName')[0].innerHTML = $('.apphub_AppName')[0].innerText + " => ("+ reviews_positive + "/" + reviews_total + ") = " + reviews_ratio + "%☆"; // add rate to suffix for mark
        return reviews_ratio;
    };
    return 60; // set the default value by 80 which should below threshold 90
};