diff --git a/index.html b/index.html index dff5e64..58ecd48 100644 --- a/index.html +++ b/index.html @@ -15,6 +15,7 @@ + \ No newline at end of file diff --git a/script.js b/script.js index f19ac14..cfc67c8 100644 --- a/script.js +++ b/script.js @@ -1,31 +1,50 @@ -var checkable_accounts = { '76561198311319887': 'Weapon Crusher' }; +var checkable_accounts = { + '76561198311319887': 'Weapon Crusher', '76561199039790818': 'Megumin [⇄ 24/7]', '76561199140988104': 'Bela🔥⇄', + '76561198104201017': 'Daniela⚡⇄', '76561199125108615': 'Squid Girl Bot', '76561199550718094': '¹⚡️ refbot.tf', + '76561199202848205': 'The Agency', '76561199034865605': '[⇄] Amazon Prime ⚡24/7⚡' +}; +var ignorable_accounts = ['76561198042562877', '76561199193118161', '76561199090583973']; +var ignored_accounts = []; decaled_objects = { 'Conscientious Objector': '3.66', 'Clan Pride': '2.11', 'Flair!': '4.22', 'Photo Badge': '2.44' } -backpack_page_limit = 3; +backpack_page_limit = 10; function fetchAccounts() { - var deferred = new $.Deferred(); for (const [item, price] of Object.entries(decaled_objects)) { handleItem(item, price); } - deferred.resolve(checkable_accounts); - return deferred.promise() } function handleItem(item, price) { + var stop = false; for (let i = 1; i <= backpack_page_limit; i++) { + var url = 'https://backpack.tf/classifieds'; + var data = 'page=' + i + '&item=' + encodeURIComponent(item) + '&quality=6&tradable=1&craftable=1&australium=-1&killstreak_tier=0&numeric=price&comparison=lt&value=' + price + '&low=' + price; $.ajax({ dataType: 'html', - url: 'https://backpack.tf/classifieds', - data: 'page=' + i + '&item=' + encodeURIComponent(item) + '&quality=6&tradable=1&craftable=1&australium=-1&killstreak_tier=0&numeric=price&comparison=lt&value=' + price + '&low=' + price, - async: false, + url: url, + data: data, tryCount: 0, - retryLimit: 3, + retryLimit: 20, success: function (msg) { if ($('.col-md-6:first .alert', msg).length > 0) { + stop = true; return false; } $('.col-md-6:first .user-link', msg).each(function () { - checkable_accounts[$(this).attr('data-id')] = $(this).attr('data-name'); + var steam_id = $(this).attr('data-id'); + var steam_name = $(this).attr('data-name'); + if (ignorable_accounts.includes(steam_id)) { + if (!ignored_accounts.includes(steam_id)) { + var ignore_accounts = $('#ignore-accounts'); + ignore_accounts.append('' + steam_name + '; '); + ignore_accounts.fadeIn(); + ignored_accounts.push(steam_id); + } + + } else if (!(steam_id in checkable_accounts)) { + handleAccount(steam_id, steam_name); + checkable_accounts[steam_id] = steam_name; + } }); }, error: function (response, status, error) { @@ -34,55 +53,55 @@ function handleItem(item, price) { if (this.tryCount <= this.retryLimit) { setTimeout(() => { $.ajax(this); - }, 3000); + }, 3000 + i * 300 + this.retryCount * 70 + Math.floor(Math.random() * 1000)); return; } } } }); + if (stop) { + break; + } } } function handleAccounts() { - for (const [steamid64, name] of Object.entries(checkable_accounts)) { - handleAccount(steamid64, name); + for (const [steam_id, steam_name] of Object.entries(checkable_accounts)) { + handleAccount(steam_id, steam_name); } } -function handleAccount(steamid64, name) { - var url = "https://backpack.tf/_inventory/" + steamid64; +function handleAccount(steam_id, steam_name) { + var url = "https://backpack.tf/_inventory/" + steam_id; $.ajax({ dataType: 'json', url: url, - async: false, tryCount: 0, - retryLimit: 3, - success: function (msg) { handleHTML(steamid64, name, msg['html']); }, + retryLimit: 30, + success: function (msg) { handleHTML(steam_id, steam_name, msg['html']); }, error: function (response, status, error) { - if (response.status == 429) { - this.tryCount++; - if (this.tryCount <= this.retryLimit) { - setTimeout(() => { - $.ajax(this); - }, 3000); - return; - } + this.tryCount++; + if (this.tryCount <= this.retryLimit) { + setTimeout(() => { + $.ajax(this); + }, 3000 + this.tryCount * 40 + Math.floor(Math.random() * 1000)); + return; } } }); } -function handleHTML(steamid64, name, html_string) { +function handleHTML(steam_id, steam_name, html_string) { html = $.parseHTML(html_string); var decaled_items = $('div.decal', html); if (decaled_items.length == 0) { var empty_accounts = $('#empty-accounts'); - empty_accounts.append('' + name + '; '); + empty_accounts.append('' + steam_name + '; '); empty_accounts.fadeIn(); return false; } var inventory = $('
'); - inventory.append('

' + name + '

'); + inventory.append('

' + steam_name + '

'); decaled_items.each(function () { var url = "https://next.backpack.tf/item/" + $(this).parent().attr('data-id'); var a = $(''); @@ -111,7 +130,6 @@ function handleHTML(steamid64, name, html_string) { } $(document).ready(function () { - $.when(fetchAccounts()).done(function () { - handleAccounts(); - }); + handleAccounts(); + fetchAccounts(); }); \ No newline at end of file diff --git a/style.css b/style.css index f3c8bee..3f20453 100644 --- a/style.css +++ b/style.css @@ -24,7 +24,7 @@ h3 { h4 { color: #555; text-align: center; - padding: 5em; + padding: 0.5em 5em; } li {