Save duration, timestamp, and title to Media instances

This commit is contained in:
tcely 2025-02-09 19:32:13 -05:00 committed by GitHub
parent 6390f5a1c3
commit 83dc375810
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -10,7 +10,7 @@ import math
import uuid
from io import BytesIO
from hashlib import sha1
from datetime import timedelta, datetime
from datetime import datetime, timedelta, timezone as tz
from shutil import copyfile
from PIL import Image
from django.conf import settings
@ -202,6 +202,7 @@ def index_source_task(source_id):
source.last_crawl = timezone.now()
source.save()
log.info(f'Found {len(videos)} media items for source: {source}')
fields = lambda x, t=source.source_type: Media.METADATA_FIELDS.get(x, dict()).get(t, x)
for video in videos:
# Create or update each video as a Media object
key = video.get(source.key_field, None)
@ -213,6 +214,18 @@ def index_source_task(source_id):
except Media.DoesNotExist:
media = Media(key=key)
media.source = source
media.duration = float(video.get(fields('duration'), 0)) or None
media.title = str(video.get(fields('title'), ''))
timestamp = video.get(fields('timestamp'), None)
if timestamp is not None:
try:
timestamp_float = float(timestamp)
posix_epoch = datetime(1970, 1, 1, tzinfo=tz.utc)
published_dt = posix_epoch + timedelta(seconds=timestamp_float)
except Exception as e:
log.warn(f'Could not set published for: {source} / {media} with "{e}"')
else:
media.published = published_dt
try:
media.save()
log.debug(f'Indexed media: {source} / {media}')