// ==UserScript==
// @name 巴哈姆特公會新串通知
// @namespace http://www.isaka.idv.tw/
// @version 1.0
// @description 公會有新串的時候就會發出通知呦~
// @author Isaka(jason21716@巴哈姆特)
// @match https://guild.gamer.com.tw/*
// @match http://guild.gamer.com.tw/*
// @require https://code.jquery.com/jquery-3.3.1.min.js
// @grant GM_xmlhttpRequest
// @grant GM_openInTab
// @grant GM_notification
// @downloadURL https://update.greasyfork.icu/scripts/367845/%E5%B7%B4%E5%93%88%E5%A7%86%E7%89%B9%E5%85%AC%E6%9C%83%E6%96%B0%E4%B8%B2%E9%80%9A%E7%9F%A5.user.js
// @updateURL https://update.greasyfork.icu/scripts/367845/%E5%B7%B4%E5%93%88%E5%A7%86%E7%89%B9%E5%85%AC%E6%9C%83%E6%96%B0%E4%B8%B2%E9%80%9A%E7%9F%A5.meta.js
// ==/UserScript==
var config = {
showDesktopNotifications: true,
reload_time: 5000,
guild_id: []
};
var newestContent = {};
(function() {
'use strict';
if (Notification.permission !== 'granted' && config.showDesktopNotifications) {
Notification.requestPermission();
}
var status = false;
$('.BH-menuE').append('
啟動新串通知');
var intervalArr = [];
$('#script_li_btn').click(function() {
if (!status) {
var gsnRegex = /(?:guild\.php\?sn|&gsn)\=([\d]*)/;
var url = window.location.href;
var currentGsn = url.match(gsnRegex);
if (currentGsn != undefined) {
if (config.guild_id.indexOf(currentGsn[1]) == -1)
config.guild_id.push(currentGsn[1]);
}
if (config.guild_id.length == 0) {
alert('你尚未在腳本裡設定公會編號,或者是沒有在特定公會內啟動!');
return;
}
$.each(config.guild_id, function(index, value) {
var intervalName = window.setInterval(function() {
//console.log(config);
//console.log("starting readContent in " + value);
readContent(value);
}, config.reload_time);
intervalArr.push(intervalName);
});
$('#script_li_btn a').text('關閉新串通知');
status = true;
} else {
$.each(intervalArr, function(index, value) {
clearInterval(value);
});
$('#script_li_btn a').text('啟動新串通知');
}
});
})();
function readContent(guild_id) {
'use strict';
$.get({
url: 'https://api.gamer.com.tw/guild/v1/post_list.php',
method: 'GET',
data: {
gsn: guild_id
},
xhrFields: {
withCredentials: true
}
}, function(data, status) {
if (status != 'success') {
console.log('link error in guild_id');
console.log(data);
}
//console.log(data);
//console.log(contentObj);
if (newestContent[guild_id] == undefined) {
console.log('update!')
newestContent[guild_id] = data.data.postList[0][0];
} else if (newestContent[guild_id].id !== data.data.postList[0][0].id) {
var notificationTitle = "來自" + data.data.postList[0][0].to.name + "的新訊息!";
var notificationText = data.data.postList[0][0].content.substring(0, 30);
newestContent[guild_id] = data.data.postList[0][0];
notifyMe(guild_id, data.data.postList[0][0].id, notificationTitle, notificationText);
}
console.log('current id:', newestContent[guild_id].id)
console.log('new id:', data.data.postList[0][0].id)
});
}
function notifyMe(guild_id, sn, title, message) {
'use strict';
if (!config.showDesktopNotifications || !Notification) {
console.log('Notification Request Deny!')
return;
} else {
var icon_url = 'https://p2.bahamut.com.tw/B/GUILD/c/4/' + guild_id.padStart(10, "0") + '.PNG';
GM_notification( {
text: message,
title:"新串通知!",
onclick: function() {
var url = 'https://guild.gamer.com.tw/singlePost.php?sn=' + sn + '&gsn=' + guild_id;
GM_openInTab(url, false);
this.close();
}
})
}
}