首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RuntimeError:这个事件循环已经在运行aiogram了

RuntimeError:这个事件循环已经在运行aiogram了
EN

Stack Overflow用户
提问于 2022-09-15 19:29:52
回答 1查看 216关注 0票数 0

我想制作电报机器人下载TikTok视频。我需要下载TikTok视频使用它的网址。在我发送带有链接的消息后,它会引发此错误。我该怎么解决呢?有没有其他方式下载TikTok视频,我的代码如下。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2022-09-15 19:39:49

从外表上看,从某种意义上说,如果已经运行了异步循环(当您使用aiogram时),则无法构造TikTokApi库。

在进入aiogram循环之前,通过在程序开始时对API进行初始化,可以看出“滥用”API是否有效:

代码语言:javascript
复制
# ...
dp = Dispatcher(bot)
tiktok_api = TikTokApi()
# ...
async def text(message: types.Message):
   # ...
   video = tiktok_api.video(...)

但我不会指望它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73736460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档