微信公众平台:前端批量下载语音并重命名文件

一、需求的产生

   因为公众号需要根据用户发来的语音信息以用户为单位做一些统计,而暂时未接入自己的服务器,于是花了点时间想办法从前端解决重命名文件和批量下载的问题。

 

二、难点和解决方案

   最先本人准备直接获取下载按钮,然后一个简单的循环click,就可以批量下载了,但是微信消息管理页面的下载文件的文件名是一个随机生成的消息id,并没有可读性,不能和用户关联,而前端又不能重命名服务器给出的文件。本想换用按键精灵实现,但突然看到对于音频文件,还有一个保存为素材按钮,而保存为素材按钮可以在前端传入文件名参数,于是解决方法出现。

   注:所有脚本只需在chrome的console中到对应页面执行即可

   脚本1:遍历dom节点,执行点击保存,输入文件名,选择类型等操作。

   使用:对消息管理页面,每一页运行一次,就可以在素材管理的语音中找到对应文件,文件名为发消息者微信ID。

 

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var start = new Date().getTime();
var len =$(".save_gray").length;
var len3 = $(".remark_name").length;
var userName = '';
var len2 =$('.jsTypeInput').length;
var idx =0;
 
var  clickChecked = function(len2){
    for (var j = len2-1; j >= 0; j--) {
                console.log(j+":j");
                if ($($('.jsTypeInput')[j]).attr('data-value') == '20') {
                    $($('.jsTypeInput')[j]).attr("checked",true);
                    $(".js_btn").click();
                    $(".closed ").click()
                    console.log("break closed");
                    break;
                    };
                 
                 
                };
}
var clickBTN = function(idx){
    for (var n = len3-1; n >= 0; n--) {
        console.log(n+":file");
        console.log(idx);
        if ($($(".remark_name")[n]).attr("data-id")==idx) {
            userName = $($(".remark_name")[n]).html();
            console.log(userName);
            $(".jsSaveInput").val(userName);
            len2 =$('.jsTypeInput').length;
            clickChecked(len2);
            console.log("break");
            //break;
            };
         
         
        };
};
for (var i = 0; i < len; i++) {
    idx =$($(".save_gray")[i]).attr('idx');
    $(".save_gray")[i].click();
    clickBTN(idx);
  $('.page_next').click()
};
var end = new Date().getTime();
console.log(end-start);

  

  脚本2:批量下载,因为打开下载窗口会卡,所以做了一点延迟处理。

  使用:进入素材管理界面,每一页运行脚本,其中 setInterval("dlfn(20)",1500);的21,为下载的文件个数。因为下载一页有21个文件,这里填入21。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var m = 0;
var dlfn = function(num){
    if (m==num) {
        window.clearInterval(dl);
        console.log("ok:"+m);
        return;
    };
    console.log("file:"+m);
    $(".download_gray")[m].click();
    m++;
     
    console.log("num:"+num);
     
}
var dl =setInterval("dlfn(21)",1500);

  脚本3:删除作为中转的素材文件(也可以不删除)

  使用:进入素材管理界面,每一页运行脚本,其中var dele =setInterval("test(20)",1000);的21为每一页删除的个数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//delete
 
    var i = 1;
    var test = function(num){
         
        if (i==num) {
        window.clearInterval(dele);
        console.log("i:"+i);
        };
        console.log("delete:"+i+",The Operations are an irrevocable");
        i++;
        $(".del_gray")[0].click();
        // setTimeout(dlfn(i),1000)
        $(".btn_primary")[1].click();
         
         
    }
      
 
    var dele =setInterval("test(20)",1000);

  

posted @   GabrielChenCN  阅读(1596)  评论(5编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示