mirror of
https://github.com/omg-xtao/ytdlbot.git
synced 2024-11-16 03:45:23 +00:00
add hidden 'Local' mode
This commit is contained in:
parent
0ec6693704
commit
a3a821bfae
@ -172,6 +172,7 @@ class MySQL:
|
|||||||
user_id bigint not null,
|
user_id bigint not null,
|
||||||
resolution varchar(128) null,
|
resolution varchar(128) null,
|
||||||
method varchar(64) null,
|
method varchar(64) null,
|
||||||
|
mode varchar(32) default 'Celery' null,
|
||||||
constraint settings_pk
|
constraint settings_pk
|
||||||
primary key (user_id)
|
primary key (user_id)
|
||||||
);
|
);
|
||||||
|
3
ytdlbot/migration.sql
Normal file
3
ytdlbot/migration.sql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
alter table settings
|
||||||
|
add mode varchar(32) default 'Celery' null;
|
||||||
|
|
@ -24,6 +24,7 @@ from celery import Celery
|
|||||||
from celery.worker.control import Panel
|
from celery.worker.control import Panel
|
||||||
from pyrogram import idle
|
from pyrogram import idle
|
||||||
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||||
|
from requests_toolbelt.multipart.encoder import MultipartEncoder
|
||||||
|
|
||||||
from client_init import create_app
|
from client_init import create_app
|
||||||
from config import (ARCHIVE_ID, AUDIO_FORMAT, BROKER, ENABLE_CELERY,
|
from config import (ARCHIVE_ID, AUDIO_FORMAT, BROKER, ENABLE_CELERY,
|
||||||
@ -124,8 +125,8 @@ def ytdl_download_entrance(bot_msg, client, url):
|
|||||||
chat_id = bot_msg.chat.id
|
chat_id = bot_msg.chat.id
|
||||||
if forward_video(chat_id, url, client):
|
if forward_video(chat_id, url, client):
|
||||||
return
|
return
|
||||||
|
mode = get_user_settings(str(chat_id))[-1]
|
||||||
if ENABLE_CELERY:
|
if ENABLE_CELERY and mode in [None, "Celery"]:
|
||||||
ytdl_download_task.delay(chat_id, bot_msg.message_id, url)
|
ytdl_download_task.delay(chat_id, bot_msg.message_id, url)
|
||||||
else:
|
else:
|
||||||
ytdl_normal_download(bot_msg, client, url)
|
ytdl_normal_download(bot_msg, client, url)
|
||||||
@ -231,14 +232,14 @@ def get_dl_source():
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
def upload_transfer_sh(video_paths) -> "str":
|
def upload_transfer_sh(paths: list) -> "str":
|
||||||
file = {}
|
d = {p.name: (p.name, p.open("rb")) for p in paths}
|
||||||
for p in video_paths:
|
m = MultipartEncoder(fields=d)
|
||||||
file[p.name] = p.open("rb")
|
headers = {'Content-Type': m.content_type}
|
||||||
try:
|
try:
|
||||||
req = requests.post("https://transfer.sh", files=file)
|
req = requests.post("https://transfer.sh", data=m, headers=headers)
|
||||||
return req.text
|
return re.sub(r"https://", "\nhttps://", req.text)
|
||||||
except requests.exceptions as e:
|
except requests.exceptions.RequestException as e:
|
||||||
return f"Upload failed!❌\n\n```{e}```"
|
return f"Upload failed!❌\n\n```{e}```"
|
||||||
|
|
||||||
|
|
||||||
@ -264,7 +265,7 @@ def ytdl_normal_download(bot_msg, client, url):
|
|||||||
bot_msg.edit_text('Download complete. Sending now...')
|
bot_msg.edit_text('Download complete. Sending now...')
|
||||||
for video_path in video_paths:
|
for video_path in video_paths:
|
||||||
# normally there's only one video in that path...
|
# normally there's only one video in that path...
|
||||||
filename = pathlib.Path(video_path).name
|
filename = video_path.name
|
||||||
remain = bot_text.remaining_quota_caption(chat_id)
|
remain = bot_text.remaining_quota_caption(chat_id)
|
||||||
st_size = os.stat(video_path).st_size
|
st_size = os.stat(video_path).st_size
|
||||||
size = sizeof_fmt(st_size)
|
size = sizeof_fmt(st_size)
|
||||||
|
@ -46,7 +46,7 @@ def get_user_settings(user_id: "str") -> "tuple":
|
|||||||
cur.execute("SELECT * FROM settings WHERE user_id = %s", (user_id,))
|
cur.execute("SELECT * FROM settings WHERE user_id = %s", (user_id,))
|
||||||
data = cur.fetchone()
|
data = cur.fetchone()
|
||||||
if data is None:
|
if data is None:
|
||||||
return 100, "high", "video"
|
return 100, "high", "video", "Celery"
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
@ -199,6 +199,15 @@ def direct_handler(client: "Client", message: "types.Message"):
|
|||||||
def settings_handler(client: "Client", message: "types.Message"):
|
def settings_handler(client: "Client", message: "types.Message"):
|
||||||
chat_id = message.chat.id
|
chat_id = message.chat.id
|
||||||
client.send_chat_action(chat_id, "typing")
|
client.send_chat_action(chat_id, "typing")
|
||||||
|
data = get_user_settings(str(chat_id))
|
||||||
|
set_mode = (data[-1])
|
||||||
|
text = {"Local": "Celery", "Celery": "Local"}.get(set_mode, "Local")
|
||||||
|
mode_text = f"Download mode: **{set_mode}**"
|
||||||
|
if message.chat.username == OWNER:
|
||||||
|
extra = [InlineKeyboardButton(f"Change download mode to {text}", callback_data=text)]
|
||||||
|
else:
|
||||||
|
extra = []
|
||||||
|
|
||||||
markup = InlineKeyboardMarkup(
|
markup = InlineKeyboardMarkup(
|
||||||
[
|
[
|
||||||
[ # First row
|
[ # First row
|
||||||
@ -211,11 +220,11 @@ def settings_handler(client: "Client", message: "types.Message"):
|
|||||||
InlineKeyboardButton("Medium Quality", callback_data="medium"),
|
InlineKeyboardButton("Medium Quality", callback_data="medium"),
|
||||||
InlineKeyboardButton("Low Quality", callback_data="low"),
|
InlineKeyboardButton("Low Quality", callback_data="low"),
|
||||||
],
|
],
|
||||||
|
extra
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
data = get_user_settings(str(chat_id))
|
client.send_message(chat_id, bot_text.settings.format(data[1], data[2]) + mode_text, reply_markup=markup)
|
||||||
client.send_message(chat_id, bot_text.settings.format(data[1], data[2]), reply_markup=markup)
|
|
||||||
|
|
||||||
|
|
||||||
@app.on_message(filters.command(["vip"]))
|
@app.on_message(filters.command(["vip"]))
|
||||||
@ -303,6 +312,13 @@ def audio_callback(client: "Client", callback_query: types.CallbackQuery):
|
|||||||
audio_entrance(msg, client)
|
audio_entrance(msg, client)
|
||||||
|
|
||||||
|
|
||||||
|
@app.on_callback_query(filters.regex(r"Local|Celery"))
|
||||||
|
def owner_local_callback(client: "Client", callback_query: types.CallbackQuery):
|
||||||
|
chat_id = callback_query.message.chat.id
|
||||||
|
set_user_settings(chat_id, "mode", callback_query.data)
|
||||||
|
callback_query.answer(f"Download mode was changed to {callback_query.data}")
|
||||||
|
|
||||||
|
|
||||||
def periodic_sub_check():
|
def periodic_sub_check():
|
||||||
vip = VIP()
|
vip = VIP()
|
||||||
for cid, uids in vip.group_subscriber().items():
|
for cid, uids in vip.group_subscriber().items():
|
||||||
|
Loading…
Reference in New Issue
Block a user