mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-24 14:06:36 +00:00
Merge branch 'meeb:main' into jellyfin-mediaserver
This commit is contained in:
commit
be740dfb7f
@ -4,7 +4,7 @@ import json
|
|||||||
import re
|
import re
|
||||||
from xml.etree import ElementTree
|
from xml.etree import ElementTree
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta, timezone as tz
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@ -559,6 +559,7 @@ class Media(models.Model):
|
|||||||
**(_same_name('upload_date')),
|
**(_same_name('upload_date')),
|
||||||
**(_same_name('timestamp')),
|
**(_same_name('timestamp')),
|
||||||
**(_same_name('title')),
|
**(_same_name('title')),
|
||||||
|
**(_same_name('fulltitle')),
|
||||||
**(_same_name('description')),
|
**(_same_name('description')),
|
||||||
**(_same_name('duration')),
|
**(_same_name('duration')),
|
||||||
**(_same_name('formats')),
|
**(_same_name('formats')),
|
||||||
@ -1029,8 +1030,28 @@ class Media(models.Model):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def metadata_title(self):
|
def metadata_title(self):
|
||||||
field = self.get_metadata_field('title')
|
result = ''
|
||||||
return self.loaded_metadata.get(field, '').strip()
|
for key in ('fulltitle', 'title'):
|
||||||
|
field = self.get_metadata_field(key)
|
||||||
|
value = self.loaded_metadata.get(field, '').strip()
|
||||||
|
if value:
|
||||||
|
result = value
|
||||||
|
break
|
||||||
|
return result
|
||||||
|
|
||||||
|
def metadata_published(self, timestamp=None):
|
||||||
|
published_dt = None
|
||||||
|
if timestamp is None:
|
||||||
|
field = self.get_metadata_field('timestamp')
|
||||||
|
timestamp = self.loaded_metadata.get(field, 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 compute published from timestamp for: {self.source} / {self} with "{e}"')
|
||||||
|
return published_dt
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def slugtitle(self):
|
def slugtitle(self):
|
||||||
|
@ -10,7 +10,7 @@ import math
|
|||||||
import uuid
|
import uuid
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from hashlib import sha1
|
from hashlib import sha1
|
||||||
from datetime import datetime, timedelta, timezone as tz
|
from datetime import datetime, timedelta
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -217,15 +217,9 @@ def index_source_task(source_id):
|
|||||||
media.duration = float(video.get(fields('duration', media), None) or 0) or None
|
media.duration = float(video.get(fields('duration', media), None) or 0) or None
|
||||||
media.title = str(video.get(fields('title', media), ''))[:200]
|
media.title = str(video.get(fields('title', media), ''))[:200]
|
||||||
timestamp = video.get(fields('timestamp', media), None)
|
timestamp = video.get(fields('timestamp', media), None)
|
||||||
if timestamp is not None:
|
published_dt = media.metadata_published(timestamp)
|
||||||
try:
|
if published_dt is not None:
|
||||||
timestamp_float = float(timestamp)
|
media.published = published_dt
|
||||||
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:
|
try:
|
||||||
media.save()
|
media.save()
|
||||||
log.debug(f'Indexed media: {source} / {media}')
|
log.debug(f'Indexed media: {source} / {media}')
|
||||||
@ -386,6 +380,9 @@ def download_media_metadata(media_id):
|
|||||||
# Media must have a valid upload date
|
# Media must have a valid upload date
|
||||||
if upload_date:
|
if upload_date:
|
||||||
media.published = timezone.make_aware(upload_date)
|
media.published = timezone.make_aware(upload_date)
|
||||||
|
published = media.metadata_published()
|
||||||
|
if published:
|
||||||
|
media.published = published
|
||||||
|
|
||||||
# Store title in DB so it's fast to access
|
# Store title in DB so it's fast to access
|
||||||
if media.metadata_title:
|
if media.metadata_title:
|
||||||
|
Loading…
Reference in New Issue
Block a user