首页
社区
课程
招聘
[已解决] 懂autojs的进来看看 100.00雪花
2022-8-8 17:05 7577

[已解决] 懂autojs的进来看看 100.00雪花

2022-8-8 17:05
7577

问题一:做个函数,有用户ID,可以得到liveStreamId;下面有参考
问题二:做个到点,在他原有的分钟上+5分钟内,就进他直播间的。例如张三(ID:456789)17.35开播,李四(ID:65465)18.20开播,王二(ID:666555)22.20开播,代码咋写
用AUTOJS写代码,
下面有问题,咋优化,做个PHP更好。PHP可以多用户化的。具体要求可以私信我
ui.stop.click(function() {
thread.interrupt();
});
function initServer(){
var r = http.get("http://192.168.10.105/1.txt");
//获取的格式是:mahongtao|17|20|*zhangsan|18|15 时间和分钟分开了,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
sleep(1000);
var backdate = r.body.string();
var alldata=backdate.split("*");
var alllength=alldata.length;
for (var i=0;i < alllength; i++)
{
    myDate = new Date();
    childata = alldata[i].split("|");
    userid=childata[0];
    usertime=childata[1];
    fendata=childata[2];
 
    sleep(2000);
    if(userid!=null & usertime==myDate.getHours() & myDate.getMinutes()>=fendata & myDate.getMinutes()<=fendata+5)//首先小时相等,分钟大于开播分钟
    {
       log(userid);
       log(usertime);
        openkuaishou();
    }else
    {
        sleep(10000);
        log("等待10秒")
        log(userid);
        log(usertime);
    }
}

}
参考网址:https://www.52pojie.cn/thread-1643685-1-1.html
AUTOJS--用的是JS!


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-8-9 10:02 被糊涂大叔编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (20)
雪    币: 551
活跃值: (154)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
糊涂大叔 2022-8-8 22:36
2
0
其实就是找快手直播房间的ID
雪    币: 551
活跃值: (154)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
糊涂大叔 2022-8-8 22:51
3
0

爱我佳鑫会写JS吧。先给DT了

最后于 2022-8-9 09:57 被糊涂大叔编辑 ,原因:
雪    币: 3283
活跃值: (2871)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
D-t 2022-8-8 23:59
4
0

解决

最后于 2022-8-9 12:18 被D-t编辑 ,原因:
雪    币: 2110
活跃值: (5637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-8-9 01:06
5
0
D-t dex搞出来了 des也是本地的 des cbc 很简单iv与key
他的意思是用autojs开发一个符合他要求的
雪    币: 2110
活跃值: (5637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-8-9 01:10
6
0

问题二不就是获取当前时间然后和设置好的时间进行比较???  autojs官方文档有定时任务的api, 官方描述 "该模块用于管理定时任务,用于在某些时间或某些事件触发时自动运行脚本。正如Auto.js Pro内置的定时任务功能一样,打包的脚本也可以使用这些函数来创建定时任务。"

最后于 2022-8-9 04:27 被微启宇编辑 ,原因:
雪    币: 2110
活跃值: (5637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-8-9 01:14
7
0

首先按官方要求申请忽略电池优化
if (!$power_manager.isIgnoringBatteryOptimizations()) {
    console.log("未开启忽略电池优化");
    $power_manager.requestIgnoreBatteryOptimizations();
}

然后(可惜不能传参)
$timers.addDailyTask({
    path: "/sdcard/脚本/test.js",
    time: new Date(0, 0, 0, 17, 35, 0),
    delay: 0,
    loopTimes: 1,
    interval: 0,
})

$timers.addDailyTask({
    path: "/sdcard/脚本/test1.js",
    time: new Date(0, 0, 0, 18, 20, 0),
    delay: 0,
    loopTimes: 1,
    interval: 0,
})


$timers.addDailyTask({
    path: "/sdcard/脚本/test2.js",
    time: new Date(0, 0, 0, 22, 20, 0),
    delay: 0,
    loopTimes: 1,
    interval: 0,
})


这问题只要看一下官方文档就能自己解决


不想用官方的定时任务实现可以用 node-schedule 来实现定时任务或者自己写

// 本框内的代码已经过验证可以运行

function addDailyTask (config, func) {
  config.runNow && func()
  const nowTime = new Date().getTime()
  const timePoints = config.time.split(':').map(i => parseInt(i))
  let recent = new Date().setHours(...timePoints)
  recent >= nowTime || (recent += 24 * 3600000)
  setTimeout(() => {
    func()
    setInterval(func, config.interval * 3600000)
  }, recent - nowTime)
}

function kuaishoulive () {
    // you code
}

config = {//参数的说明
  interval: 1, //间隔天数,间隔为整数
  runNow: false, //是否立即运行
  time: "17:35:00" //执行的时间点 时在0~23之间
}

config1 = {//参数的说明
  interval: 1, //间隔天数,间隔为整数
  runNow: false, //是否立即运行
  time: "18:20:00" //执行的时间点 时在0~23之间
}

config2 = {//参数的说明
  interval: 1, //间隔天数,间隔为整数
  runNow: false, //是否立即运行
  time: "22:20:00" //执行的时间点 时在0~23之间
}

addDailyTask(config, kuaishoulive);
addDailyTask(config1, kuaishoulive);
addDailyTask(config2, kuaishoulive);

代码摘自: js实现每日定时任务 - 自在逍遥处 - 博客园 (cnblogs.com)



autojs定时任务模块, 官方实现的定时任务效率比自己用javascript写要好, 官方的任务管理是通过Java实现的, 这个com.stardust.autojs.core.timing.TimedTask就是java层的.

module.exports = function(runtime, scope){
    var timers = Object.create(runtime.timers);
    var TimedTask = com.stardust.autojs.core.timing.TimedTask;
    var IntentTask = com.stardust.autojs.core.timing.IntentTask;
    var TimedTaskManager = com.stardust.autojs.core.timing.TimedTaskManager.Companion.getInstance();
    var bridges = require("__bridges__");

    scope.__asGlobal__(timers, ['setTimeout', 'clearTimeout', 'setInterval', 'clearInterval', 'setImmediate', 'clearImmediate']);

    scope.loop = function(){
        console.warn("loop() has been deprecated and has no effect. Remove it from your code.");
    }

    function parseConfig(c) {
        let config = new com.stardust.autojs.execution.ExecutionConfig();
        config.delay = c.delay || 0;
        config.interval = c.interval || 0;
        config.loopTimes = (c.loopTimes === undefined)? 1 : c.loopTimes;
        return config;
    }

    function parseDateTime(clazz, dateTime) {
        if(typeof(dateTime) == 'string') {
            return TimedTask.Companion.parseDateTime(clazz, dateTime);
        } else if(typeof(dateTime) == 'object' && dateTime.constructor === Date) {
            return TimedTask.Companion.parseDateTime(clazz, dateTime.getTime());
        } else if(typeof(dateTime) == 'number') {
            return TimedTask.Companion.parseDateTime(clazz, dateTime);
        } else {
            throw new Error("cannot parse date time: " + dateTime);
        }
    }

    function addTask(task) {
        TimedTaskManager.addTaskSync(task);
    }
    
    timers.addDailyTask = function (task) {
        let localTime = parseDateTime("LocalTime", task.time);
        let timedTask = TimedTask.Companion.dailyTask(localTime, files.path(task.path), parseConfig(task));
        addTask(timedTask);
        return timedTask;
    }

    var daysEn = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
    var daysCn = ['一', '二', '三', '四', '五', '六', '日'];

    timers.addWeeklyTask = function (task) {
        let localTime = parseDateTime("LocalTime", task.time);
        let timeFlag = 0;
        for(let i = 0; i < task.daysOfWeek.length; i++) {
            let dayString = task.daysOfWeek[i];
            let dayIndex = daysEn.indexOf(dayString);
            if(dayIndex == -1) {
                dayIndex = daysCn.indexOf(dayString);
            }
            if(dayIndex == -1) {
                throw new Error('unknown day: ' + dayString);
            }
            timeFlag |= TimedTask.Companion.getDayOfWeekTimeFlag(dayIndex + 1);
        }
        let timedTask = TimedTask.Companion.weeklyTask(localTime, new java.lang.Long(timeFlag), files.path(task.path), parseConfig(task));
        addTask(timedTask);
        return timedTask;
    }

    timers.addDisposableTask = function (task) {
        let localDateTime = parseDateTime("LocalDateTime", task.date);
        let timedTask = TimedTask.Companion.disposableTask(localDateTime, files.path(task.path), parseConfig(task));
        addTask(timedTask);
        return timedTask;
    }

    timers.addIntentTask = function (task) {
        let intentTask = new IntentTask();
        intentTask.setScriptPath(files.path(task.path));
        task.action && intentTask.setAction(task.action);
        addTask(intentTask);
        return intentTask;
    }

    timers.getTimedTask = function(id) {
        return TimedTaskManager.getTimedTask(id);
    }

    timers.getIntentTask = function(id) {
        return TimedTaskManager.getIntentTask(id);
    }

    timers.removeIntentTask = function(id) {
        let task = timers.getIntentTask(id);
        return task && TimedTaskManager.removeTaskSync(task);
    }

    timers.removeTimedTask = function(id) {
        let task = timers.getTimedTask(id);
        return task && TimedTaskManager.removeTaskSync(task);
    }

    timers.queryTimedTasks = function (options, callback) {
        var sql = '';
        var args = [];
        function sqlAppend(str) {
            if(sql.length == 0) {
                sql += str;
            } else {
                sql += ' AND ' + str;
            }
            return true;
        }
        options.path && sqlAppend('script_path = ?') && args.push(options.path);
        return bridges.toArray(TimedTaskManager.queryTimedTasks(sql ? sql : null, args));
    }

    timers.queryIntentTasks = function (options, callback) {
        var sql = '';
        var args = [];
        function sqlAppend(str) {
            if(sql.length == 0) {
                sql += str;
            } else {
                sql += ' AND ' + str;
            }
            return true;
        }
        options.path && sqlAppend('script_path = ?') && args.push(options.path);
        options.action && sqlAppend('action = ?') && args.push(options.action);
        return bridges.toArray(TimedTaskManager.queryIntentTasks(sql ? sql : null, args));
    }

    return timers;
}


最后于 2022-8-9 04:32 被微启宇编辑 ,原因:
雪    币: 551
活跃值: (154)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
糊涂大叔 2022-8-9 22:22
8
0
给我优化一下代码,这个不行,老是一直执行
雪    币: 2110
活跃值: (5637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-8-10 07:10
9
0

其实你没必要写死开播时间, 直播平台一般有主播直播间状态的api, 只要通过平台的api获取直播间状态就行了. 写死开播时间反而增加了代码的复杂度. 写代码是能不增加复杂度就别瞎加.


像这种抓直播间状态的小项目我是写过好几个的, 有b站抓弹幕的, 有b站直播录制的, 有海外色Q直播录制兼抓弹幕的...可以说很多平台都有提供相应的直播间状态的api.

最后于 2022-8-10 07:13 被微启宇编辑 ,原因:
雪    币: 551
活跃值: (154)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
糊涂大叔 2022-8-10 13:48
10
0
留个联系方式,爱我佳鑫
雪    币: 551
活跃值: (154)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
糊涂大叔 2022-8-10 22:00
11
0
还有谁可以搞的定
雪    币: 2110
活跃值: (5637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-8-11 04:19
12
0
mb_mezxqhjq 还有谁可以搞的定
前面哪个兄弟没帮你解决?
雪    币: 551
活跃值: (154)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
糊涂大叔 2022-8-12 22:11
13
0
参考网址:https://www.52pojie.cn/thread-1643685-1-1.html  能写个EXE,自动上传直播间ID么
雪    币: 2110
活跃值: (5637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-8-13 00:51
14
0

可以, 还有你的需求描述太模糊了, 你是要用啥格式上传到服务器? 是json? xml? txt? ...

最后于 2022-8-13 07:10 被微启宇编辑 ,原因:
雪    币: 551
活跃值: (154)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
糊涂大叔 2022-8-13 13:03
15
0
json或者txt
雪    币: 2110
活跃值: (5637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-8-13 13:38
16
0

快手在移动端返回的页面里有 window.pageData 这个数据, 如果主播是在直播状态那它里面的 "living": true, 就说明主播是在直播状态. 

而在PC端的返回页面里则是 window.__APOLLO_STATE__ 这个数据里的 "User:yzl365893841": { 里面有 "living": true 来标识主播是否在直播状态

最后于 2022-8-13 14:02 被微启宇编辑 ,原因:
雪    币: 551
活跃值: (154)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
糊涂大叔 2022-8-13 20:49
17
0
要的是AUTOJS代码,代码,,这些东西我每天光csdn看的好多。
雪    币: 2110
活跃值: (5637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-8-13 23:15
18
0
mb_mezxqhjq 要的是AUTOJS代码,代码,,这些东西我每天光csdn看的好多。
搞不清你的需求是啥, 一会autojs 一会又要做成服务, autojs是安卓端自动化辅助用得(主要是自动点击).
雪    币: 551
活跃值: (154)
能力值: ( LV1,RANK:10 )
在线值:
发帖
回帖
粉丝
糊涂大叔 2022-8-25 21:00
19
0
结贴,大神 们看不上这点米。家里看来不缺。
雪    币: 2110
活跃值: (5637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-8-27 03:22
20
0
mb_mezxqhjq 结贴,大神 们看不上这点米。家里看来不缺。

雪    币: 1904
活跃值: (3316)
能力值: ( LV6,RANK:81 )
在线值:
发帖
回帖
粉丝
KingSelyF 1 2022-9-5 00:46
21
0
if ((userid != null) && (usertime == parseInt(myDate.getHours().toString())) && (parseInt(myDate.getMinutes().toString()) > parseInt(fendata)) && (parseInt(myDate.getMinutes().toString()) < (parseInt(fendata) + 10)))//首先小时相等,分钟大于开播分钟
                    {
                        console.error(时间() + ":开始执行任务")


游客
登录 | 注册 方可回帖
返回