Get camera name the correct way.

This commit is contained in:
Dermot Duffy
2023-01-29 16:07:56 -08:00
parent 49e5cc5c5e
commit eed436d77f
6 changed files with 18 additions and 6 deletions
+2
View File
@@ -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>,
+3
View File
@@ -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,
+3 -1
View File
@@ -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),
); );
} }
} }
+5 -2
View File
@@ -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,
)}`; )}`;
}; };
+5 -2
View File
@@ -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
View File
@@ -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.