@pieda/video-dl 1.3.0 → 1.3.2

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 l=o=>new Promise((e,u)=>{import(o).then(t=>e(t.default)).catch(u)}),h=async(o,e)=>{const u=await l("fs"),t=await l("axios");return new Promise((w,a)=>{t.get(o,{responseType:"stream"}).then(i=>{const g=i.data,r=u.createWriteStream(e);g.pipe(r),r.on("finish",function(){r.close(()=>{w()})})}).catch(a)})},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}`,a=await l("fs"),i=await l("path"),g=await l("@distube/ytdl-core");return a.existsSync(i.dirname(e))||a.mkdirSync(i.dirname(e),{recursive:!0},777),new Promise((r,n)=>{try{g(w).on("error",c=>{t.error(c),r([c,null])}).pipe(a.createWriteStream(e)).on("finish",()=>{t.log("Downloading finished."),r([null,!0])})}catch(s){console.log("error"),r([s,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}`,a=await l("fs"),i=await l("path"),g=await l("puppeteer");a.existsSync(i.dirname(e))||(a.mkdirSync(i.dirname(e),{recursive:!0},777),t.log(`建立 ${i.dirname(e)}`));const r=await g.launch();t.log("啟動 puppeteer");const n=await r.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 s=await n.$eval("video",c=>c.getAttribute("src"));return t.log(`取得 video url: ${s}`),await r.close(),t.log("關閉 puppeteer"),await h(s,e),t.log(`下載完成 ${s}`),[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 l("fs"),a=await l("path"),i=await l("axios"),g=async()=>{const n=await i.get("https://vimeo.com/_next/viewer",{responseType:"json",headers:{"X-Requested-With":"XMLHttpRequest"}}),{jwt:s}=n.data;return s||""},r=async(n="",s="")=>{const c=await i.get(`https://api.vimeo.com/videos/${n}?&fields=download`,{responseType:"json",headers:{"X-Requested-With":"XMLHttpRequest",Authorization:`jwt ${s}`}}),{download:p=[]}=c.data,d=p[0]||null;return(d==null?void 0:d.link)||""};return w.existsSync(a.dirname(e))||(w.mkdirSync(a.dirname(e),{recursive:!0},777),t.log(`建立 ${a.dirname(e)}`)),new Promise(async(n,s)=>{try{const c=await g();t.log(`取得 jwt ${c}`);const p=await r(o,c);t.log(`取得 videoUrl ${p}`),await h(p,e),t.log(`下載完成 ${e}`),n([null,!0])}catch(c){n([c,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,13 +1,13 @@
1
- const c = (o) => new Promise((e, l) => {
2
- import(o).then((t) => e(t.default)).catch(l);
1
+ const l = (o) => new Promise((e, u) => {
2
+ import(o).then((t) => e(t.default)).catch(u);
3
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();
4
+ const u = await l("fs"), t = await l("axios");
5
+ return new Promise((w, a) => {
6
+ t.get(o, { responseType: "stream" }).then((i) => {
7
+ const p = i.data, r = u.createWriteStream(e);
8
+ p.pipe(r), r.on("finish", function() {
9
+ r.close(() => {
10
+ w();
11
11
  });
12
12
  });
13
13
  }).catch(a);
@@ -22,76 +22,78 @@ 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 = m(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}`, a = await l("fs"), i = await l("path"), p = await l("@distube/ytdl-core");
30
+ return a.existsSync(i.dirname(e)) || a.mkdirSync(i.dirname(e), { recursive: !0 }, 777), new Promise((r, n) => {
31
31
  try {
32
- p(u).pipe(a.createWriteStream(e)).on("finish", () => {
33
- t.log("Downloading finished."), i([null, !0]);
32
+ p(w).on("error", (c) => {
33
+ t.error(c), r([c, null]);
34
+ }).pipe(a.createWriteStream(e)).on("finish", () => {
35
+ t.log("Downloading finished."), r([null, !0]);
34
36
  });
35
37
  } catch (s) {
36
- i([s, null]);
38
+ console.log("error"), r([s, null]);
37
39
  }
38
40
  });
39
41
  }, y = async ({
40
42
  videoId: o,
41
43
  dest: e,
42
- debug: l = !1
44
+ debug: u = !1
43
45
  }) => {
44
46
  try {
45
- const t = m(l);
47
+ const t = m(u);
46
48
  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();
49
+ const w = `https://m.facebook.com/watch/?v=${o}`, a = await l("fs"), i = await l("path"), p = await l("puppeteer");
50
+ a.existsSync(i.dirname(e)) || (a.mkdirSync(i.dirname(e), { recursive: !0 }, 777), t.log(`建立 ${i.dirname(e)}`));
51
+ const r = await p.launch();
50
52
  t.log("啟動 puppeteer");
51
- const n = await i.newPage();
53
+ const n = await r.newPage();
52
54
  await n.setUserAgent(
53
55
  "'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, {
56
+ ), t.log("開新分頁"), await n.goto(w, {
55
57
  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];
58
+ }), t.log(`前往 ${w}`), await n.waitForSelector("video"), t.log("找到 video 元素");
59
+ const s = await n.$eval("video", (c) => c.getAttribute("src"));
60
+ return t.log(`取得 video url: ${s}`), await r.close(), t.log("關閉 puppeteer"), await h(s, e), t.log(`下載完成 ${s}`), [null, !0];
59
61
  } catch (t) {
60
62
  return [t, null];
61
63
  }
62
64
  }, $ = async ({
63
65
  videoId: o,
64
66
  dest: e,
65
- debug: l = !1
67
+ debug: u = !1
66
68
  }) => {
67
- const t = m(l);
69
+ const t = m(u);
68
70
  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", {
71
+ const w = await l("fs"), a = await l("path"), i = await l("axios"), p = async () => {
72
+ const n = await i.get("https://vimeo.com/_next/viewer", {
71
73
  responseType: "json",
72
74
  headers: {
73
75
  "X-Requested-With": "XMLHttpRequest"
74
76
  }
75
77
  }), { jwt: s } = n.data;
76
78
  return s || "";
77
- }, i = async (n = "", s = "") => {
78
- const w = await r.get(`https://api.vimeo.com/videos/${n}?&fields=download`, {
79
+ }, r = async (n = "", s = "") => {
80
+ const c = await i.get(`https://api.vimeo.com/videos/${n}?&fields=download`, {
79
81
  responseType: "json",
80
82
  headers: {
81
83
  "X-Requested-With": "XMLHttpRequest",
82
84
  Authorization: `jwt ${s}`
83
85
  }
84
- }), { download: g = [] } = w.data, d = g[0] || null;
86
+ }), { download: g = [] } = c.data, d = g[0] || null;
85
87
  return (d == null ? void 0 : d.link) || "";
86
88
  };
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) => {
89
+ return w.existsSync(a.dirname(e)) || (w.mkdirSync(a.dirname(e), { recursive: !0 }, 777), t.log(`建立 ${a.dirname(e)}`)), new Promise(async (n, s) => {
88
90
  try {
89
- const w = await p();
90
- t.log(`取得 jwt ${w}`);
91
- const g = await i(o, w);
91
+ const c = await p();
92
+ t.log(`取得 jwt ${c}`);
93
+ const g = await r(o, c);
92
94
  t.log(`取得 videoUrl ${g}`), await h(g, e), t.log(`下載完成 ${e}`), n([null, !0]);
93
- } catch (w) {
94
- n([w, null]);
95
+ } catch (c) {
96
+ n([c, null]);
95
97
  }
96
98
  });
97
99
  }, 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.2",
5
5
  "type": "module",
6
6
  "main": "dist/video-dl.cjs",
7
7
  "module": "dist/video-dl.js",