Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ninjaneural
GitHub Repository: ninjaneural/webui
Path: blob/master/script/template.js
3275 views
1
const fs = require('fs');
2
const https = require('https');
3
4
const TARGET_DIR = process.argv[2] ?? 'stable';
5
const BASE_SRC = `../${TARGET_DIR}/template.ipynb`;
6
7
async function fetchModel() {
8
return new Promise((resolve, reject)=>{
9
// JSON 데이터를 가져올 URL
10
const url = 'https://raw.githubusercontent.com/ninjaneural/webui/master/misc/checkpoints_sd15.json';
11
12
// HTTP GET 요청 보내기
13
https.get(url, (response) => {
14
let data = '';
15
16
// 데이터를 수신할 때마다 호출되는 콜백 함수
17
response.on('data', (chunk) => {
18
data += chunk;
19
});
20
21
// 데이터 수신이 완료되면 호출되는 콜백 함수
22
response.on('end', () => {
23
resolve(data);
24
});
25
}).on('error', (error) => {
26
reject(error);
27
});
28
})
29
}
30
31
let checkpoints = [];
32
33
async function copy_files() {
34
let templateCode = fs.readFileSync(BASE_SRC, { encoding: 'utf8' });
35
let readme = [];
36
readme.push(`| Colab | Model | VAE | Memo |`);
37
readme.push(`| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ---- | ----------------------- |`);
38
const list = checkpoints.filter(x=>!x.auth).sort((a, b) => a.name.toLowerCase() > b.name.toLowerCase() ? 1 : a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 0);
39
list.forEach((item) => {
40
console.log(`${item.ipynb} 복사`);
41
let code = templateCode;
42
code = code.replaceAll('#template_checkpoint_default#', item.checkpoint);
43
code = code.replaceAll('#template_checkpoint_default_name#', item.checkpoint_file);
44
code = code.replaceAll('#template_notebook#', TARGET_DIR);
45
fs.writeFileSync(`../${TARGET_DIR}/${item.ipynb}.ipynb`, code);
46
47
readme.push(`| [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ninjaneural/webui/blob/master/${TARGET_DIR}/${item.ipynb}.ipynb) | [${item.name}](${item.model}) | ${item.bakedVAE ? '' : '선택'} | ${item.type} |`)
48
});
49
50
readmeText = readme.join('\n');
51
fs.writeFileSync(`../${TARGET_DIR}/README.md`, readmeText);
52
53
return true;
54
}
55
56
async function make_readme() {
57
let readme = [];
58
readme.push(`| 구버전(stable) | 설치버전(install) | 일반(nightly) | Deforum전용 | Model | VAE | Memo |`);
59
readme.push(`| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ---- | ----------------------- |`);
60
const list = checkpoints.filter(x=>!x.auth).sort((a, b) => a.name.toLowerCase() > b.name.toLowerCase() ? 1 : a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 0);
61
list.forEach((item) => {
62
readme.push(`| [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ninjaneural/webui/blob/master/stable/${item.ipynb}.ipynb) | [![Open In Colab](https://raw.githubusercontent.com/neuralninja22/colab/master/icons/colab-badge-install.svg)](https://colab.research.google.com/github/ninjaneural/webui/blob/master/install/${item.ipynb}.ipynb) | [![Open In Colab](https://raw.githubusercontent.com/neuralninja22/colab/master/icons/colab-badge-nightly.svg)](https://colab.research.google.com/github/ninjaneural/webui/blob/master/nightly/${item.ipynb}.ipynb) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ninjaneural/webui/blob/master/deforum/${item.ipynb}.ipynb) | [${item.name}](${item.model}) | ${item.bakedVAE ? '' : '선택'} | ${item.type} |`)
63
});
64
65
readmeText = readme.join('\n');
66
fs.writeFileSync(`../COLAB.md`, readmeText);
67
return true;
68
}
69
70
(async function () {
71
try {
72
const model = await fetchModel();
73
checkpoints = JSON.parse(model);
74
copy_files();
75
make_readme();
76
} catch (e) {
77
console.error(e);
78
}
79
})();
80
81