2018-10-20 22:20:31 +00:00
|
|
|
import logging
|
|
|
|
import os
|
|
|
|
|
|
|
|
from YtManagerApp import scheduler
|
|
|
|
from YtManagerApp.models import Video
|
|
|
|
|
|
|
|
log = logging.getLogger('video_downloader')
|
|
|
|
|
|
|
|
|
|
|
|
def delete_video(video: Video):
|
|
|
|
log.info('Deleting video %d [%s %s]', video.id, video.video_id, video.name)
|
|
|
|
count = 0
|
|
|
|
|
|
|
|
try:
|
|
|
|
for file in video.get_files():
|
|
|
|
log.info("Deleting file %s", file)
|
|
|
|
count += 1
|
|
|
|
try:
|
|
|
|
os.unlink(file)
|
|
|
|
except OSError as e:
|
|
|
|
log.error("Failed to delete file %s: Error: %s", file, e)
|
|
|
|
|
|
|
|
except OSError as e:
|
|
|
|
log.error("Failed to delete video %d [%s %s]. Error: %s", video.id, video.video_id, video.name, e)
|
|
|
|
|
|
|
|
video.downloaded_path = None
|
|
|
|
video.save()
|
|
|
|
|
|
|
|
log.info('Deleted video %d successfully! (%d files) [%s %s]', video.id, count, video.video_id, video.name)
|
|
|
|
|
|
|
|
|
|
|
|
def schedule_delete_video(video: Video):
|
|
|
|
"""
|
|
|
|
Schedules a download video job to run immediately.
|
|
|
|
:param video:
|
|
|
|
:return:
|
|
|
|
"""
|
2018-10-29 16:52:09 +00:00
|
|
|
job = scheduler.scheduler.add_job(delete_video, args=[video])
|
|
|
|
log.info('Scheduled delete video job video=(%s), job=%s', video, job.id)
|