// ==UserScript==
// @name getAppInfo
// @namespace http://tampermonkey.net/
// @version 0.2.2
// @description getApp info and app images from app Market
// @author WhiteCat
// @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @require https://cdn.bootcss.com/camanjs/4.1.2/caman.full.min.js
// @match *://sj.qq.com/myapp/detail*
// @match *://cps.guopan.cn/tpls/gameManage.html*
// @match *://www.wandoujia.com/apps*
// @grant GM_download
// @grant GM_setClipboard
// ==/UserScript==
(function() {
'use strict';
//获取名字
var appname;
//获取版本
var appversion;
//获取大小
var appsize;
//获取appurl
var appurl;
//获取介绍
var appmore;
//获取appPic
var appImgs = [];
//logo
var logourl;
//imgs
var imgs;
var tail = ["内购破解版下载","破解版下载","下载",""]
// 添加按钮
const copyall = addFloatButton('ALL', () => getAll())
const copyinfo = addFloatButton('Info', () => getWDinfo())
const copyimg = addFloatButton('Img', () => getAppImg())
function addFloatButton (text, onclick) {
if (!document.addFloatButton) {
const buttonContainer = document.body.appendChild(document.createElement('div')).attachShadow({ mode: 'open' })
buttonContainer.innerHTML = '<style>:host{position:fixed;top:3px;right:40px;z-index:2147483647;height:0}#i{display:none}*{float:left;margin:4px;padding:1em;outline:0;border:0;border-radius:5px;background:#1e88e500;box-shadow:0 1px 4px rgba(0,0,0,.1);color:#fff;font-size:14px;line-height:0;transition:.3s}:active{background:#42a5f5;box-shadow:0 2px 5px rgba(0,0,0,.2)}button:active{transition:0s}:checked~button{visibility:hidden;opacity:0;transform:translateY(-3em)}label{border-radius:50%}:checked~label{opacity:.3;transform:translateY(3em)}</style><input id=i type=checkbox><label for=i></label>'
document.addFloatButton = (text, onclick) => {
const button = document.createElement('button')
button.setAttribute("id","flybtn");
button.textContent = text
button.addEventListener('click', onclick)
return buttonContainer.appendChild(button)
}
}
return document.addFloatButton(text, onclick)
}
//click
function getAll() {
getInfo();
getAppImg();
}
//去除空格
function Trim(str, is_global) {
var result;
result = str.replace(/(^\s+)|(\s+$)/g, "");
if (is_global.toLowerCase() == "g") {
result = result.replace(/\s/g, "");
}
return result;
}
function getInfo(){
var host = window.location.host;
if(host.indexOf("guopan")!= -1){
getGPinfo();
}if(host.indexOf("qq")!= -1){
getQinfo();
}if(host.indexOf("wandoujia")!= -1){
getWDinfo();
}
}
//获取appinfo
function getQinfo() {
//appinfo = Trim(appinfo,"g");
//var info = "游戏名: "+appname+"\n"+"版本: "+appversion+"\n"+"大小: "+appsize+"\n"+"链接: "+appurl+"\n"+"简介:\n "+appmore;
//获取应用宝信息
//获取名字
appname = $(".det-name-int").text();
//获取版本
appversion = $(".det-othinfo-data").eq(0).text().toLowerCase();
//获取大小
appsize = $(".det-size").text() + 'B';
//获取appurl
appurl = $(".det-down-btn").attr("data-apkurl");
//获取介绍
appmore = $("#J_DetAppDataInfo").text().trim();
//获取图片
logourl = $(".det-icon img").attr("src");
//清零
appImgs.length = 0;
imgs = $("#J_PicTurnImgBox .pic-img-box").each(function(inedx, item) {
let img = $(this).children('img');
appImgs.push($(img).attr("data-src"));
});
jsonSet(appname,appversion,appsize,appurl);
}
function getGPinfo() {
appname = $("p.title.ng-binding").text();
//获取版本
appversion = $("span.ng-binding").eq(0).text().replace(/版本:/, "v");
//获取大小
appsize = $("span.ng-binding").eq(1).text().replace(/大小:/, "");
//获取appurl
appurl = $("button.btn.copy.clipboard.ng-binding").attr("data-clipboard-text");
//获取介绍
appmore = $("div.desc.ng-binding").text().trim();
//获取logo
//logourl = $(".imgUrl .ng-scope").attr("src");
//获取图片
appImgs.length = 0;
logourl = $("a.imgUrl.ng-scope img").attr("src");
//console.log($("div.allImg.clearfix"));
imgs = $("div.allImg.clearfix .ng-scope").each(function(inedx, item) {
appImgs.push($(this).attr("src"));
});
jsonSet(appname,appversion,appsize,appurl);
}
//豌豆夹
function getWDinfo() {
var info = "游戏名: "+appname+"\n"+"版本: "+appversion+"\n"+"大小: "+appsize+"\n"+"链接: "+appurl+"\n"+"简介:\n "+appmore;
appname = $("span.title").text();
//获取版本
appversion = "v"+$("dl.infos-list dd").eq(2).text().trim();
//获取大小
appsize = $("dl.infos-list dd").eq(0).text().trim();
//获取appurl
appurl = $("a.normal-dl-btn ").attr("href");
//获取介绍
appmore = $("div.desc-info").text().trim();
//获取logo
logourl = $("div.app-icon img").attr("src");
//获取图片
appImgs.length = 0;
//console.log($("div.allImg.clearfix"));
imgs = $("div.overview img").each(function(inedx, item) {
console.log($(this).attr("src"));
appImgs.push($(this).attr("src"));
});
jsonSet(appname,appversion,appsize,appurl);
}
//设置json
function jsonSet(name,version,size,url){
var object = {};
var params = [];
var obj = {};
obj["appversion"] = version;
obj["appsize"] = size;
obj["appurl"] = url;
//obj["appmore"] = appmore;
params.push(obj);
object['appname'] = name;
object['appinfo'] = params;
var json = JSON.stringify(object);
GM_setClipboard(json);
//alert("已复制好,可贴粘。");
}
//格式化json输出
var formatJson = function(json, options) {
var reg = null,
formatted = '',
pad = 0,
PADDING = ' '; // one can also use '\t' or a different number of spaces
// optional settings
options = options || {};
// remove newline where '{' or '[' follows ':'
options.newlineAfterColonIfBeforeBraceOrBracket = (options.newlineAfterColonIfBeforeBraceOrBracket === true) ? true: false;
// use a space after a colon
options.spaceAfterColon = (options.spaceAfterColon === false) ? false: true;
// begin formatting...
// make sure we start with the JSON as a string
if (typeof json !== 'string') {
json = JSON.stringify(json);
}
// parse and stringify in order to remove extra whitespace
json = JSON.parse(json);
json = JSON.stringify(json);
// add newline before and after curly braces
reg = /([\{\}])/g;
json = json.replace(reg, '\r\n$1\r\n');
// add newline before and after square brackets
reg = /([\[\]])/g;
json = json.replace(reg, '\r\n$1\r\n');
// add newline after comma
reg = /(\,)/g;
json = json.replace(reg, '$1\r\n');
// remove multiple newlines
reg = /(\r\n\r\n)/g;
json = json.replace(reg, '\r\n');
// remove newlines before commas
reg = /\r\n\,/g;
json = json.replace(reg, ',');
// optional formatting...
if (!options.newlineAfterColonIfBeforeBraceOrBracket) {
reg = /\:\r\n\{/g;
json = json.replace(reg, ':{');
reg = /\:\r\n\[/g;
json = json.replace(reg, ':[');
}
if (options.spaceAfterColon) {
reg = /\:/g;
json = json.replace(reg, ': ');
}
$.each(json.split('\r\n'),
function(index, node) {
var i = 0,
indent = 0,
padding = '';
if (node.match(/\{$/) || node.match(/\[$/)) {
indent = 1;
} else if (node.match(/\}/) || node.match(/\]/)) {
if (pad !== 0) {
pad -= 1;
}
} else {
indent = 0;
}
for (i = 0; i < pad; i++) {
padding += PADDING;
}
formatted += padding + node + '\r\n';
pad += indent;
});
return formatted;
};
//图片下载
function getAppImg() {
//setTimeout(function(){ alert("Hello"); }, 3000);
//console.log(appImgs);
GM_download(logourl, appname + "logo");
//遍历图片
if (appImgs == null || appImgs == "") {
alert("Info");
} else {
for (var i = 0; i < 4; i++) {
//console.log(appImgs[i]);
GM_download(appImgs[i], appname + tail[i]);
}
}
//console.log(logourl);
}
//图片处理
function imgHandle(imgurl) {
var canvas = document.createElement('canvas');
canvas.setAttribute("id", "flycanvans");
Caman("#canvas-id", imgurl,
function() {
this.resize({
width: 500,
height: 300
});
this.render();
});
}
})();