马上注册,结交更多网友,浏览器插件/脚本不再愁!
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
在没有下载工具的情况下,以上的图片就是我们常用的下载方式。既然发现了包含mp4字样的链接地址,不妨继续到网页标签元素中在探索一番,说不定还会有其它的收获。
真让人惊喜,video元素中竟然有视频直链。既然这样,我们只需要获取到video的src属性,再往页面上添加个下载按钮就能撇弃资源嗅探的繁琐下载方式了!!!
思路已经想好了,那么就开始动手写代码吧。
第一步,先把最基本的框架搭好。
- // ==UserScript==
- // @icon http://weibo.com/favicon.ico
- // @name 微博视频下载助手
- // @namespace [url=mailto:1649991905@qq.com]1649991905@qq.com[/url]
- // @author 猎隼丶止戈
- // @description 下载微博视频
- // @match *://weibo.com/tv/v/*
- // @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
- // @version 0.0.1
- // @grant GM_addStyle
- // ==/UserScript==
- (function () {
- 'use strict';
-
- })();
复制代码
第二步,编写下载弹出框与获取文件名的工具对象
- var videoTool = {
- //获取文件名
- getFileName: function (url, rule_start, rule_end) {
- var start = url.lastIndexOf(rule_start) + 1;
- var end = url.lastIndexOf(rule_end);
- return url.substring(start, end);
- },
- //弹出下载框
- download: function (videoUrl, name) {
- var content = "file content!";
- var data = new Blob([content], {
- type: "text/plain;charset=UTF-8"
- });
- var downloadUrl = window.URL.createObjectURL(data);
- var anchor = document.createElement("a");
- anchor.href = videoUrl;
- anchor.download = name;
- anchor.click();
- window.URL.revokeObjectURL(data);
- }
- };
复制代码
第三步,生成一个下载按钮,并嵌入页面
- //与元数据块中的@grant值相对应,功能是生成一个style样式
- GM_addStyle('#down_video_btn{color:#fa7d3c;}');
-
- //视频下载按钮的html代码
- var down_btn_html = '<li>';
- down_btn_html += '<a href="javascript:void(0);" id="down_video_btn" class="S_txt2" title="视频下载">';
- down_btn_html += '<span class="pos">';
- down_btn_html += '<span class="line S_line1" node-type="comment_btn_text">';
- down_btn_html += '<span>';
- down_btn_html += '<em class="W_ficon ficon_video_v2 S_ficon">i</em>';
- down_btn_html += '<em>视频下载</em>';
- down_btn_html += '</span>';
- down_btn_html += '</span>';
- down_btn_html += '</span>';
- down_btn_html += ' <span class="arrow"><span class="W_arrow_bor W_arrow_bor_t"><i class="S_line1"></i><em class="S_bg1_br"></em></span></span>';
- down_btn_html += ' </li>';
-
- //将以上拼接的html代码插入到网页里的ul标签中
- var ul_tag = $("div.WB_handle>ul");
- if (ul_tag) {
- ul_tag.removeClass("WB_row_r3").addClass("WB_row_r4").append(down_btn_html);
- }
复制代码
最后一步,获取播放器(video)对象中的视频地址并编写下载按钮的单击事件
- $(function () {
- //获取播放器(video)对象
- var video = $("video");
- var video_url = null;
- if (video) {
- video_url = video.attr("src"); //获取视频链接地址
- }
-
- //执行下载按钮的单击事件并调用下载函数
- $("#down_video_btn").click(function () {
- if (video_url) {
- videoTool.download(video_url, videoTool.getFileName(video_url, "/", "?"));
- }
- });
- });
复制代码
完整代码及效果演示:
- // ==UserScript==
- // @icon http://weibo.com/favicon.ico
- // @name 微博视频下载助手
- // @namespace [url=mailto:1649991905@qq.com]1649991905@qq.com[/url]
- // @author 猎隼丶止戈
- // @description 下载微博视频
- // @match *://weibo.com/tv/v/*
- // @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
- // @version 0.0.1
- // @grant GM_addStyle
- // ==/UserScript==
- (function () {
- 'use strict';
-
- //与元数据块中的@grant值相对应,功能是生成一个style样式
- GM_addStyle('#down_video_btn{color:#fa7d3c;}');
-
- //视频下载按钮的html代码
- var down_btn_html = '<li>';
- down_btn_html += '<a href="javascript:void(0);" id="down_video_btn" class="S_txt2" title="视频下载">';
- down_btn_html += '<span class="pos">';
- down_btn_html += '<span class="line S_line1" node-type="comment_btn_text">';
- down_btn_html += '<span>';
- down_btn_html += '<em class="W_ficon ficon_video_v2 S_ficon">i</em>';
- down_btn_html += '<em>视频下载</em>';
- down_btn_html += '</span>';
- down_btn_html += '</span>';
- down_btn_html += '</span>';
- down_btn_html += ' <span class="arrow"><span class="W_arrow_bor W_arrow_bor_t"><i class="S_line1"></i><em class="S_bg1_br"></em></span></span>';
- down_btn_html += ' </li>';
-
- //将以上拼接的html代码插入到网页里的ul标签中
- var ul_tag = $("div.WB_handle>ul");
- if (ul_tag) {
- ul_tag.removeClass("WB_row_r3").addClass("WB_row_r4").append(down_btn_html);
- }
-
- var videoTool = {
- //获取文件名
- getFileName: function (url, rule_start, rule_end) {
- var start = url.lastIndexOf(rule_start) + 1;
- var end = url.lastIndexOf(rule_end);
- return url.substring(start, end);
- },
- //弹出下载框
- download: function (videoUrl, name) {
- var content = "file content!";
- var data = new Blob([content], {
- type: "text/plain;charset=UTF-8"
- });
- var downloadUrl = window.URL.createObjectURL(data);
- var anchor = document.createElement("a");
- anchor.href = videoUrl;
- anchor.download = name;
- anchor.click();
- window.URL.revokeObjectURL(data);
- }
- };
-
- $(function () {
- //获取播放器(video)对象
- var video = $("video");
- var video_url = null;
- if (video) {
- video_url = video.attr("src"); //获取视频链接地址
- }
-
- //执行下载按钮的单击事件并调用下载函数
- $("#down_video_btn").click(function () {
- if (video_url) {
- videoTool.download(video_url, videoTool.getFileName(video_url, "/", "?"));
- }
- });
- });
-
- })();
复制代码
脚本发布,首先得有个 greasyfork 帐号。点击 个人中心(即自己的昵称)-->提交脚本-->按要求填写脚本信息-->提交
脚本发布
本文作者@nn200433 |