mirror of
https://github.com/tropicoo/yt-dlp-bot.git
synced 2024-09-20 14:56:09 +08:00
Fix silent processing
This commit is contained in:
parent
782b7d3893
commit
180ef41f77
|
@ -12,11 +12,11 @@ _LANG_CODE_LEN = 2
|
|||
_LANG_CODE_REGEX = rf'^[a-z]{{{_LANG_CODE_LEN}}}$'
|
||||
|
||||
|
||||
class BaseUserSchema(RealBaseModel):
|
||||
class AnonymousUserSchema(RealBaseModel):
|
||||
id: StrictInt
|
||||
|
||||
@property
|
||||
def is_base_user(self) -> bool:
|
||||
def is_anonymous_user(self) -> bool:
|
||||
return True
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@ class VideoCaptionSchema(RealBaseModel):
|
|||
include_size: StrictBool
|
||||
|
||||
|
||||
class UserUploadSchema(RealBaseModel):
|
||||
class UploadSchema(RealBaseModel):
|
||||
upload_video_file: StrictBool
|
||||
upload_video_max_file_size: StrictInt
|
||||
forward_to_group: StrictBool
|
||||
|
@ -36,26 +36,26 @@ class UserUploadSchema(RealBaseModel):
|
|||
video_caption: VideoCaptionSchema
|
||||
|
||||
|
||||
class UserSchema(BaseUserSchema):
|
||||
class UserSchema(AnonymousUserSchema):
|
||||
send_startup_message: StrictBool
|
||||
download_media_type: DownMediaType
|
||||
save_to_storage: StrictBool
|
||||
use_url_regex_match: StrictBool
|
||||
upload: UserUploadSchema
|
||||
upload: UploadSchema
|
||||
|
||||
@property
|
||||
def is_base_user(self) -> bool:
|
||||
def is_anonymous_user(self) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
def _change_type(values: list[int]) -> list[BaseUserSchema]:
|
||||
return [BaseUserSchema(id=id_) for id_ in values]
|
||||
def _change_type(values: list[int]) -> list[AnonymousUserSchema]:
|
||||
return [AnonymousUserSchema(id=id_) for id_ in values]
|
||||
|
||||
|
||||
class ApiSchema(RealBaseModel):
|
||||
upload_video_file: StrictBool
|
||||
upload_video_max_file_size: StrictInt
|
||||
upload_to_chat_ids: list[BaseUserSchema]
|
||||
upload_to_chat_ids: list[AnonymousUserSchema]
|
||||
silent: StrictBool
|
||||
video_caption: VideoCaptionSchema
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ from yt_shared.enums import TaskSource, TelegramChatType
|
|||
from yt_shared.schemas.error import ErrorDownloadPayload, ErrorGeneralPayload
|
||||
from yt_shared.schemas.success import SuccessPayload
|
||||
|
||||
from bot.core.config.schema import BaseUserSchema, UserSchema
|
||||
from bot.core.config.schema import AnonymousUserSchema, UserSchema
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from bot.core.bot import VideoBot
|
||||
|
@ -37,7 +37,7 @@ class AbstractHandler(metaclass=abc.ABCMeta):
|
|||
return self._body.context.from_user_id
|
||||
return self._body.context.from_chat_id
|
||||
|
||||
def _get_receiving_users(self) -> list[BaseUserSchema | UserSchema]:
|
||||
def _get_receiving_users(self) -> list[AnonymousUserSchema | UserSchema]:
|
||||
if self._body.context.source is TaskSource.API:
|
||||
return self._bot.conf.telegram.api.upload_to_chat_ids.copy()
|
||||
return [self._bot.allowed_users[self._get_sender_id()]]
|
||||
|
|
|
@ -107,6 +107,8 @@ class SuccessHandler(AbstractHandler):
|
|||
async def _send_success_text(self, media_object: BaseMedia) -> None:
|
||||
text = self._create_success_text(media_object)
|
||||
for user in self._receiving_users:
|
||||
if user.upload.silent:
|
||||
continue
|
||||
kwargs = {
|
||||
'chat_id': user.id,
|
||||
'text': text,
|
||||
|
|
|
@ -19,7 +19,7 @@ from yt_shared.utils.tasks.abstract import AbstractTask
|
|||
from yt_shared.utils.tasks.tasks import create_task
|
||||
|
||||
from bot.core.config.config import get_main_config
|
||||
from bot.core.config.schema import BaseUserSchema, UserSchema
|
||||
from bot.core.config.schema import AnonymousUserSchema, UserSchema
|
||||
from bot.core.utils import bold
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
@ -51,7 +51,7 @@ class AbstractUploadTask(AbstractTask, metaclass=abc.ABCMeta):
|
|||
def __init__(
|
||||
self,
|
||||
media_object: BaseMedia,
|
||||
users: list[BaseUserSchema | UserSchema],
|
||||
users: list[AnonymousUserSchema | UserSchema],
|
||||
bot: 'VideoBot',
|
||||
semaphore: asyncio.Semaphore,
|
||||
context: SuccessPayload,
|
||||
|
@ -67,7 +67,7 @@ class AbstractUploadTask(AbstractTask, metaclass=abc.ABCMeta):
|
|||
self._ctx = context
|
||||
self._media_ctx = self._create_media_context()
|
||||
|
||||
self._upload_chat_ids, self._forward_chat_ids = self._get_upload_chat_ids()
|
||||
self._forward_chat_ids = self._get_forward_chat_ids()
|
||||
self._cached_message: Message | None = None
|
||||
|
||||
async def run(self) -> None:
|
||||
|
@ -89,9 +89,11 @@ class AbstractUploadTask(AbstractTask, metaclass=abc.ABCMeta):
|
|||
f'📏 {bold("Size")} {self._media_object.file_size_human()}'
|
||||
)
|
||||
coros = []
|
||||
for chat_id in self._upload_chat_ids:
|
||||
for user in self._users:
|
||||
if user.upload.silent:
|
||||
continue
|
||||
kwargs = {
|
||||
'chat_id': chat_id,
|
||||
'chat_id': user.id,
|
||||
'text': text,
|
||||
'parse_mode': ParseMode.HTML,
|
||||
}
|
||||
|
@ -100,15 +102,13 @@ class AbstractUploadTask(AbstractTask, metaclass=abc.ABCMeta):
|
|||
coros.append(self._bot.send_message(**kwargs))
|
||||
await asyncio.gather(*coros)
|
||||
|
||||
def _get_upload_chat_ids(self) -> tuple[list[int], list[int]]:
|
||||
chat_ids = []
|
||||
def _get_forward_chat_ids(self) -> list[int]:
|
||||
forward_chat_ids = []
|
||||
for user in self._users:
|
||||
chat_ids.append(user.id)
|
||||
if isinstance(user, UserSchema):
|
||||
if user.upload.forward_to_group and user.upload.forward_group_id:
|
||||
forward_chat_ids.append(user.upload.forward_group_id)
|
||||
return chat_ids, forward_chat_ids
|
||||
return forward_chat_ids
|
||||
|
||||
@retry(wait=wait_fixed(3), stop=stop_after_attempt(3), reraise=True)
|
||||
async def __upload(self, chat_id: int) -> Message | None:
|
||||
|
@ -124,7 +124,7 @@ class AbstractUploadTask(AbstractTask, metaclass=abc.ABCMeta):
|
|||
pass
|
||||
|
||||
async def _upload_file(self) -> None:
|
||||
for chat_id in chain(self._upload_chat_ids, self._forward_chat_ids):
|
||||
for chat_id in chain((u.id for u in self._users), self._forward_chat_ids):
|
||||
self._log.info(
|
||||
'Uploading "%s" [%s] [cached: %s] to chat id "%d"',
|
||||
self._filename,
|
||||
|
@ -246,7 +246,7 @@ class VideoUploadTask(AbstractUploadTask):
|
|||
|
||||
def _generate_file_caption(self) -> str:
|
||||
caption_items = []
|
||||
if self._users[0].is_base_user:
|
||||
if self._users[0].is_anonymous_user:
|
||||
caption_conf = self._bot.conf.telegram.api.video_caption
|
||||
else:
|
||||
caption_conf = self._users[0].upload.video_caption
|
||||
|
|
Loading…
Reference in a new issue