Get camera name the correct way.
This commit is contained in:
@@ -58,12 +58,14 @@ export interface CameraManagerEngine {
|
|||||||
): Promise<RecordingSegmentsQueryResultsMap | null>;
|
): Promise<RecordingSegmentsQueryResultsMap | null>;
|
||||||
|
|
||||||
generateMediaFromEvents(
|
generateMediaFromEvents(
|
||||||
|
hass: HomeAssistant,
|
||||||
cameras: Map<string, CameraConfig>,
|
cameras: Map<string, CameraConfig>,
|
||||||
query: EventQuery,
|
query: EventQuery,
|
||||||
results: QueryReturnType<EventQuery>,
|
results: QueryReturnType<EventQuery>,
|
||||||
): ViewMedia[] | null;
|
): ViewMedia[] | null;
|
||||||
|
|
||||||
generateMediaFromRecordings(
|
generateMediaFromRecordings(
|
||||||
|
hass: HomeAssistant,
|
||||||
cameras: Map<string, CameraConfig>,
|
cameras: Map<string, CameraConfig>,
|
||||||
query: RecordingQuery,
|
query: RecordingQuery,
|
||||||
results: QueryReturnType<RecordingQuery>,
|
results: QueryReturnType<RecordingQuery>,
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ export class FrigateCameraManagerEngine implements CameraManagerEngine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public generateMediaFromEvents(
|
public generateMediaFromEvents(
|
||||||
|
_hass: HomeAssistant,
|
||||||
cameras: Map<string, CameraConfig>,
|
cameras: Map<string, CameraConfig>,
|
||||||
query: EventQuery,
|
query: EventQuery,
|
||||||
results: QueryReturnType<EventQuery>,
|
results: QueryReturnType<EventQuery>,
|
||||||
@@ -542,6 +543,7 @@ export class FrigateCameraManagerEngine implements CameraManagerEngine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public generateMediaFromRecordings(
|
public generateMediaFromRecordings(
|
||||||
|
hass: HomeAssistant,
|
||||||
cameras: Map<string, CameraConfig>,
|
cameras: Map<string, CameraConfig>,
|
||||||
_query: RecordingQuery,
|
_query: RecordingQuery,
|
||||||
results: QueryReturnType<RecordingQuery>,
|
results: QueryReturnType<RecordingQuery>,
|
||||||
@@ -557,6 +559,7 @@ export class FrigateCameraManagerEngine implements CameraManagerEngine {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const media = FrigateViewMediaFactory.createRecordingViewMedia(
|
const media = FrigateViewMediaFactory.createRecordingViewMedia(
|
||||||
|
hass,
|
||||||
recording.cameraID,
|
recording.cameraID,
|
||||||
recording,
|
recording,
|
||||||
cameraConfig,
|
cameraConfig,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { HomeAssistant } from 'custom-card-helpers';
|
||||||
import fromUnixTime from 'date-fns/fromUnixTime';
|
import fromUnixTime from 'date-fns/fromUnixTime';
|
||||||
import isEqual from 'lodash-es/isEqual';
|
import isEqual from 'lodash-es/isEqual';
|
||||||
import { CameraConfig } from '../../types';
|
import { CameraConfig } from '../../types';
|
||||||
@@ -155,6 +156,7 @@ export class FrigateViewMediaFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static createRecordingViewMedia(
|
static createRecordingViewMedia(
|
||||||
|
hass: HomeAssistant,
|
||||||
cameraID: string,
|
cameraID: string,
|
||||||
recording: FrigateRecording,
|
recording: FrigateRecording,
|
||||||
cameraConfig: CameraConfig,
|
cameraConfig: CameraConfig,
|
||||||
@@ -173,7 +175,7 @@ export class FrigateViewMediaFactory {
|
|||||||
cameraConfig.frigate.camera_name,
|
cameraConfig.frigate.camera_name,
|
||||||
recording,
|
recording,
|
||||||
),
|
),
|
||||||
getRecordingTitle(cameraConfig, recording),
|
getRecordingTitle(hass, cameraConfig, recording),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
import { HomeAssistant } from 'custom-card-helpers';
|
||||||
import utcToZonedTime from 'date-fns-tz/utcToZonedTime';
|
import utcToZonedTime from 'date-fns-tz/utcToZonedTime';
|
||||||
import { CameraConfig, ClipsOrSnapshots } from '../../types';
|
import { CameraConfig, ClipsOrSnapshots } from '../../types';
|
||||||
import { formatDateAndTime, prettifyTitle } from '../../utils/basic';
|
import { formatDateAndTime, prettifyTitle } from '../../utils/basic';
|
||||||
|
import { getCameraTitle } from '../../utils/camera';
|
||||||
import { FrigateEvent, FrigateRecording } from './types';
|
import { FrigateEvent, FrigateRecording } from './types';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,11 +24,12 @@ export const getEventTitle = (event: FrigateEvent): string => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getRecordingTitle = (
|
export const getRecordingTitle = (
|
||||||
|
hass: HomeAssistant,
|
||||||
cameraConfig: CameraConfig,
|
cameraConfig: CameraConfig,
|
||||||
recording: FrigateRecording,
|
recording: FrigateRecording,
|
||||||
): string => {
|
): string => {
|
||||||
const cameraName = prettifyTitle(cameraConfig.frigate.camera_name ?? '');
|
const cameraTitle = getCameraTitle(hass, cameraConfig);
|
||||||
return `${cameraName ? `${cameraName} ` : ''}${formatDateAndTime(
|
return `${cameraTitle ? `${cameraTitle} ` : ''}${formatDateAndTime(
|
||||||
recording.startTime,
|
recording.startTime,
|
||||||
)}`;
|
)}`;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -236,6 +236,7 @@ export class CameraManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const mediaArray = this._convertQueryResultsToMedia(
|
const mediaArray = this._convertQueryResultsToMedia(
|
||||||
|
hass,
|
||||||
await this._handleQuery(hass, queries),
|
await this._handleQuery(hass, queries),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -294,6 +295,7 @@ export class CameraManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const newChunkMedia = this._convertQueryResultsToMedia(
|
const newChunkMedia = this._convertQueryResultsToMedia(
|
||||||
|
hass,
|
||||||
await this._handleQuery(hass, newChunkQueries),
|
await this._handleQuery(hass, newChunkQueries),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -498,6 +500,7 @@ export class CameraManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected _convertQueryResultsToMedia<QT extends DataQuery>(
|
protected _convertQueryResultsToMedia<QT extends DataQuery>(
|
||||||
|
hass: HomeAssistant,
|
||||||
results: ResultsMap<QT>,
|
results: ResultsMap<QT>,
|
||||||
): ViewMedia[] {
|
): ViewMedia[] {
|
||||||
const mediaArray: ViewMedia[] = [];
|
const mediaArray: ViewMedia[] = [];
|
||||||
@@ -510,12 +513,12 @@ export class CameraManager {
|
|||||||
QueryClassifier.isEventQuery(query) &&
|
QueryClassifier.isEventQuery(query) &&
|
||||||
QueryResultClassifier.isEventQueryResult(result)
|
QueryResultClassifier.isEventQueryResult(result)
|
||||||
) {
|
) {
|
||||||
media = engine.generateMediaFromEvents(this._cameras, query, result);
|
media = engine.generateMediaFromEvents(hass, this._cameras, query, result);
|
||||||
} else if (
|
} else if (
|
||||||
QueryClassifier.isRecordingQuery(query) &&
|
QueryClassifier.isRecordingQuery(query) &&
|
||||||
QueryResultClassifier.isRecordingQuery(result)
|
QueryResultClassifier.isRecordingQuery(result)
|
||||||
) {
|
) {
|
||||||
media = engine.generateMediaFromRecordings(this._cameras, query, result);
|
media = engine.generateMediaFromRecordings(hass, this._cameras, query, result);
|
||||||
}
|
}
|
||||||
if (media) {
|
if (media) {
|
||||||
mediaArray.push(...media);
|
mediaArray.push(...media);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
// Minor / later:
|
// Minor / later:
|
||||||
// - TODO: ts-prune https://camchenry.com/blog/deleting-dead-code-in-typescript
|
// - TODO: ts-prune https://camchenry.com/blog/deleting-dead-code-in-typescript
|
||||||
// - TODO: getRecordingTitle should use getCameraTitle but need hass.
|
|
||||||
// - TODO: Take MediaQueries wrappers out of the camera manager.
|
// - TODO: Take MediaQueries wrappers out of the camera manager.
|
||||||
// - TODO: View a media in the gallery from September, then notice timeline missing the item.
|
// - TODO: View a media in the gallery from September, then notice timeline missing the item.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user