- // ==UserScript==
- // @name 下载链接获取工具
- // @version 0.0.3
- // @author alan
- // @description 方便获取视频网站下载链接
- // @match https://www.btmao.cc/*
- // @match http://www.tldm.net/*
- // @match https://www.xl720.com/thunder/*
- // @match https://www.domp4.com/html/*
- // @namespace alanlang
- // ==/UserScript==
-
- (function webpackUniversalModuleDefinition(root, factory) {
- if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory();
- else if(typeof define === 'function' && define.amd)
- define([], factory);
- else if(typeof exports === 'object')
- exports["bimao"] = factory();
- else
- root["bimao"] = factory();
- })(window, function() {
- return /******/ (function(modules) { // webpackBootstrap
- /******/ // The module cache
- /******/ var installedModules = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/
- /******/ // Check if module is in cache
- /******/ if(installedModules[moduleId]) {
- /******/ return installedModules[moduleId].exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = installedModules[moduleId] = {
- /******/ i: moduleId,
- /******/ l: false,
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/ // Flag the module as loaded
- /******/ module.l = true;
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /******/
- /******/ // expose the modules object (__webpack_modules__)
- /******/ __webpack_require__.m = modules;
- /******/
- /******/ // expose the module cache
- /******/ __webpack_require__.c = installedModules;
- /******/
- /******/ // define getter function for harmony exports
- /******/ __webpack_require__.d = function(exports, name, getter) {
- /******/ if(!__webpack_require__.o(exports, name)) {
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
- /******/ }
- /******/ };
- /******/
- /******/ // define __esModule on exports
- /******/ __webpack_require__.r = function(exports) {
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
- /******/ }
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
- /******/ };
- /******/
- /******/ // create a fake namespace object
- /******/ // mode & 1: value is a module id, require it
- /******/ // mode & 2: merge all properties of value into the ns
- /******/ // mode & 4: return value when already ns object
- /******/ // mode & 8|1: behave like require
- /******/ __webpack_require__.t = function(value, mode) {
- /******/ if(mode & 1) value = __webpack_require__(value);
- /******/ if(mode & 8) return value;
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
- /******/ var ns = Object.create(null);
- /******/ __webpack_require__.r(ns);
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
- /******/ return ns;
- /******/ };
- /******/
- /******/ // getDefaultExport function for compatibility with non-harmony modules
- /******/ __webpack_require__.n = function(module) {
- /******/ var getter = module && module.__esModule ?
- /******/ function getDefault() { return module['default']; } :
- /******/ function getModuleExports() { return module; };
- /******/ __webpack_require__.d(getter, 'a', getter);
- /******/ return getter;
- /******/ };
- /******/
- /******/ // Object.prototype.hasOwnProperty.call
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
- /******/
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "";
- /******/
- /******/
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(__webpack_require__.s = 0);
- /******/ })
- /************************************************************************/
- /******/ ({
-
- /***/ "./node_modules/js-base64/base64.js":
- /*!******************************************!*\
- !*** ./node_modules/js-base64/base64.js ***!
- \******************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
- * base64.js
- *
- * Licensed under the BSD 3-Clause License.
- * http://opensource.org/licenses/BSD-3-Clause
- *
- * References:
- * http://en.wikipedia.org/wiki/Base64
- */
- ;(function (global, factory) {
- true
- ? module.exports = factory(global)
- : undefined
- }((
- typeof self !== 'undefined' ? self
- : typeof window !== 'undefined' ? window
- : typeof global !== 'undefined' ? global
- : this
- ), function(global) {
- 'use strict';
- // existing version for noConflict()
- global = global || {};
- var _Base64 = global.Base64;
- var version = "2.5.2";
- // if node.js and NOT React Native, we use Buffer
- var buffer;
- if ( true && module.exports) {
- try {
- buffer = eval("require('buffer').Buffer");
- } catch (err) {
- buffer = undefined;
- }
- }
- // constants
- var b64chars
- = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
- var b64tab = function(bin) {
- var t = {};
- for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
- return t;
- }(b64chars);
- var fromCharCode = String.fromCharCode;
- // encoder stuff
- var cb_utob = function(c) {
- if (c.length < 2) {
- var cc = c.charCodeAt(0);
- return cc < 0x80 ? c
- : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))
- + fromCharCode(0x80 | (cc & 0x3f)))
- : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))
- + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
- + fromCharCode(0x80 | ( cc & 0x3f)));
- } else {
- var cc = 0x10000
- + (c.charCodeAt(0) - 0xD800) * 0x400
- + (c.charCodeAt(1) - 0xDC00);
- return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))
- + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))
- + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
- + fromCharCode(0x80 | ( cc & 0x3f)));
- }
- };
- var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
- var utob = function(u) {
- return u.replace(re_utob, cb_utob);
- };
- var cb_encode = function(ccc) {
- var padlen = [0, 2, 1][ccc.length % 3],
- ord = ccc.charCodeAt(0) << 16
- | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)
- | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),
- chars = [
- b64chars.charAt( ord >>> 18),
- b64chars.charAt((ord >>> 12) & 63),
- padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),
- padlen >= 1 ? '=' : b64chars.charAt(ord & 63)
- ];
- return chars.join('');
- };
- var btoa = global.btoa ? function(b) {
- return global.btoa(b);
- } : function(b) {
- return b.replace(/[\s\S]{1,3}/g, cb_encode);
- };
- var _encode = function(u) {
- var isUint8Array = Object.prototype.toString.call(u) === '[object Uint8Array]';
- return isUint8Array ? u.toString('base64')
- : btoa(utob(String(u)));
- }
- var encode = function(u, urisafe) {
- return !urisafe
- ? _encode(u)
- : _encode(String(u)).replace(/[+\/]/g, function(m0) {
- return m0 == '+' ? '-' : '_';
- }).replace(/=/g, '');
- };
- var encodeURI = function(u) { return encode(u, true) };
- // decoder stuff
- var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
- var cb_btou = function(cccc) {
- switch(cccc.length) {
- case 4:
- var cp = ((0x07 & cccc.charCodeAt(0)) << 18)
- | ((0x3f & cccc.charCodeAt(1)) << 12)
- | ((0x3f & cccc.charCodeAt(2)) << 6)
- | (0x3f & cccc.charCodeAt(3)),
- offset = cp - 0x10000;
- return (fromCharCode((offset >>> 10) + 0xD800)
- + fromCharCode((offset & 0x3FF) + 0xDC00));
- case 3:
- return fromCharCode(
- ((0x0f & cccc.charCodeAt(0)) << 12)
- | ((0x3f & cccc.charCodeAt(1)) << 6)
- | (0x3f & cccc.charCodeAt(2))
- );
- default:
- return fromCharCode(
- ((0x1f & cccc.charCodeAt(0)) << 6)
- | (0x3f & cccc.charCodeAt(1))
- );
- }
- };
- var btou = function(b) {
- return b.replace(re_btou, cb_btou);
- };
- var cb_decode = function(cccc) {
- var len = cccc.length,
- padlen = len % 4,
- n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)
- | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)
- | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)
- | (len > 3 ? b64tab[cccc.charAt(3)] : 0),
- chars = [
- fromCharCode( n >>> 16),
- fromCharCode((n >>> 8) & 0xff),
- fromCharCode( n & 0xff)
- ];
- chars.length -= [0, 0, 2, 1][padlen];
- return chars.join('');
- };
- var _atob = global.atob ? function(a) {
- return global.atob(a);
- } : function(a){
- return a.replace(/\S{1,4}/g, cb_decode);
- };
- var atob = function(a) {
- return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g, ''));
- };
- var _decode = buffer ?
- buffer.from && Uint8Array && buffer.from !== Uint8Array.from
- ? function(a) {
- return (a.constructor === buffer.constructor
- ? a : buffer.from(a, 'base64')).toString();
- }
- : function(a) {
- return (a.constructor === buffer.constructor
- ? a : new buffer(a, 'base64')).toString();
- }
- : function(a) { return btou(_atob(a)) };
- var decode = function(a){
- return _decode(
- String(a).replace(/[-_]/g, function(m0) { return m0 == '-' ? '+' : '/' })
- .replace(/[^A-Za-z0-9\+\/]/g, '')
- );
- };
- var noConflict = function() {
- var Base64 = global.Base64;
- global.Base64 = _Base64;
- return Base64;
- };
- // export Base64
- global.Base64 = {
- VERSION: version,
- atob: atob,
- btoa: btoa,
- fromBase64: decode,
- toBase64: encode,
- utob: utob,
- encode: encode,
- encodeURI: encodeURI,
- btou: btou,
- decode: decode,
- noConflict: noConflict,
- __buffer__: buffer
- };
- // if ES5 is available, make Base64.extendString() available
- if (typeof Object.defineProperty === 'function') {
- var noEnum = function(v){
- return {value:v,enumerable:false,writable:true,configurable:true};
- };
- global.Base64.extendString = function () {
- Object.defineProperty(
- String.prototype, 'fromBase64', noEnum(function () {
- return decode(this)
- }));
- Object.defineProperty(
- String.prototype, 'toBase64', noEnum(function (urisafe) {
- return encode(this, urisafe)
- }));
- Object.defineProperty(
- String.prototype, 'toBase64URI', noEnum(function () {
- return encode(this, true)
- }));
- };
- }
- //
- // export Base64 to the namespace
- //
- if (global['Meteor']) { // Meteor.js
- Base64 = global.Base64;
- }
- // module.exports and AMD are mutually exclusive.
- // module.exports has precedence.
- if ( true && module.exports) {
- module.exports.Base64 = global.Base64;
- }
- else if (true) {
- // AMD. Register as an anonymous module.
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function(){ return global.Base64 }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- }
- // that's it!
- return {Base64: global.Base64}
- }));
-
-
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
-
- /***/ }),
-
- /***/ "./node_modules/webpack/buildin/global.js":
- /*!***********************************!*\
- !*** (webpack)/buildin/global.js ***!
- \***********************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
-
- var g;
-
- // This works in non-strict mode
- g = (function() {
- return this;
- })();
-
- try {
- // This works if eval is allowed (see CSP)
- g = g || new Function("return this")();
- } catch (e) {
- // This works if the window reference is available
- if (typeof window === "object") g = window;
- }
-
- // g can still be undefined, but nothing to do about it...
- // We return undefined, instead of nothing here, so it's
- // easier to handle this case. if(!global) { ...}
-
- module.exports = g;
-
-
- /***/ }),
-
- /***/ "./src/index.ts":
- /*!**********************!*\
- !*** ./src/index.ts ***!
- \**********************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- var _webset = __webpack_require__(/*! ./webset/webset */ "./src/webset/webset.ts");
-
- window.onload = function () {
- var button = createButton();
- var textarea = createTextarea();
- var isOpen = false;
- button.addEventListener('click', function (e) {
- var urls = getDownloadUrls();
- textarea.value = urls.join('\n');
- textarea.style.display = isOpen ? 'none' : 'block';
- button.textContent = isOpen ? '生成' : '关闭';
- isOpen = !isOpen;
-
- if (isOpen) {
- textarea.select();
- }
- });
- };
-
- function createButton() {
- var button = document.createElement('button');
- button.textContent = '生成';
- button.style.position = 'fixed';
- button.style.right = '5px';
- button.style.top = '5px';
- document.body.appendChild(button);
- return button;
- }
-
- function createTextarea() {
- var textarea = document.createElement('textarea');
- textarea.style.position = 'fixed';
- textarea.style.right = '10px';
- textarea.style.top = '30px';
- textarea.style.resize = 'none';
- textarea.style.outline = 'none';
- textarea.style.width = '500px';
- textarea.style.height = '300px';
- textarea.style.display = 'none';
- textarea.wrap = 'off';
- document.body.appendChild(textarea);
- return textarea;
- }
-
- function getDownloadUrls() {
- return _webset.webSetProvider.get(location.host).getDownloads();
- }
-
- /***/ }),
-
- /***/ "./src/webset/webset.abstract.ts":
- /*!***************************************!*\
- !*** ./src/webset/webset.abstract.ts ***!
- \***************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.AbstractWebset = void 0;
-
- var AbstractWebset = function AbstractWebset() {};
-
- exports.AbstractWebset = AbstractWebset;
-
- /***/ }),
-
- /***/ "./src/webset/webset.btmao.ts":
- /*!************************************!*\
- !*** ./src/webset/webset.btmao.ts ***!
- \************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.BtmaoWebset = void 0;
-
- var _webset = __webpack_require__(/*! ./webset.abstract */ "./src/webset/webset.abstract.ts");
-
- var _jsBase = __webpack_require__(/*! js-base64 */ "./node_modules/js-base64/base64.js");
-
- function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
-
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
- var BtmaoWebset = /*#__PURE__*/function (_AbstractWebset) {
- _inheritsLoose(BtmaoWebset, _AbstractWebset);
-
- function BtmaoWebset() {
- return _AbstractWebset.apply(this, arguments) || this;
- }
-
- var _proto = BtmaoWebset.prototype;
-
- _proto.getDownloads = function getDownloads() {
- var _this = this;
-
- return this.getThunderUrl().map(function (url) {
- return _this.decodeUrl(url);
- });
- };
-
- _proto.getThunderUrl = function getThunderUrl() {
- var length = document.getElementsByClassName('thunder_url').length;
- var urls = [];
-
- if (length) {
- for (var index = 0; index < length; index++) {
- urls.push(document.getElementsByClassName('thunder_url')[index].value);
- }
- } else {
- alert('无法获取下载链接');
- }
-
- return urls;
- };
-
- _proto.decodeUrl = function decodeUrl(thunderUrl) {
- var url = _jsBase.Base64.decode(thunderUrl.replace('thunder://', ''));
-
- return url.substring(2, url.length - 2);
- };
-
- return BtmaoWebset;
- }(_webset.AbstractWebset);
-
- exports.BtmaoWebset = BtmaoWebset;
-
- /***/ }),
-
- /***/ "./src/webset/webset.default.ts":
- /*!**************************************!*\
- !*** ./src/webset/webset.default.ts ***!
- \**************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.DefaultWebset = void 0;
-
- var _webset = __webpack_require__(/*! ./webset.abstract */ "./src/webset/webset.abstract.ts");
-
- function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
-
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
-
- var DefaultWebset = /*#__PURE__*/function (_AbstractWebset) {
- _inheritsLoose(DefaultWebset, _AbstractWebset);
-
- function DefaultWebset() {
- return _AbstractWebset.apply(this, arguments) || this;
- }
-
- var _proto = DefaultWebset.prototype;
-
- _proto.getDownloads = function getDownloads() {
- var hrefArr = document.getElementsByTagName('a'); // 获取这个页面的所有A标签
-
- var urls = [];
-
- for (var i = 0; i < hrefArr.length; i++) {
- var hrefURL = hrefArr[i].href;
-
- if (hrefURL.match('magnet')) {
- urls.push(hrefURL);
- }
- }
-
- return urls;
- };
-
- return DefaultWebset;
- }(_webset.AbstractWebset);
-
- exports.DefaultWebset = DefaultWebset;
-
- /***/ }),
-
- /***/ "./src/webset/webset.ts":
- /*!******************************!*\
- !*** ./src/webset/webset.ts ***!
- \******************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.webSetProvider = void 0;
-
- var _webset = __webpack_require__(/*! ./webset.btmao */ "./src/webset/webset.btmao.ts");
-
- var _webset2 = __webpack_require__(/*! ./webset.default */ "./src/webset/webset.default.ts");
-
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
- var WebSetProvider = /*#__PURE__*/function () {
- function WebSetProvider() {
- _defineProperty(this, "websetDict", {
- 'www.tldm.net': new _webset2.DefaultWebset(),
- 'www.btmao.cc': new _webset.BtmaoWebset(),
- 'www.xl720.com': new _webset2.DefaultWebset()
- });
- }
-
- var _proto = WebSetProvider.prototype;
-
- _proto.get = function get(key) {
- return this.websetDict[key] || new _webset2.DefaultWebset();
- };
-
- return WebSetProvider;
- }();
-
- var webSetProvider = new WebSetProvider();
- exports.webSetProvider = webSetProvider;
-
- /***/ }),
-
- /***/ 0:
- /*!****************************!*\
- !*** multi ./src/index.ts ***!
- \****************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
-
- module.exports = __webpack_require__(/*! ./src/index.ts */"./src/index.ts");
-
-
- /***/ })
-
- /******/ })["default"];
- });