Evil0ctal / Douyin_TikTok_Download_API

🚀「Douyin_TikTok_Download_API」是一个开箱即用的高性能异步抖音、快手、TikTok、Bilibili数据爬取工具,支持API调用,在线批量解析及下载。
https://douyin.wtf
Apache License 2.0
8.82k stars 1.38k forks source link

[BUG] def extract_valid_urls(inputs: Union[str, list[str]]) -> Union[str, list[str], None]: #367

Closed flexer2018 closed 5 months ago

flexer2018 commented 5 months ago

Traceback (most recent call last): File "start.py", line 37, in from app.main import app, Host_IP, Host_Port File "/data/Douyin_TikTok_Download_API/app/main.py", line 39, in from app.api.router import router as api_router File "/data/Douyin_TikTok_Download_API/app/api/router.py", line 2, in from app.api.endpoints import ( File "/data/Douyin_TikTok_Download_API/app/api/endpoints/tiktok_web.py", line 7, in from crawlers.tiktok.web.web_crawler import TikTokWebCrawler # 导入TikTokWebCrawler类 File "/data/Douyin_TikTok_Download_API/crawlers/tiktok/web/web_crawler.py", line 44, in from crawlers.utils.utils import extract_valid_urls File "/data/Douyin_TikTok_Download_API/crawlers/utils/utils.py", line 175, in def extract_valid_urls(inputs: Union[str, list[str]]) -> Union[str, list[str], None]: TypeError: 'type' object is not subscriptabl

这个错误信息表明在尝试使用类型注解时出现了问题。具体来说,是在尝试对list类型进行下标操作,但是在Python 3.8之前的版本中,标准的类型如listdict并不支持泛型下标操作,也就是说你不能直接使用list[str]这样的语法。

错误发生在utils.py文件的第175行,函数extract_valid_urls的参数类型注解使用了list[str]这样的语法。如果你的Python版本低于3.9,这会导致TypeError: 'type' object is not subscriptable错误。

为了解决这个问题,你有几个选项:

  1. 如果你使用的是Python 3.9或更高版本,那么应该不会遇到这个问题,因为从Python 3.9开始,标准的集合类支持泛型下标操作。

  2. 如果你使用的是Python 3.8或更低版本,你可以从typing模块导入List(注意大写L),然后使用List[str]代替list[str]。修改后的代码应该是这样的:

from typing import Union, List  # 导入List

def extract_valid_urls(inputs: Union[str, List[str]]) -> Union[str, List[str], None]:
    # 函数实现
  1. 另一个解决方案是升级你的Python环境到3.9或更高版本,这样你就可以直接使用list[str]这样的语法了。

请根据你的实际情况选择合适的解决方案。如果你不确定如何操作,或者这些解决方案不适用于你的情况,请提供更多的上下文信息,以便获得更具体的帮助。请注意,以上回答可能存在不确定性,仅供参考。

Evil0ctal commented 5 months ago

请使用Python版本3.11作为venv环境。