diff --git a/ManncoStoreGiveawayAutojoiner.user.js b/ManncoStoreGiveawayAutojoiner.user.js index 20b79ee..f783a89 100644 --- a/ManncoStoreGiveawayAutojoiner.user.js +++ b/ManncoStoreGiveawayAutojoiner.user.js @@ -1,10 +1,10 @@ // ==UserScript== // @name Mann Co. Store Giveaway Autojoiner // @namespace http://tampermonkey.net/ -// @version 2026-08-21 +// @version 2026-08-22 // @description Tries to join giveaways on page load // @author Abhorrent_Anger -// @include /^https?:\/\/mannco\.store\/giveaways.?$/ +// @include /^https?:\/\/mannco\.store\/giveaways.*?/ // @icon https://www.google.com/s2/favicons?sz=64&domain=mannco.store // @grant GM_xmlhttpRequest // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js @@ -15,22 +15,34 @@ setTimeout(function () { location.reload(); }, 90 * 60 * 1000); const OPEN_GIVEAWAY_SELECTOR = '.giveaways-list-item:not(.giveaways-list-item--joined)'; +const NUXT_DATA_SELETOR = '#__NUXT_DATA__'; + +var bearerToken = ''; +var csrfToken = ''; waitForKeyElements('.giveaways__content', () => { if ($(OPEN_GIVEAWAY_SELECTOR).len == 0) { return true; } - updateTokensandJoin(); - + if (updateTokens() && bearerToken && csrfToken) { + joinGiveaways(bearerToken, csrfToken); + } else { + console.log('Couldn\'t fetch tokens for joining the giveaways!'); + } console.log('Done with giveaway join attempts'); }); -function updateTokensandJoin() { - var bearerToken = getTokenFromCookie('auth'); - var csrfToken = getTokenFromCookie('csrf'); +function updateTokens() { + bearerToken = getTokenFromCookie('auth'); + if (bearerToken) { + console.log('Fetched the Bearer token from cookies: ', bearerToken); + } else { + console.log('Couldn\'t fetch the Bearer token from cookies: ', bearerToken); + return false; + } + csrfToken = getTokenFromCookie('csrf'); if (csrfToken) { console.log('Fetched the CSRF token from cookies: ', csrfToken) - joinGiveaways(bearerToken, csrfToken); return true; } let xCSRF = new GM_xmlhttpRequest({ @@ -42,20 +54,25 @@ function updateTokensandJoin() { if (response.status == 200) { let array = JSON.parse(response.response); csrfToken = array['content']['csrf_token']; - console.log('Successfully updated the CSRF token: ', csrfToken) - joinGiveaways(bearerToken, csrfToken); + console.log('Successfully updated the CSRF token from API: ', csrfToken) + return true; } else { console.log('Couldn\'t get a CSRF token!') } } } }); + return false; } function joinGiveaways(bearerToken, csrfToken) { $(OPEN_GIVEAWAY_SELECTOR).each(function () { let giveawayURL = $(this).attr('href'); let giveaway = /[^/]*$/.exec(giveawayURL)[0]; + if (!giveaway || giveaway == 'undefined') { + console.log('Couldn\'t detect the giveaway ID!', $(this), giveawayURL, giveaway); + return; + } let giveawayJoinURL = 'https://api.mannco.store/giveaways/join/' + giveaway; let xJoin = new GM_xmlhttpRequest({ method: 'POST', @@ -84,9 +101,12 @@ function getTokenFromCookie(tokenName) { let cookieArray = getCookie(tokenName); let decodedTokenArray = decodeURIComponent(cookieArray); - if (typeof decodedTokenArray !== 'string' || !decodedTokenArray) { + if (typeof decodedTokenArray !== 'string' || !decodedTokenArray || decodedTokenArray == undefined) { return false; } let array = JSON.parse(decodedTokenArray, true); - return array['token']; + if (array['expiresAt'] === undefined || array['expiresAt'] > Date.now()) { + return array['token']; + } + return false; } \ No newline at end of file