nctot 发表于 2024-3-6 15:13

【JS脚本】批量下载QQ邮箱附件

本帖最后由 nctot 于 2024-3-7 09:13 编辑

----------------------------------2024.3.7 修改--------------------------------------------------------------
增加备注
s=0.1;//每个附件下载的时间间隔,可以自行修改,单位:秒
-------------------------------------------------------------------------------------------------步骤1.设置【下载内容保存位置】
步骤2.取消勾选【下载前询问每个文件的保存位置】

步骤3.打开【QQ邮箱>附件收藏>全部附件】
步骤4.按【F12】
步骤5.切换到【控制台 或CONSOLE】
步骤6.粘贴脚本并执行
PS:脚本会下载到最后一页,中途不想下载只能刷新结束.【本来想写成可以指定页数的,后续再看看吧】

   第一次执行会 找不到附件,按下面方法操作【请大佬赐教】

         1.按下 Ctrl+Shift+C
         2.鼠标挪到第一个附件 上方的 【文件名】,然后点一下
         3.重新执行下代码

down();
function down(){
      s_down=5;
      url="https://lib.sinaapp.com/js/jquery/1.12.4/jquery-1.12.4.min.js";
      var script = document.createElement('script');
      script.src = url;
      document.getElementsByTagName('head').appendChild(script);
      console.log("QQ邮箱半自动批量下载");
      console.log(s_down+"秒后开始下载...");
      setTimeout(function(){
                if($(".ico_attach.ico_ndownload").length==0){
                              console.log("没有找到附件,按下面方法操作");
                              console.log("1.按下 Ctrl+Shift+C");
                              console.log("2.鼠标挪到第一个附件 上方的 【文件名】,然后点一下");
                              console.log("3.重新执行下代码");
                }else{
                        console.log("本页有"+$(".ico_attach.ico_ndownload").length+"个附件");
                        arrFileUrl=[];
                        //$(".ico_attach.ico_ndownload").click();
                        $(".filecolumn.ft_l_listItem").each(function(){
                              li=$(this);
                              url=li.attr("downurl");
                              name=li.attr("filename");
                              var j={"url":url,"name":name};
                              arrFileUrl.push(j);
                        });
                        $("#div_jindu").remove();
                        flag=0;
                        s=0.1;//每个附件下载的时间间隔,可以自行修改,单位:秒
                        $("body").before("<div id='div_jindu' style='background:white;position: fixed;z-index: 99999999;top: 21px;left: 234px;'></div>");
                        span="";
                        count=arrFileUrl.length;

                        line_count=10;

                        for(var i=0;i<count;i++){
                              if(i%line_count==0&&i!=0){
                                        span+="<br>";
                              }
                              span+="<button style='height:25px;margin-right:5px;background:lightgrey;' class='file"+(i)+"'></button>";
                        }
                        $("#div_jindu").append(span);



                        fileUrl=arrFileUrl.url;
                        fileName=arrFileUrl.name;
                        downloadFile(fileUrl,fileName);

                        // Fetch the file using the fetch API
                        function downloadFile(fileUrl,fileName){
                              fetch(fileUrl)
                              .then(response => response.blob())
                              .then(blob => {
                                        $("#div_jindu").find(".file"+flag).css("background","lightgreen");
                                        //console.log(fileName+"下载完成");
                                        var downloadLink = document.createElement('a');
                                        var blobUrl = URL.createObjectURL(blob);
                                        downloadLink.href = blobUrl;
                                        downloadLink.download = fileName;
                                        document.body.appendChild(downloadLink);
                                        downloadLink.click();
                                        document.body.removeChild(downloadLink);
                                        URL.revokeObjectURL(blobUrl);
                                        flag++;
                                        if((flag)<arrFileUrl.length){
                                                setTimeout(function(){
                                                fileUrl=arrFileUrl.url;
                                                fileName=arrFileUrl.name;
                                                downloadFile(fileUrl,fileName);
                                                },s*1000);
                                        }else{
                                                
                                                next=$("").length;
                                                if(next>0){
                                                      alert("全部下载完毕");
                                                }else{
                                                      console.log("第"+$(".button_gray_l.page_count").text().split("/")+"页下载完毕,3秒后继续下一页");
                                                      $(".ico_attach.arrow_right").click();
                                                      setTimeout(function(){
                                                                down();
                                                      },3000);
                                                }
                                        }
                              })
                              .catch(error => console.error('Error downloading the file:', error+fileName+"下载失败"));
                        }
                        
                }
      },s_down*1000);
}

进度

日志提示

nctot 发表于 2024-3-8 09:11

文西思密达 发表于 2024-3-7 13:14
大佬有否计划新增一个 批量下载腾讯文档到本地的js

哈哈哈,如果有做,在艾特你.

nctot 发表于 2024-3-7 09:19

y294945022 发表于 2024-3-7 03:56
是指整个邮箱中的所有邮件的附件吗? 是否可以勾选,或分类、文件夹 下载?

目前是从当前页下载到最后一页
下载前 可以先做下筛选

ghj388486 发表于 2024-3-6 16:21

操作步骤有点多,但胜在解释通俗易通,试试!

nctot 发表于 2024-3-6 16:49

ghj388486 发表于 2024-3-6 16:21
操作步骤有点多,但胜在解释通俗易通,试试!

:rggrg之前同事问能不能搞, 有刚需,就不麻烦.

秒沉的节奏 发表于 2024-3-6 19:26

挺好,就是说不用一个一个挨个下载了,是挺不错的哈哈哈

goblack 发表于 2024-3-6 20:38

超大附件不在这个位置。。所以基本上可以认为每个附件都是小于50MB的。
附件之间等待时间过短,虽然目前腾讯不会出现拦截,但是最好还是让附件新建任务之间的等待时间更长一些。
避免对腾讯负载过大被拦截。以及让老电脑卡死。最好是附件之间也是等待5秒,反正无需操作就是等待。

hjsen 发表于 2024-3-6 21:40

qianyi9 发表于 2024-3-6 23:50

好东西,谢谢楼主了

y294945022 发表于 2024-3-7 03:56

是指整个邮箱中的所有邮件的附件吗? 是否可以勾选,或分类、文件夹 下载?

nctot 发表于 2024-3-7 09:16

goblack 发表于 2024-3-6 20:38
超大附件不在这个位置。。所以基本上可以认为每个附件都是小于50MB的。
附件之间等待时间过短,虽然目前腾 ...

感谢指教!
已添加说明,使用时,可以根据实际情况,修改间隔时间.
页: [1] 2
查看完整版本: 【JS脚本】批量下载QQ邮箱附件