Warning: session_start(): open(/var/lib/php/sessions/sess_alsslcrkiqdga0icth7orja5su, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
concept FileMeta {
int fileID;
S md5;
long checked;
}
svoid init {
dbIndexing(FileMeta, 'fileID);
}
p {
init();
typicalDownload();
}
svoid fullDownload {
download(diagramServer_IDsAndMD5s());
}
svoid typicalDownload {
SS map = diagramServer_typicalSet();
download(map);
saveTextFile(getProgramFile("typical.structure"), struct(map));
}
svoid downloadLatestFileNamed(S name) {
L l = (L) safeUnstructure(loadPage("http://ai1.lol/1010474/raw/latest-file-named/" + urlencode(name)));
if (l == null) ret with print("Can't file named " + name + " on diagram server");
S md5;
download(litmap(str(first(l)), md5 = second(l))); // ID + MD5
saveTextFile(getProgramFile(urlencode(name) + ".file"), md5);
}
// map: ID -> MD5
svoid download(SS map) {
loading "Downloading diagrams..." {
pnl(map);
for (S id : keys(map)) {
S md5 = map.get(id);
FileMeta m = uniq(FileMeta, fileID := parseInt(id));
cset(m, +md5, checked := now());
File f = getFile(m);
if (!f.exists()) {
S url = diagramServer_idToURL(id);
saveBinaryFile(f, loadBinaryPage(url));
print("Saved " + f);
}
}
print("Done.");
}}
static File getFile(FileMeta m) {
ret getProgramFile(m.md5);
}