mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-25 06:26:37 +00:00
Create a media entry after deletion
This commit is contained in:
parent
73972c8b0c
commit
9aa5e6b967
@ -295,6 +295,25 @@ def media_post_save(sender, instance, created, **kwargs):
|
|||||||
|
|
||||||
@receiver(pre_delete, sender=Media)
|
@receiver(pre_delete, sender=Media)
|
||||||
def media_pre_delete(sender, instance, **kwargs):
|
def media_pre_delete(sender, instance, **kwargs):
|
||||||
|
# Save the metadata site & thumbnail URL to the metadata column
|
||||||
|
existing_metadata = instance.loaded_metadata
|
||||||
|
metadata_str = instance.metadata or '{}'
|
||||||
|
column_metadata = instance.metadata_loads(metadata_str)
|
||||||
|
instance.metadata = instance.metadata_dumps(
|
||||||
|
arg_dict=dict(column_metadata).update(
|
||||||
|
deleted=True,
|
||||||
|
site=instance.get_metadata_first_value(
|
||||||
|
'extractor_key',
|
||||||
|
'Youtube',
|
||||||
|
arg_dict=existing_metadata,
|
||||||
|
),
|
||||||
|
thumbnail=instance.get_metadata_first_value(
|
||||||
|
'thumbnail',
|
||||||
|
arg_dict=existing_metadata,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
instance.save()
|
||||||
# Triggered before media is deleted, delete any unlocked scheduled tasks
|
# Triggered before media is deleted, delete any unlocked scheduled tasks
|
||||||
log.info(f'Deleting tasks for media: {instance.name}')
|
log.info(f'Deleting tasks for media: {instance.name}')
|
||||||
delete_task_by_media('sync.tasks.download_media', (str(instance.pk),))
|
delete_task_by_media('sync.tasks.download_media', (str(instance.pk),))
|
||||||
@ -370,3 +389,32 @@ def media_post_delete(sender, instance, **kwargs):
|
|||||||
log.info(f'Deleting file for: {instance} path: {file}')
|
log.info(f'Deleting file for: {instance} path: {file}')
|
||||||
delete_file(file)
|
delete_file(file)
|
||||||
|
|
||||||
|
# Create a media entry for the indexing task to find
|
||||||
|
# Requirements:
|
||||||
|
# source, key, duration, title, published
|
||||||
|
skipped_media, created = Media.objects.get_or_create(
|
||||||
|
key=instance.key,
|
||||||
|
source=instance.source,
|
||||||
|
)
|
||||||
|
if created:
|
||||||
|
old_metadata = instance.loaded_metadata
|
||||||
|
skipped_media.downloaded = False
|
||||||
|
skipped_media.duration = instance.duration
|
||||||
|
skipped_media.metadata = skipped_media.metadata_dumps(
|
||||||
|
arg_dict=dict(
|
||||||
|
_media_instance_was_deleted=True,
|
||||||
|
site=old_metadata.get('site'),
|
||||||
|
thumbnail=old_metadata.get('thumbnail'),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
skipped_media.published = instance.published
|
||||||
|
skipped_media.title = instance.title
|
||||||
|
skipped_media.skip = True
|
||||||
|
skipped_media.manual_skip = True
|
||||||
|
skipped_media.save()
|
||||||
|
Metadata.objects.filter(
|
||||||
|
media__isnull=True,
|
||||||
|
site=old_metadata.get('site') or 'Youtube',
|
||||||
|
key=skipped_media.key,
|
||||||
|
).update(media=skipped_media)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user