Cкрипт

Cкрипт

InfoBiz

'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();

})();

Report Page