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