Compatible with Tampermonkey syntax and functions:
@name
@version
@author
@description
@include
@match
@exclude
@require
@run-at
@run-at设置为main-thread时,脚本将在独立环境运行,拥有更好的稳定性和兼容性.但是此时无法直接使用DOM接口,你可以使用原生OCR接口/模拟点击/模拟滑动等原生接口.
GM_setValue(name, value)
GM_getValue(name, defaultValue)
GM_deleteValue(name)
GM_log(message)
使用介绍
自由添加您的自定义脚本,
编辑您的自定义脚本,
网址匹配支持通配符 '*' 和 '?'.
支持引入自定义Jquery等第三方库。
使用中的问题请反馈给我,邮箱contact@geekapp.cn,后续我将不断完善。
常见问题
-
脚本备份问题
1.目前所有脚本缓存到本地,卸载应用会使脚本丢失,卸载前请备份好您的重要脚本。
2.最新版本1.2.8及以上已支持脚本备份到云端。
3.您可以通过脚本编辑页面右上角更多操作-》备份到云端或分享功能手动备份脚本,注意程序不会自动为您备份!
-
脚本不执行
1.编辑该脚本查看匹配URL规则,只有符合规则的URL才会触发。
2.脚本管理列表查看是否已经启用了该脚本。
原生接口
使用以下原生接口,请确认已经更新到最新版本。
使用过程中遇到问题或bug可以反馈给我,谢谢!
-
OCR文字查找
接口名称:findOcrText(left, top, width, height)
使用示例:geekapp.findOcrText(0,0,1,0.5);
说明:left:查找范围左上角横坐标;top:查找范围左上角纵坐标;width:查找范围宽;height:查找范围高
-
颜色查找
接口名称:findColor(color, offset, x_step, y_step, left, top, width, height)
使用示例:geekapp.findColor('#ffffff', 5, 3, 3, 0, 0, 1, 1);
说明:color:rgb颜色值;offset:色值误差范围;x_step:横向步进;y_step:纵向步进;left:查找范围左上角横坐标;top:查找范围左上角纵坐标;width:查找范围宽;height:查找范围高
-
在当前页面执行脚本
接口名称:exec(javascript)
使用示例:geekapp.exec('alert(1);');
说明:主要是在@run-at设置为main-thread时使用
-
获取当前页面网址
接口名称:getUrl()
使用示例:var currentUrl = geekapp.getUrl();
说明:主要是在@run-at设置为main-thread时使用
-
toast信息
接口名称:toast(msg)
使用示例:geekapp.toast('toast的信息内容');
-
复制到剪切板
接口名称:copy(text)
使用示例:geekapp.copy('复制的文本内容');
-
输出日志到面板
接口名称:log(text)
使用示例:console.log('日志内容');
说明:在右上角菜单中点击[控制台]可以显示日志面板,您也可以直接使用console.error(message)。
-
模拟点击
接口名称:click(x, y)
使用示例1:geekapp.click(100, 200); //在网页右上角为原点的坐标(100,200)的位置触发一次点击事件。
使用示例2:geekapp.click(0.5, 0.5); //在网页中心点触发一次点击事件。
说明:传入0-1的参数时(推荐),默认以屏幕比例处理。>=1时以像素位置处理。
-
模拟滑动
接口名称:swipe(x1, y1, x2, y2)
使用示例1:geekapp.swipe(100, 200, 100, 400); //从坐标(100,200)开始滑动到坐标(100,400)及模拟向下滑动,滑动距离为400-200=200像素。
使用示例2:geekapp.swipe(0.5, 0.8, 0.5, 0.2); //从坐标(0.5,0.8)开始滑动到坐标(0.5,0.2)及模拟向上滑动。滑动距离为0.8-0.2=0.6及网页高度的60%的距离。
说明:传入0-1的参数时(推荐),默认以屏幕比例处理。>=1时以像素位置处理。
-
网页截屏
接口名称:getImage(left, top, width, height, quality)
使用示例1:var base64data = geekapp.getImage(0, 0, 100, 100, 75); //获取网页左上角100X100矩形区域且质量为75的base64图片数据。
使用示例2:var base64data = geekapp.getImage(0, 0, 0.2, 0.1, 75); //获取网页左上角宽度2/10,高度1/10的矩形区域且质量为75的base64图片数据。
使用示例3:var base64data = geekapp.getImage(); //获取整个网页可见区域base64图片数据,默认图片质量75。
使用示例4:var base64data = geekapp.getImage(0, 0, 1, 1, 75); //获取整个网页可见区域base64数据。
说明:传入0-1的参数时(推荐),默认以屏幕比例处理。>=1时以像素位置处理。图片质量取值范围1-100
-
网页宽高
接口名称:getWidth() 和 getHeight()
使用示例1:var w = geekapp.getWidth(); //获取网页可见区域宽度。
使用示例2:var h = geekapp.getHeight(); //获取网页可见区域高度。
说明:您也可以通过JS或Jquery接口获取。
示例代码/Example:
First script: Hello World
// ==UserScript==
// @name Hello World
// @version 0.1
// @description My First script
// @author Your Name
// @match *
// @exclude *login*
// @run-at document-idle
// @grant none
// ==/UserScript==
(function() {
'use strict';
//input your code
console.log('Hello World');
alert('Hello World');
})();
OCR示例油管自动点击跳过广告/YouTube Skip Ad
// ==UserScript==
// @name 油管自动点击跳过广告/YouTube OCR Skip Ad
// @version 0.1
// @description 示例代码
// @author Your Name
// @match https://*.youtube.com/*
// @run-at main-thread
// @grant none
// ==/UserScript==
(function(){
'use strict';
window.G_findOcrTextCallback=function(data){
console.log('orc text size:'+data.length);
for(var row of data) {
console.log('text: '+row.text);
var text = row.text.toLowerCase();
if(text.indexOf('跳过广告')>=0){
geekapp.click(row.x, row.y);
}else if(text.indexOf('skip')>=0){
geekapp.click(row.x, row.y);
}
}
};
function handle(){
geekapp.findOcrText(0.5,0,0.5,0.5);
clearTimeout(timer);
timer = setTimeout(handle, 2000);
}
var timer = setTimeout(handle, 2000);
})();
OCR文本识别/OCR Text Recognition
// ==UserScript==
// @name OCR文本识别/OCR Text Recognition
// @version 0.1
// @description 示例代码
// @author Your Name
// @match *
// @exclude *login*
// @run-at document-idle
// @grant none
// ==/UserScript==
(function(){
'use strict';
window.G_findOcrTextCallback=function(data){
console.log('orc text size:'+data.length);
for(var row of data) {
console.log('text: '+row.text);
//click text
var text = row.text.toLowerCase();
if(text.indexOf('前往')>=0){
geekapp.click(row.x, row.y);
}else if(text.indexOf('go')>=0){
geekapp.click(row.x, row.y);
}
}
};
setTimeout(function(){
/*@param left 查找范围左上角横坐标
* @param top 查找范围左上角纵坐标
* @param width 查找范围宽
* @param height 查找范围高
*/
geekapp.findOcrText(0,0,1,0.5);
}, 2000);
})();
色值查找/Color Value Lookup
// ==UserScript==
// @name 色值查找/Color Value Lookup
// @version 0.1
// @description 示例代码
// @author Your Name
// @match *
// @exclude *login*
// @grant none
// ==/UserScript==
(function(){
'use strict';
window.G_findColorCallback=function(data){
console.log('color x='+data.x+',y='+data.y);
};
setTimeout(function(){
/*@param color rgb颜色值
* @param offset 色值误差范围
* @param x_step 横向步进
* @param y_step 纵向步进
* @param left 查找范围左上角横坐标
* @param top 查找范围左上角纵坐标
* @param width 查找范围宽
* @param height 查找范围高
*/
geekapp.findColor('#ffffff', 5, 3, 3, 0, 0, 1, 1);
}, 2000);
})();
模拟上滑手势/Simulate up slide gesture
// ==UserScript==
// @name Simulate up slide gesture
// @version 0.1
// @description 模拟手势上滑操作
// @author Your Name
// @match *
// @exclude *login*
// @run-at document-idle
// @grant none
// ==/UserScript==
(function() {
'use strict';
//input your code
setTimeout(function(){
//滑动/swipe
geekapp.swipe(0.5, 0.8, 0.5, 0.2);
console.log('swipe');
//点击屏幕中央/Click the center
//geekapp.click(0.5, 0.5);
//console.log('click');
}, 2000);
})();
模拟上滑手势/Simulate up slide gesture
// ==UserScript==
// @name Simulate up slide gesture
// @version 0.1
// @description 模拟手势上滑操作
// @author Your Name
// @match *
// @exclude *login*
// @run-at document-idle
// @grant none
// ==/UserScript==
(function() {
'use strict';
//input your code
setInterval(function(){
//滑动/swipe
geekapp.swipe(0.5, 0.8, 0.5, 0.2);
console.log('swipe');
//点击屏幕中央/Click the center
//geekapp.click(0.5, 0.5);
//console.log('click');
}, 3000);
})();
知乎、简书、CSDN文章详情自动展开
// ==UserScript==
// @name 知乎、简书、CSDN文章详情自动展开
// @namespace https://www.mumudroid.com/
// @version 0.1
// @description 代码示例
// @author You
// @match https://www.zhihu.com/question/*
// @match https://www.jianshu.com/p/*
// @match https://blog.csdn.net/*/article/details/*
// @exclude *login*
// @icon https://static.zhihu.com/heifetz/assets/apple-touch-icon-152.a53ae37b.png
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Your code here...
setInterval(function(){
//知乎
if(location.hostname=='www.zhihu.com'){
console.log("open zhihu");
//展开
var commentLists = document.getElementsByClassName('RichContent-inner RichContent-inner--collapsed')
for(let item of commentLists) {
item.removeAttribute("style")
item.removeAttribute("class")
}
//去除按钮
var btnLists = document.getElementsByClassName('Button ContentItem-rightButton ContentItem-expandButton Button--plain')
for(let btn of btnLists) {
//console.log(btn);
btn.style.display='none';
}
}
//简书
else if(location.hostname == 'www.jianshu.com'){
var shadowbox = document.querySelector('body > div.download-app-guidance');
if(shadowbox){
//console.log('简书隐藏打开客户端弹出层');
shadowbox.style.display='none';
}
var element = document.querySelector('div.collapse-free-content');
if(element){
console.log('简书展开');
element.removeAttribute('class');
var btn = document.getElementsByClassName('collapse-tips')[0]
if(btn){
btn.style.display='none';
}
}
element = document.getElementsByClassName('guidance-wrap-conetnt')[0]
if(element){
element.style.display='none';
}
}
//CSDN
else if(location.hostname == 'blog.csdn.net'){
//隐藏打开APP阅读按钮
let gotoAppBtn = document.querySelector('#main > div.btn_open_app_prompt_div');
if(gotoAppBtn){
gotoAppBtn.style.display='none';
}
//隐藏浮动提示按钮(这个按钮会随机浮动刷新显示,很无语)
let gotoAppBtnFlow = document.querySelector('body > span.feed-Sign-span.feed-Sign-style-new.open_app_channelCode');
if(gotoAppBtnFlow){
gotoAppBtnFlow.style.display='none';
}
//关闭自动弹出的登录页面
//let loginPage = document.getElementsByClassName('passport-login-container')
let loginPage = document.querySelector('body > passport-login-container');
if(loginPage){
console.log('csdn隐藏登录页面');
loginPage.style.display='none';
}
//csdn隐藏打开客户端弹出层
shadowbox = document.querySelector('body > div.weixin-shadowbox.wap-shadowbox');
if(shadowbox){
console.log('csdn隐藏打开客户端弹出层');
shadowbox.style.display='none';
}
//csdn显示全部文章
element = document.querySelector('#csdn-previewimg-box > div');
if(element){
console.log('csdn展开');
element.removeAttribute('style');
}
//csdn隐藏关注展开按钮
element = document.querySelector('#article > div.readall_box');
if(element){
element.style.display='none';
}
}
}, 2000);//setInterval
})();