zoukankan      html  css  js  c++  java
  • 微信公众平台:前端批量下载语音并重命名文件

    一、需求的产生

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

    二、难点和解决方案

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

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

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

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

     

    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。

    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为每一页删除的个数。

    //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);
    

      

  • 相关阅读:
    浏览器刷新缓存机制
    Asp.Net获取IP的方法
    c# 了解委托
    用什么方法来判断字符串是否存在的函数
    怎么样从地址中获得数据?
    新网站如何不被百度查封,请注意以下事项。
    搜索引擎如何抓取网页和如何索引网页?
    什么情况下include_path不起作用?
    用户注册演示程序操作案例
    用户提交的cookie提交时为什么传不到服务器
  • 原文地址:https://www.cnblogs.com/gabrielchen/p/5410833.html
Copyright © 2011-2022 走看看