背景:

每天晚上下班第一件事情就是打开电脑上的守望先锋直播,然后边吃饭边看直播,但是点开直播这个过程实在是令人恼火又要去找某个主播在哪,又要看在不在线,还要调整清晰度,放大等,我想能不能用鼠标自动点击完成呢,然而还真有这么个语言可以实现屏幕图像识别,这就是sikuli。这是由MIT的研究人员设计了一种新颖的图形脚本语言Sikuli,可以实现屏幕图像的识别,并进行鼠标操作或者键盘操作的语言。

准备:

1、sikuli下载地址 https://launchpad.net/sikuli/+download

第一个其实是它的图形画编辑器安装包,第二个才是java所需的依赖jar包,我们这下载第二个就可以了。

2、IDEA2020 (java编译器)

3、java环境 jdk1.8自行到官网下载

4、window10系统

难点:

  1. 如何把sikuli的jar包放到idea的项目中去
  2. 如果打包写好的java脚本
  3. 如何获取jar包运行的根目录

导入sikuli的jar包

在新建号的项目中加入一个目录libs(名字可以自定义),然后把下好的sikulixapi-2.0.4.jar包放到该目录下,如下所示

然后在modules里面添加jar或者directories把libs文件定位到,这就可以把libs下面的所有jar导入进来。

这样做有个好处是,可以让依赖包(libs) 和项目处于同一个目录下,使用svn或者git上传的时候就可以把依赖传上去。

代码:

废话不多说,上java代码

package com.sikuli;import org.sikuli.script.FindFailed;
import org.sikuli.script.Location;
import org.sikuli.script.Match;
import org.sikuli.script.Screen;import java.util.ArrayList;
import java.util.List;/*** @Author Tmz* @Date 2021/01/29 18:54* @Description 打开虎牙直播*/
public class Laoli {/**虎牙位置*/private static final String exePath = "C:\\Program Files (x86)\\HuyaLive\\HuyaClient\\Huya.exe";/**主播头像*/private static List<String> heads = new ArrayList<>();/**图片资源位置*/private static final String[] steps = {"./Laoli/step1.png","./Laoli/step2.png","./Laoli/step3.png","./Laoli/step4.png","./Laoli/step5.png","./Laoli/step6.png","./Laoli/step7.png","./Laoli/step8.png"};static {/** 当前jar包运行路径定位到jar的路径,这句话感觉又点奇怪,* 事实上你如果是用cmd命令来执行,java -jar xx.jar 这种,* 实际执行路径就是你运行cmd的路径,而不是jar包所在路径,* 这种情况就不可能通过相对路径去访问同一目录下的资源文件。*/String absPath = Laoli.class.getProtectionDomain().getCodeSource().getLocation().getFile();String[] split = absPath.split("/");String suffix = split[split.length - 1];
//        System.out.println(Arrays.asList(split));String replace = absPath.substring(1).replace("/", "\\");if (suffix.contains("jar")) {replace = replace.replace(suffix, "");}
//        System.out.println(replace);for (int i = 0; i < steps.length; i++) {steps[i] = replace+ steps[i].substring(2).replace("/", "\\");}//添加老李头像heads.add(steps[1]);//添加老x头像heads.add(steps[6]);//添加麻瓜君的头像heads.add(steps[7]);}public static void main(String[] args) {Screen s = new Screen();try {//①.打开虎牙客户端Runtime.getRuntime().exec(exePath);} catch (Exception e) {System.out.println("打开虎牙客户端失败!");}//②.点击我的收藏try {s.click(steps[0]);} catch (FindFailed findFailed) {System.out.println("我的收藏打开失败");}//③.循环主播头像[老李,老x,麻瓜君],然后点击其他操作[高清,全屏]for (String head : heads) {try {Match match = s.find(head);afterClickLeft(s,match);break;} catch (FindFailed | InterruptedException findFailed) {findFailed.printStackTrace();continue;}}}/*** @param s* @param HeadPortraitMatch* @return void* @author Tmz* @description:  点击头像之后的操作* @date 2021/1/31 22:23*/public static void afterClickLeft(Screen s,Match HeadPortraitMatch) throws InterruptedException, FindFailed {//点击头像HeadPortraitMatch.click();//头像偏移Location location1 = HeadPortraitMatch.rightAt(500);location1.move(800, 400);location1.click();//③.点击.超清Thread.sleep(300);s.click(steps[2]);//④.点击蓝光10MThread.sleep(200);s.click(steps[3]);System.out.println("点击蓝光失败");Thread.sleep(200);Match match = s.find(steps[4]);match.click();System.out.println("点击屏幕失败");Thread.sleep(200);Match match2 = s.find(steps[5]);match2.click();Location location = match.rightAt();location.move(500, 100);location.click();}}

由于我把资源路径改为了jar包路径,那么资源应该放在target->classes目录下,如下所示,等打包之后资源就和jar在同一目录下,不管是通过cmd还是什么运行都会访问到相对路径的资源了。

打包:

打包时关键操作,请跟随下面这些操作进行打包。

点击build之后会在项目下生成out文件夹

如果我们刚才那个选的第一个选项我们这就只会生成一个jar包demo.jar,它会把sikuli打进去,这并不是我们想要的,因为我们可能还会想写其他的脚本,到时候我们我们只需要把生成的jar包放到该目录而不需要把sikulixapi-2.0.4.jar包放过去了。

最后这是我生成的目录结构,如下。

总结:

java驱动sikuli打开虎牙直播相关推荐

  1. 虎牙java工资_【虎牙直播工资】用户运营待遇-看准网

    网申虎牙投简历算是晚了点,刚好18号虎牙来武汉有宣讲,产品经理岗是宣讲会结束后发放笔试题目当场做,我申的是运营岗,所以结束后就先走了.本来想坐等笔试的,没想到没有参加笔试,直接发短信告诉我20号去参加 ...

  2. 虎牙直播在微服务改造方面的实践和总结

    来源:阿里巴巴中间件 相比文字和图片,直播提供了人与人之间更丰富的沟通形式,其对平台稳定性的考验很大,那么倡导"以技术驱动娱乐"的虎牙直播(以下简称"虎牙")是 ...

  3. c++ 使用nacos_为什么选用Nacos?虎牙直播微服务改造实践

    原标题:为什么选用Nacos?虎牙直播微服务改造实践 " 相比文字和图片,直播提供了人与人之间更丰富的沟通形式,其对平台稳定性的考验很大,那么倡导"以技术驱动娱乐"的虎牙 ...

  4. 通过对json数据解析爬取虎牙直播数据并存入csv文件

    学习了Python语言程序设计和Python网络爬虫与信息提取,需要找些网站来练练手,于是在网上找了些别人爬取的网站,最终选择了虎牙直播平台进行爬取,并为后续数据分析存储数据. 首先打开虎牙直播平台, ...

  5. 虎牙直播真的靠谱吗?进来看了就知道

    最近很多朋友私信站长问我虎牙直播靠谱吗?毫不犹豫的告诉你是真的靠谱,对于想开直播的朋友,前期没有粉丝是比较头疼的.因此我们推荐这个虎牙直播私信引流脚本,把精准粉丝全部吸引过来,有了流量赚钱那就是轻而易 ...

  6. deep linux 看视频卡,在Deepin 20等Linux系统下用Chrome看虎牙直播经常卡的处理

    有时候在Deepin 20等Linux系统下用谷歌Chrome浏览器看虎牙直播会卡,而且是经常性的,而同样的操作在Windows系统下就不会,所用的依然还是Chrome浏览器.通常情况下看网站直播视频 ...

  7. 虎牙直播弹幕抓取 相关资料整理

    当前可用项目 看大佬的汇总种类比较齐全,有其他开发需求直接fork修改就行 各种直播平台的直播流&弹幕流解析 https://github.com/wbt5/real-url 自行思路参考 1 ...

  8. 树莓派 java 驱动 微雪 墨水屏 epaper

    树莓派 java 驱动 微雪 墨水屏 epaper B站视频指导 驱动结果显示 官方驱动测试 接线 初步测试 java驱动(仅二值图片展示,非灰阶部分) 引脚初始化 初始化墨水屏 点阵排列 显示方法 ...

  9. php 三消map 生成算法,UGC三消 一个H5布局的虎牙直播故事

    UGC三消 一个H5布局的虎牙直播故事 一.官网直播的页面效果 二.虎牙的数据接口文档API 三.后台Controller提供主播及直播数据 package com.xmbl.ops.controll ...

  10. jsoup爬取虎牙直播的信息

    jsoup爬取虎牙直播的信息,实时得到主播名字,直播间链接,推荐位,标题,人气的数据 主要代码如下: package main;import java.util.ArrayList;import or ...

最新文章

  1. centos mysql 5.1_CentOS下的MySQL 5.1安装
  2. ECCV 2020 Spotlight | 图像定位上的细粒化区域相似性自监督
  3. Linux软件源apt,仓库,包的概念
  4. 判断字符串是否为回文(C语言 顺序栈)
  5. 【每日一题】8月14日题目精讲 [SCOI2010]游戏
  6. oracle tns 连接关闭,ORA-12537 TNS:连接关闭
  7. 深度学习--Matlab使用LSTM长短期记忆网络对负荷进行分类
  8. RequestMapping注解的继承问题
  9. 作者:宋璇(1993-),女,食品安全大数据技术北京市重点实验室、北京工商大学计算机与信息工程学院硕士生...
  10. 蓝色大巴汽车网站404页面源码
  11. 转html图片 xwpf_Word、Pdf、Excel、PPT、html等文件互转工具
  12. matlab随机信号产生,matlab产生瑞利分布随机信号
  13. Flutter 入门安装——C#程序喵的Flutter之旅
  14. 苏州回收AB模块罗克韦尔、昆山回收AB触摸屏那些事
  15. Matlab批量修改文件格式
  16. python 量化投资 长期横盘_python量化投资才是最正确的方式,只教方法,不股荐!...
  17. Wifi流程机制分析:WiFi的启动
  18. 【uniapp】索引列表展示更多信息
  19. 本周最新文献速递20210801
  20. apache camel 相关配置_Apache Camel简介与入门-java

热门文章

  1. TCP协议的RST标志位
  2. neo4j-入门---学习复杂关系使用CQL语句操作图数据库(二)
  3. c# 用action做参数进行封装操作
  4. AutoLeaders控制组——C51单片机学习笔记--定时器串口通信LED点阵屏
  5. 【C语言】OJ题:printf函数的返回值
  6. 宇宙是计算机控制的,宇宙被计算机精确控制到秒,暗能量被否定之后我们活在一个程序中...
  7. 我在上海奋斗五年 从月薪3500到700万
  8. 建筑企业收并购的三要素
  9. 饥荒联机云服务器_饥荒(Don't Starve Together)腾讯云服务器搭建(unbuntu篇)
  10. 计算机支架式教学案例,万紫千红总是春--支架式教学(网友来稿)