File size: 1,312 Bytes
344555b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
42
43
44
45
46
47
48
49
const WebSocket = require('ws');

async function ss2code(imageBuffer) {
	return new Promise((resolve, reject) => {
		const ws = new WebSocket('wss://imagetoappv2.ngrok.app/generate-code');
		let finalCode = '';
        
		ws.on('open', () => {
			console.log('Connect to WebSocket');
			ws.send(JSON.stringify({
				generationType: 'create',
				image: `data:image/jpeg;base64,${imageBuffer.toString('base64')}`,
				inputMode: 'image',
				openAiApiKey: null,
				openAiBaseURL: null,
				anthropicApiKey: null,
				screenshotOneApiKey: null,
				isImageGenerationEnabled: true,
				editorTheme: 'cobalt',
				generatedCodeConfig: 'html_tailwind',
				codeGenerationModel: 'gpt-4o-2024-05-13',
				isTermOfServiceAccepted: false
			}));
		});

		ws.on('message', (message) => {
			const response = JSON.parse(message.toString());
		    if (response.type === 'setCode') {
		        finalCode = response.value;
		    } else if (response.type === 'status') {
		        console.log(response.value);
		    }
		});

		ws.on('close', () => {
			console.log('WebSocket connection closed');
			resolve(finalCode.trim());
		});

		ws.on('error', (error) => {
			reject(new Error(error.message));
		});
	});
}

// Usage:
const fs = require('fs');
const resp = await ss2code(fs.readFileSync('./ss.jpg'));
console.log(resp);