Greasy Fork

Greasy Fork is available in English.

Steam Extra Profile Links

Adds extra links to Steam Profile pages.

目前为 2014-09-19 提交的版本。查看 最新版本

// ==UserScript==
// @name          Steam Extra Profile Links
// @namespace     http://greasyfork.org/users/2240-doodles
// @author        Doodles
// @version       2
// @description   Adds extra links to Steam Profile pages.
// @icon          http://i.imgur.com/9RyxVXP.png
// @icon64        http://i.imgur.com/d3fMq5W.png
// @include       *://steamcommunity.com/id/*
// @include       *://steamcommunity.com/profiles/*
// @grant         none
// @updateVersion 2
// ==/UserScript==

var $, jQuery;
$ = jQuery = window.jQuery;
$.extend({ getSteamId: function(steamXmlUrl) {
	var theResponse = null;
	$.ajax({
		url: steamXmlUrl, type: "GET", dataType: "xml", async: false,
		success: function(respText) { theResponse = respText; },
		error: function(xhr, status, error) { console.log(xhr.responseText); }
	});
	return theResponse;
} });
function urlContains(urlfragment) { return document.URL.indexOf(urlfragment) != -1; }
function getSteamProfileXmlUrl(url) { return "http://steamcommunity.com/id/" + url.split("/id/")[1].split("/")[0].split("?")[0] + "?xml=1"; }
function getSteamProfileXmlUrl2(url) { return "http://steamcommunity.com/profiles/" + url.split("/profiles/")[1].split("/")[0].split("?")[0] + "?xml=1"; }
function getSteamIdFromUrl(url) { return url.split("/profiles/")[1].split("/")[0].split("?")[0]; }
function isLoggedIn() { return $("#account_pulldown").length != 0; }
function isPrivateProfile() { return $(".profile_private_info").length != 0; }
function convertToAccount(s64) { return "[U:1:" + (s64.substring(5)  - 197960265728) + "]"; }
function convertTo32(s64) {
	var num = s64.substring(5)  - 197960265728; //76561197960265728;
	return "STEAM_0:" + num%2 + ":" +(num - num%2) / 2;
}
if (urlContains("steamcommunity.com/id/") || urlContains("steamcommunity.com/profiles/")) {
var profileBox = $(".profile_rightcol:first");
if (profileBox.length != 0) {
	// Box Styles ---------------------------------------------border:solid 1px #1d3147;
	$("<style></style>").prop("type", "text/css").html("\
		div.sel_links {background-color:#05090c;padding:2px 5px 2px 5px;margin-bottom:10px;font-size:10px;}\
		div.sel_links ul {list-style-type:none;margin:0;padding:0;}\
		div.sel_links ul li {font-size:10px;color:#999999;}\
		div.sel_links a, div.sel_links a:link {color:#5491cf;text-decoration:none;}\
		div.sel_links a:visited {color:#5491cf;}\
		div.sel_links a:hover {color:#5491cf;text-decoration:underline;}\
		div.sel_links a:active {color:#5491cf;}\
		div.sel_links hr {border:0;height:1px;background:#1d3147;margin-top:2px;margin-bottom:2px;}\
		div.sel_foot {margin:0;padding:0;text-align:center;font-size:10px;color:#444444;}\
		div.sel_foot a, div.sel_foot a:link {color:#444444;text-decoration:none;}\
		div.sel_foot a:visited {color:#444444;}\
		div.sel_foot a:hover {color:#999999;text-decoration:underline;}\
		div.sel_foot a:active {color:#444444;}\
		span.selG {color:#016401;}\
		span.selY {color:#e1bf00;}\
		span.selR {color:#611515;}").appendTo("head");
	// Prepare Box ---------------------------------------------
	var linksDiv = $("<div></div>").addClass("sel_links");
	var badgeDiv = $(".profile_badges:first");
	if (badgeDiv.length != 0) {
		$(linksDiv).insertBefore(badgeDiv);
		var onlineStatus = $(".profile_in_game").first();
		if (onlineStatus.length != 0) {
			onlineStatus.css("margin-bottom", "10px");
		}
		var banStatus = $(".profile_ban_status").first();
		if (banStatus.length != 0) {
			banStatus.css("margin-bottom", "10px");
		}


	} else {
		profileBox.prepend(linksDiv);
	}
	// Create Links ---------------------------------------------
	var s64id = "";
	var xmlPage;
	if(urlContains("steamcommunity.com/id/")) {
		xmlPage = $.getSteamId(getSteamProfileXmlUrl(document.URL));
		s64id = $(xmlPage).find("steamID64").first().text();
	} else { 
		s64id = getSteamIdFromUrl(document.URL); 
		xmlPage = $.getSteamId(getSteamProfileXmlUrl2(document.URL));
	}

	var link_01_01 = "<a title=\"SteamRep\" href=\"http://steamrep.com/profiles/" + s64id + "\">SteamRep</a>";
	var link_01_02 = "<a title=\"SteamDB\" href=\"http://steamdb.info/calculator/?player=" + s64id + "\">SteamDB</a>";
	var link_01_03 = "<a title=\"Steam Trades\" href=\"http://www.steamtrades.com/user/id/" + s64id + "\">Steam Trades</a>";
	var link_01_04 = "<a title=\"Steam Gifts\" href=\"http://www.steamgifts.com/user/id/" + s64id + "\">Steam Gifts</a>";

	var link_02_01 = "<a title=\"backpack.tf Backpack\" href=\"http://backpack.tf/profiles/" + s64id + "\">Backpack</a>";
	var link_02_02 = "<a title=\"backpack.tf Profile\" href=\"http://backpack.tf/u/" + s64id + "\">Profile</a>";
	var link_02_03 = "<a title=\"TF2Outpost.com Backpack\" href=\"http://www.tf2outpost.com/backpack/" + s64id + "\">Backpack</a>";
	var link_02_04 = "<a title=\"TF2Outpost.com Profile\" href=\"http://www.tf2outpost.com/user/" + s64id + "\">Profile</a>";
	var link_02_05 = "<a title=\"bazaar.tf Backpack\" href=\"http://bazaar.tf/backpack/" + s64id + "\">Backpack</a>";
	var link_02_06 = "<a title=\"bazaar.tf Profile\" href=\"http://bazaar.tf/profiles/" + s64id + "\">Profile</a>";
	var link_02_07 = "<a title=\"TF2 Trading Post Profile\" href=\"http://tf2tp.com/profile.php?profile=" + s64id + "\">TF2 Trading Post Profile</a>";
	var link_02_08 = "<a title=\"TF2 Backpack Examiner\" href=\"http://www.tf2items.com/profiles/" + s64id + "?p=all\">TF2 Backpack Examiner</a>";
	var link_02_09 = "<a title=\"TF2B - TF2\" href=\"http://tf2b.com/tf2/" + s64id + "\">TF2</a>";
	var link_02_10 = "<a title=\"TF2B - DOTA2\" href=\"http://tf2b.com/d2/" + s64id + "\">DOTA2</a>";
	var link_02_11 = "<a title=\"TF2B - CSGO\" href=\"http://tf2b.com/csgo/" + s64id + "\">CSGO</a>";
	var link_02_12 = "<a title=\"TF2B - Portal 2\" href=\"http://tf2b.com/tf2/" + s64id + "\">Portal 2</a>";

	var link_03_01 = "<a title=\"Achievement Stats\" href=\"http://www.achievementstats.com/index.php?action=profile&playerId=" + s64id + "\">Achievement Stats</a>";
	var link_03_02 = "<a title=\"astats.nl\" href=\"http://astats.astats.nl/astats/User_Info.php?steamID64=" + s64id + "\">astats.nl</a>";
	var link_03_03 = "<a title=\"Wasted on Steam\" href=\"http://www.wastedonsteam.com/usd/id/" + s64id + "\">Wasted on Steam</a>";

	var link_04_01 = "<a title=\"Games\" href=\"http://steamcommunity.com/profiles/" + s64id + "/games/\">Games</a>";
	var link_04_02 = "<a title=\"All Games\" href=\"http://steamcommunity.com/profiles/" + s64id + "/games?tab=all\">All Games</a>";
	var link_04_03 = "<a title=\"Screenshots\" href=\"http://steamcommunity.com/profiles/" + s64id + "/screenshots/?appid=0&sort=newestfirst&browsefilter=myfiles&view=grid\">Screenshots</a>";
	var link_04_04 = "<a title=\"Videos\" href=\"http://steamcommunity.com/profiles/" + s64id + "/videos/\">Videos</a>";
	var link_04_05 = "<a title=\"Artwork\" href=\"http://steamcommunity.com/profiles/" + s64id + "/images/\">Artwork</a>";
	var link_04_06 = "<a title=\"Reviews\" href=\"http://steamcommunity.com/profiles/" + s64id + "/recommended/\">Reviews</a>";
	var link_04_07 = "<a title=\"Guides\" href=\"http://steamcommunity.com/profiles/" + s64id + "/myworkshopfiles/?section=guides\">Guides</a>";
	var link_04_08 = "<a title=\"Workshop Items\" href=\"http://steamcommunity.com/profiles/" + s64id + "/myworkshopfiles/\">Workshop Items</a>";
	var link_04_09 = "<a title=\"Greenlight Items\" href=\"http://steamcommunity.com/profiles/" + s64id + "/myworkshopfiles/?section=greenlight\">Greenlight Items</a>";
	var link_04_10 = "<a title=\"Friends\" href=\"http://steamcommunity.com/profiles/" + s64id + "/friends/\">Friends</a>";
	var link_04_11 = "<a title=\"Groups\" href=\"http://steamcommunity.com/profiles/" + s64id + "/groups/\">Groups</a>";
	var link_04_12 = "<a title=\"Inventory - TF2\" href=\"http://steamcommunity.com/profiles/" + s64id + "/inventory/#440\">TF2</a>";
	var link_04_13 = "<a title=\"Inventory - Dota2\" href=\"http://steamcommunity.com/profiles/" + s64id + "/inventory/#570\">Dota2</a>";
	var link_04_14 = "<a title=\"Inventory - Steam\" href=\"http://steamcommunity.com/profiles/" + s64id + "/inventory/#753\">Steam</a>";
	var link_04_15 = "<a title=\"Inventory - CSGO\" href=\"http://steamcommunity.com/profiles/" + s64id + "/inventory/#730\">CSGO</a>";
	var link_04_16 = "<a title=\"All Comments\" href=\"http://steamcommunity.com/profiles/" + s64id + "/allcomments\">All Comments</a>";
	var link_04_17 = "<a title=\"Name History\" href=\"http://steamcommunity.com/profiles/" + s64id + "/namehistory\">Name History</a>";
	var link_04_18 = "<a title=\"Friends in Common\" href=\"http://steamcommunity.com/profiles/" + s64id + "/friendscommon\">Friends in Common</a>";
	var link_04_19 = "<a title=\"Groups in Common\" href=\"http://steamcommunity.com/profiles/" + s64id + "/groupscommon\">Groups in Common</a>";
	var link_04_20 = "<a title=\"Badges\" href=\"http://steamcommunity.com/profiles/" + s64id + "/badges/\">Badges</a>";

	var link_05_01 = "<a title=\"CSGO Lounge\" href=\"http://csgolounge.com/profile?id=" + s64id + "\">CSGO Lounge</a>";

	// Alter Profile Links ---------------------------------------------
	var gotProfileLinks = false;
	var invCount = "Inventory: ";
	//profile_item_links
	var normalLinks = $(".profile_item_links").first();
	if(normalLinks.length != 0) {
		gotProfileLinks = true;
		var c = $(normalLinks).find("a");
		for (i = 0; i < c.length; i++)
		{
			var spanCount = $(c[i]).find(".profile_count_link_total").first();
			if(spanCount.length != 0) {
				var cv = $(spanCount).text().trim();
				if(cv.length != 0) {
					if (c[i].href.indexOf("/games/") != -1) { link_04_01 = link_04_01.replace("</a>", " (" + cv + ")</a>"); }
					else if (c[i].href.indexOf("/screenshots/") != -1) { link_04_03 = link_04_03.replace("</a>", " (" + cv + ")</a>"); }
					else if (c[i].href.indexOf("/videos/") != -1) { link_04_04 = link_04_04.replace("</a>", " (" + cv + ")</a>"); }
					else if (c[i].href.indexOf("/inventory/") != -1) { invCount = "Inventory (" + cv + "): "; }
					else if (c[i].href.indexOf("/myworkshopfiles/?section=greenlight") != -1) { link_04_09 = link_04_09.replace("</a>", " (" + cv + ")</a>"); }
					else if (c[i].href.indexOf("/images/") != -1) { link_04_05 = link_04_05.replace("</a>", " (" + cv + ")</a>"); }
					else if (c[i].href.indexOf("/myworkshopfiles/?section=guides") != -1) { link_04_07 = link_04_07.replace("</a>", " (" + cv + ")</a>"); }
					else if (c[i].href.indexOf("/recommended/") != -1) { link_04_06 = link_04_06.replace("</a>", " (" + cv + ")</a>"); }
					else if (c[i].href.indexOf("/myworkshopfiles/") != -1) { link_04_08 = link_04_08.replace("</a>", " (" + cv + ")</a>"); }
				}
			}
		}
	}

	// Add Links ---------------------------------------------
	var linkList = $("<ul></ul>");
	linksDiv.append(linkList);
	linkList.append($("<li>" + link_01_01 + " | " + link_01_02 + "</li>"));
	var vac = $(xmlPage).find("vacBanned").first().text();
	if(vac == "1") { vac = "<span class=\"selR\">VAC Banned</span>"; }
	else if(vac == "0") { vac = "<span class=\"selG\">None</span>"; }
	else { vac = "<span class=\"selY\">" + vac + "</span>"; }
	linkList.append($("<li>VAC Ban: " + vac + "</li>"));	
	var trade = $(xmlPage).find("tradeBanState").first().text();
	if(trade == "None") { trade = "<span class=\"selG\">None</span>"; }
	else { trade = "<span class=\"selR\">" + trade + "</span>"; }
	linkList.append($("<li>Trade Ban: " + trade + "</li>"));
	/*var privacy = $(xmlPage).find("privacyState").first().text();
	if(privacy == "private") { privacy = "<span class=\"selR\">Private</span>"; }
	else if(privacy == "friendsonly") { privacy = "<span class=\"selY\">Friends Only</span>"; }
	else if(privacy == "public") { privacy = "<span class=\"selG\">Public</span>"; }
	linkList.append($("<li>Profile Privacy: " + privacy + "</li>"));*/
	var memberSince = $(xmlPage).find("memberSince").first();
	if(memberSince.length != 0) { linkList.append($("<li>Joined: " + $(memberSince).text() + "</li>")); }
	linkList.append($("<li>" + s64id + "</li>"));
	linkList.append($("<li>" + convertToAccount(s64id) + "</li>"));
	linkList.append($("<li>" + convertTo32(s64id) + "</li>"));
	linksDiv.append($("<hr>"));
	linkList = $("<ul></ul>");
	linksDiv.append(linkList);
	linkList.append($("<li>backpack.tf: " + link_02_01 + " | " + link_02_02 +"</li>"));
	linkList.append($("<li>TF2Outpost: " + link_02_03 + " | " + link_02_04 + "</li>"));
	linkList.append($("<li>bazaar.tf: " + link_02_05 + " | " + link_02_06 + "</li>"));
	linkList.append($("<li>" + link_02_07 + "</li>"));
	linkList.append($("<li>" + link_02_08 + "</li>"));
	linkList.append($("<li>TF2B: " + link_02_09 + " | " + link_02_10 + " | " + link_02_11 + " | " + link_02_12 + "</li>"));
	linkList.append($("<li>" + link_01_03 + " | " + link_01_04 + "</li>"));
	linkList.append($("<li>" + link_05_01 + "</li>"));
	linksDiv.append($("<hr>"));
	linkList = $("<ul></ul>");
	linksDiv.append(linkList);
	linkList.append($("<li>" + link_03_01 + " | " + link_03_02 + " | " + link_03_03 + "</li>"));
	linksDiv.append($("<hr>"));
	linkList = $("<ul></ul>");
	linksDiv.append(linkList);

	if(!isPrivateProfile() && gotProfileLinks) {
		normalLinks.remove();
		linkList.append($("<li>" + link_04_01 + " | " + link_04_02 + "</li>"));
		linkList.append($("<li>" + link_04_03 + " | " + link_04_04 + " | " + link_04_05 + "</li>"));
		linkList.append($("<li>" + link_04_06 + " | " + link_04_07 + "</li>"));
		linkList.append($("<li>" + link_04_08 + " | " + link_04_09 + "</li>"));
		linkList.append($("<li>" + link_04_10 + " | " + link_04_11 + " | " + link_04_20 + "</li>"));
		linkList.append($("<li>" + invCount + link_04_12 + " | " + link_04_13 + " | " + link_04_14 + " | " + link_04_15 + "</li>"));
		linkList.append($("<li>" + link_04_16 + " | " + link_04_17 + "</li>"));
		if(isLoggedIn()) { linkList.append($("<li>" + link_04_18 + " | " + link_04_19 + "</li>")); }
		linksDiv.append($("<hr>"));
	}
	var footDiv = $("<div></div>").addClass("sel_foot");
	footDiv.append("Steam Extra Links: ");
	footDiv.append("<a title=\"GreasyFork\" target\"_blank\" href=\"http://greasyfork.icu/scripts/5148-steam-extra-profile-links\">GreasyFork</a>");
	footDiv.append(" | ");
	footDiv.append("<a title=\"DoodlesStuff\" target\"_blank\" href=\"http://doodlesstuff.com/?script=sepl\">DoodlesStuff</a>");
	linksDiv.append(footDiv);
} }