mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-02 01:05:20 +03:00
Merge remote-tracking branch 'upstream/release-0.9.0' into event_view
This commit is contained in:
commit
9ead6480ce
@ -244,6 +244,8 @@ class RecordingCleanup(threading.Thread):
|
||||
|
||||
def expire_files(self):
|
||||
logger.debug("Start expire files (legacy).")
|
||||
|
||||
shortest_retention = self.config.record.retain_days
|
||||
default_expire = (
|
||||
datetime.datetime.now().timestamp()
|
||||
- SECONDS_IN_DAY * self.config.record.retain_days
|
||||
@ -254,8 +256,19 @@ class RecordingCleanup(threading.Thread):
|
||||
datetime.datetime.now().timestamp()
|
||||
- SECONDS_IN_DAY * camera.record.retain_days
|
||||
)
|
||||
if camera.record.retain_days < shortest_retention:
|
||||
shortest_retention = camera.record.retain_days
|
||||
|
||||
for p in Path("/media/frigate/recordings").rglob("*.mp4"):
|
||||
logger.debug(f"Shortest retention: {shortest_retention}")
|
||||
process = sp.run(
|
||||
["find", RECORD_DIR, "-type", "f", "-mtime", f"+{shortest_retention}"],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
files_to_check = process.stdout.splitlines()
|
||||
|
||||
for f in files_to_check:
|
||||
p = Path(f)
|
||||
# Ignore files that have a record in the recordings DB
|
||||
if Recordings.select().where(Recordings.path == str(p)).count():
|
||||
continue
|
||||
@ -265,8 +278,8 @@ class RecordingCleanup(threading.Thread):
|
||||
logger.debug("End expire files (legacy).")
|
||||
|
||||
def run(self):
|
||||
# Expire recordings every minute, clean directories every 5 minutes.
|
||||
for counter in itertools.cycle(range(5)):
|
||||
# Expire recordings every minute, clean directories every hour.
|
||||
for counter in itertools.cycle(range(60)):
|
||||
if self.stop_event.wait(60):
|
||||
logger.info(f"Exiting recording cleanup...")
|
||||
break
|
||||
|
||||
@ -23,7 +23,7 @@ export default function App() {
|
||||
) : (
|
||||
<div className="flex flex-row min-h-screen w-full bg-white dark:bg-gray-900 text-gray-900 dark:text-white">
|
||||
<Sidebar />
|
||||
<div className="w-full flex-auto p-2 mt-24 px-4 min-w-0">
|
||||
<div className="w-full flex-auto p-2 mt-16 px-4 min-w-0">
|
||||
<Router>
|
||||
<AsyncRoute path="/cameras/:camera/editor" getComponent={Routes.getCameraMap} />
|
||||
<AsyncRoute path="/cameras/:camera" getComponent={Routes.getCamera} />
|
||||
|
||||
@ -63,7 +63,7 @@ export default function AppBar() {
|
||||
<MenuSeparator />
|
||||
<MenuItem icon={FrigateRestartIcon} label="Restart Frigate" onSelect={handleRestart} />
|
||||
</Menu>
|
||||
) : null},
|
||||
) : null}
|
||||
{showDialog ? (
|
||||
<Dialog
|
||||
onDismiss={handleDismissRestartDialog}
|
||||
@ -74,7 +74,7 @@ export default function AppBar() {
|
||||
{ text: 'Cancel', onClick: handleDismissRestartDialog },
|
||||
]}
|
||||
/>
|
||||
) : null},
|
||||
) : null}
|
||||
{showDialogWait ? (
|
||||
<Dialog
|
||||
title="Restart in progress"
|
||||
|
||||
@ -37,13 +37,13 @@ export default function AppBar({ title: Title, overflowRef, onOverflowClick }) {
|
||||
|
||||
return (
|
||||
<div
|
||||
className={`w-full border-b border-gray-200 dark:border-gray-700 flex items-center align-middle p-4 space-x-2 fixed left-0 right-0 z-10 bg-white dark:bg-gray-900 transform transition-all duration-200 ${
|
||||
className={`w-full border-b border-gray-200 dark:border-gray-700 flex items-center align-middle p-2 fixed left-0 right-0 z-10 bg-white dark:bg-gray-900 transform transition-all duration-200 ${
|
||||
!show ? '-translate-y-full' : 'translate-y-0'
|
||||
} ${!atZero ? 'shadow-sm' : ''}`}
|
||||
data-testid="appbar"
|
||||
>
|
||||
<div className="lg:hidden">
|
||||
<Button color="black" className="rounded-full w-12 h-12" onClick={handleShowDrawer} type="text">
|
||||
<Button color="black" className="rounded-full w-10 h-10" onClick={handleShowDrawer} type="text">
|
||||
<MenuIcon className="w-10 h-10" />
|
||||
</Button>
|
||||
</div>
|
||||
@ -54,7 +54,7 @@ export default function AppBar({ title: Title, overflowRef, onOverflowClick }) {
|
||||
<Button
|
||||
aria-label="More options"
|
||||
color="black"
|
||||
className="rounded-full w-12 h-12"
|
||||
className="rounded-full w-9 h-9"
|
||||
onClick={onOverflowClick}
|
||||
type="text"
|
||||
>
|
||||
|
||||
@ -22,7 +22,7 @@ export default function NavigationDrawer({ children, header }) {
|
||||
onClick={handleDismiss}
|
||||
>
|
||||
{header ? (
|
||||
<div className="flex-shrink-0 p-5 flex flex-row items-center justify-between border-b border-gray-200 dark:border-gray-700">
|
||||
<div className="flex-shrink-0 p-2 flex flex-row items-center justify-between border-b border-gray-200 dark:border-gray-700">
|
||||
{header}
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user