rewrite cookie into redis from io stream, auto validate

This commit is contained in:
simon 2022-06-15 17:54:05 +07:00
parent 40e4ef0e05
commit 30abbe9be7
No known key found for this signature in database
GPG Key ID: 2C15AA5E89985DD4
3 changed files with 47 additions and 8 deletions

View File

@ -95,15 +95,35 @@ class CookieHandler:
"""revoke cookie""" """revoke cookie"""
RedisArchivist().del_message("cookie") RedisArchivist().del_message("cookie")
RedisArchivist().set_message( RedisArchivist().set_message(
"config", False, path=".downloads.cookie_import" "config", False, path=".downloads.cookie_import", expire=False
) )
print("cookie: revoked") print("cookie: revoked")
def validate(self): def validate(self):
"""validate cookie using the liked videos playlist""" """validate cookie using the liked videos playlist"""
print("validating cookie")
obs_request = { obs_request = {
"skip_download": True, "skip_download": True,
"extract_flat": True, "extract_flat": True,
} }
response = YtWrap(obs_request, self.config).extract("LL") validator = YtWrap(obs_request, self.config)
response = validator.extract("LL")
# update in redis to avoid expiring
modified = validator.obs["cookiefile"].getvalue()
if modified:
RedisArchivist().set_message("cookie", modified, expire=False)
if not response:
mess_dict = {
"status": "message:download",
"level": "error",
"title": "Cookie validation failed, exiting...",
"message": "",
}
RedisArchivist().set_message(
"message:download", mess_dict, expire=4
)
print("cookie validation failed, exiting...")
return bool(response) return bool(response)

View File

@ -12,7 +12,7 @@ from datetime import datetime
from home.src.download.queue import PendingList from home.src.download.queue import PendingList
from home.src.download.subscriptions import PlaylistSubscription from home.src.download.subscriptions import PlaylistSubscription
from home.src.download.yt_dlp_base import YtWrap from home.src.download.yt_dlp_base import CookieHandler, YtWrap
from home.src.es.connect import ElasticWrap, IndexPaginate from home.src.es.connect import ElasticWrap, IndexPaginate
from home.src.index.channel import YoutubeChannel from home.src.index.channel import YoutubeChannel
from home.src.index.playlist import YoutubePlaylist from home.src.index.playlist import YoutubePlaylist
@ -155,10 +155,7 @@ class VideoDownloader:
def run_queue(self): def run_queue(self):
"""setup download queue in redis loop until no more items""" """setup download queue in redis loop until no more items"""
pending = PendingList() self._setup_queue()
pending.get_download()
pending.get_channels()
self.video_overwrites = pending.video_overwrites
queue = RedisQueue() queue = RedisQueue()
@ -185,7 +182,9 @@ class VideoDownloader:
"title": "Moving....", "title": "Moving....",
"message": "Moving downloaded file to storage folder", "message": "Moving downloaded file to storage folder",
} }
RedisArchivist().set_message("message:download", mess_dict, False) RedisArchivist().set_message(
"message:download", mess_dict, expire=False
)
self.move_to_archive(vid_dict) self.move_to_archive(vid_dict)
mess_dict = { mess_dict = {
@ -201,6 +200,18 @@ class VideoDownloader:
self._add_subscribed_channels() self._add_subscribed_channels()
DownloadPostProcess(self).run() DownloadPostProcess(self).run()
def _setup_queue(self):
"""setup required and validate"""
if self.config["downloads"]["cookie_import"]:
valid = CookieHandler(self.config).validate()
if not valid:
return
pending = PendingList()
pending.get_download()
pending.get_channels()
self.video_overwrites = pending.video_overwrites
@staticmethod @staticmethod
def add_pending(): def add_pending():
"""add pending videos to download queue""" """add pending videos to download queue"""

View File

@ -12,6 +12,7 @@ from time import sleep
from home.src.download.queue import PendingList from home.src.download.queue import PendingList
from home.src.download.thumbnails import ThumbManager from home.src.download.thumbnails import ThumbManager
from home.src.download.yt_dlp_base import CookieHandler
from home.src.download.yt_dlp_handler import VideoDownloader from home.src.download.yt_dlp_handler import VideoDownloader
from home.src.es.connect import ElasticWrap from home.src.es.connect import ElasticWrap
from home.src.index.channel import YoutubeChannel from home.src.index.channel import YoutubeChannel
@ -40,6 +41,13 @@ class Reindex:
self.all_channel_ids = False self.all_channel_ids = False
self.all_playlist_ids = False self.all_playlist_ids = False
def check_cookie(self):
"""validate cookie if enabled"""
if self.config["downloads"]["cookie_import"]:
valid = CookieHandler(self.config).validate()
if not valid:
return
def _get_daily(self): def _get_daily(self):
"""get daily refresh values""" """get daily refresh values"""
total_videos = self._get_total_hits("ta_video") total_videos = self._get_total_hits("ta_video")