Propagate
This commit is contained in:
@@ -241,10 +241,10 @@ export const clusterFaces = async (faceIndexes: FaceIndex[]) => {
|
||||
// clusters as its display face.
|
||||
|
||||
const faceForFaceID = new Map(faces.map((f) => [f.faceID, f]));
|
||||
const people = await clusterGroups();
|
||||
const cgroups = await clusterGroups();
|
||||
|
||||
for (const person of people) {
|
||||
person.avatarFaceID = person.clusterIDs
|
||||
for (const cgroup of cgroups) {
|
||||
cgroup.avatarFaceID = cgroup.clusterIDs
|
||||
.map((clusterID) => clusterIndexForClusterID.get(clusterID))
|
||||
.map((clusterIndex) =>
|
||||
clusterIndex ? clusters[clusterIndex] : undefined,
|
||||
@@ -265,7 +265,7 @@ export const clusterFaces = async (faceIndexes: FaceIndex[]) => {
|
||||
validClusters,
|
||||
clusterIndexForClusterID,
|
||||
clusterIDForFaceID,
|
||||
people,
|
||||
cgroups,
|
||||
},
|
||||
]);
|
||||
log.debug(
|
||||
@@ -273,7 +273,7 @@ export const clusterFaces = async (faceIndexes: FaceIndex[]) => {
|
||||
`Clustered ${faces.length} faces into ${validClusters.length} clusters (${Date.now() - t} ms)`,
|
||||
);
|
||||
|
||||
return { clusters: validClusters, people };
|
||||
return { clusters: validClusters, cgroups };
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -347,7 +347,7 @@ export const wipCluster = async () => {
|
||||
|
||||
if (last) return last;
|
||||
|
||||
const { clusters, people } = await clusterFaces(await faceIndexes());
|
||||
const { clusters, cgroups } = await clusterFaces(await faceIndexes());
|
||||
const clusterByID = new Map(
|
||||
clusters.map((cluster) => [cluster.id, cluster]),
|
||||
);
|
||||
@@ -356,31 +356,31 @@ export const wipCluster = async () => {
|
||||
const localFilesByID = new Map(localFiles.map((f) => [f.id, f]));
|
||||
|
||||
const result: SearchPerson[] = [];
|
||||
for (const person of people) {
|
||||
let avatarFaceID = person.avatarFaceID;
|
||||
for (const cgroup of cgroups) {
|
||||
let avatarFaceID = cgroup.avatarFaceID;
|
||||
// TODO-Cluster
|
||||
// Temp
|
||||
if (!avatarFaceID) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
avatarFaceID = person.clusterIDs
|
||||
avatarFaceID = cgroup.clusterIDs
|
||||
.map((id) => clusterByID.get(id))
|
||||
.flatMap((cluster) => cluster?.faceIDs ?? [])[0]!;
|
||||
}
|
||||
person.clusterIDs;
|
||||
cgroup.clusterIDs;
|
||||
const avatarFaceFileID = fileIDFromFaceID(avatarFaceID);
|
||||
const avatarFaceFile = localFilesByID.get(avatarFaceFileID ?? 0);
|
||||
if (!avatarFaceFileID || !avatarFaceFile) {
|
||||
assertionFailed(`Face ID ${avatarFaceID} without local file`);
|
||||
continue;
|
||||
}
|
||||
const files = person.clusterIDs
|
||||
const files = cgroup.clusterIDs
|
||||
.map((id) => clusterByID.get(id))
|
||||
.flatMap((cluster) => cluster?.faceIDs ?? [])
|
||||
.map((faceID) => fileIDFromFaceID(faceID))
|
||||
.filter((fileID) => fileID !== undefined);
|
||||
result.push({
|
||||
id: person.id,
|
||||
name: person.name,
|
||||
id: cgroup.id,
|
||||
name: cgroup.name,
|
||||
files,
|
||||
displayFaceID: avatarFaceID,
|
||||
displayFaceFile: avatarFaceFile,
|
||||
|
||||
Reference in New Issue
Block a user