Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ninjaneural
GitHub Repository: ninjaneural/webui
Path: blob/master/script/template_sdxl.js
3275 views
1
const fs = require('fs');
2
const https = require('https');
3
4
const TARGET_DIR = process.argv[2] ?? 'sdxl';
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_sdxl.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).map(item=>{
39
let id = item.name.toLowerCase().replace(/[- ]/g, '_').replace(/[^a-z0-9]/g, '');
40
if (!item.ipynb) {
41
item.ipynb = id+'_webui_colab';
42
}
43
if (!item.checkpoint_file) {
44
item.checkpoint_file = id+'.safetensors';
45
}
46
if (!item.sdmodel) {
47
item.sdmodel = 'sdxl';
48
}
49
return item;
50
});
51
list.forEach((item) => {
52
let code = templateCode;
53
console.log(`${item.ipynb} 복사`);
54
code = code.replaceAll('#template_checkpoint_default#', item.checkpoint);
55
code = code.replaceAll('#template_checkpoint_default_name#', item.checkpoint_file);
56
code = code.replaceAll('#template_refine_checkpoint_default#', item.refine_checkpoint ?? '');
57
code = code.replaceAll('#template_refine_checkpoint_default_name#', item.refine_checkpoint_file ?? '');
58
code = code.replaceAll('#template_notebook#', TARGET_DIR);
59
fs.writeFileSync(`../${TARGET_DIR}/${item.ipynb}.ipynb`, code);
60
61
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} |`)
62
});
63
64
readmeText = readme.join('\n');
65
fs.writeFileSync(`../${TARGET_DIR}/README.md`, readmeText);
66
67
return true;
68
}
69
70
async function make_readme2() {
71
let readme = [];
72
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).map(item=>{
73
let id = item.name.toLowerCase().replace(/[- ]/g, '_').replace(/[^a-z0-9]/g, '');
74
if (!item.ipynb) {
75
item.ipynb = id+'_webui_colab';
76
}
77
if (!item.checkpoint_file) {
78
item.checkpoint_file = id+'.safetensors';
79
}
80
if (!item.sdmodel) {
81
item.sdmodel = 'sdxl';
82
}
83
return item;
84
});
85
readme.push(`| 바로실행 | 설치버전(install) | Model | VAE | Memo |`);
86
readme.push(`| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ---- | ----------------------- |`);
87
list.filter(x=>x.sdmodel=='sdxl').forEach((item) => {
88
readme.push(`| [![Open In Colab](https://raw.githubusercontent.com/neuralninja22/colab/master/icons/colab-badge.svg)](https://colab.research.google.com/github/ninjaneural/webui/blob/master/sdxl/${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_sdxl/${item.ipynb}.ipynb) | [${item.name}](${item.model}) | ${item.bakedVAE ? '' : '선택'} | ${item.type} |`)
89
});
90
readme.push(``);
91
92
readme.push(`| 바로실행 | 설치버전(install) | Model | VAE | Memo |`);
93
readme.push(`| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ---- | ----------------------- |`);
94
list.filter(x=>x.sdmodel=='pony').forEach((item) => {
95
readme.push(`| [![Open In Colab](https://raw.githubusercontent.com/neuralninja22/colab/master/icons/colab-badge.svg)](https://colab.research.google.com/github/ninjaneural/webui/blob/master/sdxl/${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_sdxl/${item.ipynb}.ipynb) | [${item.name}](${item.model}) | ${item.bakedVAE ? '' : '선택'} | ${item.type} |`)
96
});
97
98
readmeText = readme.join('\n');
99
fs.writeFileSync(`../COLAB_SDXL_ALL.md`, readmeText);
100
101
let variable = []
102
variable.push(
103
`LocalCheckpointName = 'juggernaut_xl_v8.safetensors' #@param [${list.map((a)=>'"'+a.checkpoint_file+'"').join(',')}]`
104
)
105
variable.push(
106
`LocalCheckpointMap = {${list.map((a)=>'"'+a.checkpoint_file+'":"'+a.checkpoint+'"').join(',')}}`
107
)
108
fs.writeFileSync(`../install/SDXL_VARIABLES.md`, variable.join('\n'));
109
110
return true;
111
}
112
113
114
(async function () {
115
try {
116
const model = await fetchModel();
117
checkpoints = JSON.parse(model);
118
copy_files();
119
make_readme2();
120
} catch (e) {
121
console.error(e);
122
}
123
})();
124
125