上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

关于调用下载,怎么调用浏览器下载修改文件名

[复制链接]
  • TA的每日心情
    开心
    2024-4-6 10:52
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    4

    主题

    4

    回帖

    15

    积分

    助理工程师

    积分
    15
    发表于 2024-4-27 13:31:20 | 显示全部楼层 | 阅读模式
    悬赏2油猫币未解决

    GM_download下载时默认下载吗,看不到进度,调用了多少次都不知道,结果后面发现下载了一大堆。

    示范:https://rd-sycdn.kuwo.cn/c8376eaa3b09357dc36b6513393f5855/662c8c40/resource/m3/13/26/2683817674.mp4

    请问怎么调用浏览器的下载,比如下载上面这个链接,直接在浏览器打开他会进入播放,而不会跳转到下载,想实现调用浏览器下载,并且自动改名为:一定要爱你.mp4,请问怎么调用。

  • TA的每日心情
    奋斗
    昨天 20:50
  • 签到天数: 171 天

    [LV.7]常住居民III

    23

    主题

    33

    回帖

    210

    积分

    荣誉开发者

    积分
    210

    新人报道油中2周年荣誉开发者

    发表于 2024-4-27 15:22:59 | 显示全部楼层

    本帖最后由 zip11 于 2024-4-27 15:45 编辑

    本帖最后由 zip11 于 2024-4-27 15:44 编辑

    必须是前台脚本,模拟 点击 链接,调用游览器自带下载器,

    
    // ==UserScript==
    // @name         video-down-2
    // @namespace    https://bbs.tampermonkey.net.cn/
    // @version      0.1.0
    // @description  try to take over the world!
    // @author       You
    // @match        https://bbs.tampermonkey.net.cn
    // @grant       GM_xmlhttpRequest
    // @connect     https://media.w3.org/*
    // ==/UserScript==
    
    (function() {
        'use strict';
    
        // Your code here...
    
        // 定义下载文件函数
        function downloadFile(url, fileName) {
    
            // 发送 GM_xmlhttpRequest 请求
            GM_xmlhttpRequest({
                method: "GET",
                url: url,
                responseType: "blob", // 将响应类型设置为 blob
                onload: function(response) {
                    // 创建 blob 对象
                    var blob = new Blob([response.response], { type: response.response.type });
    
                    // 创建下载链接
                    var url = window.URL.createObjectURL(blob);
    
                    // 创建 a 标签并设置下载链接及文件名
                    var a = document.createElement("a");
                    a.href = url;
                    a.download = fileName;
    
                    // 模拟点击下载
                    a.click();
    
                    // 释放 blob 对象
                    window.URL.revokeObjectURL(url);
                },
                onprogress: function(event) {
                    // 获取下载进度信息
                    var percentComplete = (event.loaded / event.total) * 100;
                    console.log("下载进度:" + percentComplete.toFixed(2) + "%");
                },
                onerror: function(error) {
                    console.error('下载文件失败:', error);
                }
            });
        }
    
        // 调用下载文件函数并传入 URL 和自定义文件名
        downloadFile('https://media.w3.org/2010/05/sintel/trailer.mp4', 'trailer.mp4');
    
    })();
    
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-6 10:52
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    4

    主题

    4

    回帖

    15

    积分

    助理工程师

    积分
    15
    发表于 2024-4-27 17:20:39 | 显示全部楼层

    zip11 发表于 2024-4-27 15:22

    [md]> 本帖最后由 zip11 于 2024-4-27 15:44 编辑

    必须是前台脚本,模拟 点击 链接,调用游览器自带下载 ...

    还是不能下载呢,@connect也有啊

    TT截图未命名.jpg

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 20:50
  • 签到天数: 171 天

    [LV.7]常住居民III

    23

    主题

    33

    回帖

    210

    积分

    荣誉开发者

    积分
    210

    新人报道油中2周年荣誉开发者

    发表于 2024-4-27 17:24:52 | 显示全部楼层
    残情 发表于 2024-4-27 17:20
    [md]还是不能下载呢,@connect也有啊

    看你的报错图片的英文说是 域名没有在 connect list,我用 脚本猫 可以正常下载,再试试 更换游览器
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-6 10:52
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    4

    主题

    4

    回帖

    15

    积分

    助理工程师

    积分
    15
    发表于 2024-4-27 19:53:21 | 显示全部楼层
    zip11 发表于 2024-4-27 15:22
    [md]> 本帖最后由 zip11 于 2024-4-27 15:44 编辑

    必须是前台脚本,模拟 点击 链接,调用游览器自带下载 ...

    不模拟点击也行,创建一个按钮点击,电击事件怎么写呢,默认浏览器下载,而且需要命名下载
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 20:50
  • 签到天数: 171 天

    [LV.7]常住居民III

    23

    主题

    33

    回帖

    210

    积分

    荣誉开发者

    积分
    210

    新人报道油中2周年荣誉开发者

    发表于 2024-4-27 20:33:32 | 显示全部楼层

    本帖最后由 zip11 于 2024-4-27 21:00 编辑

    点击事件,核心功能还是 模拟点击,只是调用方式不同
    创建一个按钮点击,

    默认浏览器下载,命名下载

    
    // ==UserScript==
    // @name         Insert Button Example
    // @namespace    http://your.namespace.com
    // @version      0.1
    // @description  Insert a button into the page and simulate a download when clicked
    // @author       Your Name
    // @match        https://example.com/*
    // @grant        GM_xmlhttpRequest
    // @connect      bbs.tampermonkey.net.cn
    // ==/UserScript==
    
    (function() {
        'use strict';
    
        // 创建按钮元素
        var button = document.createElement("button");
        button.textContent = "点击下载";
    
        // 将按钮插入到页面中
        document.body.appendChild(button);
    
        // 定义按钮点击事件处理函数
        function handleClick(event) {
            // 发送 GET 请求以模拟下载
            GM_xmlhttpRequest({
                method: "GET",
                url: "https://example.com/download/file.zip",
                responseType: "blob", // 设置响应类型为二进制数据
                onload: function(response) {
                    // 创建临时链接并模拟点击下载
                    var url = URL.createObjectURL(response.response);
                    var a = document.createElement("a");
                    a.href = url;
                    a.download = "file.zip";
                    document.body.appendChild(a);
                    a.click();
                    // 下载完成后清除临时链接
                    URL.revokeObjectURL(url);
                    // 移除临时链接元素
                    document.body.removeChild(a);
                }
            });
        }
    
        // 将点击事件处理函数绑定到按钮的点击事件上
        button.addEventListener("click", handleClick);
    })();
    
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-6 10:52
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    4

    主题

    4

    回帖

    15

    积分

    助理工程师

    积分
    15
    发表于 2024-4-28 13:15:57 | 显示全部楼层
    zip11 发表于 2024-4-27 20:33
    [md]点击事件,核心功能还是 模拟点击,只是调用方式不同
    创建一个按钮点击,

    大佬,测试了,好像还是要下载完成了(缓存完成了)才会进入下载列表,和GM_DOWNLOAD一样,遇到大文件就不知道下载状态
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-6 10:52
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    4

    主题

    4

    回帖

    15

    积分

    助理工程师

    积分
    15
    发表于 2024-4-28 13:19:17 | 显示全部楼层
    而且好像还不能离开关闭页面
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表