implement autodelete watched videos after x days, #56

This commit is contained in:
simon 2021-12-16 12:44:37 +07:00
parent 53f93a7bb9
commit 9a2dead76c
No known key found for this signature in database
GPG Key ID: 2C15AA5E89985DD4
5 changed files with 30 additions and 0 deletions

View File

@ -19,6 +19,7 @@ Settings related to the download process.
- **Download Speed Limit**: Set your download speed limit in KB/s. This will pass the option `--limit-rate` to yt-dlp. - **Download Speed Limit**: Set your download speed limit in KB/s. This will pass the option `--limit-rate` to yt-dlp.
- **Throttled Rate Limit**: Restart download if the download speed drops below this value in KB/s. This will pass the option `--throttled-rate` to yt-dlp. Using this option might have a negative effect if you have an unstable or slow internet connection. - **Throttled Rate Limit**: Restart download if the download speed drops below this value in KB/s. This will pass the option `--throttled-rate` to yt-dlp. Using this option might have a negative effect if you have an unstable or slow internet connection.
- **Sleep Interval**: Time in seconds to sleep between requests to YouTube. It's a good idea to set this to **3** seconds. Might be necessary to avoid throttling. - **Sleep Interval**: Time in seconds to sleep between requests to YouTube. It's a good idea to set this to **3** seconds. Might be necessary to avoid throttling.
- **Auto Delete Watched Videos**: Automatically delete videos marked as watched after selected days. If activated, checks your videos after download task is finished.
## Download Format ## Download Format
Additional settings passed to yt-dlp. Additional settings passed to yt-dlp.

View File

@ -18,6 +18,7 @@
"limit_count": false, "limit_count": false,
"limit_speed": false, "limit_speed": false,
"sleep_interval": 3, "sleep_interval": 3,
"autodelete_days": false,
"format": false, "format": false,
"add_metadata": false, "add_metadata": false,
"add_thumbnail": false, "add_thumbnail": false,

View File

@ -60,6 +60,7 @@ class ApplicationSettingsForm(forms.Form):
downloads_add_thumbnail = forms.ChoiceField( downloads_add_thumbnail = forms.ChoiceField(
widget=forms.Select, choices=THUMBNAIL_CHOICES, required=False widget=forms.Select, choices=THUMBNAIL_CHOICES, required=False
) )
downloads_autodelete_days = forms.IntegerField(required=False)
class SchedulerSettingsForm(forms.Form): class SchedulerSettingsForm(forms.Form):

View File

@ -25,6 +25,7 @@ from home.src.index import (
IndexPaginate, IndexPaginate,
YoutubeChannel, YoutubeChannel,
YoutubePlaylist, YoutubePlaylist,
YoutubeVideo,
index_new_video, index_new_video,
) )
@ -554,6 +555,11 @@ class VideoDownloader:
self.move_to_archive(vid_dict) self.move_to_archive(vid_dict)
self.delete_from_pending(youtube_id) self.delete_from_pending(youtube_id)
autodelete_days = self.config["downloads"]["autodelete_days"]
if autodelete_days:
print(f"auto delete older than {autodelete_days} days")
self.auto_delete_watched(autodelete_days)
@staticmethod @staticmethod
def add_pending(): def add_pending():
"""add pending videos to download queue""" """add pending videos to download queue"""
@ -772,3 +778,19 @@ class VideoDownloader:
) )
else: else:
RedisArchivist().set_message("message:download", mess_dict) RedisArchivist().set_message("message:download", mess_dict)
@staticmethod
def auto_delete_watched(autodelete_days):
"""delete watched videos after x days"""
now = int(datetime.now().strftime("%s"))
now_lte = now - autodelete_days * 24 * 60 * 60
data = {
"query": {"range": {"player.watched_date": {"lte": now_lte}}},
"sort": [{"player.watched_date": {"order": "asc"}}]
}
all_to_delete = IndexPaginate("ta_video", data).get_results()
for to_delete in all_to_delete:
youtube_id = to_delete["youtube_id"]
print(f"autodelete {youtube_id}")
YoutubeVideo(youtube_id).delete_media_file()

View File

@ -59,6 +59,11 @@
<i>Seconds to sleep between calls to YouTube. Might be necessary to avoid throttling. Recommended 3.</i><br> <i>Seconds to sleep between calls to YouTube. Might be necessary to avoid throttling. Recommended 3.</i><br>
{{ app_form.downloads_sleep_interval }} {{ app_form.downloads_sleep_interval }}
</div> </div>
<div class="settings-item">
<p><span class="danger-zone">Danger Zone</span>: Current auto delete watched videos: <span class="settings-current">{{ config.downloads.autodelete_days }}</span></p>
<i>Auto delete watched videos after x days, 0 (zero) to deactivate:</i><br>
{{ app_form.downloads_autodelete_days }}
</div>
</div> </div>
<div class="settings-group"> <div class="settings-group">
<h2 id="format">Download Format</h2> <h2 id="format">Download Format</h2>