我想制作电报机器人下载TikTok视频。我需要下载TikTok视频使用它的网址。在我发送带有链接的消息后,它会引发此错误。我该怎么解决呢?有没有其他方式下载TikTok视频,我的代码如下。
ERROR:
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 415, in _process_polling_updates
for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in process_updates
return await asyncio.gather(*tasks)
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py", line 116, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 256, in process_update
return await self.message_handlers.notify(update.message)
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py", line 116, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\User\Desktop\scripts\saveassbot\bot.py", line 28, in text
with TikTokApi() as api:
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\TikTokApi\tiktok.py", line 159, in __init__
self._initialize(
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\TikTokApi\tiktok.py", line 205, in _initialize
self._browser = asyncio.get_event_loop().run_until_complete(
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 618, in run_until_complete
self._check_running()
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 578, in _check_running
raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running
Code:
# -*- coding: utf-8 -*-
from aiogram import Bot, Dispatcher, executor, types
import logging
import main
import config
from TikTokApi import TikTokApi
logging.basicConfig(level=logging.INFO)
bot = Bot(token=config.token)
dp = Dispatcher(bot)
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
# if(not BotDB.user_exists(message.from_user.id)):
# BotDB.add_user(message.from_user.id, message.from_user.username)
await bot.send_message(message.from_user.id,
f'hello',
parse_mode="Markdown")
@dp.message_handler(content_types=['text'])
async def text(message: types.Message):
if message.text.startswith('https://vt.tiktok.com'):
video_url = message.text
with TikTokApi() as api:
video = api.video(url=f"{video_url}")
# Bytes of the TikTok video
video_data = video.bytes()
with open(f"{message.from_user.id}", "wb") as out_file:
out_file.write(video_data)
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)发布于 2022-09-15 19:39:49
从外表上看,从某种意义上说,如果已经运行了异步循环(当您使用aiogram时),则无法构造TikTokApi库。
在进入aiogram循环之前,通过在程序开始时对API进行初始化,可以看出“滥用”API是否有效:
# ...
dp = Dispatcher(bot)
tiktok_api = TikTokApi()
# ...
async def text(message: types.Message):
# ...
video = tiktok_api.video(...)但我不会指望它。
https://stackoverflow.com/questions/73736460
复制相似问题