Repository: unclehking/tumblr-video-downloader
Branch: master
Commit: 47197d9d95f8
Files: 7
Total size: 7.6 KB
Directory structure:
gitextract_mlvo_z1v/
├── README.md
├── tumblrVideoDown/
│ ├── manifest.json
│ └── res/
│ ├── css/
│ │ └── style.css
│ └── js/
│ ├── background.js
│ └── main.js
├── tumblrVideoDown.crx
└── tumblrVideoDown.pem
================================================
FILE CONTENTS
================================================
================================================
FILE: README.md
================================================
# tumblrVideoDown
tumblr视频下载chrome扩展程序(兼容各大“国产”浏览器急速版)
###chrome网上应用商店:
https://chrome.google.com/webstore/detail/njnkdhldbefijmdmjongfghcelgajjli
### Firefox附加组件商店:
https://addons.mozilla.org/zh-CN/firefox/addon/tumblrvideodownloader/
截图:



### 离线chrome扩展程序(.crx文件)安装方式:
1、打开chrome扩展程序页面 chrome://extensions/ 或者 菜单 > 更多工具> 扩展程序;
2、把.crx文件拖进该页面。
### 2016-05-23
1、修复video控制条被隐藏的bug;
2、新增“复制视频真实地址到剪贴板”。
================================================
FILE: tumblrVideoDown/manifest.json
================================================
{
"update_url": "https://clients2.google.com/service/update2/crx",
"name": "Tumblr Video Downloader",
"short_name": "A Chrome Extension for download Tumblr video.",
"version": "1.6",
"author": "HKing",
"description":"A Chrome Extension for easily download video from Tumblr website.",
"background": {
"scripts": ["res/js/background.js"]
},
"content_scripts": [
{
"matches": ["*://*.tumblr.com/*"],
"css":["res/css/style.css"],
"js": ["res/js/jquery.min.js","res/js/main.js"],
"all_frames": true,
"run_at":"document_end"
}
],
"permissions": [
"contextMenus","*://*.tumblr.com/*","downloads"
],
"icons": {
"16": "res/pic/icon_16.png",
"48": "res/pic/icon_48.png",
"128": "res/pic/icon_128.png"
},
"browser_action": {
"name": "Tumblr Video Downloader",
"default_icon": "res/pic/icon_128.png"
},
"manifest_version": 2
}
================================================
FILE: tumblrVideoDown/res/css/style.css
================================================
/*HKing 2016-04-29*/
video.vjs-tech{
position: absolute !important;
top: 0px !important;
left: 0px !important;
z-index: 998 !important;
}
.hkingWrap{
position: absolute;
right: 4px;
top: 4px;
width: 60px;
height: 60px;
border-radius: 100%;
line-height: 28px;
z-index: 999 !important;
background-color: #ff0000;
display: none;
text-align: center;
cursor: pointer;
overflow: hidden;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1),
4px 0 6px rgba(0, 0, 0, 0.1),
0 -4px 6px rgba(0, 0, 0, 0.1),
-4px 0 6px rgba(0, 0, 0, 0.1);
}
.hkingWrap::before{
display: block;
content: " ";
width: 26px;
height: 4px;
background-color: #fff;
border-radius: 3px;
position: absolute;
left: 16px;
bottom: 12px;
}
.hkingWrap::after{
display: block;
content: " ";
height: 32px;
width: 4px;
background-color: #fff;
border-radius: 3px;
position: absolute;
left: 27px;
bottom: 20px;
}
.hkingWrap > div::before{
display: block;
content: " ";
height: 22px;
width: 4px;
background-color: #fff;
border-radius: 3px;
position: absolute;
left: 20px;
bottom: 18px;
transform: rotate(-45deg);
}
.hkingWrap > div::after{
display: block;
content: " ";
height: 22px;
width: 4px;
background-color: #fff;
border-radius: 3px;
position: absolute;
left: 34px;
bottom: 18px;
transform: rotate(45deg);
}
.hkingWrap > p{
display: none;
width: 100%;
height: 100%;
background-color: green;
position: relative;
z-index: 998;
}
.hkingWrap > p:before{
display: block;
content: " ";
height: 20px;
width: 4px;
background-color: #fff;
border-radius: 3px;
position: absolute;
left: 19px;
bottom: 13px;
transform: rotate(-45deg);
}
.hkingWrap > p:after{
display: block;
content: " ";
height: 32px;
width: 4px;
background-color: #fff;
border-radius: 3px;
position: absolute;
left: 34px;
bottom: 12px;
transform: rotate(40deg);
}
.crt-video:hover .hkingWrap{
display: block;
}
.crt-skin-default.vjs-has-started .vjs-control-bar{
z-index: 1000 !important;
}
================================================
FILE: tumblrVideoDown/res/js/background.js
================================================
/*HKing 2016-06-25*/
const url = "www.tumblr.com";
const lang = navigator.language;
chrome.runtime.onMessage.addListener(
f_nancy = (request, sender, sendResponse) =>{
chrome.downloads.download(
{
url: request.url
},
id=>{}
);
sendResponse({info:"downloading"});
}
);
chrome.browserAction.onClicked.addListener( tab =>{
chrome.tabs.getAllInWindow(null, f_nancy = tabs =>{
for(let t of tabs){
if (t.url && t.url.match(url)) {
f_nancy.tTab = true;
chrome.tabs.update(t.id, {selected:true});
break;
}
}
!f_nancy.tTab && chrome.tabs.create({"url":`https://${url}`, "selected":true});
});
});
lang === "zh-CN"
&&
(function(){
chrome.contextMenus.create({
"title": "迅雷下载此视频",
"contexts":["video"],
"id":"thunderDownload",
"documentUrlPatterns":["*://*.tumblr.com/*"]
});
chrome.contextMenus.onClicked.addListener((info,tab)=>{
let rUrl = `https://vt.tumblr.com/${/tumblr_.*/.exec(info.srcUrl)[0].replace(/\//g,"_")}.mp4`,
thunderUrl = `thunder://${window.btoa(`AA${rUrl}ZZ`)}`;
if(info.menuItemId === "thunderDownload"){
chrome.tabs.sendMessage(
tab.id,
{
url:thunderUrl,
oldUrl:info.srcUrl,
rUrl:rUrl
},
response=>{}
);
}
});
})();
================================================
FILE: tumblrVideoDown/res/js/main.js
================================================
/*HKing 2016-04-29*/
var ifr;
chrome.runtime.onMessage.addListener(
f_nancy = (request, sender, sendResponse) =>{
var v = document.querySelector("video").querySelector("source");
if(v.src==request.oldUrl || self==top){
ifr = ifr || (f_nancy.isFirst=true,document.createElement('iframe'));
ifr.src = request.url;
f_nancy.isFirst && document.body.appendChild(ifr);
};
return false;
}
);
document.addEventListener('mouseover', (e) =>{
if(e.target.nodeName == "VIDEO"){
let $t = jQuery(e.target);
if(!$t.next().hasClass('hkingWrap')){
let oUrl = e.target.querySelector("source").src,
rUrl = `https://vt.tumblr.com/${/tumblr_.*/.exec(oUrl)[0].replace(/\//g,"_")}.mp4`,
hkingWrap = ``;
jQuery($t).after(hkingWrap);
$t.next().click( (event) =>{
var target = event.target;
chrome.runtime.sendMessage(
{
url:target.dataset.url
},
response=>{
$(target).find("p").show().delay(2000).fadeOut(1000);
}
)
return false;
});
}
};
});
================================================
FILE: tumblrVideoDown.pem
================================================
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxPC3dwO/iAl3f
aTbQUkDIcTHSIkKllNvdVKuX02bdzBno+OF7wfuIdflH6Xegbxd5r61weS0qSfZY
Tridmt3Wv77sfvTxeyO0Q4v3tYhUa+Z2XGj4fmCGN10bPcKxheP2BgwGLt0dQ0IA
l98Hdti7FAnTlG5ZSLZxCdXGBxqkY474hRkfpzbVmW9XRqfkFlAVq8OfNgWnJoU2
7hgOqrElF6d8gCFi/ChFNaHaMwbv1w0J/9NLp8XdXYs0dzFn7B+WH9V0AZM9tglZ
EwkyFjjo6PMvht26jtJqOUu1PrFQkFmx43Hl4Ls/qQk3roZAApXzeIVDj3tRIBoo
WqKIyX5/AgMBAAECggEARJXGJgcwjSRfUUI07P63hRmQrwGFCvCE+Kx4TqOHLhN6
f1Y4Y5zYiqEkmzh0i4gR7IwYMOsjmDbQ9rFX7d1tNVo0Nu6WORBu66Yr9uqv3AN5
RppSIL8++RFZnV4UBoCKi70hUA84j8dkNjiPHSNXkWWau963qSNjPnEQ4bYEEFK1
hBrzDRXwBmdQ5VlUGR6vh0oxi18BVdkkFkGJHxbi0ohNsRtMEARoKRr2WHHDtpjA
jCdopmuKCReVo6WFr8weZAiqmeyESMMd8t3MBqWWYeYIYdaqU/CQDCb5c+QQ1fAp
q+WOg492MEwtdoB3iZ9XAFZWFq7rsK/8bMIlQWSMIQKBgQDf2WL3NhYqsoqxuCzy
n2doiiee8fxSvskACYjf7yuECn+Zy5vj4P7NJ05X6mZ3GTv8Rzd+CfytVb0LX98h
u7IvIx1NqvboQ+GsdAyEYaOXevvyftavwgIkWVbA1qkBz8sfz/QGD4fxfaVIU3bD
1D9svA966qpyKwyHs1ay9xMc7wKBgQDKsNvyFeP4cIwwWyI2h9UQcnR6iutrxmng
UG+xeDwzqTGqVEmBA86T0jIIOBfIVQVye/EOH8eyw23WzNHeGML04QvujH7HoXC5
vdovnUiy5cpqwGy1P26wqb3k7n+C4u1DiDSK3aUse2Guy7WvSAespY4kfbp8GIXt
uMCGvsPXcQKBgFVj78St9TbEdPPmdf73n9LZINQZK0/FR5ekC3qhGdB80MAyU31S
TuCjpdcTq5KzJZbO8/Q4ixL0KfE02UFdAFPK6Vq/ZQClJGlMu5mkRWt7lrCigfL5
5ydGjTlyqXXvdmTkRwoo0orkizBT5nI9fRRViPIyomJ62YTKfMA4UCoxAoGBAMCT
1vWknMvAS0HqZJBA8EvHIyoG8XSduJyab/TDExfWaky19nxw3IYQEN9ERDxfo2RJ
pBdSVI9hJOwQAFovVpQJeie1LwOHPK4NVs8kdh0bPP2+Q8rVMNsC+1wWyenWp60h
LSK/Qh8IPyAvhji6jCgZx/qdxl//gMgDYFDl0PbRAoGAEz7WE67daAAAPZDFAh5O
w4JKyRQaOzFBbvKTf9eFQfkhGqRstHuDmKbMOH8W4pctApJyMo5xCtmcWyj4tTlN
94hf7b7d6hQH2XXgPKrLd1IeEPucREj3N+a3XjaIBECaXRZ/ndbwWM5qQX3/sgxe
pGfBqYyvvp7gv9utifmU+E0=
-----END PRIVATE KEY-----