steam show Community Items beta

add Community Items images

当前为 2023-04-24 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         steam show Community Items beta
// @description  add Community Items images
// @namespace    steam_Items_images
// @author       Covenant
// @version      1.0.6
// @license      MIT
// @homepage
// @match        https://store.steampowered.com/*
// @match        https://steamcommunity.com/*
// @match        https://steamdb.info/*
// @match        https://www.steamcardexchange.net/*
// @icon         data:image/svg+xml;base64,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjAgMTYiIHdpZHRoPSI0MCIgaGVpZ2h0PSIzMiI+CjxjaXJjbGUgc3Ryb2tlLXdpZHRoPSIxLjVweCIgY3k9IjQuNSIgY3g9IjE1LjUiIHI9IjMuNzUiIGNsYXNzPSJzdHJva2UiIHN0cm9rZT0iI0JCQkJCQiIgZmlsbD0ibm9uZSI+PC9jaXJjbGU+CjxjaXJjbGUgY3g9IjE1LjUiIGN5PSI0LjUiIHI9IjEuODU1IiBjbGFzcz0iZmlsbCIgZmlsbD0iI0JCQkJCQiI+PC9jaXJjbGU+CjxwYXRoIGQ9Ik0xMS42NTYgNC4yTDEyLjc1IDcuMTRsMi44NjUgMS4zODctNS4xMyAzLjg1My0uODY3LTIuMDktMS43NzMtLjk0MnoiIGNsYXNzPSJmaWxsIiBmaWxsPSIjQkJCQkJCIj48L3BhdGg+CjxjaXJjbGUgY3k9IjEyLjUiIGN4PSI3LjUiIHI9IjMiIGNsYXNzPSJzdHJva2UiIHN0cm9rZT0iI0JCQkJCQiIgZmlsbD0ibm9uZSI+PC9jaXJjbGU+CjxyZWN0IHRyYW5zZm9ybT0ibWF0cml4KC45MjQzMiAuMzgxNiAtLjM4NzI3IC45MjE5NiAwIDApIiByeT0iMS41MjYiIHdpZHRoPSI5LjQ3NyIgeT0iNy4xNTUiIHg9IjMuNzY3IiBoZWlnaHQ9IjMuMDUzIiBjbGFzcz0iZmlsbCIgZmlsbD0iI0JCQkJCQiI+PC9yZWN0Pgo8L3N2Zz4=
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand
// @grant        GM_xmlhttpRequest
// @connect      www.steamcardexchange.net
// @connect      steamcommunity.com
// @run-at       document-end
// @noframes
// ==/UserScript==
var timeoutID;
var is_Community_Items_Exist=true;
var is_avatar_Exist=true;
const ary_lang_steam=["english","japanese","latam","bulgarian","schinese","tchinese","czech","danish","dutch","finnish","french","german","greek","hungarian","italian","koreana","norwegian","polish","brazilian","portuguese","romanian","russian","spanish","swedish","thai","turkish","ukrainian","vietnamese"];
const ary_currency_steam=["USD","GBP","EUR","CHF","RUB","PLN","BRL","JPY","SEK","IDR","MYR","BWP","SGD","THB","VND","KRW","TRY","UAH","MXN","CAD","AUD","NZD","CNY","INR","CLP","PEN","COP","ZAR","HKD","TWD","SAR","AED"];
const akamaihd="steamcdn-a.akamaihd.net";
const steamstatic="cdn.cloudflare.steamstatic.com";
const steamcommunity="steamcommunity.com";
const profilebackground="/economy/profilebackground";
const public_images="/steamcommunity/public/images";
const priceoverview="https://steamcommunity.com/market/priceoverview/";
const s_normal_Cards="&category_753_cardborder[]=tag_cardborder_0#p1_name_asc";
const s_foil_cards="&category_753_cardborder[]=tag_cardborder_1#p1_name_asc";
const s_p_background="&category_753_item_class[]=tag_item_class_3#p1_name_asc";
const s_emotion="&category_753_item_class[]=tag_item_class_4#p1_name_asc";
const s_sale_items="&category_753_item_class[]=tag_item_class_10#p1_name_asc";
var gm_currency=GM_getValue('steam_currency', 1);
var gm_steamcommunity_item_json=GM_getValue('load_steamcommunity_item_json', false);
var url_steam_app;
var url_category_753_Game;
var url_avatar;
var url_points_shop;
var url_curatorsreviewing;
var url_cardexchange;
var url_steamdb_app;
var url_steamdb_communityitems;
var url_steamdb_achievements;
function create_style(textContent,id,class_name){
    let style=document.createElement("style");
    style.type='text/css';
    style.id=id;
    if(Array.isArray(class_name)){
        for(let i=0; i<class_name.length; i++){style.classList.add(class_name[i]);}
    }
    else if(typeof class_name==='string'){style.classList.add(class_name);}
    style.textContent=textContent;
    document.body.appendChild(style);
    return style;
}
var style_font_face=create_style("@font-face{font-family: 'color_emoji';src: local('Segoe UI Emoji'),local('Noto Color Emoji');}\n","gm_font_face_Items",["user_gm_css","font_face","css_steam_Items_images"]);
const font_family_steam_main="font-family: 'Motiva Sans','color_emoji','Noto Sans CJK JP','Meiryo','Yu Gothic','Microsoft JhengHei','old_emoji',sans-serif;";
const font_family_steam_info="font-family: Arial, Helvetica,'color_emoji','Noto Sans CJK JP','Meiryo','Yu Gothic','Microsoft JhengHei','old_emoji',sans-serif;";
var style_user_css=create_style(".user_div_steam_main{"+font_family_steam_main+"font-weight: 100;}\n","gm_user_css_Items",["user_gm_css","css_steam_Items_images"]);
style_user_css.textContent+=`.user_div_steam_info{`+font_family_steam_info+`font-weight: 100;}
.user_newmodal_background{position: fixed;z-index: 900;background: #000000;opacity: 0.8;top: 0;right: 0;bottom: 0;left: 0;}
.user_btn_steam{min-width: 2.5rem;margin-right: 2px;margin-left: 3px;margin-top: 1px;margin-bottom: 1px;padding-left: 5px;padding-right: 5px;}
a[class~='external'].external{background-position-x: right;background-position-y: center;background-repeat: no-repeat;background-size: 0.857em;padding-right: 1em;background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0S1BITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGRwWkhSb1BTSXhNaUlnYUdWcFoyaDBQU0l4TWlJZ2RtbGxkMEp2ZUQwaU1DQXdJREV5SURFeUlqNEtDVHgwYVhSc1pUNEtDUWxsZUhSbGNtNWhiQ0JzYVc1ckNnazhMM1JwZEd4bFBnb0pQSEJoZEdnZ1ptbHNiRDBpSXpNMll5SWdaRDBpVFRZZ01XZzFkalZNT0M0NE5pQXpMamcxSURRdU55QTRJRFFnTnk0emJEUXVNVFV0TkM0eE5rdzJJREZhVFRJZ00yZ3lkakZJTW5ZMmFEWldPR2d4ZGpKaE1TQXhJREFnTUNBeExURWdNVWd5WVRFZ01TQXdJREFnTVMweExURldOR0V4SURFZ01DQXdJREVnTVMweFdpSXZQZ284TDNOMlp6NEsiIC8+PC9zdmc+);}\n`;
function create_div(class_name,is_appendChild,node,refNode){
    let div=document.createElement("div");
    if(Array.isArray(class_name)){
        for(let i=0; i<class_name.length; i++){div.classList.add(class_name[i]);}
    }
    else if(typeof class_name==='string'){div.classList.add(class_name);}
    div.style.backgroundSize='contain';
    div.style.backgroundRepeat='no-repeat';
    div.lang='ja';
    if(is_appendChild){
        node.appendChild(div);
    }
    else{node.insertBefore(div, refNode);}
    return div;
}
var newmodal_background=create_div("user_newmodal_background",true,document.body);
newmodal_background.style.setProperty('display','none');
function create_a(text,url,class_name,is_appendChild,node,refNode){
    let anchor=document.createElement("a");
    anchor.href=url;
    anchor.innerText=text;
    anchor.title=text;
    if(Array.isArray(class_name)){
        for(let i=0; i<class_name.length; i++){anchor.classList.add(class_name[i]);}
    }
    else if(typeof class_name==='string'){anchor.classList.add(class_name);}
    anchor.target="_blank";
    if(is_appendChild){
        node.appendChild(anchor);
    }
    else{node.insertBefore(anchor, refNode);}
    return anchor;
}
function create_img(url,title,class_name,is_appendChild,node,refNode){
    let img=document.createElement('img');
    img.src=url;
    img.title=title;
    img.alt=title;
    if(Array.isArray(class_name)){
        for(let i=0; i<class_name.length; i++){img.classList.add(class_name[i]);}
    }
    else if(typeof class_name==='string'){img.classList.add(class_name);}
    if(is_appendChild){
        node.appendChild(img);
    }
    else{node.insertBefore(img, refNode);}
    return img;
}
function create_img_click(url,title,class_name,is_appendChild,node,refNode){
    let img=create_img(url,title,class_name,is_appendChild,node,refNode);
    img.width=54;
    img.addEventListener('click',() => {
        let img_tmp=img.cloneNode(true);
        img_tmp.style.setProperty('position','fixed');
        img_tmp.style.setProperty('left',"50%");
        img_tmp.style.setProperty('top',"50%");
        img_tmp.style.setProperty('transform',"translate(-50%,-50%)");
        img_tmp.style.setProperty('max-height',"95%");
        img_tmp.style.setProperty('z-index','1000');
        img_tmp.removeAttribute('width');
        newmodal_background.style.removeProperty('display');
        document.body.appendChild(img_tmp);
        img_tmp.addEventListener('click',() => {
            newmodal_background.style.setProperty('display','none');
            img_tmp.remove();
        });
        /*if(img.style.getPropertyValue('position')!="fixed"){
            img.style.setProperty('position','fixed');
            img.style.setProperty('left',"50%");
            img.style.setProperty('top',"50%");
            img.style.setProperty('transform',"translate(-50%,-50%)");
            img.style.setProperty('max-height',"95%");
            img.removeAttribute('width');
            newmodal_background.style.removeProperty('display');
        }
        else{
            img.style.removeProperty('position');
            img.style.removeProperty('left');
            img.style.removeProperty('top');
            img.style.removeProperty('transform');
            img.setAttribute('width', '54');
            newmodal_background.style.setProperty('display','none');
        }//*/
    });
    return img;
}
function create_btn(innerText,class_name,is_appendChild,node,refNode){
    let btn=document.createElement("button");
    btn.innerText=innerText;
    if(Array.isArray(class_name)){
        for(let i=0; i<class_name.length; i++){btn.classList.add(class_name[i]);}
    }
    else if(typeof class_name==='string'){btn.classList.add(class_name);}
    if(is_appendChild){
        node.appendChild(btn);
    }
    else{node.insertBefore(btn, refNode);}
    return btn;
}
function create_span(text,class_name,is_appendChild,node,refNode){
    let span=document.createElement("span");
    span.innerText=text;
    if(Array.isArray(class_name)){
        for(let i=0; i<class_name.length; i++){span.classList.add(class_name[i]);}
    }
    else if(typeof class_name==='string'){span.classList.add(class_name);}
    if(is_appendChild){
        node.appendChild(span);
    }
    else{node.insertBefore(span, refNode);}
    return span;
}
function create_br(is_appendChild,node,refNode){
    let br = document.createElement("br");
    if(is_appendChild){
        node.appendChild(br);
    }
    else{node.insertBefore(br, refNode);}
    return br;
}
function fn_gm_XMLHttpRequest(url,fn){
    GM_xmlhttpRequest({
        method: "GET",
        url: url,
        headers:{
            'content-type': 'text/html; charset=UTF-8',
            'user-agent':window.navigator.userAgent
        },
        onload: function (response){
            fn(response);
            /*console.log([
                "GM_xmlhttpRequest",
                response.status,
                response.statusText,
                response.readyState,
                response.responseHeaders,
                //response.responseText,
                response.finalUrl].join("\n")
            );//*/
        }
    });
}
function fn_url(url){
    let str_url=new URL(url);
    let params=new URLSearchParams(str_url.search);
    return [str_url,params];
}
//console.log("break");
function steam_app_id(url){
    url=fn_url(url);
    let host=url[0].host;
    let pathname=url[0].pathname;
    let ary_pathname=pathname.split('/');
    if(url[0].host=="store.steampowered.com"){
        if(ary_pathname[1]=="app")return ary_pathname[2];
        else if(ary_pathname[1]=="api")return url[1].get('appids');
    }
    else if(url[0].host=="steamdb.info"){
        if(ary_pathname[1]=="app")return ary_pathname[2];
    }
    else if(url[0].host=="steamcommunity.com"){
        if(ary_pathname[1]=="app")return ary_pathname[2];
        if(ary_pathname[3]=="achievements"){//achievements
            if(!isNaN(ary_pathname[2])){return ary_pathname[2];}
            else{
                let gameLogo_a=document.querySelectorAll('div.gameLogo>a')[0];
                if(gameLogo_a!=undefined){return fn_url(gameLogo_a.href)[0].pathname.split('/')[2];}
                else{return null;}
            }
        }
        if(url[1].get('category_753_Game[]')!=null)return url[1].get('category_753_Game[]').replace(/tag_app_/i, '');//Community Market
        if(ary_pathname[3]=="753")return parseInt(ary_pathname[4],10);//Community Market item
        if(ary_pathname[3]=="gamecards")return parseInt(ary_pathname[4],10);//badge
    }
    else if(url[0].host=="www.steamcardexchange.net"){
        if(url[0].search.search(new RegExp("\\?gamepage-appid-", "i"))==0){
            return url[0].search.replace(/[^0-9.]/g, '').replace(/(\\..*?)\\..*/g, '$1');
        }
    }
    return null;
}
function fn_re_market_check(response){
    let dom=document.createRange().createContextualFragment(response.responseText);
    if(response.status==200){
        if(dom.querySelectorAll('div.market_sortable_column').length==0)is_Community_Items_Exist=false;
        let anchor=document.querySelectorAll('a.anchor_Items');
        for(let i = 0; i < anchor.length; i++){
            if(is_Community_Items_Exist){
                anchor[i].parentNode.classList.add('link_item');
            }
            else{anchor[i].style.display="none";}
        }
        anchor[0].parentNode.classList.add('checked_item');
    }
    else{//451
        console.log("market response.status: "+response.status+response.responseHeaders);
    }
}
function fn_re_avatar_check(response){
    if(response.status==200){
        if(response.finalUrl.search(new RegExp("/Avatar/List", "i"))==-1)is_avatar_Exist=false;
        let anchor=document.querySelectorAll('a.anchor_avatar')[0];
        if(is_avatar_Exist){
            anchor.parentNode.classList.add('link_avatar');
        }
        else{anchor.style.display="none";}
        anchor.parentNode.classList.add('checked_avatar');
    }
    else{//
        console.log("avatar response.status: "+response.status+response.responseHeaders);
    }
}
function fn_re_item(response){
    let dom=document.createRange().createContextualFragment(response.responseText);
    let url=fn_url(response.finalUrl);
    let appid=url[0].search.replace(/\?gamepage-appid-/i, '');
    if(response.status==200){
        let output=document.querySelectorAll('div.user_item')[0];
        let badge=Array.from(dom.querySelectorAll('div.badge>div>img'));//badge
        for(let j=0; j<badge.length; j++){
            create_img_click(badge[j].src.replace(akamaihd, steamstatic),'badge',null,true,output);
        }
        create_br(true,output);
        let ary_img=Array.from(dom.querySelectorAll('div.emoticon>div>img'));//emoticon
        ary_img=ary_img.concat(Array.from(dom.querySelectorAll('div.background>div>a>img')));
        for(let j=0; j<ary_img.length; j++){
            if(ary_img[j].src.search(new RegExp("/economy/emoticon", "i"))==-1){
                let img_url=ary_img[j].src.replace(akamaihd, steamstatic);
                img_url=img_url.replace(steamcommunity, steamstatic);
                img_url=img_url.replace(profilebackground, public_images);
                create_img_click(img_url,'',null,true,output);
            }
        }
        create_br(true,output);
        let ary_animated=Array.from(dom.querySelectorAll('div.avataranimated>div>img.image-animated'));//animated
        ary_animated=ary_animated.concat(Array.from(dom.querySelectorAll('div.sticker>div>img.image-animated')),Array.from(dom.querySelectorAll('div.animated>div>a>img')));
        ary_animated=ary_animated.concat(Array.from(dom.querySelectorAll('div.minibg>div>img')),Array.from(dom.querySelectorAll('div.aframe>div>img.image-animated')));
        for(let j=0; j<ary_animated.length; j++){
            if(true){
                create_img_click(ary_animated[j].src.replace(akamaihd, steamstatic),'',null,true,output);
            }
        }
        let href_booster=dom.querySelectorAll('div.booster>div>div>a')[0].href;
        let card=dom.querySelectorAll('div.card>div>a>img');
        let market_hash_name=href_booster.replace(new RegExp("https://steamcommunity.com/market/listings/753/", "i"), '');
        create_a("booster "+6000/(card.length/2),href_booster,["linkbar","booster"],true,output);
        if(gm_steamcommunity_item_json)fn_gm_XMLHttpRequest(priceoverview+"?appid=753&market_hash_name="+market_hash_name+"&currency="+gm_currency,fn_re_json_priceoverview);
        console.log("fn_re_item 200");
    }
    else{//
        console.log("item response.status: "+response.status+response.responseHeaders);
    }
}
function fn_re_avatar(response){
    let dom=document.createRange().createContextualFragment(response.responseText);
    let url=fn_url(response.finalUrl);
    if(response.status==200){
        let output=document.querySelectorAll('div.user_item')[0];//console.log(response.responseText);
        let avatarBlockFull=Array.from(dom.querySelectorAll('div#avatarBlockFull>a>img'));
        for(let j=0; j<avatarBlockFull.length; j++){
            let img_url=avatarBlockFull[j].src;
            create_img_click(img_url,'',null,true,output);
        }
        create_br(true,output);
        console.log("fn_re_avatar 200");
    }
    else{//
        console.log("avatar response.status: "+response.status+response.responseHeaders);
    }
}
function fn_re_json_priceoverview(response){
    let output;
    if(document.location.host=="steamcommunity.com")output=document.querySelectorAll('div#largeiteminfo_item_type')[0];
    else if(document.location.host=="store.steampowered.com")output=document.querySelectorAll('a.booster')[0];
    else if(document.location.host=="www.steamcardexchange.net")output=document.querySelectorAll('div.game-title>h1')[0];
    if(response.status==200){
        let url=fn_url(response.finalUrl);
        let json=JSON.parse(response.responseText);
        let lowest_price=json['lowest_price'];
            output.innerText+=" "+lowest_price;

    }
    else{//
        console.log("json_render response.status: "+response.status+response.responseHeaders);
        create_span(" response_status: "+response.status,"response_status",true,output);
    }
}
function fn_re_json_render(response){
    let output;
    if(document.location.host=="steamcommunity.com")output=document.querySelectorAll('div#largeiteminfo_game_info')[0];
    else if(document.location.host=="store.steampowered.com")output=document.querySelectorAll('div.user_item')[0];
    else if(document.location.host=="www.steamcardexchange.net")output=document.querySelectorAll('div.game-title')[0];
    if(response.status==200){
        let url=fn_url(response.finalUrl);
        let json=JSON.parse(response.responseText);
        let text=json['results_html'];
        let results_html=document.createRange().createContextualFragment(text);
        let market_listing_price=results_html.querySelectorAll('span.market_listing_price');
        for(let i=0; i<market_listing_price.length; i++){
            output.appendChild(market_listing_price[i]);
        }
    }
    else{//
        console.log("json_render response.status: "+response.status+response.responseHeaders);
        create_span(" response_status: "+response.status,"response_status",true,output);
    }
}
function main_01(game_meta_data,appid){
    var tmp=document.querySelectorAll('div.Community_Items')[0];//old script
    if(tmp==undefined){
        var category_block=document.querySelectorAll('div#category_block')[0];
        var div_item_link=create_div(['block',"user_div_steam_info","Community_Items"],false,game_meta_data[0],category_block);
        var a_avatar=create_a("Avatar",url_avatar,['linkbar',"anchor_avatar"],true,div_item_link);
        var a_market=create_a("Community Market",url_category_753_Game,['linkbar',"anchor_Items"],true,div_item_link);
        var a_points=create_a("Points Shop",url_points_shop,['linkbar',"anchor_Items"],true,div_item_link);
        var a_steamcardexchange=create_a("steamcardexchange",url_cardexchange,['linkbar',"anchor_Items","external"],true,div_item_link);
        var a_steamdb=create_a("steamdb/communityitems",url_steamdb_communityitems,['linkbar',"anchor_Items","external"],true,div_item_link);
        div_item_link.style.backgroundImage="url('https://cdn.cloudflare.steamstatic.com/steam/apps/"+appid+"/page_bg_generated_v6b.jpg')";
        div_item_link.classList.add('link_dev');
        fn_gm_XMLHttpRequest(url_category_753_Game,fn_re_market_check);
        fn_gm_XMLHttpRequest(url_avatar,fn_re_avatar_check);
    }
}
function main_02(){
    let div_Community_item=document.querySelectorAll('div.Community_Items')[0];
    if(div_Community_item.classList.contains('checked_item')&&div_Community_item.classList.contains('checked_avatar')){
        window.clearInterval(timeoutID);
        if(div_Community_item.classList.contains('link_item'))fn_gm_XMLHttpRequest(url_cardexchange,fn_re_item);
        if(div_Community_item.classList.contains('link_avatar'))fn_gm_XMLHttpRequest(url_avatar,fn_re_avatar);//page dont load
    }
}
function main_inventory(){
    let url=fn_url(document.location);
    let econ_tag_filter_checkbox=document.querySelectorAll("input[type='checkbox'].econ_tag_filter_checkbox");
    for(let i=0; i<econ_tag_filter_checkbox.length; i++){
        let tag_name=econ_tag_filter_checkbox[i].getAttribute("tag_name");
        if(tag_name.search(/app_/i)==0&&!econ_tag_filter_checkbox[i].classList.contains('done')){
            let appid=tag_name.replace("app_","");
            create_a("Market","https://steamcommunity.com/market/search?appid=753&category_753_Game[]=tag_app_"+appid+"#p1_name_asc",["btn_green_white_innerfade","user_btn_steam"],true,econ_tag_filter_checkbox[i].parentNode);
            create_a("steamcardexchange","https://www.steamcardexchange.net/index.php?gamepage-appid-"+appid,["btnv6_blue_hoverfade","user_btn_steam","external"],true,econ_tag_filter_checkbox[i].parentNode);
            create_a("gamecards","https://"+url[0].host+url[0].pathname.replace("inventory","gamecards")+appid+url[0].search,["btn_grey_white_innerfade","user_btn_steam"],true,econ_tag_filter_checkbox[i].parentNode);
            econ_tag_filter_checkbox[i].classList.add("done");
        }
    }
}
function fn_steam_url(appid){
    url_steam_app="https://store.steampowered.com/app/"+appid;
    url_category_753_Game="https://steamcommunity.com/market/search?appid=753&category_753_Game[]=tag_app_"+appid+"#p1_name_asc";
    url_avatar="https://steamcommunity.com/ogg/"+appid+"/Avatar/List";
    url_points_shop="https://store.steampowered.com/points/shop/app/"+appid;
    url_curatorsreviewing="https://store.steampowered.com/curators/curatorsreviewing/?appid="+appid;
    url_cardexchange="https://www.steamcardexchange.net/index.php?gamepage-appid-"+appid;
    url_steamdb_app="https://steamdb.info/app/"+appid+"/";
    url_steamdb_communityitems="https://steamdb.info/app/"+appid+"/communityitems/";
    url_steamdb_achievements="https://steamdb.info/app/"+appid+"/stats/";
}
(function(){//main
    'use strict';
    let url=fn_url(document.location);
    let appid=steam_app_id(document.location);//document.location.host+document.location.pathname+document.location.search+document.location.hash
    fn_steam_url(appid);
    let lang=document.documentElement.lang;
    GM_registerMenuCommand("load json price"+(gm_steamcommunity_item_json?"✔️":"❌"), () => {
        GM_setValue('load_steamcommunity_item_json',!gm_steamcommunity_item_json);
    });
    console.log("steam: "+appid+" "+url[0].host);
    if(url[0].host=="store.steampowered.com"){
        let game_meta_data=document.querySelectorAll('div.game_meta_data');//steam game page
        if(game_meta_data.length>0){
            window.setTimeout(( () => main_01(game_meta_data,appid) ), 100);//old script
            let div_item=create_div(['block',"user_div_steam_info","user_item"],true,game_meta_data[0]);
            timeoutID = window.setInterval(( () => main_02()), 1000);//show item image
            let div_curators=create_div(['block',"user_div_steam_info","user_curators"],true,game_meta_data[0]);
            create_a("curators",url_curatorsreviewing,"linkbar",true,div_curators);
        }
        if(url[0].pathname=="/curators/curatorsreviewing/"){//steam curatorsreviewing page
            let page_content=document.querySelectorAll('div.light_container>div.page_content');
            let div_lang=create_div(["breadcrumbs","user_div_steam_main"],false,page_content[0],page_content[0].firstChild);
            for(let i=0; i<ary_lang_steam.length; i++){
                let anchor_lang=create_a(ary_lang_steam[i],"#","lang",true,div_lang);
                anchor_lang.setAttribute("onclick","ChangeLanguage('"+ary_lang_steam[i]+"'); return false;");
                create_span(" / ","breadcrumb_separator",true,div_lang);
            }
        }
    }
    else if(url[0].host=="steamcommunity.com"&&document.querySelectorAll('div.error_ctn')[0]==undefined){
        let div_1=document.querySelectorAll('div.market_search_results_header>div')[0];//market/search
        if(div_1!=undefined){
            create_a(appid,url_steam_app,"market_searchedForTerm",true,div_1);
            create_a("steamdb",url_steamdb_communityitems,["market_searchedForTerm","external"],true,div_1);
            create_a("steamcardexchange",url_cardexchange,["market_searchedForTerm","external"],true,div_1);
            create_a("Normal Cards","https://"+url[0].host+url[0].pathname+url[0].search+s_normal_Cards,"market_searchedForTerm",true,div_1);
            create_a("Foil Cards","https://"+url[0].host+url[0].pathname+url[0].search+s_foil_cards,"market_searchedForTerm",true,div_1);
            create_a("Profile Background","https://"+url[0].host+url[0].pathname+url[0].search+s_p_background,"market_searchedForTerm",true,div_1);
            create_a("Emotion","https://"+url[0].host+url[0].pathname+url[0].search+s_emotion,"market_searchedForTerm",true,div_1);
            create_a("Sale Items","https://"+url[0].host+url[0].pathname+url[0].search+s_sale_items,"market_searchedForTerm",true,div_1);
        }
        if(url[0].pathname.search(new RegExp("/market/listings/", "i"))==0){//market/listings
            let div_2=document.querySelectorAll('div.market_listing_nav')[0];
            let div_3=document.querySelectorAll('div#mainContents')[0];
            let app_id=parseInt(url[0].pathname.replace(new RegExp("/market/listings/", "i"), ''));
            let market_hash_name=url[0].pathname.replace(new RegExp("/market/listings/"+app_id+"/", "i"), '');
            create_a(appid,url_steam_app,["btn_green_white_innerfade","user_btn_steam"],true,div_2);
            create_a("steamdb",url_steamdb_communityitems,["btn_grey_white_innerfade","user_btn_steam","external"],true,div_2);
            create_a("steamcardexchange",url_cardexchange,["btn_grey_white_innerfade","user_btn_steam","external"],true,div_2);
            create_a("priceoverview",priceoverview+"?appid="+app_id+"&market_hash_name="+market_hash_name+"&currency="+gm_currency,["btn_darkred_white_innerfade","user_btn_steam"],true,div_2);
            let a_render=create_a("render?currency="+gm_currency+"&format=json","https://"+url[0].host+url[0].pathname+"/render?start=0&count=10&currency="+gm_currency+"&language=english&format=json",["btn_darkred_white_innerfade","user_btn_steam"],true,div_2);
            a_render.title="You have made too many requests. Please wait and try your request again later.";
            if(gm_steamcommunity_item_json)fn_gm_XMLHttpRequest(priceoverview+"?appid="+app_id+"&market_hash_name="+market_hash_name+"&currency="+gm_currency,fn_re_json_priceoverview);
            let anchor=document.querySelectorAll('div.market_listing_nav>a');
            for(let i=0; i<anchor.length; i++){
                if(anchor[i].href.search(new RegExp("category_753_Game", "i"))!=-1){
                    anchor[i].href+="#p1_name_asc";
                    break;
                }
            }
            for(let i=0; i<ary_currency_steam.length; i++){//btn_currency
                let btn_currency=create_btn(ary_currency_steam[i],["btnv6_blue_hoverfade","user_btn_steam"],true,div_3);
                btn_currency.addEventListener('click',() => {
                    GM_setValue('steam_currency', i+1);
                });
            }
        }
        if(url[0].pathname.search(/\/stats\/\d+\/achievements/i)==0){//achievements /stats/\d+/achievements
            let div_tab=document.querySelectorAll('div#mainContents>div#tabs')[0];
            if(div_tab!=undefined){
                let div_achievements=create_div(["tabOff","user_div_steam_info"],true,div_tab);
                create_a("steamdb achievements",url_steamdb_achievements,["steamdb","external"],true,div_achievements);
            }
        }
        let div_profile_small_header_text=document.querySelectorAll('div.profile_small_header_text')[0];//profile game badge
        if(div_profile_small_header_text!=undefined){
            create_span("🛍️","profile_small_header_arrow",true,div_profile_small_header_text);
            create_a("Community Market",url_category_753_Game,"anchor",true,div_profile_small_header_text);
        }
        if(url[0].pathname.search(/\/profiles\/\d+\/gamecards/i)==0||url[0].pathname.search(/\/id\/.+\/gamecards/i)==0){//profiles/\d+/gamecards //id/.+/gamecards
            let gamecard=document.querySelectorAll('img.gamecard');
            if(gamecard.length>0)document.querySelectorAll('div.badge_title')[0].innerText+=" ["+6000/gamecard.length+"]";
        }
        if(url[0].pathname.search(/\/profiles\/\d+\/inventory/i)==0||url[0].pathname.search(/\/id\/.+\/inventory/i)==0){//profiles/\d+/inventory //id/.+/inventory
            window.setInterval(( () => main_inventory() ), 3000);
        }
    }
    else if(url[0].host=="steamdb.info"){
        if(appid!=null){
            let app_links=document.querySelectorAll('nav.app-links')[0];
            let tab_communityitems=document.querySelectorAll('a#tab-communityitems')[0];
            if(app_links!=undefined){
                if(tab_communityitems!=undefined)create_a("Community Market",url_category_753_Game,"linkbar",true,app_links);
                create_a("curators",url_curatorsreviewing,"linkbar",true,app_links);
            }
        }
    }
    else if(url[0].host=="www.steamcardexchange.net"){
        let img_card=document.querySelectorAll('div.card>div>a>img');console.log(img_card);
        if(img_card.length>0)document.querySelectorAll('div.game-title>h1')[0].innerText+=" ["+6000/(img_card.length/2)+"]";
        let div_game_links=document.querySelectorAll('div.game-links')[0];
        if(div_game_links!=undefined){
            let button_blue=div_game_links.querySelectorAll('div.game-links>a.button-blue');
            for(let i=0; i<button_blue.length; i++){
                if(button_blue[i].innerText.search(new RegExp("STEAM MARKET", "i"))==0){
                    button_blue[i].href+="#p1_name_asc";
                    break;
                }
            }
            create_br(true,div_game_links);
            create_a("steamdb",url_steamdb_app,'button-blue',true,div_game_links);
        }
        let a_booster=document.querySelectorAll('div.booster>div>div>a')[0];
        if(a_booster!=undefined){
            let market_hash_name=a_booster.href.replace(new RegExp("https://steamcommunity.com/market/listings/753/", "i"), '');
            if(gm_steamcommunity_item_json)fn_gm_XMLHttpRequest(priceoverview+"?appid=753&market_hash_name="+market_hash_name+"&currency="+gm_currency,fn_re_json_priceoverview);
        }
    }
})();
/*
btn_green_white_innerfade
btn_blue_white_innerfade
btn_darkblue_white_innerfade
btn_darkred_white_innerfade
btn_grey_white_innerfade
btn_grey_grey
btn_grey_grey_outer_bevel
btn_grey_black
btnv6_blue_hoverfade
btnv6_lightblue_blue
btnv6_blue_blue_innerfade
btnv6_green_white_innerfade
btnv6_grey_black
btnv6_white_transparent
btn_teal
btn_royal_blue
btn_plum
btn_green_steamui
btn_grey_steamui
btn_blue_steamui
*/