Warning: session_start(): open(/var/lib/php/sessions/sess_bl8n4qs787baapcuvlgccfdcc7, 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
cmodule DiscordFan > DynPrintLogAndEnabled {
transient Map protos = syncCIMap();
ISegmenter segmenter;
transient new ScreenShooter shooter;
transient ReliableSingleThread rstSegment = dm_rst(module(), r segment);
transient ReliableSingleThread rstAOA = dm_rst(module(), r aoa);
transient ImageInfo info;
transient ImageInfo latestWithAOA;
transient ImageSurface isThings;
transient double minScore = 95;
sclass ImageInfo {
BufferedImage image;
L segments;
new AOA_CompareImagesToProtos aoa;
}
visual jvsplit(
jCenteredSection("Things found on screen", jscroll_center(isThings = jImageSurface())),
super);
start-thread {
dm_watchField enabled(r {
set(shooter, +enabled);
});
if (empty(protos))
putAll(protos, mapValues loadBWImage(imageSnippetIDsForNames(llQuoted("Open", "Open discord"))));
print("Have " + n2(protos, "proto"));
if (segmenter == null)
setField(segmenter := segmenterFromAGIBlue("Find things on discordapp.com #1"));
print("Have segmenter: " + segmenter);
shooter.onNewImage.add(rstSegment);
shooter.start(enter := f enter);
doEvery(1.0, r shootScreen2);
}
void segment {
BufferedImage img = shooter.latestImage;
if (!enabled || img == null || segmenter == null) ret; // man weiß ja nie...
// Have picture!!
long time = sysNow();
new ImageInfo info;
info.image = img;
info.segments = segmenter.get(img);
this.info = info;
done2_always(time, "Make " + nSegments(info.segments));
rstAOA.trigger();
}
void aoa {
ImageInfo info = this.info;
if (info == null) ret; // man weiß ja nie...
long time = sysNow();
AOA_CompareImagesToProtos aoa = info.aoa;
aoa.addProtos(protos);
aoa.addImages(iotaKeys_str(
map toBWImage(bufferedImageClips(info.image, info.segments))));
stepAll(aoa);
Map protoScores = mapSortedByValue(aoa.scoresForProtos());
Map filtered = filterMap_valuesEqualToOrBiggerThan(protoScores, minScore/100);
if (isThings != null) isThings.setImage(
bwInverted(mergeBWImagesHorizontally(lookupAllOpt(protos, keys(filtered)))));
print(mapValues toIntPercent(protoScores));
latestWithAOA = info;
done2_always("AOA", time);
}
void cleanMeUp {
dispose shooter;
}
}