// ==UserScript==
// @name 新浪微博视频下载
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author hitori-Jnai
// @match https://weibo.com/tv/v/*
// @grant GM_download
// @grant GM_xmlhttpRequest
// @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
// @downloadURL https://update.greasyfork.icu/scripts/378987/%E6%96%B0%E6%B5%AA%E5%BE%AE%E5%8D%9A%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD.user.js
// @updateURL https://update.greasyfork.icu/scripts/378987/%E6%96%B0%E6%B5%AA%E5%BE%AE%E5%8D%9A%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD.meta.js
// ==/UserScript==
(function() {
'use strict';
var $ = window.jQuery;
//alert("helllo world");直接就运行了.
$(function(){
// 1.获取播放器(video)对象
var video = $("video");
var video_url = null;
if (video) {
video_url = "http:" + video.attr("src"); //获取视频链接地址
console.log("url: "+video_url);
}
//2.视频下载按钮的html代码
var down_btn_html ='\
\
\
\
\
\
\
视频下载\
\
\
\
\
\
\
\
\
\
\
';
//3.网页中插入按钮
var ul_tag = $("div.WB_handle>ul");
if (ul_tag) {
ul_tag.removeClass("WB_row_r3").addClass("WB_row_r4").append(down_btn_html);
}
//与元数据块中的@grant值相对应,功能是生成一个style样式
//GM_addStyle('#down_video_btn{color:#fa7d3c;}');
//4.getName 下载
var downloader = {
getFileName: (url, rule_start, rule_end) => {
var start = url.lastIndexOf(rule_start) + 1;
var end = url.lastIndexOf(rule_end);
return url.substring(start, end);
},
headers: {
"Host": "f.us.sinaimg.cn",
"Connection": "keep - alive",
"Accept - Encoding": "identity;q = 1,*;q = 0",
"User - Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36",
"chrome - proxy": "frfr",
"Accept": "*/*",
"Referer": "https://weibo.com/tv/v/FxUpOEzBQ?from=movie",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
"Range": "bytes=0-"
},
download:function(url, fName){
GM_xmlhttpRequest({
method: 'GET',
url: url,
headers: this.headers,
responseType: 'blob',
onload: response => {
console.log(response.status);
console.log(response.responseHeaders);
var a = document.createElement("a");
a.href = window.URL.createObjectURL(response.response);
a.download =fName || downloader.getFileName(url, "/", "?");
a.click();
window.URL.revokeObjectURL(a.href);
}
});
}
};
//5.给按钮添加click事件,加上链接
$("#down_video_btn").click(function () {
if (video_url) {
console.log(video_url);
var filename = downloader.getFileName(video_url, "/", "?");
//"#down_video_btn").prop({href:video_url,download:filename});
downloader.download(video_url);
}else {
alert("没找到下载链接");
}
});
});
})();