Update lib/twitter/twitter.js
Browse files- lib/twitter/twitter.js +11 -7
lib/twitter/twitter.js
CHANGED
@@ -4,12 +4,17 @@ import { TwitterDlArgsSchema, TwitterDLResponseSchema, TwitterDlSchema } from '.
|
|
4 |
import { DEFAULT_HEADERS } from '../constant.js';
|
5 |
import { stringifyCookies, generateTokenId } from './util.js';
|
6 |
|
|
|
|
|
|
|
|
|
7 |
|
8 |
-
|
9 |
-
TwitterDlArgsSchema.parse({ url });
|
10 |
|
11 |
const idMatch = url.match(/status\/(\d+)/) || url.match(/(\d+)/);
|
12 |
-
if (!idMatch)
|
|
|
|
|
13 |
|
14 |
const id = idMatch[1];
|
15 |
const token = generateTokenId(id);
|
@@ -23,12 +28,11 @@ export async function twitterdl(url) {
|
|
23 |
}
|
24 |
}).json();
|
25 |
|
26 |
-
if (!
|
27 |
-
throw new Error("
|
28 |
}
|
29 |
|
30 |
-
const json = TwitterDLResponseSchema.parse(
|
31 |
-
|
32 |
const videos = json.includes.media
|
33 |
.filter((m) => m.type === 'video')
|
34 |
.flatMap((m) => m.variants)
|
|
|
4 |
import { DEFAULT_HEADERS } from '../constant.js';
|
5 |
import { stringifyCookies, generateTokenId } from './util.js';
|
6 |
|
7 |
+
export default async function twitterdl(url) {
|
8 |
+
if (!url || typeof url !== 'string') {
|
9 |
+
throw new Error("Invalid or missing URL parameter.");
|
10 |
+
}
|
11 |
|
12 |
+
TwitterDlArgsSchema.parse([url]);
|
|
|
13 |
|
14 |
const idMatch = url.match(/status\/(\d+)/) || url.match(/(\d+)/);
|
15 |
+
if (!idMatch) {
|
16 |
+
throw new Error("Invalid Twitter URL: Cannot extract tweet ID.");
|
17 |
+
}
|
18 |
|
19 |
const id = idMatch[1];
|
20 |
const token = generateTokenId(id);
|
|
|
28 |
}
|
29 |
}).json();
|
30 |
|
31 |
+
if (!data || !data.includes || !data.includes.media) {
|
32 |
+
throw new Error("Invalid API response: Missing media data.");
|
33 |
}
|
34 |
|
35 |
+
const json = TwitterDLResponseSchema.parse(data);
|
|
|
36 |
const videos = json.includes.media
|
37 |
.filter((m) => m.type === 'video')
|
38 |
.flatMap((m) => m.variants)
|