-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathchatgpt.js
More file actions
executable file
路41 lines (32 loc) 路 1.32 KB
/
Copy pathchatgpt.js
File metadata and controls
executable file
路41 lines (32 loc) 路 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env node
process.env.CLOAKBROWSER_AUTO_UPDATE = 'false';
const { NodeHtmlMarkdown } = require('node-html-markdown');
const { devices } = require('playwright-core');
const url = 'https://chatgpt.com/?q=' + process.argv[2];
const buttonStop = '.wm-composer-stopIcon .wm-composer-icon';
const textMessage = '._wdUoQG_assistantMessage ._wdUoQG_messageCopy';
const timer = 500;
async function main() {
console.log("Preparing browser...");
const { launch } = await import('cloakbrowser');
const browser = await launch({ headless: true });
const iPhone15 = devices['iPhone 15'];
let context = await browser.newContext({ ...iPhone15 });
let page = await context.newPage();
await page.goto(url, { waitUntil: 'domcontentloaded' });
await context.close();
console.log("Connecting site...");
context = await browser.newContext({ ...iPhone15 });
page = await context.newPage();
await page.goto(url, { waitUntil: 'domcontentloaded' });
console.log("Receiving response...\n\n");
await page.waitForTimeout(timer);
while (await page.locator(buttonStop).isVisible()) {
await page.waitForTimeout(timer);
}
const currentHtml = await page.locator(textMessage).innerHTML();
const markdown = NodeHtmlMarkdown.translate(currentHtml);
console.log(markdown);
await browser.close();
}
main().catch(console.error);