| 811 | | 811 | |
| 812 | const pollinations = express.Router(); | 812 | const pollinations = express.Router(); |
| 813 | | 813 | |
| | 814 | pollinations.post('/models', jsonParser, async (_request, response) => { |
| | 815 | try { |
| | 816 | const modelsUrl = new URL('https://image.pollinations.ai/models'); |
| | 817 | const result = await fetch(modelsUrl); |
| | 818 | |
| | 819 | if (!result.ok) { |
| | 820 | console.log('Pollinations returned an error.', result.status, result.statusText); |
| | 821 | throw new Error('Pollinations request failed.'); |
| | 822 | } |
| | 823 | |
| | 824 | const data = await result.json(); |
| | 825 | |
| | 826 | if (!Array.isArray(data)) { |
| | 827 | console.log('Pollinations returned invalid data.'); |
| | 828 | throw new Error('Pollinations request failed.'); |
| | 829 | } |
| | 830 | |
| | 831 | const models = data.map(x => ({ value: x, text: x })); |
| | 832 | return response.send(models); |
| | 833 | } catch (error) { |
| | 834 | console.log(error); |
| | 835 | return response.sendStatus(500); |
| | 836 | } |
| | 837 | }); |
| | 838 | |
| 814 | pollinations.post('/generate', jsonParser, async (request, response) => { | 839 | pollinations.post('/generate', jsonParser, async (request, response) => { |
| 815 | try { | 840 | try { |
| 816 | const promptUrl = new URL(`https://image.pollinations.ai/prompt/${encodeURIComponent(request.body.prompt)}`); | 841 | const promptUrl = new URL(`https://image.pollinations.ai/prompt/${encodeURIComponent(request.body.prompt)}`); |