twitter-snap 0.0.61 → 0.0.63

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.
Files changed (146) hide show
  1. package/README.md +190 -180
  2. package/bin/dev.cmd +3 -3
  3. package/bin/dev.js +6 -5
  4. package/bin/run.cmd +3 -3
  5. package/bin/run.js +5 -5
  6. package/dist/app.d.ts +81 -0
  7. package/dist/app.d.ts.map +1 -0
  8. package/dist/app.js +230 -0
  9. package/dist/app.js.map +1 -0
  10. package/dist/commands/index.d.ts +7 -12
  11. package/dist/commands/index.d.ts.map +1 -1
  12. package/dist/commands/index.js +84 -27
  13. package/dist/commands/index.js.map +1 -1
  14. package/dist/config.d.ts +44 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +26 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/hooks/interactive.d.ts.map +1 -1
  19. package/dist/hooks/interactive.js +93 -86
  20. package/dist/hooks/interactive.js.map +1 -1
  21. package/dist/main.d.ts +1 -3
  22. package/dist/main.d.ts.map +1 -1
  23. package/dist/main.js +1 -3
  24. package/dist/main.js.map +1 -1
  25. package/dist/service/core.d.ts +34 -0
  26. package/dist/service/core.d.ts.map +1 -0
  27. package/dist/service/core.js +58 -0
  28. package/dist/service/core.js.map +1 -0
  29. package/dist/service/pixiv/app.d.ts +5 -0
  30. package/dist/service/pixiv/app.d.ts.map +1 -0
  31. package/dist/service/pixiv/app.js +141 -0
  32. package/dist/service/pixiv/app.js.map +1 -0
  33. package/dist/service/pixiv/render/image.d.ts +4 -0
  34. package/dist/service/pixiv/render/image.d.ts.map +1 -0
  35. package/dist/service/pixiv/render/image.js +180 -0
  36. package/dist/service/pixiv/render/image.js.map +1 -0
  37. package/dist/service/pixiv/render/video.d.ts +6 -0
  38. package/dist/service/pixiv/render/video.d.ts.map +1 -0
  39. package/dist/service/pixiv/render/video.js +65 -0
  40. package/dist/service/pixiv/render/video.js.map +1 -0
  41. package/dist/service/pixiv/type.d.ts +164 -0
  42. package/dist/service/pixiv/type.d.ts.map +1 -0
  43. package/dist/service/pixiv/type.js +2 -0
  44. package/dist/service/pixiv/type.js.map +1 -0
  45. package/dist/service/twitter/app.d.ts +4 -0
  46. package/dist/service/twitter/app.d.ts.map +1 -0
  47. package/dist/service/twitter/app.js +204 -0
  48. package/dist/service/twitter/app.js.map +1 -0
  49. package/dist/service/twitter/render/basic/image.d.ts +59 -0
  50. package/dist/service/twitter/render/basic/image.d.ts.map +1 -0
  51. package/dist/service/twitter/render/basic/image.js +698 -0
  52. package/dist/service/twitter/render/basic/image.js.map +1 -0
  53. package/dist/service/twitter/render/basic/video.d.ts +17 -0
  54. package/dist/service/twitter/render/basic/video.d.ts.map +1 -0
  55. package/dist/service/twitter/render/basic/video.js +95 -0
  56. package/dist/service/twitter/render/basic/video.js.map +1 -0
  57. package/dist/service/twitter/render/makeItAQuote/image.d.ts +16 -0
  58. package/dist/service/twitter/render/makeItAQuote/image.d.ts.map +1 -0
  59. package/dist/service/twitter/render/makeItAQuote/image.js +99 -0
  60. package/dist/service/twitter/render/makeItAQuote/image.js.map +1 -0
  61. package/dist/service/twitter/render/utils/utils.d.ts +8 -0
  62. package/dist/service/twitter/render/utils/utils.d.ts.map +1 -0
  63. package/dist/service/twitter/render/utils/utils.js +43 -0
  64. package/dist/service/twitter/render/utils/utils.js.map +1 -0
  65. package/dist/service/twitter/utils.d.ts +9 -0
  66. package/dist/service/twitter/utils.d.ts.map +1 -0
  67. package/dist/service/twitter/utils.js +27 -0
  68. package/dist/service/twitter/utils.js.map +1 -0
  69. package/dist/tsconfig.build.tsbuildinfo +1 -1
  70. package/dist/utils/cookies.d.ts +15 -0
  71. package/dist/utils/cookies.d.ts.map +1 -0
  72. package/dist/utils/cookies.js +24 -0
  73. package/dist/utils/cookies.js.map +1 -0
  74. package/dist/utils/element.d.ts +26 -0
  75. package/dist/utils/element.d.ts.map +1 -0
  76. package/dist/utils/element.js +186 -0
  77. package/dist/utils/element.js.map +1 -0
  78. package/dist/utils/file.d.ts +25 -0
  79. package/dist/utils/file.d.ts.map +1 -0
  80. package/dist/utils/file.js +51 -0
  81. package/dist/utils/file.js.map +1 -0
  82. package/dist/utils/font.d.ts +14 -0
  83. package/dist/utils/font.d.ts.map +1 -0
  84. package/dist/utils/font.js +19 -0
  85. package/dist/utils/font.js.map +1 -0
  86. package/dist/utils/logger.d.ts +53 -26
  87. package/dist/utils/logger.d.ts.map +1 -1
  88. package/dist/utils/logger.js +119 -108
  89. package/dist/utils/logger.js.map +1 -1
  90. package/dist/utils/login.d.ts +16 -0
  91. package/dist/utils/login.d.ts.map +1 -0
  92. package/dist/utils/login.js +55 -0
  93. package/dist/utils/login.js.map +1 -0
  94. package/dist/utils/path.d.ts +34 -1
  95. package/dist/utils/path.d.ts.map +1 -1
  96. package/dist/utils/path.js +100 -5
  97. package/dist/utils/path.js.map +1 -1
  98. package/dist/utils/render.d.ts +27 -0
  99. package/dist/utils/render.d.ts.map +1 -0
  100. package/dist/utils/render.js +48 -0
  101. package/dist/utils/render.js.map +1 -0
  102. package/dist/utils/replace.d.ts +4 -0
  103. package/dist/utils/replace.d.ts.map +1 -0
  104. package/dist/utils/replace.js +43 -0
  105. package/dist/utils/replace.js.map +1 -0
  106. package/dist/utils/sleep.d.ts.map +1 -1
  107. package/dist/utils/sleep.js +4 -2
  108. package/dist/utils/sleep.js.map +1 -1
  109. package/dist/utils/video.d.ts +28 -0
  110. package/dist/utils/video.d.ts.map +1 -0
  111. package/dist/utils/video.js +84 -0
  112. package/dist/utils/video.js.map +1 -0
  113. package/oclif.manifest.json +9 -30
  114. package/package.json +43 -31
  115. package/dist/core/core.d.ts +0 -43
  116. package/dist/core/core.d.ts.map +0 -1
  117. package/dist/core/core.js +0 -336
  118. package/dist/core/core.js.map +0 -1
  119. package/dist/core/main.d.ts +0 -15
  120. package/dist/core/main.d.ts.map +0 -1
  121. package/dist/core/main.js +0 -153
  122. package/dist/core/main.js.map +0 -1
  123. package/dist/utils/fonts.d.ts +0 -5
  124. package/dist/utils/fonts.d.ts.map +0 -1
  125. package/dist/utils/fonts.js +0 -11
  126. package/dist/utils/fonts.js.map +0 -1
  127. package/dist/utils/liteJson.d.ts +0 -3
  128. package/dist/utils/liteJson.d.ts.map +0 -1
  129. package/dist/utils/liteJson.js +0 -25
  130. package/dist/utils/liteJson.js.map +0 -1
  131. package/dist/utils/node.d.ts +0 -6
  132. package/dist/utils/node.d.ts.map +0 -1
  133. package/dist/utils/node.js +0 -15
  134. package/dist/utils/node.js.map +0 -1
  135. package/dist/utils/oclif.d.ts +0 -2
  136. package/dist/utils/oclif.d.ts.map +0 -1
  137. package/dist/utils/oclif.js +0 -6
  138. package/dist/utils/oclif.js.map +0 -1
  139. package/dist/utils/types.d.ts +0 -8
  140. package/dist/utils/types.d.ts.map +0 -1
  141. package/dist/utils/types.js +0 -4
  142. package/dist/utils/types.js.map +0 -1
  143. package/dist/utils/url.d.ts +0 -12
  144. package/dist/utils/url.d.ts.map +0 -1
  145. package/dist/utils/url.js +0 -74
  146. package/dist/utils/url.js.map +0 -1
package/README.md CHANGED
@@ -1,181 +1,191 @@
1
- # twitter-snap
2
-
3
- Create beautiful Tweet images fast.
4
- Fast, good design, Browser is not a dependency.
5
-
6
- ```shell
7
- npx twitter-snap@latest https://twitter.com/elonmusk/status/1770222178279252062
8
- ```
9
-
10
- <p float="left">
11
- <img src="./docs/img/output-1.png" width="49%" />
12
- <img src="./docs/img/output-2.png" width="49%" />
13
- <img src="./docs/img/output-3.png" width="49%" />
14
- <img src="./docs/img/output-4.png" width="49%" />
15
- </p>
16
-
17
- [More Samples](https://github.com/fa0311/twitter-snap/issues/47)
18
-
19
- ```shell
20
- # Interactive mode
21
- npx twitter-snap@latest -i
22
- ```
23
-
24
- <img src="./docs/img/input-1.png" width="49%" />
25
-
26
- ```shell
27
- # Output the API response directly to a file in raw JSON format.
28
- npx twitter-snap@latest --theme Json https://x.com/elonmusk/status/1349129669258448897
29
- # Download the media file and save it directly to a file in its raw format.
30
- npx twitter-snap@latest --theme MediaOnly https://x.com/elonmusk/status/1349129669258448897
31
- # Use chatgpt to summarize the data in this tweet.
32
- npx twitter-snap@latest --theme LiteJson --sessionType browser https://x.com/elonmusk | chatgpt -p 'Summarize the data in this tweet.'
33
- ```
34
-
35
- ## Install
36
-
37
- `npm -g i twitter-snap@latest`
38
-
39
- ## Docker
40
-
41
- ```shell
42
- docker run -it --rm -v $(pwd)/output:/app/output ghcr.io/fa0311/twitter-snap/twitter-snap-docker:latest https://x.com/elonmusk/status/1349129669258448897
43
- ```
44
-
45
- ```shell
46
- docker run -it --rm -v $(pwd)/output:/app/output -v $(pwd)/cookies.json:/app/cookies.json twitter-snap https://x.com/elonmusk/status/1349129669258448897 --session-type file
47
- ```
48
-
49
- `--session-type=browser` is not supported.
50
-
51
- `GPU` is not supported.
52
-
53
- # Use as a package
54
-
55
- ```shell
56
- npm i twitter-snap
57
- ```
58
-
59
- ```typescript
60
- const url = 'https://twitter.com/elonmusk/status/1349129669258448897'
61
- const [client, api] = await twitterSnapGuest() // or twitterSnapCookies, twitterSnapPuppeteer
62
- const fonts = await getFonts('temp/fonts')
63
- const [id, type] = await twitterUrlConvert({url: url, api: api})
64
- await client({id: id, limit: 1, type: type, startId: id}, async (render) => {
65
- const finalize = await render({
66
- output: `temp/${id}.{if-photo:png:mp4}`,
67
- themeName: 'RenderOceanBlueColor',
68
- themeParam: {
69
- fonts: fonts,
70
- width: 1440,
71
- },
72
- })
73
- await finalize({cleanup: true})
74
- })
75
- ```
76
-
77
- Also, if you use advanced customization, please use [twitter-snap-core](https://github.com/fa0311/twitter-snap-core).
78
-
79
- ## Arguments
80
-
81
- ```shell
82
- $ twitter-snap --help
83
- Create beautiful Tweet images fast
84
-
85
- USAGE
86
- $ twitter-snap ID [--api
87
- getTweetResultByRestId|getTweetDetail|getSearchTimeline|getHomeTimeline|getHomeLatestTimeline|getListLatestTweetsTim
88
- eline|getUserTweets|getUserTweetsAndReplies|getUserMedia|getLikes|getBookmarks] [--browserHeadless]
89
- [--browserProfile <value>] [--cookiesFile <value>] [--debug] [--interactive] [--ffmpegAdditonalOption <value>]
90
- [--ffmpegPath <value>] [--ffprobePath <value>] [--fontPath <value>] [--limit <value>] [--noCleanup] [-o <value>]
91
- [--sessionType <value>] [--simpleLog] [--sleep <value>] [--theme
92
- RenderOceanBlueColor|RenderOceanBlueDarkColor|RenderSunsetGardenColor|RenderSunsetGardenDarkColor|RenderDawnBlossomC
93
- olor|RenderDawnBlossomDarkColor|RenderFierySunsetColor|RenderFierySunsetDarkColor|RenderTwilightSkyColor|RenderTwili
94
- ghtSkyDarkColor|RenderPlainColor|RenderPlainDarkColor|RenderTransparent|RenderTransparentDark|RenderTransparentShado
95
- w|RenderTransparentDarkShadow|RenderMakeItAQuote|MediaOnly|Json] [--width <value>] [--scale <value>]
96
-
97
- ARGUMENTS
98
- ID Twitter status id
99
-
100
- FLAGS
101
- -o, --output=<value>
102
- [default: {if-media-only:{id}-{media-id}:{id}}.{if-photo:png:mp4}] Output file name
103
-
104
- --api=<option>
105
- [default: getTweetResultByRestId] API type
106
- <options: getTweetResultByRestId|getTweetDetail|getSearchTimeline|getHomeTimeline|getHomeLatestTimeline|getListLates
107
- tTweetsTimeline|getUserTweets|getUserTweetsAndReplies|getUserMedia|getLikes|getBookmarks>
108
-
109
- --browserHeadless
110
- Browser headless
111
-
112
- --browserProfile=<value>
113
- [default: ~/.cache/twitter-snap/profiles] Browser profile
114
-
115
- --cookiesFile=<value>
116
- [default: cookies.json] Cookies file
117
-
118
- --debug
119
- Debug
120
-
121
- --ffmpegAdditonalOption=<value>
122
- FFmpeg additonal option
123
-
124
- --ffmpegPath=<value>
125
- [default: ffmpeg] FFmpeg path
126
-
127
- --ffprobePath=<value>
128
- [default: ffprobe] FFprobe path
129
-
130
- --fontPath=<value>
131
- [default: ~/.cache/twitter-snap/fonts] Font path
132
-
133
- --interactive
134
- Enable interactive mode
135
-
136
- --limit=<value>
137
- [default: 30] Limit count
138
-
139
- --noCleanup
140
- Cleanup
141
-
142
- --scale=<value>
143
- [default: 1] Scale
144
-
145
- --sessionType=<value>
146
- [default: guest] Session type
147
-
148
- --simpleLog
149
- Simple log
150
-
151
- --sleep=<value>
152
- Sleep (ms)
153
-
154
- --theme=<option>
155
- [default: RenderOceanBlueColor] Theme type
156
- <options: RenderOceanBlueColor|RenderOceanBlueDarkColor|RenderSunsetGardenColor|RenderSunsetGardenDarkColor|RenderDa
157
- wnBlossomColor|RenderDawnBlossomDarkColor|RenderFierySunsetColor|RenderFierySunsetDarkColor|RenderTwilightSkyColor|R
158
- enderTwilightSkyDarkColor|RenderPlainColor|RenderPlainDarkColor|RenderTransparent|RenderTransparentDark|RenderTransp
159
- arentShadow|RenderTransparentDarkShadow|RenderMakeItAQuote|MediaOnly|Json|LiteJson>
160
-
161
- --width=<value>
162
- [default: 650] Width
163
-
164
- DESCRIPTION
165
- Create beautiful Tweet images fast
166
- https://github.com/fa0311/twitter-snap
167
-
168
- EXAMPLES
169
- Create a snap from tweet id with minimal commands.
170
-
171
- $ twitter-snap https://twitter.com/elonmusk/status/1349129669258448897
172
-
173
- Enable interactive mode.
174
-
175
- $ twitter-snap --interactive
176
-
177
- ```
178
-
179
- ## Dependence
180
-
1
+ # twitter-snap
2
+
3
+ Create beautiful Tweet images fast.
4
+ Fast, good design, Browser is not a dependency.
5
+
6
+ ```shell
7
+ npx twitter-snap@latest https://twitter.com/elonmusk/status/1770222178279252062
8
+ ```
9
+
10
+ <p float="left">
11
+ <img src="./docs/img/output-1.png" width="49%" />
12
+ <img src="./docs/img/output-2.png" width="49%" />
13
+ <img src="./docs/img/output-3.png" width="49%" />
14
+ <img src="./docs/img/output-4.png" width="49%" />
15
+ </p>
16
+
17
+ [More Samples](https://github.com/fa0311/twitter-snap/issues/47)
18
+
19
+ ```shell
20
+ # Interactive mode
21
+ npx twitter-snap@latest -i
22
+ ```
23
+
24
+ <img src="./docs/img/input-1.png" width="49%" />
25
+
26
+ ---
27
+
28
+ ```shell
29
+ # Login with cookies
30
+ npx twitter-snap@latest https://twitter.com/elonmusk/status/1349129669258448897 --session-type file --cookies-file cookies.json
31
+ # Login with puppeteer
32
+ npx twitter-snap@latest https://twitter.com/elonmusk/status/1349129669258448897 --session-type browser
33
+
34
+ # Output the API response directly to a file in raw JSON format.
35
+ npx twitter-snap@latest --theme Json https://x.com/elonmusk/status/1349129669258448897 -o output/data.json
36
+ # Download the media file and save it directly to a file in its raw format.
37
+ npx twitter-snap@latest --theme Media https://x.com/elonmusk/status/1349129669258448897 -o output/{count}
38
+ # Use chatgpt to summarize the data in this tweet.
39
+ npx twitter-snap@latest --theme LiteJson -o {stdout} https://x.com/elonmusk | chatgpt -p 'Summarize the data in this tweet.'
40
+ ```
41
+
42
+ ## Install
43
+
44
+ `npm -g i twitter-snap@latest`
45
+
46
+ ## Docker
47
+
48
+ ```shell
49
+ docker run -it --rm -v $(pwd)/output:/app/output ghcr.io/fa0311/twitter-snap/twitter-snap-docker:latest https://x.com/elonmusk/status/1349129669258448897
50
+ ```
51
+
52
+ ```shell
53
+ docker run -it --rm -v $(pwd)/output:/app/output -v $(pwd)/cookies.json:/app/cookies.json twitter-snap https://x.com/elonmusk/status/1349129669258448897 --session-type file
54
+ ```
55
+
56
+ `--session-type=browser` is not supported.
57
+
58
+ `GPU` is not supported.
59
+
60
+ # Use as a package
61
+
62
+ ```shell
63
+ npm i twitter-snap
64
+ ```
65
+
66
+ ```typescript
67
+ const snap = getSnapAppRender({url: 'https://x.com/elonmusk/status/1349129669258448897'})
68
+ const font = await snap.getFont()
69
+ const session = await snap.login({sessionType: 'guest'})
70
+ const render = await snap.getRender({limit: 1, session})
71
+
72
+ await snap.run(render, async (run) => {
73
+ const res = await run({
74
+ width: 650,
75
+ theme: 'RenderOceanBlueColor',
76
+ font,
77
+ output: 'temp/{id}-{count}.{if-type:png:mp4:json:}',
78
+ })
79
+ await res.file.tempCleanup()
80
+ })
81
+ ```
82
+
83
+ Also, if you use advanced customization, please use [twitter-snap-core](https://github.com/fa0311/twitter-snap-core).
84
+
85
+ # Usage
86
+
87
+ <!-- COMMANDS_PLACEHOLDER_START -->
88
+
89
+ ```shell
90
+ $ node bin/run.js --help
91
+ Create beautiful Tweet images fast
92
+
93
+ USAGE
94
+ $ twitter-snap URL [--browserHeadless] [--browserProfile
95
+ <value>] [--cookiesFile <value>] [--debug] [--interactive]
96
+ [--ffmpegAdditonalOption <value>] [--ffmpegPath <value>] [--ffprobePath
97
+ <value>] [--fontPath <value>] [--limit <value>] [--noCleanup] [-o <value>]
98
+ [--sessionType browser|file|guest] [--simpleLog] [--sleep <value>] [--theme
99
+ RenderOceanBlueColor|RenderOceanBlueDarkColor|RenderSunsetGardenColor|Render
100
+ SunsetGardenDarkColor|RenderDawnBlossomColor|RenderDawnBlossomDarkColor|Rend
101
+ erFierySunsetColor|RenderFierySunsetDarkColor|RenderTwilightSkyColor|RenderT
102
+ wilightSkyDarkColor|RenderPlainColor|RenderPlainDarkColor|RenderTransparent|
103
+ RenderTransparentDark|RenderTransparentShadow|RenderTransparentShadowDark|Js
104
+ on|LiteJson|Media|RenderMakeItAQuote] [--width <value>] [--scale <value>]
105
+
106
+ ARGUMENTS
107
+ URL Twitter url
108
+
109
+ FLAGS
110
+ -o, --output=<value>
111
+ [default: {id}-{count}.{if-type:png:mp4:json:}] Output file name
112
+
113
+ --browserHeadless
114
+ Browser headless
115
+
116
+ --browserProfile=<value>
117
+ [default: ~/.cache/twitter-snap/profiles] Browser profile
118
+
119
+ --cookiesFile=<value>
120
+ [default: cookies.json] Cookies file
121
+
122
+ --debug
123
+ Debug
124
+
125
+ --ffmpegAdditonalOption=<value>
126
+ FFmpeg additonal option
127
+
128
+ --ffmpegPath=<value>
129
+ [default: ffmpeg] FFmpeg path
130
+
131
+ --ffprobePath=<value>
132
+ [default: ffprobe] FFprobe path
133
+
134
+ --fontPath=<value>
135
+ [default: ~/.cache/twitter-snap/fonts] Font path
136
+
137
+ --interactive
138
+ Enable interactive mode
139
+
140
+ --limit=<value>
141
+ [default: 20] Limit count
142
+
143
+ --noCleanup
144
+ Cleanup
145
+
146
+ --scale=<value>
147
+ [default: 1] Scale
148
+
149
+ --sessionType=<option>
150
+ [default: guest] Session type
151
+ <options: browser|file|guest>
152
+
153
+ --simpleLog
154
+ Simple log
155
+
156
+ --sleep=<value>
157
+ Sleep (ms)
158
+
159
+ --theme=<option>
160
+ [default: RenderOceanBlueColor] Theme type
161
+ <options: RenderOceanBlueColor|RenderOceanBlueDarkColor|RenderSunsetGardenCo
162
+ lor|RenderSunsetGardenDarkColor|RenderDawnBlossomColor|RenderDawnBlossomDark
163
+ Color|RenderFierySunsetColor|RenderFierySunsetDarkColor|RenderTwilightSkyCol
164
+ or|RenderTwilightSkyDarkColor|RenderPlainColor|RenderPlainDarkColor|RenderTr
165
+ ansparent|RenderTransparentDark|RenderTransparentShadow|RenderTransparentSha
166
+ dowDark|Json|LiteJson|Media|RenderMakeItAQuote>
167
+
168
+ --width=<value>
169
+ [default: 650] Width
170
+
171
+ DESCRIPTION
172
+ Create beautiful Tweet images fast
173
+ https://github.com/fa0311/twitter-snap
174
+
175
+ EXAMPLES
176
+ Create a snap from tweet id with minimal commands.
177
+
178
+ $ twitter-snap https://twitter.com/elonmusk/status/1349129669258448897
179
+
180
+ Enable interactive mode.
181
+
182
+ $ twitter-snap --interactive
183
+
184
+
185
+ ```
186
+
187
+ <!-- COMMANDS_PLACEHOLDER_END -->
188
+
189
+ ## Dependence
190
+
181
191
  - [ffmpeg](https://ffmpeg.org/) (for video)
package/bin/dev.cmd CHANGED
@@ -1,3 +1,3 @@
1
- @echo off
2
-
3
- node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
1
+ @echo off
2
+
3
+ node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
package/bin/dev.js CHANGED
@@ -1,5 +1,6 @@
1
- #!/usr/bin/env -S node --loader ts-node/esm --no-warnings=ExperimentalWarning
2
-
3
- import {execute} from '@oclif/core'
4
-
5
- await execute({development: true, dir: import.meta.url})
1
+ #!/usr/bin/env -S node --loader ts-node/esm --disable-warning=ExperimentalWarning
2
+
3
+ // eslint-disable-next-line n/shebang
4
+ import {execute} from '@oclif/core'
5
+
6
+ await execute({development: true, dir: import.meta.url})
package/bin/run.cmd CHANGED
@@ -1,3 +1,3 @@
1
- @echo off
2
-
3
- node "%~dp0\run" %*
1
+ @echo off
2
+
3
+ node "%~dp0\run" %*
package/bin/run.js CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env node
2
-
3
- import {execute} from '@oclif/core'
4
-
5
- await execute({dir: import.meta.url})
1
+ #!/usr/bin/env node
2
+
3
+ import {execute} from '@oclif/core'
4
+
5
+ await execute({dir: import.meta.url})
package/dist/app.d.ts ADDED
@@ -0,0 +1,81 @@
1
+ import { ColorThemeType, themeList } from './config.js';
2
+ import { FontOptions, FontUtils } from './utils/font.js';
3
+ import { Logger } from './utils/logger.js';
4
+ import { SnapAppBrowserUtils } from './utils/login.js';
5
+ import { SnapRenderBaseUtils, SnapRenderColorUtils, SnapRenderUtils } from './utils/render.js';
6
+ import { FileReplace } from './utils/replace.js';
7
+ export declare const includeColorTheme: (theme: string) => theme is ColorThemeType;
8
+ export declare const includeTheme: (theme: string) => theme is keyof typeof themeList;
9
+ type ExtractGroups<T extends string> = T extends `${infer _Start}(?<${infer GroupName}>${infer _Rest})${infer Tail}` ? {
10
+ [K in GroupName | keyof ExtractGroups<Tail>]: string;
11
+ } : {};
12
+ type SnapAppCallback<T1, V1 extends string, V2> = (utils: {
13
+ limit: number;
14
+ }, api: T1, match: ExtractGroups<V1>) => Promise<SnapRenderChild<V2>>;
15
+ export declare class Session<T1> {
16
+ api: T1;
17
+ constructor(api: T1);
18
+ }
19
+ export declare class SnapApp<T1> {
20
+ name: string;
21
+ callback: (util: SnapAppBrowserUtils) => Promise<Session<T1>>;
22
+ fonts: (utils: FontUtils) => Promise<FontOptions>;
23
+ init: ({ logger }: {
24
+ logger: Logger;
25
+ }) => Promise<void>;
26
+ pattern: RegExp;
27
+ callbackList: [RegExp, SnapAppCallback<T1, string, any>][];
28
+ constructor(name: string, pattern: string, callback: (util: SnapAppBrowserUtils) => Promise<Session<T1>>, fonts: (utils: FontUtils) => Promise<FontOptions>, init: ({ logger }: {
29
+ logger: Logger;
30
+ }) => Promise<void>);
31
+ call<V1 extends string, V2>(pattern: V1, callback: SnapAppCallback<T1, V1, V2>): void;
32
+ }
33
+ type CallbackImage<T1> = (data: T1, utils: SnapRenderColorUtils) => Promise<React.ReactElement>;
34
+ type CallbackVideo<T1> = (data: T1, utils: SnapRenderColorUtils) => Promise<void>;
35
+ type CallbackOther<T1> = (data: T1, utils: SnapRenderUtils, placeholder: FileReplace[], output: string) => Promise<void>;
36
+ type CallbackJson<T1> = (data: T1, utils: SnapRenderUtils) => Promise<any>;
37
+ type CallbackMedia<T1> = (data: T1, utils: SnapRenderUtils) => Promise<void>;
38
+ export declare class SnapRender<T1> {
39
+ isImage: (data: T1) => boolean;
40
+ placeholder: (data: T1) => FileReplace[];
41
+ imageCallback: [string, CallbackImage<T1>][];
42
+ videoCallback: [string, CallbackVideo<T1>][];
43
+ otherCallback: [string, CallbackOther<T1>][];
44
+ jsonCallback: [string, CallbackJson<T1>][];
45
+ constructor(isImage: (data: T1) => boolean, placeholder: (data: T1) => FileReplace[], image: CallbackImage<T1>, video: CallbackVideo<T1>);
46
+ run: (data: AsyncGenerator<T1, any, any>) => SnapRenderChild<T1>;
47
+ add: (theme: string, image: CallbackImage<T1>, video: CallbackVideo<T1>) => void;
48
+ other: (theme: string, callback: CallbackOther<T1>) => void;
49
+ json: (theme: string, json: CallbackJson<T1>) => void;
50
+ media: <T2>(theme: string, media: (data: T1) => T2[], mediaPlaceholder: (data: T2) => FileReplace[], callback: CallbackMedia<T2>) => void;
51
+ }
52
+ export type SnapRenderChildNextParam<T1> = {
53
+ data: T1;
54
+ ffmpegAdditonalOption?: string[];
55
+ ffmpegPath?: string;
56
+ ffprobePath?: string;
57
+ font: FontOptions;
58
+ logger: Logger;
59
+ output: string;
60
+ scale: number;
61
+ theme: string;
62
+ width: number;
63
+ };
64
+ export declare class SnapRenderChild<T1> {
65
+ isImage: (data: T1) => boolean;
66
+ placeholder: (data: T1) => FileReplace[];
67
+ imageCallback: [string, CallbackImage<T1>][];
68
+ videoCallback: [string, CallbackVideo<T1>][];
69
+ otherCallback: [string, CallbackOther<T1>][];
70
+ jsonCallback: [string, CallbackJson<T1>][];
71
+ data: AsyncGenerator<T1, any, any>;
72
+ count: number;
73
+ constructor(isImage: (data: T1) => boolean, placeholder: (data: T1) => FileReplace[], imageCallback: [string, CallbackImage<T1>][], videoCallback: [string, CallbackVideo<T1>][], otherCallback: [string, CallbackOther<T1>][], jsonCallback: [string, CallbackJson<T1>][], data: AsyncGenerator<T1, any, any>);
74
+ image: (theme: string) => CallbackImage<T1>;
75
+ video: (theme: string) => CallbackVideo<T1>;
76
+ other: (theme: string) => CallbackOther<T1>;
77
+ json: (theme: string) => CallbackJson<T1>;
78
+ next: (flag: SnapRenderChildNextParam<T1>) => Promise<SnapRenderBaseUtils>;
79
+ }
80
+ export {};
81
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}