spisok = "".join(llavw)
url = "https://file.11klasov.net/index.php?do=download&id=16985" # замените на URL файла, который вы хотите скачать
response = requests.get(url)
response.history
, и ты увидишь там два ответа: [<Response [302]>, <Response [301]>]
. Все коды 3XX - это перенаправления, т.е. сайт тебя перенаправляет на другую страницу, вместо того, чтобы отдать контент.response.url
, который будет равен'https://file.11klasov.net/13938-russkij-jazyk-7-klass-razumovskaja-mm-lvova-si-kapinos-vi-i-dr.html'
response.headers['content-type']
. Он будет 'text/html; charset=utf-8'
, т.е. это HTML страница а не PDF файл. Разумеется, если ты HTML страницу запишешь в файл с расширением .pdf, она от этого не станет валидным PDF.response2 = requests.get(url, headers={
'referer': response.url, # ну или 'https://file.11klasov.net/13938-russkij-jazyk-7-klass-razumovskaja-mm-lvova-si-kapinos-vi-i-dr.html'
})
response2.history
будет пустой, а response2.headers['content-type']
будет равен 'application/pdf'
.import signal
import subprocess
import sys
args = [
"ffmpeg",
"-i", f"rtsp://{camera_login}:{camera_pass}@{camera_host}:554/Streaming/channels/1/",
"-err_detect", "ignore_err",
"-reorder_queue_size", "0",
"-map", "0:v", "-c:v", "copy",
"-f", "rtsp",
"-rtsp_transport", "tcp", f"rtsp://{rtsp_server}:8554/live.stream"
]
params = {'cwd': '.'}
if sys.platform == 'win32': # винда у нас особенная...
params['creationflags'] = (
# subprocess.DETACHED_PROCESS | # если хочешь, чтобы ffmpeg запускался тихо и не спамил в твой stdout
# subprocess.CREATE_NEW_CONSOLE | # если хочешь, чтобы открывалась новая консоль для ffmpeg
subprocess.CREATE_NEW_PROCESS_GROUP # по докам, это требуется для нормальной работы ctrl-c
)
my_subprocess = Popen(args, **params)
try:
pass # тут работаешь с процессом
finally:
my_subprocess.signal(signal.CTRL_C_EVENT) # сигналим процессу о завершении
try:
my_subprocess.wait(timeout=5.0) # ждём завершения
except subprocess.TimeoutExpired: # процесс "задумался"
my_subprocess.kill() # тогда прибиваем
model.apply_tts()
, по-хорошему должно выполняться только один раз при запуске программы, а не для каждой генерируемой фразы.model.apply_tts()
. The command prefix is what the message content must contain initially to have a command invoked. This prefix could either be a string to indicate what the prefix should be, or a callable that takes in the bot as its first parameter and nextcord.Message as its second parameter and returns the prefix.
def prefix_func(bot, message) -> str:
, которая будет вызываться для каждого сообщения, и возвращать желаемую строку префикса. Это не только позволяет менять префикс динамически, не трогая бота (бот как дёргал функцию, так и будет дёргать), но и позволяет делать вещи типа "свой префикс у разных серверов".\
) в строковых литералах Питона (как и во многих языках) имеет специальное значение, зависящее от следующего символа. Например, \n
означает символ перевода строки, \t
- символ табуляции, и т.д. Последовательность \u
позволяет задать символ юникода по его коду, например, символ \u00A7
это значок параграфа (§). Но это также разделитель каталогов в пути на платформе Windows. А у тебя в пути есть последовательность "C:\Users\777\Desktop\Новая папка\67.png".\\
- она означает просто символ \
без специального поведения.my_path = r'C:\Users\'
. В таких литералах символ \
не имеет специального поведения, это просто символ./
. Винда это позволяет. p = multiprocessing.Process(target=gen,args=(lst,))
p.start()
p.join()
), когда он завершится. Это мало чем отличается от просто вызова gen() в твоём коде, безо всякого мультипроцессинга.Сам словарь полученный от телеграмм мне нужно его в нужном моменте сохранять в бд, а позже вытаскивать обратно превращая назад в dict, но все идет по наклонной
'entities': [<telebot.types.MessageEntity object at 0x7770137fd0>]
<telebot.types.MessageEntity object at 0x7770137fd0>
явно сериализации не поддаётся, и ни сохранить, ни восстановить его не выйдет. Или убирать ключ entities
, если он тебе не нужен, или разбираться, что это за объект и сериализовывать/восстанавливать его вручную. This requires Intents.guilds to be enabled.
print(1, 2, 3) # 1 2 3
print(1, 2, 3, sep='') # 123
print(1, 2, 3, sep=', ') # 1, 2, 3
print(1, 2, 3) # 1 2 3 с переводом на новую строку
print(1, 2, 3, end='') # 1 2 3 без перевода на новую строку
print(1, 2, 3, end=':') # 1 2 3: без перевода на новую строку
sep.join(str(arg) for arg in args) + end