mirror of
https://github.com/chibicitiberiu/ytsm.git
synced 2024-02-24 05:43:31 +00:00
Implemented mark as watched/unwatched auto-delete and auto-download funcitonality.
This commit is contained in:
@ -8,6 +8,8 @@ from django.db import models
|
||||
from django.db.models.functions import Lower
|
||||
from YtManagerApp.utils.youtube import YoutubeAPI, YoutubeChannelInfo, YoutubePlaylistInfo
|
||||
|
||||
|
||||
|
||||
# help_text = user shown text
|
||||
# verbose_name = user shown name
|
||||
# null = nullable, blank = user is allowed to set value to empty
|
||||
@ -285,9 +287,22 @@ class Video(models.Model):
|
||||
|
||||
def mark_watched(self):
|
||||
self.watched = True
|
||||
self.save()
|
||||
if self.downloaded_path is not None:
|
||||
from YtManagerApp.appconfig import get_user_config
|
||||
from YtManagerApp.management.jobs.delete_video import schedule_delete_video
|
||||
from YtManagerApp.management.jobs.synchronize import schedule_synchronize_now_subscription
|
||||
|
||||
user_cfg = get_user_config(self.subscription.user)
|
||||
if user_cfg.getboolean('user', 'DeleteWatched'):
|
||||
schedule_delete_video(self)
|
||||
schedule_synchronize_now_subscription(self.subscription)
|
||||
|
||||
def mark_unwatched(self):
|
||||
from YtManagerApp.management.jobs.synchronize import schedule_synchronize_now_subscription
|
||||
self.watched = False
|
||||
self.save()
|
||||
schedule_synchronize_now_subscription(self.subscription)
|
||||
|
||||
def get_files(self):
|
||||
if self.downloaded_path is not None:
|
||||
@ -296,5 +311,24 @@ class Video(models.Model):
|
||||
if file.startswith(file_pattern):
|
||||
yield os.path.join(directory, file)
|
||||
|
||||
def delete_files(self):
|
||||
if self.downloaded_path is not None:
|
||||
from YtManagerApp.management.jobs.delete_video import schedule_delete_video
|
||||
from YtManagerApp.appconfig import get_user_config
|
||||
from YtManagerApp.management.jobs.synchronize import schedule_synchronize_now_subscription
|
||||
|
||||
schedule_delete_video(self)
|
||||
|
||||
# Mark watched?
|
||||
user_cfg = get_user_config(self.subscription.user)
|
||||
if user_cfg.getboolean('user', 'MarkDeletedAsWatched'):
|
||||
self.watched = True
|
||||
schedule_synchronize_now_subscription(self.subscription)
|
||||
|
||||
def download(self):
|
||||
if not self.downloaded_path:
|
||||
from YtManagerApp.management.jobs.download_video import schedule_download_video
|
||||
schedule_download_video(self)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
return self.name
|
||||
|
@ -2,13 +2,13 @@ import logging
|
||||
import sys
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
|
||||
from .appconfig import settings
|
||||
|
||||
instance: BackgroundScheduler = None
|
||||
|
||||
|
||||
def initialize_scheduler():
|
||||
from .appconfig import settings
|
||||
global instance
|
||||
|
||||
logger = logging.getLogger('scheduler')
|
||||
executors = {
|
||||
'default': {
|
||||
|
@ -11,8 +11,6 @@ from crispy_forms.layout import Layout, Field, Div, HTML
|
||||
from django.db.models import Q
|
||||
from YtManagerApp.utils import youtube
|
||||
from YtManagerApp.management.jobs.synchronize import schedule_synchronize_now
|
||||
from YtManagerApp.management.jobs.delete_video import schedule_delete_video
|
||||
from YtManagerApp.management.jobs.download_video import schedule_download_video
|
||||
|
||||
|
||||
class SyncNowView(View):
|
||||
@ -26,7 +24,7 @@ class SyncNowView(View):
|
||||
class DeleteVideoFilesView(View):
|
||||
def post(self, *args, **kwargs):
|
||||
video = Video.objects.get(id=kwargs['pk'])
|
||||
schedule_delete_video(video)
|
||||
video.delete_files()
|
||||
return JsonResponse({
|
||||
'success': True
|
||||
})
|
||||
@ -35,7 +33,7 @@ class DeleteVideoFilesView(View):
|
||||
class DownloadVideoFilesView(View):
|
||||
def post(self, *args, **kwargs):
|
||||
video = Video.objects.get(id=kwargs['pk'])
|
||||
schedule_download_video(video)
|
||||
video.download()
|
||||
return JsonResponse({
|
||||
'success': True
|
||||
})
|
||||
@ -44,8 +42,7 @@ class DownloadVideoFilesView(View):
|
||||
class MarkVideoWatchedView(View):
|
||||
def post(self, *args, **kwargs):
|
||||
video = Video.objects.get(id=kwargs['pk'])
|
||||
video.watched = True
|
||||
video.save()
|
||||
video.mark_watched()
|
||||
return JsonResponse({
|
||||
'success': True
|
||||
})
|
||||
@ -54,7 +51,7 @@ class MarkVideoWatchedView(View):
|
||||
class MarkVideoUnwatchedView(View):
|
||||
def post(self, *args, **kwargs):
|
||||
video = Video.objects.get(id=kwargs['pk'])
|
||||
video.watched = False
|
||||
video.mark_unwatched()
|
||||
video.save()
|
||||
return JsonResponse({
|
||||
'success': True
|
||||
|
Reference in New Issue
Block a user