// ==UserScript==
// @name Steam社区自动点赞脚本[测试版]
// @namespace com.wt629.steam.voteup.auto.batch
// @description Steam社区自动点赞脚本,在steam动态页面上添加自动点赞.
// @include http*://steamcommunity.com/id/*/home/
// @include http*://steamcommunity.com/profiles/*/home/
// @version 2.1
// @require https://code.jquery.com/jquery-2.2.4.min.js
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
var wt629_com_js = {
config: {
isEnable: true,
isShow: true,
isTimedRefresh: false,
refreshTimeout : 60,
// 用户状态
thumbUpUserStatus: true,
// 收藏和发布艺术作品
thumbUpWorkshopItemPublished: true,
// 购买游戏
thumbUpGamePurchase: true,
// 截图
thumbUpScreenshot : true,
// 评测
thumbUpRecommendation: true,
// 评测为不推荐的点欢乐
thumbHappyByRecommendation: true,
},
// 添加到页面的HTML
controlPanelHtml: "",
log: function(content,isAppend){
if (isAppend){
$('#wt629_com_controlPanel_msg').html($('#wt629_com_controlPanel_msg').html() + '
' + content);
}else{
$('#wt629_com_controlPanel_msg').html(content);
}
},
setDefaultConfigData: function(){
var config = {
isEnable: true,
isShow: true,
isTimedRefresh: false,
refreshTimeout : 60,
};
localStorage.setItem('wt629_com_auto_voteup_config',JSON.stringify(config));
},
saveConfig: function(){
localStorage.setItem('wt629_com_auto_voteup_config',JSON.stringify(wt629_com_js.config));
},
//检查配置数据是否存在,或是否配置。如果没有配置,设置缺省数据
checkIsConfig: function(){
if (null == wt629_com_js.config || undefined == wt629_com_js.config ){
wt629_com_js.log('初始化配置信息 ... ', false);
wt629_com_js.setDefaultConfigData();
wt629_com_js.log('初始化配置信息 完成 ', true);
}
},
// 读取配置数据
readConfigData: function(){
var config = localStorage.getItem('wt629_com_auto_voteup_config');
try{
wt629_com_js.config = JSON.parse(config);
}catch (e) {
wt629_com_js.log('读取配置出错' + e, true);
wt629_com_js.log('使用默认配置重置' , true);
wt629_com_js.config = null;
wt629_com_js.checkIsConfig();
}
},
// 将配置数据显示到表单
showConfigData: function(){
wt629_com_js.log('显示配置表单信息 ... ', true);
if (wt629_com_js.config.isEnable){
$('#wt629_com_is_enable').attr('checked','checked');
}
if (wt629_com_js.config.isShow){
$('#wt629_com_is_show').attr('checked','checked');
}
if (wt629_com_js.config.isTimedRefresh){
$('#wt629_com_is_timed_refresh').attr('checked','checked');
}
if (wt629_com_js.config.refreshTimeout == null || wt629_com_js.config.refreshTimeout == '' || isNaN(wt629_com_js.config.refreshTimeout)){
wt629_com_js.log('保存的超时时间无法解析或不是数值,修改为默认60s ...', true);
wt629_com_js.config.refreshTimeout = 60;
// 保存设置
wt629_com_js.saveConfig();
}
$('#wt629_com_refresh_timeout').val(wt629_com_js.config.refreshTimeout);
wt629_com_js.log('显示配置表单信息 完成 ', true);
},
// 显示控制面板
showControlPanel: function(){
$('#wt629_com_controlPanel').css('width','300px');
$('.wt629_com_controlPanel_main').show();
},
// 隐藏控制面板
hideControlPanel: function(){
$('#wt629_com_controlPanel').css('width','100px');
$('.wt629_com_controlPanel_main').hide();
},
// 检查面板是否显示
checkIsShow: function(){
if (wt629_com_js.config.isShow){
wt629_com_js.showControlPanel();
}else{
wt629_com_js.hideControlPanel();
}
},
//设置默认超时时间
setDefaultTimeOut: function(){
wt629_com_js.log('保存的超时时间无法解析或不是数值,修改为默认60秒 ...', true);
wt629_com_js.config.refreshTimeout = 60;
// 保存
wt629_com_js.saveConfig();
},
// 设置事件
setEvent: function(){
// 显示隐藏事件
$('#wt629_com_controlPanel_show_or_hide').click(function(){
if ($('.wt629_com_controlPanel_main').is(':hidden')){
$('#wt629_com_controlPanel').css('width','300px');
$('.wt629_com_controlPanel_main').show();
}else{
$('#wt629_com_controlPanel').css('width','100px');
$('.wt629_com_controlPanel_main').hide();
}
});
// 表单 点击事件
$('.wt629_com_cpfrom').click(function(){
wt629_com_js.config.isEnable= $('#wt629_com_is_enable').is(':checked');
wt629_com_js.config.isShow = $('#wt629_com_is_show').is(':checked');
wt629_com_js.config.isTimedRefresh = $('#wt629_com_is_timed_refresh').is(':checked');
wt629_com_js.config.refreshTimeout = $('#wt629_com_refresh_timeout').val();
wt629_com_js.log('保存配置 ... ', true);
// 保存
wt629_com_js.saveConfig();
wt629_com_js.log('保存配置 完成 请手动刷新页面加载新配置 .. ', true);
});
},
// 页面超时剩余时间
pageTimeOut : -99,
// 超时计时器
interval: null,
// 页面刷新超时
pageReloadTimeOut: function(){
var isTimedRefresh = wt629_com_js.config.isTimedRefresh;
var refreshTimeout = wt629_com_js.config.refreshTimeout;
if (isNaN(refreshTimeout)){
wt629_com_js.setDefaultTimeOut();
}
if (wt629_com_js.pageTimeOut == -99){
wt629_com_js.pageTimeOut = refreshTimeout;
}
if(!isTimedRefresh){
$('#wt629_com_controlPanel_page_reload_tip').html('');
}
if (wt629_com_js.pageTimeOut <= 0){
clearInterval(wt629_com_js.interval);
$('#wt629_com_controlPanel_page_reload_tip').html('刷新中...');
location.reload(true);
}else{
$('#wt629_com_controlPanel_page_reload_tip').html(wt629_com_js.pageTimeOut + '秒后刷新');
wt629_com_js.pageTimeOut --;
}
},
// 点赞事件
thumbUpEvnet: function(){
if (wt629_com_js.config.isEnable){
wt629_com_js.log('点赞选项已启用 ...', false);
// 批量点赞
// wt629_com_js.thumbUp();
wt629_com_js.thumbUpByClass('.blotter_block .blotter_userstatus', false);
wt629_com_js.thumbUpByClass('.blotter_block .blotter_workshopitempublished', false);
wt629_com_js.thumbUpByClass('.blotter_block .blotter_gamepurchase', false);
wt629_com_js.thumbUpByClass('.blotter_block .blotter_screenshot', false);
wt629_com_js.thumbUpByClass('.blotter_block .blotter_recommendation', true);
wt629_com_js.log('批量点赞完成 ', true);
var isTimedRefresh = wt629_com_js.config.isTimedRefresh;
var refreshTimeout = wt629_com_js.config.refreshTimeout;
if (isNaN(refreshTimeout)){
wt629_com_js.setDefaultTimeOut();
}
if (wt629_com_js.config.isTimedRefresh){
wt629_com_js.interval = setInterval(wt629_com_js.pageReloadTimeOut, 1000);
}
}else{
wt629_com_js.log('点赞选项未启用 ...', false);
}
},
thumbUpByClass: function(className, isThumbHappyByRecommendation) {
// 所有点赞按钮
// className = '.blotter_block .blotter_workshopitempublished';
var thumbUpObject = $(className);
var thumbUpNum = thumbUpObject.length;
var thumbUpActiveNum = 0;
var thumbUpNotActiveNum = 0;
thumbUpObject.each(function(){
var activeObject = $(this).find('.active');
if (activeObject == null || activeObject.length == 0){
thumbUpNotActiveNum ++;
var isThumbsUp = false;
var isFunny = false;
if (isThumbHappyByRecommendation){
var thumb = $(this).find('.thumb');
if (thumb != null && $(thumb).html() != null){
var html = $(thumb).html();
if (html.indexOf('thumbsUp.png') > -1){
isThumbsUp = true;
}else if (html.indexOf('thumbsDown.png') > -1){
isFunny = true;
}
}
}else{
isThumbsUp = true;
}
if (isThumbsUp){
var thumbUp = $(this).find('.thumb_up');
if (thumbUp != null){
$(thumbUp).css('border-bottom','1px solid #F00');
$(thumbUp).parent().parent().click();
}
}
if (isFunny){
var funny = $(this).find('.funny');
if (funny != null){
$(funny).css('border-bottom','1px solid #F00');
$(funny).parent().parent().click();
}
}
}else{
thumbUpActiveNum ++;
}
});
console.log(thumbUpNum);
console.log(thumbUpActiveNum);
console.log(thumbUpNotActiveNum);
},
thumbUp: function() {
wt629_com_js.log('开始点赞 ...',true);
// 所有点赞按钮
var thumb_up = $('.thumb_up');
var num = thumb_up.size();
var num_upClick = 0;
var num_happyClick = 0;
thumb_up.each(function(){
try{
var classStr = $(this).parent().parent().attr('class');
// 遍历没有点击的点赞按钮[包含未点击和点击欢乐的]
if (!(classStr != null && classStr.indexOf('active') > -1)){
// 点赞按钮
var thumbUpA = $(this).parent().parent();
var thumbDownA = $(thumbUpA).next('a');
// 欢乐按钮html 欢乐
// 分享按钮html 分享
var thumbHappyA = null;
var isUp = true;
var isDown = false;
var isHappy = false;
var isUpButton = false;
var isHappyButton = false;
// 是否有不支持按钮
if(thumbDownA != null ){
thumbHappyA = $(thumbDownA).next('a');
// 是否有不支持和欢乐按钮
if (thumbDownA != null && thumbHappyA != null){
// 确认不支持和欢乐按钮是否正确 thumb_down funny
var downHtml = thumbDownA.html();
var happyHtml = thumbHappyA.html();
if (downHtml != null && downHtml.indexOf('thumb_down') > -1){
// 不支持按钮正常
isDown = true;
}
if (happyHtml != null && happyHtml.indexOf('funny') > -1){
// 欢乐按钮正常
isHappy = true;
}
}
}
if(isHappy){
// 有欢乐按钮,说明是评测,检查评测状态
var statusHtml = $(thumbUpA).parent().parent().parent().prev().find('.thumb').html();
// 如果存在thumbsUp.png,说明是支持,否则thumbsDown.png,不支持
if (statusHtml.indexOf('thumbsUp.png') > -1){
isUpButton = true;
isHappyButton = false;
}else if (statusHtml.indexOf('thumbsDown.png') > -1){
isUpButton = false;
isHappyButton = true;
}else{
// 没有找到是否支持,直接点赞
isUpButton = true;
isHappyButton = false;
}
if (isUpButton){
// $(thumbUpA).html("["+ $(thumbUpA).html() +"]");
$(thumbUpA).css('border-bottom','1px solid #F00');
$(thumbUpA).click();
num_upClick ++;
}
if (isHappyButton){
// 如果有欢乐按钮,确保欢乐按钮没有按下
var happyHtml = thumbHappyA.html();
if(thumbHappyA.attr('class').indexOf('active') > -1){
}else{
// $(thumbHappyA).html("["+ $(thumbHappyA).html() +"]");
$(thumbHappyA).css('border-bottom','1px solid #F00');
$(thumbHappyA).click();
num_happyClick ++;
}
}
} else {
// 如果没有欢乐按钮 直接点赞
// $(thumbUpA).html("["+ $(thumbUpA).html() +"]");
$(thumbUpA).css('border-bottom','1px solid #F00');
$(thumbUpA).click();
num_upClick ++;
}
}
}catch(e){
wt629_com_js.log('操作出现异常,' + e,true);
}
});
wt629_com_js.log('一共' + num + '条动态,点赞' + num_upClick + '次,点欢乐'+ num_happyClick + '次。' ,true);
wt629_com_js.log('点赞完成,但ajax并非全部完成,请等待一些时间 ... ',true);
},
};
wt629_com_js.controlPanelHtml += "