twitter-snap 0.0.14 → 0.0.16
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 +1 -1
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +5 -0
- package/bin/run.cmd +3 -0
- package/bin/run.js +5 -0
- package/dist/cli.d.ts +1 -2
- package/dist/cli.js +15 -37
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts +24 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +96 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/core/core.d.ts +29 -0
- package/dist/core/core.d.ts.map +1 -0
- package/dist/core/core.js +133 -0
- package/dist/core/core.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/fonts.d.ts +0 -4
- package/dist/utils/fonts.d.ts.map +1 -1
- package/dist/utils/fonts.js +26 -12
- package/dist/utils/fonts.js.map +1 -1
- package/dist/utils/logger.d.ts +18 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +122 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/types.d.ts +8 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +4 -0
- package/dist/utils/types.js.map +1 -0
- package/oclif.manifest.json +130 -0
- package/package.json +71 -23
- package/.eslintrc.json +0 -3
- package/dist/app/api/twitter/route.d.ts +0 -3
- package/dist/app/api/twitter/route.d.ts.map +0 -1
- package/dist/app/api/twitter/route.js +0 -19
- package/dist/app/api/twitter/route.js.map +0 -1
- package/dist/app/api/twitter/route.jsx +0 -71
- package/dist/app/api/twitter/route.jsx.map +0 -1
- package/dist/app/layout.d.ts +0 -7
- package/dist/app/layout.d.ts.map +0 -1
- package/dist/app/layout.js +0 -11
- package/dist/app/layout.js.map +0 -1
- package/dist/app/layout.jsx +0 -19
- package/dist/app/layout.jsx.map +0 -1
- package/dist/app/page.d.ts +0 -2
- package/dist/app/page.d.ts.map +0 -1
- package/dist/app/page.js +0 -23
- package/dist/app/page.js.map +0 -1
- package/dist/app/page.jsx +0 -56
- package/dist/app/page.jsx.map +0 -1
- package/dist/core/twitterSnap.d.mts +0 -33
- package/dist/core/twitterSnap.d.mts.map +0 -1
- package/dist/core/twitterSnap.d.ts +0 -49
- package/dist/core/twitterSnap.d.ts.map +0 -1
- package/dist/core/twitterSnap.js +0 -62
- package/dist/core/twitterSnap.js.map +0 -1
- package/dist/core/twitterSnap.mjs +0 -102
- package/dist/core/twitterSnap.mjs.map +0 -1
- package/dist/theme/normal.d.ts +0 -4
- package/dist/theme/normal.d.ts.map +0 -1
- package/dist/theme/normal.js +0 -52
- package/dist/theme/normal.js.map +0 -1
- package/dist/theme/normal.jsx +0 -333
- package/dist/theme/normal.jsx.map +0 -1
- package/dist/theme/normalComponent.d.ts +0 -4
- package/dist/theme/normalComponent.d.ts.map +0 -1
- package/dist/theme/normalComponent.js +0 -256
- package/dist/theme/normalComponent.js.map +0 -1
- package/dist/theme/normalUtils.d.ts +0 -19
- package/dist/theme/normalUtils.d.ts.map +0 -1
- package/dist/theme/normalUtils.js +0 -115
- package/dist/theme/normalUtils.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/utils/cookies.d.ts +0 -2
- package/dist/utils/cookies.d.ts.map +0 -1
- package/dist/utils/cookies.js +0 -15
- package/dist/utils/cookies.js.map +0 -1
- package/docs/img/output.png +0 -0
- package/next-env.d.ts +0 -5
- package/next.config.cjs +0 -5
- package/test/test.ps1 +0 -21
- package/tsconfig.build.json +0 -25
- package/tsconfig.json +0 -40
package/README.md
CHANGED
package/bin/dev.cmd
ADDED
package/bin/dev.js
ADDED
package/bin/run.cmd
ADDED
package/bin/run.js
ADDED
package/dist/cli.d.ts
CHANGED
package/dist/cli.js
CHANGED
|
@@ -1,38 +1,16 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
.option("--margin <number>", "margin")
|
|
17
|
-
.option("--fonts <path>", "font config file path .json")
|
|
18
|
-
.option("--emoji <string>", `emoji type ${emoji}`, "twemoji")
|
|
19
|
-
.option("--cookies <path>", "net escape cookie file path .txt")
|
|
20
|
-
.option("--auto-photo", "if the tweet is not a video, save it as an image")
|
|
21
|
-
.option("--no-remove-temp", "no remove temp file")
|
|
22
|
-
.action(async (text, param) => {
|
|
23
|
-
const id = isNaN(text) ? text.split("/").pop() : text;
|
|
24
|
-
const twitterSnap = new TwitterSnap({
|
|
25
|
-
width: parseInt(param.width),
|
|
26
|
-
height: param.height ? parseInt(param.height) : undefined,
|
|
27
|
-
client: param.cookies ? await getClient(param.cookies) : undefined,
|
|
28
|
-
themeName: param.theme,
|
|
29
|
-
fonts: param.fonts ? await getFonts(param.fonts) : undefined,
|
|
30
|
-
emoji: param.emoji ? param.emoji : undefined,
|
|
31
|
-
autoPhoto: param.autoPhoto ? true : false,
|
|
32
|
-
removeTemp: param.removeTemp ? true : false,
|
|
33
|
-
});
|
|
34
|
-
await twitterSnap.render({ output: param.output, id });
|
|
35
|
-
process.exit(0);
|
|
36
|
-
});
|
|
37
|
-
program.parse(process.argv);
|
|
1
|
+
// #!/usr/bin/env node
|
|
2
|
+
import { twitterSnapPuppeteer } from './core/core';
|
|
3
|
+
const snap = await twitterSnapPuppeteer();
|
|
4
|
+
await snap({ id: '900282258736545792', type: 'getLikes', max: 100 }, async (render) => {
|
|
5
|
+
const finalize = await render({
|
|
6
|
+
themeName: 'RenderBasic',
|
|
7
|
+
themeParam: {
|
|
8
|
+
width: 600,
|
|
9
|
+
},
|
|
10
|
+
output: 'temp/{id}.png',
|
|
11
|
+
});
|
|
12
|
+
await finalize({
|
|
13
|
+
cleanup: true,
|
|
14
|
+
});
|
|
15
|
+
});
|
|
38
16
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAEtB,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAA;AAEhD,MAAM,IAAI,GAAG,MAAM,oBAAoB,EAAE,CAAA;AACzC,MAAM,IAAI,CAAC,EAAC,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAClF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;QAC5B,SAAS,EAAE,aAAa;QACxB,UAAU,EAAE;YACV,KAAK,EAAE,GAAG;SACX;QACD,MAAM,EAAE,eAAe;KACxB,CAAC,CAAA;IACF,MAAM,QAAQ,CAAC;QACb,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class Default extends Command {
|
|
3
|
+
static args: {
|
|
4
|
+
id: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static browser_profile: string;
|
|
9
|
+
static flags: {
|
|
10
|
+
api: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<"getTweetDetail" | "getSearchTimeline" | "getHomeTimeline" | "getHomeLatestTimeline" | "getListLatestTweetsTimeline" | "getUserTweets" | "getUserTweetsAndReplies" | "getUserMedia" | "getLikes" | "getBookmarks" | "getTweetResultByRestId", import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
theme: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<"RenderBasic", import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
output: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
cleanup: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
max: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
15
|
+
debug: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
16
|
+
sleep: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
17
|
+
session_type: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<"guest" | "browser" | "file", import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
18
|
+
cookies_file: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
19
|
+
browser_profile: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
20
|
+
browser_headless: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
21
|
+
};
|
|
22
|
+
run(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,OAAO,EAAQ,MAAM,aAAa,CAAA;AAyBhD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,MAAM,CAAC,IAAI;;MAEV;IAED,MAAM,CAAC,WAAW,SAAiB;IACnC,MAAM,CAAC,QAAQ,WAGd;IAED,MAAM,CAAC,eAAe,SAAiD;IAEvE,MAAM,CAAC,KAAK;;;;;;;;;;;;MAYX;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwD3B"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import { themeList } from 'twitter-snap-core';
|
|
5
|
+
import { twitterSnapCookies, twitterSnapGuest, twitterSnapPuppeteer } from '../core/core.js';
|
|
6
|
+
import { Logger } from '../utils/logger.js';
|
|
7
|
+
import { getTweetList } from './../utils/types.js';
|
|
8
|
+
const apiFlag = Flags.custom({
|
|
9
|
+
description: 'API type',
|
|
10
|
+
options: ['getTweetResultByRestId', ...getTweetList],
|
|
11
|
+
default: 'getTweetResultByRestId',
|
|
12
|
+
});
|
|
13
|
+
const themeNameFlag = Flags.custom({
|
|
14
|
+
description: 'Theme type',
|
|
15
|
+
options: Object.keys(themeList),
|
|
16
|
+
default: 'RenderBasic',
|
|
17
|
+
});
|
|
18
|
+
const sessionType = Flags.custom({
|
|
19
|
+
description: 'Session type',
|
|
20
|
+
default: 'guest',
|
|
21
|
+
});
|
|
22
|
+
class Default extends Command {
|
|
23
|
+
async run() {
|
|
24
|
+
const { args, flags } = await this.parse(_a);
|
|
25
|
+
const logger = new Logger();
|
|
26
|
+
console.log = flags.debug ? logger.log.bind(logger) : (_) => { };
|
|
27
|
+
const getClient = (() => {
|
|
28
|
+
switch (flags.session_type) {
|
|
29
|
+
case 'guest':
|
|
30
|
+
return twitterSnapGuest();
|
|
31
|
+
case 'browser':
|
|
32
|
+
return twitterSnapPuppeteer(flags.browser_headless, flags.browser_profile);
|
|
33
|
+
case 'file':
|
|
34
|
+
return twitterSnapCookies(flags.cookies_file);
|
|
35
|
+
}
|
|
36
|
+
})();
|
|
37
|
+
const client = await logger.guard({ text: 'Loading Client' }, getClient);
|
|
38
|
+
const logHandler = async ({ type, user, id }) => {
|
|
39
|
+
switch (type) {
|
|
40
|
+
case 'start':
|
|
41
|
+
return logger.update(`Rendering tweet ${user}/${id}`);
|
|
42
|
+
case 'image':
|
|
43
|
+
return logger.update(`Rendering image ${user}/${id}`);
|
|
44
|
+
case 'video':
|
|
45
|
+
return logger.update(`Rendering video ${user}/${id}`);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const sleep = async (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
49
|
+
const render = client({ id: args.id, type: flags.api, max: flags.max }, async (render) => {
|
|
50
|
+
try {
|
|
51
|
+
const finalize = await render({
|
|
52
|
+
themeName: flags.theme,
|
|
53
|
+
themeParam: {
|
|
54
|
+
width: 600,
|
|
55
|
+
},
|
|
56
|
+
output: flags.output,
|
|
57
|
+
handler: logHandler,
|
|
58
|
+
});
|
|
59
|
+
await finalize({
|
|
60
|
+
cleanup: true,
|
|
61
|
+
});
|
|
62
|
+
logger.succeed();
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
logger.error(e);
|
|
66
|
+
}
|
|
67
|
+
await sleep(flags.sleep);
|
|
68
|
+
});
|
|
69
|
+
await logger.guard({ text: 'Rendering tweet', max: flags.max }, render);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
_a = Default;
|
|
73
|
+
Default.args = {
|
|
74
|
+
id: Args.string({ description: 'Twitter status id', required: true }),
|
|
75
|
+
};
|
|
76
|
+
Default.description = 'Twitter Snap';
|
|
77
|
+
Default.examples = [
|
|
78
|
+
'twitter-snap 1765415187161464972',
|
|
79
|
+
'twitter-snap 1765415187161464972 --api getTweetResultByRestId',
|
|
80
|
+
];
|
|
81
|
+
Default.browser_profile = `${os.homedir()}/.cache/twitter-snap/profiles`;
|
|
82
|
+
Default.flags = {
|
|
83
|
+
api: apiFlag(),
|
|
84
|
+
theme: themeNameFlag(),
|
|
85
|
+
output: Flags.string({ char: 'o', description: 'Output file name', default: '{id}.{if-photo:png:mp4}' }),
|
|
86
|
+
cleanup: Flags.boolean({ description: 'Cleanup', default: true }),
|
|
87
|
+
max: Flags.integer({ description: 'Max count', default: 30 }),
|
|
88
|
+
debug: Flags.boolean({ description: 'Debug', default: false }),
|
|
89
|
+
sleep: Flags.integer({ description: 'Sleep (ms)', default: 0 }),
|
|
90
|
+
session_type: sessionType(),
|
|
91
|
+
cookies_file: Flags.file({ description: 'Cookies file', default: 'cookies.json' }),
|
|
92
|
+
browser_profile: Flags.string({ description: 'Browser profile', default: _a.browser_profile }),
|
|
93
|
+
browser_headless: Flags.boolean({ description: 'Browser headless', default: false }),
|
|
94
|
+
};
|
|
95
|
+
export default Default;
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TweetApiUtilsData } from 'twitter-openapi-typescript';
|
|
2
|
+
import { ThemeNameType } from 'twitter-snap-core';
|
|
3
|
+
import { GetTweetApi, ThemeParamType } from '../utils/types.js';
|
|
4
|
+
export declare const twitterSnapGuest: () => Promise<({ id, type, max }: tweetApiSnapParam, handler: (e: ReturnType<typeof twitterRender>) => Promise<void>) => Promise<void>>;
|
|
5
|
+
export declare const twitterSnapPuppeteer: (headless?: boolean, userDataDir?: string) => Promise<({ id, type, max }: tweetApiSnapParam, handler: (e: ReturnType<typeof twitterRender>) => Promise<void>) => Promise<void>>;
|
|
6
|
+
export declare const twitterSnapCookies: (path: string) => Promise<({ id, type, max }: tweetApiSnapParam, handler: (e: ReturnType<typeof twitterRender>) => Promise<void>) => Promise<void>>;
|
|
7
|
+
type tweetApiSnapParam = {
|
|
8
|
+
id: string;
|
|
9
|
+
type?: 'getTweetResultByRestId' | keyof GetTweetApi;
|
|
10
|
+
max: number;
|
|
11
|
+
};
|
|
12
|
+
type HandlerTypeLiteral = 'start' | 'image' | 'video';
|
|
13
|
+
export type HandlerType = {
|
|
14
|
+
type: HandlerTypeLiteral;
|
|
15
|
+
user: string;
|
|
16
|
+
id: string;
|
|
17
|
+
};
|
|
18
|
+
type twitterRenderParam = {
|
|
19
|
+
themeName: ThemeNameType;
|
|
20
|
+
themeParam: ThemeParamType;
|
|
21
|
+
output: string;
|
|
22
|
+
handler?: (e: HandlerType) => void;
|
|
23
|
+
};
|
|
24
|
+
declare const twitterRender: (data: TweetApiUtilsData) => ({ themeName, themeParam, output, handler }: twitterRenderParam) => Promise<({ cleanup }: FinalizeParam) => Promise<void>>;
|
|
25
|
+
type FinalizeParam = {
|
|
26
|
+
cleanup: boolean;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core/core.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,iBAAiB,EAAuC,MAAM,4BAA4B,CAAA;AAGlG,OAAO,EAAC,aAAa,EAAY,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAC,WAAW,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAA;AAE3E,eAAO,MAAM,gBAAgB,oCA4CR,iBAAiB,eACrB,WAAW,oBAAoB,CAAC,KAAK,QAAQ,IAAI,CAAC,mBAzClE,CAAA;AAED,eAAO,MAAM,oBAAoB,cAAqB,OAAO,gBAAgB,MAAM,iCAsC9D,iBAAiB,eACrB,WAAW,oBAAoB,CAAC,KAAK,QAAQ,IAAI,CAAC,mBAnBlE,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,MAAM,iCAgBhC,iBAAiB,eACrB,WAAW,oBAAoB,CAAC,KAAK,QAAQ,IAAI,CAAC,mBAXlE,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,wBAAwB,GAAG,MAAM,WAAW,CAAA;IACnD,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AA4CD,KAAK,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AACrD,MAAM,MAAM,WAAW,GAAG;IAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,CAAA;AAE9E,KAAK,kBAAkB,GAAG;IACxB,SAAS,EAAE,aAAa,CAAA;IACxB,UAAU,EAAE,cAAc,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;CACnC,CAAA;AAED,QAAA,MAAM,aAAa,SAAU,iBAAiB,kDAKY,kBAAkB,2BAsDjD,aAAa,mBANvC,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { ImageResponse } from '@vercel/og';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import { TwitterOpenApi } from 'twitter-openapi-typescript';
|
|
4
|
+
import puppeteer from 'puppeteer';
|
|
5
|
+
import { themeList } from 'twitter-snap-core';
|
|
6
|
+
import { getTweetList } from '../utils/types.js';
|
|
7
|
+
export const twitterSnapGuest = async () => {
|
|
8
|
+
const twitter = new TwitterOpenApi();
|
|
9
|
+
const api = await twitter.getGuestClient();
|
|
10
|
+
return tweetApiSnap(api);
|
|
11
|
+
};
|
|
12
|
+
export const twitterSnapPuppeteer = async (headless, userDataDir) => {
|
|
13
|
+
const browser = await puppeteer.launch({
|
|
14
|
+
headless: headless,
|
|
15
|
+
timeout: 0,
|
|
16
|
+
userDataDir: userDataDir,
|
|
17
|
+
});
|
|
18
|
+
const [page] = await browser.pages();
|
|
19
|
+
await page.goto('https://twitter.com/login');
|
|
20
|
+
page.setDefaultNavigationTimeout(0);
|
|
21
|
+
page.setDefaultTimeout(0);
|
|
22
|
+
await page.waitForResponse((res) => {
|
|
23
|
+
return RegExp('https://twitter.com/i/api/graphql/[a-zA-Z0-9_-]+/HomeTimeline?.*').test(res.url());
|
|
24
|
+
});
|
|
25
|
+
const cookies = await page.cookies();
|
|
26
|
+
await browser.close();
|
|
27
|
+
const twitter = new TwitterOpenApi();
|
|
28
|
+
const api = await twitter.getClientFromCookies(cookies.reduce((acc, e) => ({ ...acc, [e.name]: e.value }), {}));
|
|
29
|
+
return tweetApiSnap(api);
|
|
30
|
+
};
|
|
31
|
+
export const twitterSnapCookies = async (path) => {
|
|
32
|
+
const data = await fs.readFile(path, 'utf-8');
|
|
33
|
+
const cookies = JSON.parse(data);
|
|
34
|
+
const twitter = new TwitterOpenApi();
|
|
35
|
+
const api = await twitter.getClientFromCookies(cookies.reduce((acc, e) => ({ ...acc, [e.name]: e.value }), {}));
|
|
36
|
+
return tweetApiSnap(api);
|
|
37
|
+
};
|
|
38
|
+
const tweetApiSnap = (client) => {
|
|
39
|
+
return async ({ id, type, max }, handler) => {
|
|
40
|
+
const key = getTweetList.find((k) => k == type);
|
|
41
|
+
if (key) {
|
|
42
|
+
const that = client.getTweetApi();
|
|
43
|
+
const api = that[key].bind(that);
|
|
44
|
+
let count = 0;
|
|
45
|
+
const cursor = [];
|
|
46
|
+
while (count < max) {
|
|
47
|
+
const res = await api({
|
|
48
|
+
focalTweetId: id,
|
|
49
|
+
rawQuery: id,
|
|
50
|
+
listId: id,
|
|
51
|
+
userId: id,
|
|
52
|
+
cursor: cursor.length ? cursor.pop() : undefined,
|
|
53
|
+
});
|
|
54
|
+
for (const e of res.data.data) {
|
|
55
|
+
if (e.promotedMetadata)
|
|
56
|
+
continue;
|
|
57
|
+
if (count >= max)
|
|
58
|
+
return;
|
|
59
|
+
await handler(twitterRender(e));
|
|
60
|
+
count++;
|
|
61
|
+
}
|
|
62
|
+
if (res.data.cursor.bottom) {
|
|
63
|
+
cursor.push(res.data.cursor.bottom?.value);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const res = await client.getDefaultApi().getTweetResultByRestId({
|
|
72
|
+
tweetId: id,
|
|
73
|
+
});
|
|
74
|
+
if (res.data)
|
|
75
|
+
await handler(twitterRender(res.data));
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
const twitterRender = (data) => {
|
|
80
|
+
const extEntities = data.tweet.legacy?.extendedEntities;
|
|
81
|
+
const extMedia = extEntities?.media ?? [];
|
|
82
|
+
const isVideoData = !!extMedia.find((e) => e.type !== 'photo');
|
|
83
|
+
return async ({ themeName, themeParam, output, handler }) => {
|
|
84
|
+
handler && handler({ type: 'start', user: data.user.legacy.screenName, id: data.tweet.restId });
|
|
85
|
+
const theme = Object.entries(themeList).find(([k, _]) => k == themeName)?.[1];
|
|
86
|
+
const replacData = [
|
|
87
|
+
['{id}', data.tweet.restId],
|
|
88
|
+
['{user-screen-name}', data.user.legacy.screenName],
|
|
89
|
+
['{if-photo:(?<true>.+?):(?<false>.+?)}', isVideoData ? '$2' : '$1'],
|
|
90
|
+
];
|
|
91
|
+
const repOutput = replacData.reduce((acc, [k, v]) => acc.replace(new RegExp(k, 'g'), v), output);
|
|
92
|
+
const video = repOutput.split('.').pop() != 'png';
|
|
93
|
+
const pngOutput = video ? repOutput.replace(/\.\w+$/, '.png') : repOutput;
|
|
94
|
+
const render = new theme({
|
|
95
|
+
...themeParam,
|
|
96
|
+
video: video,
|
|
97
|
+
});
|
|
98
|
+
handler && handler({ type: 'image', user: data.user.legacy.screenName, id: data.tweet.restId });
|
|
99
|
+
const element = render.imageRender({
|
|
100
|
+
data: data,
|
|
101
|
+
});
|
|
102
|
+
const img = new ImageResponse(element, {
|
|
103
|
+
width: themeParam.width,
|
|
104
|
+
height: undefined,
|
|
105
|
+
emoji: 'twemoji',
|
|
106
|
+
});
|
|
107
|
+
const png = Buffer.from(await img.arrayBuffer());
|
|
108
|
+
if (pngOutput.split('/').length > 1) {
|
|
109
|
+
await fs.mkdir(pngOutput.split('/').slice(0, -1).join('/'), { recursive: true });
|
|
110
|
+
}
|
|
111
|
+
await fs.writeFile(pngOutput, png);
|
|
112
|
+
if (video) {
|
|
113
|
+
handler && handler({ type: 'video', user: data.user.legacy.screenName, id: data.tweet.restId });
|
|
114
|
+
const res = await render.videoRender({
|
|
115
|
+
data: data,
|
|
116
|
+
image: pngOutput,
|
|
117
|
+
output: repOutput,
|
|
118
|
+
});
|
|
119
|
+
return finalize(res.temp);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return finalize([]);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
const finalize = async (temp) => {
|
|
127
|
+
return async ({ cleanup }) => {
|
|
128
|
+
if (cleanup) {
|
|
129
|
+
temp.forEach(async (e) => await fs.unlink(e));
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core/core.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,aAAa,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,aAAa,CAAA"}
|