# pythonUtils **Repository Path**: fcf_python/python-utils ## Basic Information - **Project Name**: pythonUtils - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-18 - **Last Updated**: 2024-07-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 工具介绍 ``` 封装该工具的主要目的是为了方便个人后续的开发过程。 ``` ## 版本说明 ```text 1.0.7 : 修复因Python类变量与实例变量作用域范围引起的数据冲突的bug。 更新时间:2024 06-24 15:08 1.0.6 : 针对抓取错误的链接,增加重试逻辑,可以指定重试的次数。 更新时间:2024 06-24 14:15 ``` ## 文件结构 ``` python-utils/ │ └── loongfei_utils/ ├── __init__.py # 将文件夹变为Python包 ├── M3u8Crawer.py # 爬取m3u8形式的网上视频,可以控制线程数,需要解密的目前仅支持AES-128 ├── MultiThreading.py # 多线程工具类 └── utils/ # 辅助工具类包 ├── __init__.py # 将文件夹变为Python包 ├── LoggerUtils.py # 初始化logger日志句柄,用于日志输出 └── StrUtils.py # 字符串工具类 ``` ## 工具使用方法 ### 一、多线程工具类 MultiThreading ``` 举例: 1、获取logger日志句柄 引入: from loongfei_utils.utils import LoggerUtils 创建logger日志句柄 logger = LoggerUtils.config_only_kzt_logger("info") 2、准备要处理的数据 a = [1,2,3,4,5,6,7,8,9] b = [] 3、定义一个处理数据的方法,这个方法用来处理数据,处理完要返回True 或者 False,以便让多线程工具知道哪些执行失败了 def edit_data(item): ac = True try: if item == 5: ac = False else: b.append(item*5) except BaseException as e: ac = False return ac 4、创建多线程工具类 """ 多线程工具类ExecuteList,参数如下: func : 传入处理数据的方法 need_execute_list : 需要被处理的数据 thread_num: 要开启多少线程 logger: 传入日志句柄,用于多线程日志输出 """ execute_class = ExecuteList(edit_data,a,5,logger) # 启动线程 execute_class.start_thread() # 打印哪些数据处理失败 logger.info(execute_class.getting_error_list()) # 输出处理后b的结果 logger.info(b) ``` ### 二、m3u8视频爬取工具类 M3u8Crawer ``` 说明: 1、m3u8视频爬取工具类支持非加密类型ts视频的下载,同时也支持加密类型ts视频的下载(目前加密仅支持AES-128); 2、指定要下载的m3u8文件地址,并指定保存路径,还需要指定保存后的中文名称; 3、本程序采用多线程下载,也需要指定开启的线程数; 4、需要指定下载完成后的视频名字,程序下载完成后会自动合并为指定名字的mp4文件并删除临时的ts文件; 5、需要安装 ffmpeg 工具,用于后期ts文件的合并; 6、程序可以自动判断是否需要解密ts文件。 注:该工具在不断完善中。。。 举例: 1、获取logger日志句柄 引入: from loongfei_utils.utils import LoggerUtils 创建logger日志句柄,紧进行控制台输出 logger = LoggerUtils.config_only_kzt_logger("info") 2、下载视频 引入: from loongfei_utils.M3u8Crawer import TSCrawlingToMp4 实例化下载类: """ m3u8工具类TSCrawlingToMp4,参数如下: url : 视频对应的m3u8地址 path : 本地保存地址 zh_file_name: 视频的保存名字 logger: 传入日志句柄,用于多线程日志输出 """ move_crawling = TSCrawlingToMp4(url="https://v.cdnlz7.com/20240427/18107_f7400038/index.m3u8", path="D:/Downloads/view/", zh_file_name="奔跑吧第八季第1期", logger=logger) # 启动爬取,100为开启100个线程下载ts文件,5的意思为对于抓取过程中出错的链接重试的次数,程序会将全量失败的链接整体重新抓取1次,然后再对剩余的错误链接再抓取,直到全部成功或者达到整体5次; move_crawling.do_crawling(100,5) ```