fast-dirpy 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,7 +5,6 @@
5
5
 
6
6
  [![npm version][npm-version-src]][npm-version-href]
7
7
  [![npm downloads][npm-downloads-src]][npm-downloads-href]
8
- [![bundle][bundle-src]][bundle-href]
9
8
  [![JSDocs][jsdocs-src]][jsdocs-href]
10
9
  [![License][license-src]][license-href]
11
10
 
@@ -33,9 +32,9 @@ npm i fast-dirpy -g
33
32
  ### Config file
34
33
 
35
34
  > [!IMPORTANT]
36
- > `fast-dirpy.config` can be `fast-dirpy.config.['ts', 'mts', 'cts', 'js', 'mjs', 'cjs']`
35
+ > `fast-dirpy.config` can be `fast-dirpy.config.['ts', 'mts', 'cts', 'js', 'mjs', 'cjs', 'json']`
37
36
 
38
- You can create a `fast-dirpy.config.ts` file in your library root or same location in command line.
37
+ You can create a `fast-dirpy.config` file in your library root or same location in command line.
39
38
 
40
39
  ```ts
41
40
  import { defineConfig } from 'fast-dirpy'
@@ -59,17 +58,19 @@ export default defineConfig({
59
58
  # Proxy:
60
59
  # -H, --proxyHost: proxy host
61
60
  # -P, --proxyPort: proxy port
62
-
63
- fast-dirpy get https\://www.youtube.com/watch\?v\=SAXpBgkXt60 -H 127.0.0.1 -P 7890
61
+ # -c, --config: Specified external config file.
62
+ # e.g.: fast-dirpy get https://xxx -c ~/Downloads/fast-dirpy.config.json
63
+ fast-dirpy get https\://www.youtube.com/watch\?v\=6c28qWDMPBA -H 127.0.0.1 -P 7890
64
64
 
65
65
  # No proxy needed for Bilibili videos
66
+ # --bilibili: Tell fast-dirpy to get direct link from Bilibili, then bypass proxy.
66
67
  fast-dirpy get --bilibili https://www.bilibili.com/video/BV1TSPeeGE35
67
68
  ```
68
69
 
69
70
  if you have set your proxy config in `fast-dirpy.config.ts`, you can omit proxy parameters:
70
71
 
71
72
  ```shell
72
- fast-dirpy get https\://www.youtube.com/watch\?v\=SAXpBgkXt60
73
+ fast-dirpy get https\://www.youtube.com/watch\?v\=6c28qWDMPBA
73
74
  ```
74
75
 
75
76
  #### Download Video
@@ -80,16 +81,19 @@ fast-dirpy get https\://www.youtube.com/watch\?v\=SAXpBgkXt60
80
81
  # Proxy:
81
82
  # -H, --proxyHost: proxy host.
82
83
  # -P, --proxyPort: proxy port.
83
- fast-dirpy download https\://www.youtube.com/watch\?v\=SAXpBgkXt60 -p ./test.mp4 -H 127.0.0.1 -P 7890
84
+ # -c, --config: Specified external config file.
85
+ # e.g.: fast-dirpy get https://xxx -c ~/Downloads/fast-dirpy.config.json
86
+ fast-dirpy download https\://www.youtube.com/watch\?v\=6c28qWDMPBA -p ./test.mp4 -H 127.0.0.1 -P 7890
84
87
 
85
88
  # No proxy needed for Bilibili videos
89
+ # --bilibili: Tell fast-dirpy to download from a Bilibili link.
86
90
  fast-dirpy download --bilibili https://www.bilibili.com/video/BV1TSPeeGE35 -p ./test.mp4
87
91
  ```
88
92
 
89
93
  if you have set your proxy config in `fast-dirpy.config.ts`, you can omit proxy parameters:
90
94
 
91
95
  ```shell
92
- fast-dirpy download https\://www.youtube.com/watch\?v\=SAXpBgkXt60 -p ./test.mp4
96
+ fast-dirpy download https\://www.youtube.com/watch\?v\=6c28qWDMPBA -p ./test.mp4
93
97
  ```
94
98
 
95
99
  For further CLI help:
@@ -100,11 +104,14 @@ fast-dirpy --help
100
104
 
101
105
  ### Use as a library
102
106
  ```ts
103
- import { downloadVideoFromRawLink, getDirectLink, getBilibiliLink } from 'fast-dirpy'
107
+ import { downloadVideoFromRawLink, getBilibiliLink, getDirectLink } from 'fast-dirpy'
104
108
 
105
109
  // get direct link
106
110
  const link = await getDirectLink(
107
- '<url>',
111
+ {
112
+ url: '<url>',
113
+ cwd: '/path/to/external-config' // Optional: You can specify an external config file.
114
+ },
108
115
  {
109
116
  host: '127.0.0.1',
110
117
  port: 7890
@@ -120,6 +127,7 @@ const link = await getBilibiliLink(
120
127
  await downloadVideoFromRawLink({
121
128
  url: '<url>',
122
129
  path: './download.mp4',
130
+ cwd: '/path/to/external-config', // Optional: You can specify an external config file.
123
131
  proxy: {
124
132
  host: '127.0.0.1',
125
133
  port: 7890
@@ -143,8 +151,6 @@ await downloadBilibiliVideo({
143
151
  [npm-version-href]: https://npmjs.com/package/fast-dirpy
144
152
  [npm-downloads-src]: https://img.shields.io/npm/dm/fast-dirpy?style=flat&colorA=080f12&colorB=1fa669
145
153
  [npm-downloads-href]: https://npmjs.com/package/fast-dirpy
146
- [bundle-src]: https://img.shields.io/bundlephobia/minzip/fast-dirpy?style=flat&colorA=080f12&colorB=1fa669&label=minzip
147
- [bundle-href]: https://bundlephobia.com/result?p=fast-dirpy
148
154
  [license-src]: https://img.shields.io/github/license/Vincent-the-gamer/fast-dirpy.svg?style=flat&colorA=080f12&colorB=1fa669
149
155
  [license-href]: https://github.com/Vincent-the-gamer/fast-dirpy/blob/main/LICENSE
150
156
  [jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669
@@ -0,0 +1,2 @@
1
+ import{a as L,b as I,c as a}from"./chunk-HD53P4DN.js";var P=L((ne,M)=>{"use strict";a();var v=function(r){return C(r)&&!U(r)};function C(e){return!!e&&typeof e=="object"}function U(e){var r=Object.prototype.toString.call(e);return r==="[object RegExp]"||r==="[object Date]"||R(e)}var V=typeof Symbol=="function"&&Symbol.for,$=V?Symbol.for("react.element"):60103;function R(e){return e.$$typeof===$}function N(e){return Array.isArray(e)?[]:{}}function m(e,r){return r.clone!==!1&&r.isMergeableObject(e)?l(N(e),e,r):e}function k(e,r,t){return e.concat(r).map(function(n){return m(n,t)})}function B(e,r){if(!r.customMerge)return l;var t=r.customMerge(e);return typeof t=="function"?t:l}function F(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(r){return Object.propertyIsEnumerable.call(e,r)}):[]}function j(e){return Object.keys(e).concat(F(e))}function D(e,r){try{return r in e}catch{return!1}}function K(e,r){return D(e,r)&&!(Object.hasOwnProperty.call(e,r)&&Object.propertyIsEnumerable.call(e,r))}function z(e,r,t){var n={};return t.isMergeableObject(e)&&j(e).forEach(function(o){n[o]=m(e[o],t)}),j(r).forEach(function(o){K(e,o)||(D(e,o)&&t.isMergeableObject(r[o])?n[o]=B(o,t)(e[o],r[o],t):n[o]=m(r[o],t))}),n}function l(e,r,t){t=t||{},t.arrayMerge=t.arrayMerge||k,t.isMergeableObject=t.isMergeableObject||v,t.cloneUnlessOtherwiseSpecified=m;var n=Array.isArray(r),o=Array.isArray(e),i=n===o;return i?n?t.arrayMerge(e,r,t):z(e,r,t):m(r,t)}l.all=function(r,t){if(!Array.isArray(r))throw new Error("first argument should be an array");return r.reduce(function(n,o){return l(n,o,t)},{})};var G=l;M.exports=G});a();import T from"node:process";import{consola as _}from"consola";var p=_.withTag("fast-dirpy");function re(e){"CONSOLA_LEVEL"in T.env||(p.level=e?0:3)}a();import W from"node:fs";import x from"axios";import Y from"jsdom";a();var g=I(P(),1);import{createConfigLoader as H}from"unconfig";var u={timeout:2e4};async function O(e,r){let t=u,n=H({sources:[{files:["fast-dirpy.config"],extensions:["ts","mts","cts","js","mjs","cjs","json"]}],cwd:r||process.cwd(),merge:!1}),{config:o,sources:i}=await n.load();return i.length?(p.info(`Config file found: ${i[0]}`),(0,g.default)((0,g.default)(t,o),e)):(0,g.default)(t,e)}var X={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"},{JSDOM:J}=Y;async function Z(e,r=u){let{url:t,cwd:n}=e,{proxy:o,timeout:i}=await O(r,n),b=o?.host!==""?o:void 0,{data:f}=await x.get("https://dirpy.com/studio",{params:{url:t},headers:{...X,Referer:`https://dirpy.com/studio?url=${t}`},proxy:b,timeout:i}),{window:h}=new J(f),s="",c=h.document.getElementById("media-source");return c&&(s=c.src),s}async function w(e,r=u){let{path:t,url:n}=e,{proxy:o,timeout:i}=await O(r),b=o?.host!==""?o:void 0;if(n==="")return Promise.reject("Extract direct link failed!");let f=W.createWriteStream(t);return(await x({url:n,headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"},method:"GET",responseType:"stream",proxy:b,timeout:i,onDownloadProgress:s=>{let{loaded:c,total:A,progress:S}=s,E=`loaded:${c} total: ${A} progress: ${(S*100).toFixed(2)}%
2
+ `;p.info(E)}})).data.pipe(f),new Promise((s,c)=>{f.on("finish",s),f.on("error",c)})}async function ye(e,r=u){let{path:t,url:n,cwd:o}=e,i=await Z({url:n},r);await w({url:i,path:t,cwd:o},r)}a();function q(e){let r=e.match(/BV[a-zA-Z0-9]+/);return r?`https://bilibili-real-url.deno.dev/${r[0]}.mp4`:""}async function we(e){let{path:r,url:t}=e,n=q(t);n!==""?await w({url:n,path:r||"./download.mp4"}):console.error("Extract direct link failed!")}export{p as a,re as b,Z as c,w as d,ye as e,q as f,we as g};
@@ -0,0 +1 @@
1
+ import{c as i}from"./chunk-HD53P4DN.js";i();function o(p){return p}export{o as a};
package/dist/cli.js CHANGED
@@ -1 +1 @@
1
- import{a as l,c as a,d as c,e as y}from"./chunk-4ZCL2CPC.js";import{c as d}from"./chunk-LP3GSA6N.js";d();import{cac as f}from"cac";import g from"restore-cursor";var m={name:"fast-dirpy",type:"module",version:"0.1.4",description:"A simple library/CLI to download video using dirpy.com",author:"Vincent-the-gamer",license:"MIT",homepage:"https://github.com/Vincent-the-gamer/fast-dirpy#readme",repository:{type:"git",url:"git+https://github.com/Vincent-the-gamer/fast-dirpy.git"},bugs:{url:"https://github.com/Vincent-the-gamer/fast-dirpy/issues"},sideEffects:!1,main:"dist/index.js",module:"dist/index.js",types:"dist/index.d.ts",typesVersions:{"*":{".":["./dist/index.d.ts","./dist/cli.d.ts"]}},bin:{"fast-dirpy":"bin/fast-dirpy.js"},files:["dist"],scripts:{tsx:"tsx",build:"tsup",test:"vitest",dep:"taze major","lint:fix":"eslint . --fix",login:"pnpm login --registry https://registry.npmjs.com"},publishConfig:{registry:"https://registry.npmjs.com",access:"public"},dependencies:{axios:"^1.8.4",cac:"^6.7.14",jsdom:"^26.0.0","restore-cursor":"^5.1.0",unconfig:"^7.3.1"},devDependencies:{"@antfu/eslint-config":"^4.11.0","@types/node":"^22.13.17",deepmerge:"^4.3.1",eslint:"^9.23.0",taze:"^19.0.4",tsup:"^8.4.0",tsx:"^4.19.3",typescript:"^5.8.2",vitest:"^3.1.1"}};var t=f("fast-dirpy");t.command("get <url>","get video direct link.").option("--proxyHost, -H <proxyHost>","Proxy host.").option("--proxyPort, -P <proxyPort>","Proxy port.").option("--bilibili","Tell fast-dirpy to fetch a Bilibili link.").action(async(i,r)=>{let{proxyHost:o,proxyPort:n,bilibili:e}=r;if(e){if(!i.includes("bilibili.com")){console.error("Please provide a valid Bilibili URL.");return}let s=await c(i);console.log(s)}else{let p=await l(i,o?{proxy:{host:o,port:n}}:void 0);console.log(p)}});t.command("download <url>","download a video.").option("--path, -p <path>","Download destination path + filename. e.g. /xxx/example.mp4.").option("--proxyHost, -H <proxyHost>","Proxy host.").option("--proxyPort, -P <proxyPort>","Proxy port.").option("--bilibili","Tell fast-dirpy to download from a Bilibili link, then bypass proxy.").action(async(i,r)=>{let{proxyHost:o,proxyPort:n,path:e,bilibili:s}=r;s?await y({url:i,path:e}):a({url:i,path:e||"./download.mp4"},o?{proxy:{host:o,port:n}}:void 0)});t.help();t.version(m.version);t.parse();g();
1
+ import{a as n,b as d,c as f,e as g,f as x,g as h}from"./chunk-DK24QP3J.js";import{c as m}from"./chunk-HD53P4DN.js";m();import{bold as b,dim as u}from"ansis";import{cac as P}from"cac";import k from"restore-cursor";var c={name:"fast-dirpy",type:"module",version:"0.1.6",description:"A simple library/CLI to download video using dirpy.com",author:"Vincent-the-gamer",license:"MIT",homepage:"https://github.com/Vincent-the-gamer/fast-dirpy#readme",repository:{type:"git",url:"git+https://github.com/Vincent-the-gamer/fast-dirpy.git"},bugs:{url:"https://github.com/Vincent-the-gamer/fast-dirpy/issues"},sideEffects:!1,main:"dist/index.js",module:"dist/index.js",types:"dist/index.d.ts",typesVersions:{"*":{".":["./dist/index.d.ts","./dist/cli.d.ts"]}},bin:{"fast-dirpy":"bin/fast-dirpy.js"},files:["dist"],scripts:{tsx:"tsx",build:"tsup",test:"vitest",dep:"taze major","lint:fix":"eslint . --fix",login:"pnpm login --registry https://registry.npmjs.com"},publishConfig:{registry:"https://registry.npmjs.com",access:"public"},dependencies:{ansis:"^3.17.0",axios:"^1.8.4",cac:"^6.7.14",consola:"^3.4.2",jsdom:"^26.1.0","restore-cursor":"^5.1.0",unconfig:"^7.3.1"},devDependencies:{"@antfu/eslint-config":"^4.12.0","@types/node":"^22.14.1",deepmerge:"^4.3.1",eslint:"^9.25.0",taze:"^19.0.4",tsup:"^8.4.0",tsx:"^4.19.3",typescript:"^5.8.3",vitest:"^3.1.1"}};var t=P("fast-dirpy"),{version:v}=c;t.command("get <url>","get video direct link.").option("--proxyHost, -H <proxyHost>","Proxy host.").option("--proxyPort, -P <proxyPort>","Proxy port.").option("--bilibili","Tell fast-dirpy to fetch a Bilibili link, then bypass proxy.").option("--config, -c <path>","Specify an external config file.").option("--silent","Suppress non-error logs").action(async(i,r)=>{let{proxyHost:o,proxyPort:p,bilibili:e,config:l,silent:a}=r;if(d(!!a),n.info(`fast-dirpy ${u(`v${v}`)} : ${b("Direct Link Getter")}.`),e){if(!i.includes("bilibili.com")){n.error("Please provide a valid Bilibili URL.");return}let s=await x(i);console.log(s)}else{let y=await f({url:i,cwd:l},o?{proxy:{host:o,port:p}}:void 0);console.log(y)}});t.command("download <url>","download a video.").option("--path, -p <path>","Download destination path + filename. e.g. /xxx/example.mp4.").option("--proxyHost, -H <proxyHost>","Proxy host.").option("--proxyPort, -P <proxyPort>","Proxy port.").option("--bilibili","Tell fast-dirpy to download from a Bilibili link.").option("--config, -c <path>","Specify an external config file.").option("--silent","Suppress non-error logs").action(async(i,r)=>{let{proxyHost:o,proxyPort:p,path:e,bilibili:l,config:a,silent:s}=r;d(!!s),n.info(`fast-dirpy ${u(`v${v}`)} : ${b("Video Downloader")}.`),l?await h({url:i,path:e}):g({url:i,path:e||"./download.mp4",cwd:a},o?{proxy:{host:o,port:p}}:void 0)});t.help();t.version(c.version);t.parse();k();
@@ -6,11 +6,16 @@ interface DirpyOptions {
6
6
  };
7
7
  timeout?: number;
8
8
  }
9
+ interface DirectLinkParams {
10
+ url: string;
11
+ cwd?: string;
12
+ }
9
13
  interface DownloadParams {
10
14
  url: string;
11
15
  path: string;
16
+ cwd?: string;
12
17
  }
13
18
 
14
19
  declare function defineConfig(options: DirpyOptions): DirpyOptions;
15
20
 
16
- export { type DirpyOptions as D, type DownloadParams as a, defineConfig as d };
21
+ export { type DownloadParams as D, type DirectLinkParams as a, type DirpyOptions as b, defineConfig as d };
package/dist/config.d.ts CHANGED
@@ -1 +1 @@
1
- export { d as defineConfig } from './config-BACwc8Uz.js';
1
+ export { d as defineConfig } from './config-DKxT5hQw.js';
package/dist/config.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-OTOEWWYP.js";import"./chunk-LP3GSA6N.js";export{a as defineConfig};
1
+ import{a}from"./chunk-OYM7YQEE.js";import"./chunk-HD53P4DN.js";export{a as defineConfig};
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { D as DirpyOptions, a as DownloadParams } from './config-BACwc8Uz.js';
2
- export { d as defineConfig } from './config-BACwc8Uz.js';
3
-
4
- declare function getDirectLink(url: string, options?: Partial<DirpyOptions>): Promise<string>;
5
- declare function downloadVideo(params: DownloadParams, options?: Partial<DirpyOptions>): Promise<void>;
6
- declare function downloadVideoFromRawLink(params: DownloadParams, options?: Partial<DirpyOptions>): Promise<void>;
1
+ import { D as DownloadParams, a as DirectLinkParams, b as DirpyOptions } from './config-DKxT5hQw.js';
2
+ export { d as defineConfig } from './config-DKxT5hQw.js';
7
3
 
8
4
  declare function getBilibiliDirectLink(link: string): string;
9
5
  declare function downloadBilibiliVideo(params: DownloadParams): Promise<void>;
10
6
 
11
- export { DirpyOptions, DownloadParams, downloadBilibiliVideo, downloadVideo, downloadVideoFromRawLink, getBilibiliDirectLink, getDirectLink };
7
+ declare function getDirectLink(params: DirectLinkParams, options?: Partial<DirpyOptions>): Promise<string>;
8
+ declare function downloadVideo(params: DownloadParams, options?: Partial<DirpyOptions>): Promise<void>;
9
+ declare function downloadVideoFromRawLink(params: DownloadParams, options?: Partial<DirpyOptions>): Promise<void>;
10
+
11
+ export { DirectLinkParams, DirpyOptions, DownloadParams, downloadBilibiliVideo, downloadVideo, downloadVideoFromRawLink, getBilibiliDirectLink, getDirectLink };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{a as r,b as e,c as f,d as m,e as p}from"./chunk-4ZCL2CPC.js";import{a as t}from"./chunk-OTOEWWYP.js";import{c as o}from"./chunk-LP3GSA6N.js";o();export{t as defineConfig,p as downloadBilibiliVideo,e as downloadVideo,f as downloadVideoFromRawLink,m as getBilibiliDirectLink,r as getDirectLink};
1
+ import{c as r,d as e,e as f,f as m,g as p}from"./chunk-DK24QP3J.js";import{a as t}from"./chunk-OYM7YQEE.js";import{c as o}from"./chunk-HD53P4DN.js";o();export{t as defineConfig,p as downloadBilibiliVideo,e as downloadVideo,f as downloadVideoFromRawLink,m as getBilibiliDirectLink,r as getDirectLink};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fast-dirpy",
3
3
  "type": "module",
4
- "version": "0.1.4",
4
+ "version": "0.1.6",
5
5
  "description": "A simple library/CLI to download video using dirpy.com",
6
6
  "author": "Vincent-the-gamer",
7
7
  "license": "MIT",
@@ -36,21 +36,23 @@
36
36
  "access": "public"
37
37
  },
38
38
  "dependencies": {
39
+ "ansis": "^3.17.0",
39
40
  "axios": "^1.8.4",
40
41
  "cac": "^6.7.14",
41
- "jsdom": "^26.0.0",
42
+ "consola": "^3.4.2",
43
+ "jsdom": "^26.1.0",
42
44
  "restore-cursor": "^5.1.0",
43
45
  "unconfig": "^7.3.1"
44
46
  },
45
47
  "devDependencies": {
46
- "@antfu/eslint-config": "^4.11.0",
47
- "@types/node": "^22.13.17",
48
+ "@antfu/eslint-config": "^4.12.0",
49
+ "@types/node": "^22.14.1",
48
50
  "deepmerge": "^4.3.1",
49
- "eslint": "^9.23.0",
51
+ "eslint": "^9.25.0",
50
52
  "taze": "^19.0.4",
51
53
  "tsup": "^8.4.0",
52
54
  "tsx": "^4.19.3",
53
- "typescript": "^5.8.2",
55
+ "typescript": "^5.8.3",
54
56
  "vitest": "^3.1.1"
55
57
  },
56
58
  "scripts": {
@@ -1,2 +0,0 @@
1
- import{a as E,b as T,c as i}from"./chunk-LP3GSA6N.js";var D=E((J,j)=>{"use strict";i();var _=function(r){return I(r)&&!L(r)};function I(e){return!!e&&typeof e=="object"}function L(e){var r=Object.prototype.toString.call(e);return r==="[object RegExp]"||r==="[object Date]"||R(e)}var v=typeof Symbol=="function"&&Symbol.for,U=v?Symbol.for("react.element"):60103;function R(e){return e.$$typeof===U}function V(e){return Array.isArray(e)?[]:{}}function l(e,r){return r.clone!==!1&&r.isMergeableObject(e)?s(V(e),e,r):e}function $(e,r,t){return e.concat(r).map(function(o){return l(o,t)})}function C(e,r){if(!r.customMerge)return s;var t=r.customMerge(e);return typeof t=="function"?t:s}function B(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(r){return Object.propertyIsEnumerable.call(e,r)}):[]}function h(e){return Object.keys(e).concat(B(e))}function M(e,r){try{return r in e}catch{return!1}}function F(e,r){return M(e,r)&&!(Object.hasOwnProperty.call(e,r)&&Object.propertyIsEnumerable.call(e,r))}function K(e,r,t){var o={};return t.isMergeableObject(e)&&h(e).forEach(function(n){o[n]=l(e[n],t)}),h(r).forEach(function(n){F(e,n)||(M(e,n)&&t.isMergeableObject(r[n])?o[n]=C(n,t)(e[n],r[n],t):o[n]=l(r[n],t))}),o}function s(e,r,t){t=t||{},t.arrayMerge=t.arrayMerge||$,t.isMergeableObject=t.isMergeableObject||_,t.cloneUnlessOtherwiseSpecified=l;var o=Array.isArray(r),n=Array.isArray(e),c=o===n;return c?o?t.arrayMerge(e,r,t):K(e,r,t):l(r,t)}s.all=function(r,t){if(!Array.isArray(r))throw new Error("first argument should be an array");return r.reduce(function(o,n){return s(o,n,t)},{})};var N=s;j.exports=N});i();import z from"node:fs";import P from"axios";import G from"jsdom";i();var p=T(D(),1);import{createConfigLoader as k}from"unconfig";var f={timeout:2e4};async function O(e){let r=f,t=k({sources:[{files:["fast-dirpy.config"],extensions:["ts","mts","cts","js","mjs","cjs"]}],cwd:process.cwd(),merge:!1}),{config:o,sources:n}=await t.load();return n.length?(0,p.default)((0,p.default)(r,o),e):(0,p.default)(r,e)}var H={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"},{JSDOM:W}=G;async function Y(e,r=f){let{proxy:t,timeout:o}=await O(r),n=t?.host!==""?t:void 0,{data:c}=await P.get("https://dirpy.com/studio",{params:{url:e},headers:{...H,Referer:`https://dirpy.com/studio?url=${e}`},proxy:n,timeout:o}),{window:u}=new W(c),a="",m=u.document.getElementById("media-source");return m&&(a=m.src),a}async function w(e,r=f){let{path:t,url:o}=e,{proxy:n,timeout:c}=await O(r),u=n?.host!==""?n:void 0;if(o==="")return Promise.reject("Extract direct link failed!");let a=z.createWriteStream(t);return(await P({url:o,headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"},method:"GET",responseType:"stream",proxy:u,timeout:c,onDownloadProgress:d=>{let{loaded:y,total:x,progress:A}=d,S=`loaded:${y} total: ${x} progress: ${(A*100).toFixed(2)}%
2
- `;console.log(S)}})).data.pipe(a),new Promise((d,y)=>{a.on("finish",d),a.on("error",y)})}async function ie(e,r=f){let{path:t,url:o}=e,n=await Y(o,r);await w({url:n,path:t},r)}i();function X(e){let r=e.match(/BV[a-zA-Z0-9]+/);return r?`https://bilibili-real-url.deno.dev/${r[0]}.mp4`:""}async function le(e){let{path:r,url:t}=e,o=X(t);o!==""?await w({url:o,path:r||"./download.mp4"}):console.error("Extract direct link failed!")}export{Y as a,w as b,ie as c,X as d,le as e};
@@ -1 +0,0 @@
1
- import{c as i}from"./chunk-LP3GSA6N.js";i();function o(p){return p}export{o as a};
File without changes