@pieda/video-dl 1.3.0 → 1.3.1

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/dist/video-dl.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=o=>new Promise((e,l)=>{import(o).then(t=>e(t.default)).catch(l)}),h=async(o,e)=>{const l=await c("fs"),t=await c("axios");return new Promise((u,a)=>{t.get(o,{responseType:"stream"}).then(n=>{const p=n.data,i=l.createWriteStream(e);p.pipe(i),i.on("finish",function(){i.close(()=>{u()})})}).catch(a)})},m=(o=!1)=>({log:(...e)=>{o&&console.log(...e)},error:(...e)=>{o&&console.error(...e)}}),f=async({videoId:o,dest:e,debug:l=!1})=>{const t=m(l);t.log(`Downloading video: ${o} to: ${e}`);const u=`https://www.youtube.com/watch?v=${o}`,a=await c("fs"),n=await c("path"),p=await c("@distube/ytdl-core");return a.existsSync(n.dirname(e))||a.mkdirSync(n.dirname(e),{recursive:!0},777),new Promise((i,r)=>{try{p(u).pipe(a.createWriteStream(e)).on("finish",()=>{t.log("Downloading finished."),i([null,!0])})}catch(s){i([s,null])}})},y=async({videoId:o,dest:e,debug:l=!1})=>{try{const t=m(l);t.log(`Downloading video: ${o} to: ${e}`);const u=`https://m.facebook.com/watch/?v=${o}`,a=await c("fs"),n=await c("path"),p=await c("puppeteer");a.existsSync(n.dirname(e))||(a.mkdirSync(n.dirname(e),{recursive:!0},777),t.log(`建立 ${n.dirname(e)}`));const i=await p.launch();t.log("啟動 puppeteer");const r=await i.newPage();await r.setUserAgent("'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'"),t.log("開新分頁"),await r.goto(u,{waitUntil:"networkidle0"}),t.log(`前往 ${u}`),await r.waitForSelector("video"),t.log("找到 video 元素");const s=await r.$eval("video",w=>w.getAttribute("src"));return t.log(`取得 video url: ${s}`),await i.close(),t.log("關閉 puppeteer"),await h(s,e),t.log(`下載完成 ${s}`),[null,!0]}catch(t){return[t,null]}},$=async({videoId:o,dest:e,debug:l=!1})=>{const t=m(l);t.log(`Downloading video: ${o} to: ${e}`);const u=await c("fs"),a=await c("path"),n=await c("axios"),p=async()=>{const r=await n.get("https://vimeo.com/_next/viewer",{responseType:"json",headers:{"X-Requested-With":"XMLHttpRequest"}}),{jwt:s}=r.data;return s||""},i=async(r="",s="")=>{const w=await n.get(`https://api.vimeo.com/videos/${r}?&fields=download`,{responseType:"json",headers:{"X-Requested-With":"XMLHttpRequest",Authorization:`jwt ${s}`}}),{download:g=[]}=w.data,d=g[0]||null;return(d==null?void 0:d.link)||""};return u.existsSync(a.dirname(e))||(u.mkdirSync(a.dirname(e),{recursive:!0},777),t.log(`建立 ${a.dirname(e)}`)),new Promise(async(r,s)=>{try{const w=await p();t.log(`取得 jwt ${w}`);const g=await i(o,w);t.log(`取得 videoUrl ${g}`),await h(g,e),t.log(`下載完成 ${e}`),r([null,!0])}catch(w){r([w,null])}})},v=({type:o})=>{switch(o){case"youtube":return f;case"facebook":return y;case"vimeo":return $;default:throw new Error(`Invalid video type: ${o}`)}};exports.useDownloader=v;exports.useFacebook=y;exports.useVimeo=$;exports.useYoutube=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=o=>new Promise((e,u)=>{import(o).then(t=>e(t.default)).catch(u)}),h=async(o,e)=>{const u=await c("fs"),t=await c("axios");return new Promise((w,r)=>{t.get(o,{responseType:"stream"}).then(i=>{const p=i.data,s=u.createWriteStream(e);p.pipe(s),s.on("finish",function(){s.close(()=>{w()})})}).catch(r)})},m=(o=!1)=>({log:(...e)=>{o&&console.log(...e)},error:(...e)=>{o&&console.error(...e)}}),f=async({videoId:o,dest:e,debug:u=!1})=>{const t=m(u);t.log(`Downloading video: ${o} to: ${e}`);const w=`https://www.youtube.com/watch?v=${o}`,r=await c("fs"),i=await c("path"),p=await c("@distube/ytdl-core");return r.existsSync(i.dirname(e))||r.mkdirSync(i.dirname(e),{recursive:!0},777),new Promise((s,n)=>{try{const a=p(w).pipe(r.createWriteStream(e));a.on("finish",()=>{t.log("Downloading finished."),s([null,!0])}),a.on("error",l=>{throw l})}catch(a){s([a,null])}})},y=async({videoId:o,dest:e,debug:u=!1})=>{try{const t=m(u);t.log(`Downloading video: ${o} to: ${e}`);const w=`https://m.facebook.com/watch/?v=${o}`,r=await c("fs"),i=await c("path"),p=await c("puppeteer");r.existsSync(i.dirname(e))||(r.mkdirSync(i.dirname(e),{recursive:!0},777),t.log(`建立 ${i.dirname(e)}`));const s=await p.launch();t.log("啟動 puppeteer");const n=await s.newPage();await n.setUserAgent("'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'"),t.log("開新分頁"),await n.goto(w,{waitUntil:"networkidle0"}),t.log(`前往 ${w}`),await n.waitForSelector("video"),t.log("找到 video 元素");const a=await n.$eval("video",l=>l.getAttribute("src"));return t.log(`取得 video url: ${a}`),await s.close(),t.log("關閉 puppeteer"),await h(a,e),t.log(`下載完成 ${a}`),[null,!0]}catch(t){return[t,null]}},$=async({videoId:o,dest:e,debug:u=!1})=>{const t=m(u);t.log(`Downloading video: ${o} to: ${e}`);const w=await c("fs"),r=await c("path"),i=await c("axios"),p=async()=>{const n=await i.get("https://vimeo.com/_next/viewer",{responseType:"json",headers:{"X-Requested-With":"XMLHttpRequest"}}),{jwt:a}=n.data;return a||""},s=async(n="",a="")=>{const l=await i.get(`https://api.vimeo.com/videos/${n}?&fields=download`,{responseType:"json",headers:{"X-Requested-With":"XMLHttpRequest",Authorization:`jwt ${a}`}}),{download:g=[]}=l.data,d=g[0]||null;return(d==null?void 0:d.link)||""};return w.existsSync(r.dirname(e))||(w.mkdirSync(r.dirname(e),{recursive:!0},777),t.log(`建立 ${r.dirname(e)}`)),new Promise(async(n,a)=>{try{const l=await p();t.log(`取得 jwt ${l}`);const g=await s(o,l);t.log(`取得 videoUrl ${g}`),await h(g,e),t.log(`下載完成 ${e}`),n([null,!0])}catch(l){n([l,null])}})},v=({type:o})=>{switch(o){case"youtube":return f;case"facebook":return y;case"vimeo":return $;default:throw new Error(`Invalid video type: ${o}`)}};exports.useDownloader=v;exports.useFacebook=y;exports.useVimeo=$;exports.useYoutube=f;
package/dist/video-dl.js CHANGED
@@ -1,18 +1,18 @@
1
- const c = (o) => new Promise((e, l) => {
2
- import(o).then((t) => e(t.default)).catch(l);
3
- }), h = async (o, e) => {
4
- const l = await c("fs"), t = await c("axios");
5
- return new Promise((u, a) => {
6
- t.get(o, { responseType: "stream" }).then((r) => {
7
- const p = r.data, i = l.createWriteStream(e);
8
- p.pipe(i), i.on("finish", function() {
9
- i.close(() => {
10
- u();
1
+ const c = (o) => new Promise((e, u) => {
2
+ import(o).then((t) => e(t.default)).catch(u);
3
+ }), m = async (o, e) => {
4
+ const u = await c("fs"), t = await c("axios");
5
+ return new Promise((w, r) => {
6
+ t.get(o, { responseType: "stream" }).then((i) => {
7
+ const p = i.data, s = u.createWriteStream(e);
8
+ p.pipe(s), s.on("finish", function() {
9
+ s.close(() => {
10
+ w();
11
11
  });
12
12
  });
13
- }).catch(a);
13
+ }).catch(r);
14
14
  });
15
- }, m = (o = !1) => ({
15
+ }, h = (o = !1) => ({
16
16
  log: (...e) => {
17
17
  o && console.log(...e);
18
18
  },
@@ -22,76 +22,79 @@ const c = (o) => new Promise((e, l) => {
22
22
  }), f = async ({
23
23
  videoId: o,
24
24
  dest: e,
25
- debug: l = !1
25
+ debug: u = !1
26
26
  }) => {
27
- const t = m(l);
27
+ const t = h(u);
28
28
  t.log(`Downloading video: ${o} to: ${e}`);
29
- const u = `https://www.youtube.com/watch?v=${o}`, a = await c("fs"), r = await c("path"), p = await c("@distube/ytdl-core");
30
- return a.existsSync(r.dirname(e)) || a.mkdirSync(r.dirname(e), { recursive: !0 }, 777), new Promise((i, n) => {
29
+ const w = `https://www.youtube.com/watch?v=${o}`, r = await c("fs"), i = await c("path"), p = await c("@distube/ytdl-core");
30
+ return r.existsSync(i.dirname(e)) || r.mkdirSync(i.dirname(e), { recursive: !0 }, 777), new Promise((s, n) => {
31
31
  try {
32
- p(u).pipe(a.createWriteStream(e)).on("finish", () => {
33
- t.log("Downloading finished."), i([null, !0]);
32
+ const a = p(w).pipe(r.createWriteStream(e));
33
+ a.on("finish", () => {
34
+ t.log("Downloading finished."), s([null, !0]);
35
+ }), a.on("error", (l) => {
36
+ throw l;
34
37
  });
35
- } catch (s) {
36
- i([s, null]);
38
+ } catch (a) {
39
+ s([a, null]);
37
40
  }
38
41
  });
39
42
  }, y = async ({
40
43
  videoId: o,
41
44
  dest: e,
42
- debug: l = !1
45
+ debug: u = !1
43
46
  }) => {
44
47
  try {
45
- const t = m(l);
48
+ const t = h(u);
46
49
  t.log(`Downloading video: ${o} to: ${e}`);
47
- const u = `https://m.facebook.com/watch/?v=${o}`, a = await c("fs"), r = await c("path"), p = await c("puppeteer");
48
- a.existsSync(r.dirname(e)) || (a.mkdirSync(r.dirname(e), { recursive: !0 }, 777), t.log(`建立 ${r.dirname(e)}`));
49
- const i = await p.launch();
50
+ const w = `https://m.facebook.com/watch/?v=${o}`, r = await c("fs"), i = await c("path"), p = await c("puppeteer");
51
+ r.existsSync(i.dirname(e)) || (r.mkdirSync(i.dirname(e), { recursive: !0 }, 777), t.log(`建立 ${i.dirname(e)}`));
52
+ const s = await p.launch();
50
53
  t.log("啟動 puppeteer");
51
- const n = await i.newPage();
54
+ const n = await s.newPage();
52
55
  await n.setUserAgent(
53
56
  "'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'"
54
- ), t.log("開新分頁"), await n.goto(u, {
57
+ ), t.log("開新分頁"), await n.goto(w, {
55
58
  waitUntil: "networkidle0"
56
- }), t.log(`前往 ${u}`), await n.waitForSelector("video"), t.log("找到 video 元素");
57
- const s = await n.$eval("video", (w) => w.getAttribute("src"));
58
- return t.log(`取得 video url: ${s}`), await i.close(), t.log("關閉 puppeteer"), await h(s, e), t.log(`下載完成 ${s}`), [null, !0];
59
+ }), t.log(`前往 ${w}`), await n.waitForSelector("video"), t.log("找到 video 元素");
60
+ const a = await n.$eval("video", (l) => l.getAttribute("src"));
61
+ return t.log(`取得 video url: ${a}`), await s.close(), t.log("關閉 puppeteer"), await m(a, e), t.log(`下載完成 ${a}`), [null, !0];
59
62
  } catch (t) {
60
63
  return [t, null];
61
64
  }
62
65
  }, $ = async ({
63
66
  videoId: o,
64
67
  dest: e,
65
- debug: l = !1
68
+ debug: u = !1
66
69
  }) => {
67
- const t = m(l);
70
+ const t = h(u);
68
71
  t.log(`Downloading video: ${o} to: ${e}`);
69
- const u = await c("fs"), a = await c("path"), r = await c("axios"), p = async () => {
70
- const n = await r.get("https://vimeo.com/_next/viewer", {
72
+ const w = await c("fs"), r = await c("path"), i = await c("axios"), p = async () => {
73
+ const n = await i.get("https://vimeo.com/_next/viewer", {
71
74
  responseType: "json",
72
75
  headers: {
73
76
  "X-Requested-With": "XMLHttpRequest"
74
77
  }
75
- }), { jwt: s } = n.data;
76
- return s || "";
77
- }, i = async (n = "", s = "") => {
78
- const w = await r.get(`https://api.vimeo.com/videos/${n}?&fields=download`, {
78
+ }), { jwt: a } = n.data;
79
+ return a || "";
80
+ }, s = async (n = "", a = "") => {
81
+ const l = await i.get(`https://api.vimeo.com/videos/${n}?&fields=download`, {
79
82
  responseType: "json",
80
83
  headers: {
81
84
  "X-Requested-With": "XMLHttpRequest",
82
- Authorization: `jwt ${s}`
85
+ Authorization: `jwt ${a}`
83
86
  }
84
- }), { download: g = [] } = w.data, d = g[0] || null;
87
+ }), { download: g = [] } = l.data, d = g[0] || null;
85
88
  return (d == null ? void 0 : d.link) || "";
86
89
  };
87
- return u.existsSync(a.dirname(e)) || (u.mkdirSync(a.dirname(e), { recursive: !0 }, 777), t.log(`建立 ${a.dirname(e)}`)), new Promise(async (n, s) => {
90
+ return w.existsSync(r.dirname(e)) || (w.mkdirSync(r.dirname(e), { recursive: !0 }, 777), t.log(`建立 ${r.dirname(e)}`)), new Promise(async (n, a) => {
88
91
  try {
89
- const w = await p();
90
- t.log(`取得 jwt ${w}`);
91
- const g = await i(o, w);
92
- t.log(`取得 videoUrl ${g}`), await h(g, e), t.log(`下載完成 ${e}`), n([null, !0]);
93
- } catch (w) {
94
- n([w, null]);
92
+ const l = await p();
93
+ t.log(`取得 jwt ${l}`);
94
+ const g = await s(o, l);
95
+ t.log(`取得 videoUrl ${g}`), await m(g, e), t.log(`下載完成 ${e}`), n([null, !0]);
96
+ } catch (l) {
97
+ n([l, null]);
95
98
  }
96
99
  });
97
100
  }, v = ({ type: o }) => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pieda/video-dl",
3
3
  "private": false,
4
- "version": "1.3.0",
4
+ "version": "1.3.1",
5
5
  "type": "module",
6
6
  "main": "dist/video-dl.cjs",
7
7
  "module": "dist/video-dl.js",