Skip to content

Instantly share code, notes, and snippets.

@x3388638
Last active October 6, 2016 18:06
Show Gist options
  • Save x3388638/f85130d4c8110ef1889a0829c8304a0e to your computer and use it in GitHub Desktop.
Save x3388638/f85130d4c8110ef1889a0829c8304a0e to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name poke5566 crawler
// @namespace crawl5566
// @version 0.1
// @description Pokemon is over there.
// @author Y.Y.
// @match https://poke5566.com/*
// @include https://poke5566.com/*
// @grant none
// ==/UserScript==
var jqScript = document.createElement('script');
jqScript.setAttribute('src', 'https://code.jquery.com/jquery-2.2.4.min.js');
document.body.appendChild(jqScript);
var _5566 = (() => {
var _queryInterval = 0;
var _checkExpInterval = 0;
var _pokemonList = [];
var _whiteList = []; // fill in here
var _telegramConfig = {
botApiKey: '', // fill in here
chat_id: '' // fill in here
};
var _area = {
lat0: 24.006434327616663, // fill in here
lng0: 121.0267669364838, // fill in here
lat1: 23.930279287136912, // fill in here
lng1: 120.91209713667911 // fill in here
};
function start() {
console.log('START');
_queryInterval = setInterval(() => {
_getData()
.done((data) => {
var newPoke = data.pokemons;
for(let i = 0; i < newPoke.length; i++) {
var exist = false;
for(let j = 0; j < _pokemonList.length; j ++) {
if (_pokemonList[j].a == newPoke[i].a &&
_pokemonList[j].n == newPoke[i].n &&
_pokemonList[j].t == newPoke[i].t) {
exist = true;
break;
}
}
if(!exist) {
_pokemonList = [..._pokemonList, newPoke[i]];
var p = newPoke[i];
var pokeIndex = p.i;
if(p && pokeIndex && _whiteList.indexOf(pokeIndex) >=0) {
var pokeName = pokemonNames[pokeIndex];
var lat = p.a;
var lng = p.n;
var exp = _getHHMMSS(p.t);
var rest = _getMMSS(p.t - Date.now());
var iv = (p.v[0] != null && p.v[1] != null && p.v[2] != null)
? `${parseInt((p.v[0] + p.v[1] + p.v[2])*100/45)}%`
: false;
if(pokeName && lat && lng && exp && rest) {
// telegram api
var title = `${pokeName} ${iv ? iv : ''} ::5566`;
var body = `剩餘 ${rest} 結束於 ${exp}`;
$.ajax({
url: `https://api.telegram.org/bot${_telegramConfig.botApiKey}/sendVenue`,
type: 'get',
dataType: 'json',
data: {
chat_id: _telegramConfig.chat_id,
latitude: lat,
longitude: lng,
title: title,
address: body
}
});
}
}
}
}
});
}, 10*1000);
_checkExpInterval = setInterval(() => {
for(let i = 0; i < _pokemonList.length; i++) {
if(Date.now() - _pokemonList[i].t >= 0) {
_pokemonList.splice(i, 1);
i--;
}
}
console.log(`EXP Checked. Rest ${_pokemonList.length} pokemons.`);
}, 2*60*1000);
}
function stop() {
console.log('STOP');
clearInterval(_queryInterval);
clearInterval(_checkExpInterval);
}
function _getData() {
return (
$.ajax({
url: 'https://poke5566.com/pokemons',
type: 'get',
dataType: 'json',
data: _area
})
);
}
function _getHHMMSS(time) {
var date = new Date(time);
var hours = date.getHours();
var minutes = "0" + date.getMinutes();
var seconds = "0" + date.getSeconds();
return hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
}
function _getMMSS(time) {
var date = new Date(time);
var minutes = date.getMinutes();
var seconds = "0" + date.getSeconds();
return minutes + ':' + seconds.substr(-2);
}
return {
start,
stop
};
})();
var pokemonNames = []; pokemonNames[1] = "妙蛙種子", pokemonNames[2] = "妙蛙草", pokemonNames[3] = "妙蛙花", pokemonNames[4] = "小火龍", pokemonNames[5] = "火恐龍", pokemonNames[6] = "噴火龍", pokemonNames[7] = "傑尼龜", pokemonNames[8] = "卡咪龜", pokemonNames[9] = "水箭龜", pokemonNames[10] = "綠毛蟲", pokemonNames[11] = "鐵甲蛹", pokemonNames[12] = "巴大蝴", pokemonNames[13] = "獨角蟲", pokemonNames[14] = "鐵殼昆", pokemonNames[15] = "大針蜂", pokemonNames[16] = "波波", pokemonNames[17] = "比比鳥", pokemonNames[18] = "比雕", pokemonNames[19] = "小拉達", pokemonNames[20] = "拉達", pokemonNames[21] = "烈雀", pokemonNames[22] = "大嘴雀", pokemonNames[23] = "阿柏蛇", pokemonNames[24] = "阿柏怪", pokemonNames[25] = "皮卡丘", pokemonNames[26] = "雷丘", pokemonNames[27] = "穿山鼠", pokemonNames[28] = "穿山王", pokemonNames[29] = "尼多蘭", pokemonNames[30] = "尼多娜", pokemonNames[31] = "尼多后", pokemonNames[32] = "尼多朗", pokemonNames[33] = "尼多力諾", pokemonNames[34] = "尼多王", pokemonNames[35] = "皮皮", pokemonNames[36] = "皮可西", pokemonNames[37] = "六尾", pokemonNames[38] = "九尾", pokemonNames[39] = "胖丁", pokemonNames[40] = "胖可丁", pokemonNames[41] = "超音蝠", pokemonNames[42] = "大嘴蝠", pokemonNames[43] = "走路草", pokemonNames[44] = "臭臭花", pokemonNames[45] = "霸王花", pokemonNames[46] = "派拉斯", pokemonNames[47] = "派拉斯特", pokemonNames[48] = "毛球", pokemonNames[49] = "末入蛾", pokemonNames[50] = "地鼠", pokemonNames[51] = "三地鼠", pokemonNames[52] = "喵喵", pokemonNames[53] = "貓老大", pokemonNames[54] = "可達鴨", pokemonNames[55] = "哥達鴨", pokemonNames[56] = "猴怪", pokemonNames[57] = "火爆猴", pokemonNames[58] = "卡蒂狗", pokemonNames[59] = "風速狗", pokemonNames[60] = "蚊香蝌蚪", pokemonNames[61] = "蚊香蛙", pokemonNames[62] = "快泳蛙", pokemonNames[63] = "凱西", pokemonNames[64] = "勇吉拉", pokemonNames[65] = "胡地", pokemonNames[66] = "腕力", pokemonNames[67] = "豪力", pokemonNames[68] = "怪力", pokemonNames[69] = "喇叭芽", pokemonNames[70] = "口呆花", pokemonNames[71] = "大食花", pokemonNames[72] = "瑪瑙水母", pokemonNames[73] = "毒刺水母", pokemonNames[74] = "小拳石", pokemonNames[75] = "隆隆石", pokemonNames[76] = "隆隆岩", pokemonNames[77] = "小火馬", pokemonNames[78] = "烈焰馬", pokemonNames[79] = "呆呆獸", pokemonNames[80] = "呆河馬", pokemonNames[81] = "小磁怪", pokemonNames[82] = "三合一磁怪", pokemonNames[83] = "大蔥鴨", pokemonNames[84] = "嘟嘟", pokemonNames[85] = "嘟嘟利", pokemonNames[86] = "小海獅", pokemonNames[87] = "白海獅", pokemonNames[88] = "臭泥", pokemonNames[89] = "臭臭泥", pokemonNames[90] = "大舌貝", pokemonNames[91] = "鐵甲貝", pokemonNames[92] = "鬼斯", pokemonNames[93] = "鬼斯通"; pokemonNames[94] = "耿鬼"; pokemonNames[95] = "大岩蛇"; pokemonNames[96] = "素利普"; pokemonNames[97] = "素利拍"; pokemonNames[98] = "大鉗蟹"; pokemonNames[99] = "巨鉗蟹"; pokemonNames[100] = "雷電球"; pokemonNames[101] = "頑皮彈"; pokemonNames[102] = "蛋蛋"; pokemonNames[103] = "椰蛋樹"; pokemonNames[104] = "卡拉卡拉"; pokemonNames[105] = "嘎啦嘎啦"; pokemonNames[106] = "沙瓦郎"; pokemonNames[107] = "艾比郎"; pokemonNames[108] = "大舌頭"; pokemonNames[109] = "瓦斯彈"; pokemonNames[110] = "雙彈瓦斯"; pokemonNames[111] = "鐵甲犀牛"; pokemonNames[112] = "鐵甲暴龍"; pokemonNames[113] = "吉利蛋"; pokemonNames[114] = "蔓藤怪"; pokemonNames[115] = "袋龍"; pokemonNames[116] = "墨海馬"; pokemonNames[117] = "海刺龍"; pokemonNames[118] = "角金魚"; pokemonNames[119] = "金魚王"; pokemonNames[120] = "海星星"; pokemonNames[121] = "寶石海星"; pokemonNames[122] = "吸盤魔偶"; pokemonNames[123] = "飛天螳螂"; pokemonNames[124] = "迷唇姐"; pokemonNames[125] = "電擊獸"; pokemonNames[126] = "鴨嘴火龍"; pokemonNames[127] = "大甲"; pokemonNames[128] = "肯泰羅"; pokemonNames[129] = "鯉魚王"; pokemonNames[130] = "暴鯉龍"; pokemonNames[131] = "乘龍"; pokemonNames[132] = "百變怪"; pokemonNames[133] = "伊布"; pokemonNames[134] = "水精靈"; pokemonNames[135] = "雷精靈"; pokemonNames[136] = "火精靈"; pokemonNames[137] = "3D龍"; pokemonNames[138] = "菊石獸"; pokemonNames[139] = "多刺菊石獸"; pokemonNames[140] = "化石盔"; pokemonNames[141] = "鐮刀盔"; pokemonNames[142] = "化石翼龍"; pokemonNames[143] = "卡比獸"; pokemonNames[144] = "急凍鳥"; pokemonNames[145] = "閃電鳥"; pokemonNames[146] = "火焰鳥"; pokemonNames[147] = "迷你龍"; pokemonNames[148] = "哈克龍"; pokemonNames[149] = "快龍"; pokemonNames[150] = "超夢"; pokemonNames[151] = "夢幻";
var $button = $('<button class="btn btn-default">START</button>');
$button.css({
position: 'absolute',
top: '20px',
left: '20px'
});
$('body').append($button);
$button.on('click', function() {
if($(this).hasClass('started')) {
$(this).text('START').removeClass('started');
_5566.stop();
} else {
$(this).text('STOP').addClass('started');
_5566.start();
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment