mirror of
https://github.com/tubearchivist/tubearchivist
synced 2024-11-02 09:41:07 +00:00
implement autodelete watched videos after x days, #56
This commit is contained in:
parent
53f93a7bb9
commit
9a2dead76c
@ -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.
|
||||||
|
@ -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,
|
||||||
|
@ -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):
|
||||||
|
@ -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()
|
||||||
|
@ -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>
|
||||||
|
Loading…
Reference in New Issue
Block a user