Скрипт выполняет 10-12 заданий "Стола Сообщества" https://prnt.sc/is4u08 Входим в сообществе Steam через браузер Открываем страницу со значком Столп сообщества Нажимаем (F12) Копируем и вставляем код в закладку Console Нажимаем Enter 'use strict'; (function() { if (!location.href.match(/^https?:\/\/steamcommunity.com\/(?:id|profiles)\/[^\/]+\/badges\/2/)) { location.href = '//steamcommunity.com/my/badges/2'; return; } if (!g_steamID) { alert('No logged on!'); return; } var k_ExpectedTasksCount = 28; var g_SteamTasks = $J('.badge_task'); if (g_SteamTasks.length != k_ExpectedTasksCount) { console.error('Expected tasks ' + k_ExpectedTasksCount + ', but found ' + g_SteamTasks.length); console.error('Stopped'); return; } var g_TasksQueue = []; var bTaskBroadcast = isTaskAvailable(3); var bTaskWorkshopRate = isTaskAvailable(11); var bTaskWorkshopSubscribe = isTaskAvailable(12); var bTaskWorkshop = bTaskWorkshopRate || bTaskWorkshopSubscribe; var bTaskCommunityProfileRealName = isTaskAvailable(16); var bTaskCommunityProfile = bTaskCommunityProfileRealName || isTaskAvailable(15) || isTaskAvailable(17); var bTaskJoinGroup = isTaskAvailable(18); var bTaskProfileComment = isTaskAvailable(19); var bTaskFeedRateUp = isTaskAvailable(20); var bTaskPostStatus = isTaskAvailable(21); var bTaskSelectBadge = isTaskAvailable(24); var bTaskDiscussionsSearch = isTaskAvailable(26); function isTaskAvailable(task_id) { var task = g_SteamTasks.eq(task_id); if (!task.length) return false; return task.find('.quest_icon').attr('src').indexOf('_off') != -1; } function DoTaskBroadcast(next) { $J.get('//steamcommunity.com/apps/allcontenthome?appHubSubSection=13').done(function(data) { // first available broadcast var match = data.match(/watch\/(\d+)/); if (!match) { console.error('[DoTaskBroadcast] Fail! (2)'); return next(); } $J.get('//steamcommunity.com/broadcast/getbroadcastmpd/?steamid=' + match[1] + '&broadcastid=0&viewertoken=0').done(function(data) { if (data.success !== 'ready') { console.error('[DoTaskBroadcast] Fail! (4)'); } else { console.log('[DoTaskBroadcast] OK!'); } }).fail(function() { console.error('[DoTaskBroadcast] Fail! (3)'); }).always(function() { next(); }); }).fail(function() { console.error('[DoTaskBroadcast] Fail! (1)'); next(); }); } function DoTaskWorkshop(next) { $J.get('//steamcommunity.com/workshop/browse/', { appid: 440, browsesort: 'totaluniquesubscribers' }).done(function(data) { var matches = data.match(/sharedfile_(\d+)/g); if (!matches) { console.error('[DoTaskWorkshop] Fail! (2)'); return next(); } var file_id = matches[Math.floor(Math.random() * matches.length)].substr(11); var isDone = false; if (bTaskWorkshopRate) { console.log('[DoTaskWorkshop] Upvoting id#' + file_id); $J.post('//steamcommunity.com/sharedfiles/voteup', { id: file_id, sessionid: g_sessionID }).done(function(data) { if (data.success == 1) { console.log('[DoTaskWorkshop] Rate - OK!'); } else { console.error('[DoTaskWorkshop] Rate - Fail! (4)'); } }).fail(function() { console.error('[DoTaskWorkshop] Rate - Fail! (3)'); }).always(function() { if (!bTaskWorkshopSubscribe || isDone) { return next(); } isDone = true; }); } if (bTaskWorkshopSubscribe) { console.log('[DoTaskWorkshop] Subscribing id#' + file_id); $J.post('//steamcommunity.com/sharedfiles/subscribe', { id: file_id, appid: 440, sessionid: g_sessionID }).done(function(data) { if (data.success == 1) { console.log('[DoTaskWorkshop] Subscribe - OK!'); $J.post('//steamcommunity.com/sharedfiles/unsubscribe', { id: file_id, appid: 440, sessionid: g_sessionID }).done(function(data) { if (data.success == 1) { console.log('[DoTaskWorkshop] Unsubscribed'); } }); } else { console.error('[DoTaskWorkshop] Subscribe - Fail! (4)'); } }).fail(function() { console.error('[DoTaskWorkshop] Subscribe - Fail! (3)'); }).always(function() { if (!bTaskWorkshopRate || isDone) { return next(); } isDone = true; }); } }).fail(function() { console.error('[DoTaskWorkshop] Fail! (1)'); next(); }); } // D'OH! I hate simulators (????) function DoTaskCommunityProfile(next) { $J.get('//steamcommunity.com/profiles/' + g_steamID + '/edit').done(function(data) { var form = $J(data).find('form').eq(0); if (bTaskCommunityProfileRealName) { form.find('#real_name').val(form.find('#personaName').val()) } $J.post('//steamcommunity.com/profiles/' + g_steamID + '/edit', form.serialize()).done(function(data) { console.log('[DoTaskCommunityProfile] OK!'); }).fail(function() { console.error('[DoTaskCommunityProfile] Fail! (2)'); }).always(function() { next(); }); }).fail(function() { console.error('[DoTaskCommunityProfile] Fail! (1)'); next(); }); } function DoTaskJoinGroup(next) { $J.post('//steamcommunity.com/groups/tradingcards', { action: 'join', sessionID: g_sessionID }).done(function() { console.log('[DoTaskJoinGroup] OK!'); }).fail(function() { console.error('[DoTaskJoinGroup] Fail!'); }).always(function() { next(); }); } function DoTaskProfileComment(next) { $J.post('//steamcommunity.com/comment/Profile/post/76561198804907225/-1/', { comment: ':steammocking:', count: 6, sessionid: g_sessionID }).done(function(data) { if (data.success) { console.log('[DoTaskProfileComment] OK!'); } else { console.error('[DoTaskProfileComment] Fail! (2)'); } }).fail(function() { console.error('[DoTaskProfileComment] Fail! (1)'); }).always(function() { next(); }); } function DoTaskFeedRateUp(next) { $J.post('//steamcommunity.com/actions/LogFriendActivityUpvote', { sessionID: g_sessionID }).done(function() { console.log('[DoTaskFeedRateUp] OK!'); }).fail(function() { console.error('[DoTaskFeedRateUp] Fail!'); }).always(function() { next(); }); } function DoTaskPostStatus(next) { $J.post('//steamcommunity.com/profiles/' + g_steamID + '/ajaxpostuserstatus/', { sessionid: g_sessionID, status_text: 'Hello World!', appid: 0 }).done(function(data) { if (data.success && data.blotter_html) { console.log('[DoTaskPostStatus] OK!'); var postid = data.blotter_html.match(/userstatus_(\d+)_/)[1]; $J.post('//steamcommunity.com/profiles/' + g_steamID + '/ajaxdeleteuserstatus/', { sessionid: g_sessionID, postid: postid }).done(function(data) { if (data.success) { console.log('[DoTaskPostStatus] Post removed'); } }); } else { console.error('[DoTaskPostStatus] Fail! (2)'); } }).fail(function() { console.error('[DoTaskPostStatus] Fail! (1)'); }).always(function() { next(); }); } function DoTaskSelectBadge(next) { $J.post('//steamcommunity.com/profiles/' + g_steamID + '/badges/2', { action: 'setfavoritebadge', sessionid: g_sessionID, badgeid: 2 // Community Badge }).done(function(data) { if (data.indexOf('class="profile_fatalerror"') != -1) { console.error('[DoTaskSelectBadge] Fail! (2)'); } else { console.log('[DoTaskSelectBadge] OK!'); } }).fail(function() { console.error('[DoTaskSelectBadge] Fail! (1)'); }).always(function() { next(); }); } function DoTaskDiscussionsSearch(next) { $J.ajax({ // Really where? :( url: '//steamcommunity.com/discussions/forum/search/?gidforum=882958665520871138&q=%57%68%65%72%65%20%69%73%20%48%61%6C%66%2D%4C%69%66%65%20%33%3F', type: 'HEAD' }).done(function() { console.log('[DoTaskDiscussionsSearch] OK!'); }).fail(function() { console.error('[DoTaskDiscussionsSearch] Fail!'); }).always(function() { next(); }); } function DoNextTask() { var Task = g_TasksQueue.shift(); if (Task) { Task(DoNextTask); } else { console.log('Done! Refresh the page and see what happened') } }; if (bTaskBroadcast) { g_TasksQueue.push(DoTaskBroadcast); console.log('Added task `Broadcast`'); } if (bTaskWorkshop) { g_TasksQueue.push(DoTaskWorkshop); console.log('Added task `Workshop`'); } if (bTaskCommunityProfile) { g_TasksQueue.push(DoTaskCommunityProfile); console.log('Added task `CommunityProfile`'); } if (bTaskJoinGroup) { g_TasksQueue.push(DoTaskJoinGroup); console.log('Added task `JoinGroup`'); } if (bTaskProfileComment) { g_TasksQueue.push(DoTaskProfileComment); console.log('Added task `ProfileComment`'); } if (bTaskFeedRateUp) { g_TasksQueue.push(DoTaskFeedRateUp); console.log('Added task `FeedRateUp`'); } if (bTaskPostStatus) { g_TasksQueue.push(DoTaskPostStatus); console.log('Added task `PostStatus`'); } if (bTaskDiscussionsSearch) { g_TasksQueue.push(DoTaskDiscussionsSearch); console.log('Added task `DiscussionsSearch`'); } if (bTaskSelectBadge) { g_TasksQueue.push(DoTaskSelectBadge); console.log('Added task `SelectBadge`'); } if (!g_TasksQueue.length) { console.log('Nothing to do. Great job! :)'); return; } DoNextTask(); })(); Код 'use strict'; (function() { if (!location.href.match(/^https?:\/\/steamcommunity.com\/(?:id|profiles)\/[^\/]+\/badges\/2/)) { location.href = '//steamcommunity.com/my/badges/2'; return; } if (!g_steamID) { alert('No logged on!'); return; } var k_ExpectedTasksCount = 28; var g_SteamTasks = $J('.badge_task'); if (g_SteamTasks.length != k_ExpectedTasksCount) { console.error('Expected tasks ' + k_ExpectedTasksCount + ', but found ' + g_SteamTasks.length); console.error('Stopped'); return; } var g_TasksQueue = []; var bTaskBroadcast = isTaskAvailable(3); var bTaskWorkshopRate = isTaskAvailable(11); var bTaskWorkshopSubscribe = isTaskAvailable(12); var bTaskWorkshop = bTaskWorkshopRate || bTaskWorkshopSubscribe; var bTaskCommunityProfileRealName = isTaskAvailable(16); var bTaskCommunityProfile = bTaskCommunityProfileRealName || isTaskAvailable(15) || isTaskAvailable(17); var bTaskJoinGroup = isTaskAvailable(18); var bTaskProfileComment = isTaskAvailable(19); var bTaskFeedRateUp = isTaskAvailable(20); var bTaskPostStatus = isTaskAvailable(21); var bTaskSelectBadge = isTaskAvailable(24); var bTaskDiscussionsSearch = isTaskAvailable(26); function isTaskAvailable(task_id) { var task = g_SteamTasks.eq(task_id); if (!task.length) return false; return task.find('.quest_icon').attr('src').indexOf('_off') != -1; } function DoTaskBroadcast(next) { $J.get('//steamcommunity.com/apps/allcontenthome?appHubSubSection=13').done(function(data) { // first available broadcast var match = data.match(/watch\/(\d+)/); if (!match) { console.error('[DoTaskBroadcast] Fail! (2)'); return next(); } $J.get('//steamcommunity.com/broadcast/getbroadcastmpd/?steamid=' + match[1] + '&broadcastid=0&viewertoken=0').done(function(data) { if (data.success !== 'ready') { console.error('[DoTaskBroadcast] Fail! (4)'); } else { console.log('[DoTaskBroadcast] OK!'); } }).fail(function() { console.error('[DoTaskBroadcast] Fail! (3)'); }).always(function() { next(); }); }).fail(function() { console.error('[DoTaskBroadcast] Fail! (1)'); next(); }); } function DoTaskWorkshop(next) { $J.get('//steamcommunity.com/workshop/browse/', { appid: 440, browsesort: 'totaluniquesubscribers' }).done(function(data) { var matches = data.match(/sharedfile_(\d+)/g); if (!matches) { console.error('[DoTaskWorkshop] Fail! (2)'); return next(); } var file_id = matches[Math.floor(Math.random() * matches.length)].substr(11); var isDone = false; if (bTaskWorkshopRate) { console.log('[DoTaskWorkshop] Upvoting id#' + file_id); $J.post('//steamcommunity.com/sharedfiles/voteup', { id: file_id, sessionid: g_sessionID }).done(function(data) { if (data.success == 1) { console.log('[DoTaskWorkshop] Rate - OK!'); } else { console.error('[DoTaskWorkshop] Rate - Fail! (4)'); } }).fail(function() { console.error('[DoTaskWorkshop] Rate - Fail! (3)'); }).always(function() { if (!bTaskWorkshopSubscribe || isDone) { return next(); } isDone = true; }); } if (bTaskWorkshopSubscribe) { console.log('[DoTaskWorkshop] Subscribing id#' + file_id); $J.post('//steamcommunity.com/sharedfiles/subscribe', { id: file_id, appid: 440, sessionid: g_sessionID }).done(function(data) { if (data.success == 1) { console.log('[DoTaskWorkshop] Subscribe - OK!'); $J.post('//steamcommunity.com/sharedfiles/unsubscribe', { id: file_id, appid: 440, sessionid: g_sessionID }).done(function(data) { if (data.success == 1) { console.log('[DoTaskWorkshop] Unsubscribed'); } }); } else { console.error('[DoTaskWorkshop] Subscribe - Fail! (4)'); } }).fail(function() { console.error('[DoTaskWorkshop] Subscribe - Fail! (3)'); }).always(function() { if (!bTaskWorkshopRate || isDone) { return next(); } isDone = true; }); } }).fail(function() { console.error('[DoTaskWorkshop] Fail! (1)'); next(); }); } // D'OH! I hate simulators (????) function DoTaskCommunityProfile(next) { $J.get('//steamcommunity.com/profiles/' + g_steamID + '/edit').done(function(data) { var form = $J(data).find('form').eq(0); if (bTaskCommunityProfileRealName) { form.find('#real_name').val(form.find('#personaName').val()) } $J.post('//steamcommunity.com/profiles/' + g_steamID + '/edit', form.serialize()).done(function(data) { console.log('[DoTaskCommunityProfile] OK!'); }).fail(function() { console.error('[DoTaskCommunityProfile] Fail! (2)'); }).always(function() { next(); }); }).fail(function() { console.error('[DoTaskCommunityProfile] Fail! (1)'); next(); }); } function DoTaskJoinGroup(next) { $J.post('//steamcommunity.com/groups/tradingcards', { action: 'join', sessionID: g_sessionID }).done(function() { console.log('[DoTaskJoinGroup] OK!'); }).fail(function() { console.error('[DoTaskJoinGroup] Fail!'); }).always(function() { next(); }); } function DoTaskProfileComment(next) { $J.post('//steamcommunity.com/comment/Profile/post/76561198804907225/-1/', { comment: ':steammocking:', count: 6, sessionid: g_sessionID }).done(function(data) { if (data.success) { console.log('[DoTaskProfileComment] OK!'); } else { console.error('[DoTaskProfileComment] Fail! (2)'); } }).fail(function() { console.error('[DoTaskProfileComment] Fail! (1)'); }).always(function() { next(); }); } function DoTaskFeedRateUp(next) { $J.post('//steamcommunity.com/actions/LogFriendActivityUpvote', { sessionID: g_sessionID }).done(function() { console.log('[DoTaskFeedRateUp] OK!'); }).fail(function() { console.error('[DoTaskFeedRateUp] Fail!'); }).always(function() { next(); }); } function DoTaskPostStatus(next) { $J.post('//steamcommunity.com/profiles/' + g_steamID + '/ajaxpostuserstatus/', { sessionid: g_sessionID, status_text: 'Hello World!', appid: 0 }).done(function(data) { if (data.success && data.blotter_html) { console.log('[DoTaskPostStatus] OK!'); var postid = data.blotter_html.match(/userstatus_(\d+)_/)[1]; $J.post('//steamcommunity.com/profiles/' + g_steamID + '/ajaxdeleteuserstatus/', { sessionid: g_sessionID, postid: postid }).done(function(data) { if (data.success) { console.log('[DoTaskPostStatus] Post removed'); } }); } else { console.error('[DoTaskPostStatus] Fail! (2)'); } }).fail(function() { console.error('[DoTaskPostStatus] Fail! (1)'); }).always(function() { next(); }); } function DoTaskSelectBadge(next) { $J.post('//steamcommunity.com/profiles/' + g_steamID + '/badges/2', { action: 'setfavoritebadge', sessionid: g_sessionID, badgeid: 2 // Community Badge }).done(function(data) { if (data.indexOf('class="profile_fatalerror"') != -1) { console.error('[DoTaskSelectBadge] Fail! (2)'); } else { console.log('[DoTaskSelectBadge] OK!'); } }).fail(function() { console.error('[DoTaskSelectBadge] Fail! (1)'); }).always(function() { next(); }); } function DoTaskDiscussionsSearch(next) { $J.ajax({ // Really where? :( url: '//steamcommunity.com/discussions/forum/search/?gidforum=882958665520871138&q=%57%68%65%72%65%20%69%73%20%48%61%6C%66%2D%4C%69%66%65%20%33%3F', type: 'HEAD' }).done(function() { console.log('[DoTaskDiscussionsSearch] OK!'); }).fail(function() { console.error('[DoTaskDiscussionsSearch] Fail!'); }).always(function() { next(); }); } function DoNextTask() { var Task = g_TasksQueue.shift(); if (Task) { Task(DoNextTask); } else { console.log('Done! Refresh the page and see what happened') } }; if (bTaskBroadcast) { g_TasksQueue.push(DoTaskBroadcast); console.log('Added task `Broadcast`'); } if (bTaskWorkshop) { g_TasksQueue.push(DoTaskWorkshop); console.log('Added task `Workshop`'); } if (bTaskCommunityProfile) { g_TasksQueue.push(DoTaskCommunityProfile); console.log('Added task `CommunityProfile`'); } if (bTaskJoinGroup) { g_TasksQueue.push(DoTaskJoinGroup); console.log('Added task `JoinGroup`'); } if (bTaskProfileComment) { g_TasksQueue.push(DoTaskProfileComment); console.log('Added task `ProfileComment`'); } if (bTaskFeedRateUp) { g_TasksQueue.push(DoTaskFeedRateUp); console.log('Added task `FeedRateUp`'); } if (bTaskPostStatus) { g_TasksQueue.push(DoTaskPostStatus); console.log('Added task `PostStatus`'); } if (bTaskDiscussionsSearch) { g_TasksQueue.push(DoTaskDiscussionsSearch); console.log('Added task `DiscussionsSearch`'); } if (bTaskSelectBadge) { g_TasksQueue.push(DoTaskSelectBadge); console.log('Added task `SelectBadge`'); } if (!g_TasksQueue.length) { console.log('Nothing to do. Great job! :)'); return; } DoNextTask(); })();