mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-23 13:36:35 +00:00
Use a task per instance for Media.refresh_formats
This commit is contained in:
parent
e23bf7a3e2
commit
c72a9c8584
@ -54,6 +54,7 @@ def map_task_to_instance(task):
|
|||||||
'sync.tasks.download_media': Media,
|
'sync.tasks.download_media': Media,
|
||||||
'sync.tasks.download_media_metadata': Media,
|
'sync.tasks.download_media_metadata': Media,
|
||||||
'sync.tasks.save_all_media_for_source': Source,
|
'sync.tasks.save_all_media_for_source': Source,
|
||||||
|
'sync.tasks.refesh_formats': Media,
|
||||||
'sync.tasks.rename_media': Media,
|
'sync.tasks.rename_media': Media,
|
||||||
'sync.tasks.rename_all_media_for_source': Source,
|
'sync.tasks.rename_all_media_for_source': Source,
|
||||||
'sync.tasks.wait_for_media_premiere': Media,
|
'sync.tasks.wait_for_media_premiere': Media,
|
||||||
@ -656,7 +657,7 @@ def rescan_media_server(mediaserver_id):
|
|||||||
mediaserver.update()
|
mediaserver.update()
|
||||||
|
|
||||||
|
|
||||||
@background(schedule=dict(priority=25, run_at=600), queue=Val(TaskQueue.NET), remove_existing_tasks=True)
|
@background(schedule=dict(priority=25, run_at=600), queue=Val(TaskQueue.FS), remove_existing_tasks=True)
|
||||||
def save_all_media_for_source(source_id):
|
def save_all_media_for_source(source_id):
|
||||||
'''
|
'''
|
||||||
Iterates all media items linked to a source and saves them to
|
Iterates all media items linked to a source and saves them to
|
||||||
@ -672,7 +673,7 @@ def save_all_media_for_source(source_id):
|
|||||||
f'source exists with ID: {source_id}')
|
f'source exists with ID: {source_id}')
|
||||||
raise InvalidTaskError(_('no such source')) from e
|
raise InvalidTaskError(_('no such source')) from e
|
||||||
|
|
||||||
already_saved = set()
|
saved_later = set()
|
||||||
mqs = Media.objects.filter(source=source)
|
mqs = Media.objects.filter(source=source)
|
||||||
task = get_source_check_task(source_id)
|
task = get_source_check_task(source_id)
|
||||||
refresh_qs = mqs.filter(
|
refresh_qs = mqs.filter(
|
||||||
@ -691,21 +692,14 @@ def save_all_media_for_source(source_id):
|
|||||||
tvn_format = '1/{:,}' + f'/{refresh_qs.count():,}'
|
tvn_format = '1/{:,}' + f'/{refresh_qs.count():,}'
|
||||||
for mn, media in enumerate(refresh_qs, start=1):
|
for mn, media in enumerate(refresh_qs, start=1):
|
||||||
update_task_status(task, tvn_format.format(mn))
|
update_task_status(task, tvn_format.format(mn))
|
||||||
try:
|
refesh_formats(str(media.pk))
|
||||||
media.refresh_formats
|
saved_later.add(media.uuid)
|
||||||
except YouTubeError as e:
|
|
||||||
log.debug(f'Failed to refresh formats for: {source} / {media.key}: {e!s}')
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
with atomic():
|
|
||||||
media.save()
|
|
||||||
already_saved.add(media.uuid)
|
|
||||||
|
|
||||||
# Trigger the post_save signal for each media item linked to this source as various
|
# Trigger the post_save signal for each media item linked to this source as various
|
||||||
# flags may need to be recalculated
|
# flags may need to be recalculated
|
||||||
tvn_format = '2/{:,}' + f'/{mqs.count():,}'
|
tvn_format = '2/{:,}' + f'/{mqs.count():,}'
|
||||||
for mn, media in enumerate(mqs, start=1):
|
for mn, media in enumerate(mqs, start=1):
|
||||||
if media.uuid not in already_saved:
|
if media.uuid not in saved_later:
|
||||||
update_task_status(task, tvn_format.format(mn))
|
update_task_status(task, tvn_format.format(mn))
|
||||||
with atomic():
|
with atomic():
|
||||||
media.save()
|
media.save()
|
||||||
@ -713,6 +707,22 @@ def save_all_media_for_source(source_id):
|
|||||||
update_task_status(task, None)
|
update_task_status(task, None)
|
||||||
|
|
||||||
|
|
||||||
|
@background(schedule=dict(priority=10, run_at=0), queue=Val(TaskQueue.NET), remove_existing_tasks=True)
|
||||||
|
def refesh_formats(media_id):
|
||||||
|
try:
|
||||||
|
media = Media.objects.get(pk=media_id)
|
||||||
|
except Media.DoesNotExist as e:
|
||||||
|
raise InvalidTaskError(_('no such media')) from e
|
||||||
|
try:
|
||||||
|
media.refresh_formats
|
||||||
|
except YouTubeError as e:
|
||||||
|
log.debug(f'Failed to refresh formats for: {media.source} / {media.key}: {e!s}')
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
with atomic():
|
||||||
|
media.save()
|
||||||
|
|
||||||
|
|
||||||
@background(schedule=dict(priority=20, run_at=60), queue=Val(TaskQueue.FS), remove_existing_tasks=True)
|
@background(schedule=dict(priority=20, run_at=60), queue=Val(TaskQueue.FS), remove_existing_tasks=True)
|
||||||
def rename_media(media_id):
|
def rename_media(media_id):
|
||||||
try:
|
try:
|
||||||
|
Loading…
Reference in New Issue
Block a user