Humble Bundle - Steam Links Adder

Adds steam links to Humble Bundle games (https://greasyfork.org/en/scripts/26273-steam-store-game-owned-checker COMPATIBLE!)

2017-06-07 기준 버전입니다. 최신 버전을 확인하세요.

// ==UserScript==
// @name         Humble Bundle - Steam Links Adder
// @icon         https://humblebundle-a.akamaihd.net/static/hashed/47e474eed38083df699b7dfd8d29d575e3398f1e.ico
// @namespace    Royalgamer06
// @version      1.1.0
// @description  Adds steam links to Humble Bundle games (https://greasyfork.org/en/scripts/26273-steam-store-game-owned-checker COMPATIBLE!)
// @author       Royalgamer06
// @include      *://www.humblebundle.com/*
// @grant        GM_xmlhttpRequest
// @run-at       document-idle
// @connect      api.steampowered.com
// @require      http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.js
// ==/UserScript==

// ==Configuration==
var selectors = ["em",
                 ".entity-title",
                 ".deal-title",
                 ".product-title > h2",
                 ".desktop:has(.hb-steam) .dd-image-box-caption",
                 ".humble-original-title",
                 ".game-name > h4"];
// ==/Configuration==

// ==Code==
this.$ = this.jQuery = jQuery.noConflict(true);
var applist = [];
var selector = selectors.join(":not(.steamified):not(a):not(:has(a)), ") + ":not(.steamified):not(a):not(:has(a))";
GM_xmlhttpRequest({
    method: "GET",
    url: "https://api.steampowered.com/ISteamApps/GetAppList/v2/",
    onload: function(response) {
        applist = JSON.parse(response.responseText).applist.apps;
        $(document).on("contentchanged", selector, function() {
            steamify(this);
        }).ready(function() {
            var domwatcher = setInterval(function() {
                $(selector).each(function() {
                    steamify(this);
                }, 100);
            });
        });
    }
});

function steamify(titleElem) {
    $(titleElem).addClass("steamified");
    setTimeout(function() {
        var title = $(titleElem).text().toLowerCase().replace(/\(early access\)|\(pre\-order\)|\:|\-|\–|\\|\/|\™|\®| |\'|\.|\?|\!/g, "").trim();
        var obj = applist.filter(function(v) { return v.name.toLowerCase().replace(/\:|\-|\–|\\|\/|\™|\®| |\'|\.|\?|\!/g, "").trim() == title; })[0];
        if (obj !== undefined) {
            var appID = obj.appid;
            $(titleElem).replaceWith("<a href='http://store.steampowered.com/app/" + appID + "/'>" + titleElem.outerHTML + "</a>");
        }
    }, 0);
}
// ==/Code==