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/ 截图:
![github](https://raw.githubusercontent.com/unclehking/tumblrVideoDown/master/screenshot/1.webp "github") ![github](https://raw.githubusercontent.com/unclehking/tumblrVideoDown/master/screenshot/2.webp "github") ![github](https://raw.githubusercontent.com/unclehking/tumblrVideoDown/master/screenshot/3.webp "github") ### 离线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-----