for s in (hours_str, minutes_str, seconds_str)])
+def _now_string() -> DatetimeStr:
+ """Return datetime.now() in TIMESTAMP_FMT."""
+ return DatetimeStr(datetime.now().strftime(TIMESTAMP_FMT))
+
+
class TagSet:
"""Collection of tags as used in VideoFile.tags."""
continue
result.set_duration_from_yt_string(content_details['duration'])
result.definition = content_details['definition'].upper()
- query = cls(None, query_txt,
- DatetimeStr(datetime.now().strftime(TIMESTAMP_FMT)))
+ query = cls(None, query_txt, _now_string())
query.save(conn)
for result in [r for r in results if r.id_ not in unfinished_streams]:
result.save(conn)
duration_ms if duration_ms >= 0
else int(ONE_MILLION * Decimal(
ffprobe(self.full_path)['format']['duration'])))
- if last_update is None:
- self._renew_last_update()
- else:
- self.last_update = last_update
+ self.last_update = last_update if last_update else _now_string()
self._hash_on_last_update = hash(self)
def __hash__(self) -> int:
return hash(tuple(getattr(self, k) for k in self._cols))
- def _renew_last_update(self):
- self.last_update = DatetimeStr(datetime.now().strftime(TIMESTAMP_FMT))
-
@property
def as_dict(self) -> dict[str, bool | str | list[str]]:
"""Return dict of values relevant for /files."""
def save(self, conn: DbConn) -> None:
"""Extend super().save by new .last_update if sufficient changes."""
if hash(self) != self._hash_on_last_update:
- self._renew_last_update()
+ self.last_update = _now_string()
return super().save(conn)
def test_deletion(self, do_raise: bool) -> bool:
def update(cls, conn: DbConn, cost: QuotaCost) -> None:
"""Adds cost mapped to current datetime."""
cls._remove_old(conn)
- new = cls(None,
- DatetimeStr(datetime.now().strftime(TIMESTAMP_FMT)),
- QuotaCost(cost))
+ new = cls(None, _now_string(), QuotaCost(cost))
new.save(conn)
@classmethod
def _signal_update(self) -> None:
"""Update .last_update as signal player state has changed relevantly"""
- self.last_update = DatetimeStr(datetime.now().strftime(TIMESTAMP_FMT))
+ self.last_update = _now_string()
def _monitor_kill(self) -> None:
"""Properly enforce mpv shutdown from direct interaction with mpv