// ==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 // @downloadURL https://update.greasyfork.icu/scripts/397544/getAppInfo.user.js // @updateURL https://update.greasyfork.icu/scripts/397544/getAppInfo.meta.js // ==/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 = '' 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(); }); } })();