[Python爬虫] v2.windows93.net
System-Administartor
2026-01-09 08:42:46
0

将这个文件下载到Python脚本相同的目录下

https://v2.windows93.net/files.json?v=2.4.9


PYTHON
#!/usr/bin/env python3import osimport jsonimport requestsfrom urllib.parse import urljoinfrom pathlib import Pathimport sysimport time
# 配置参数BASE_URL = "https://v2.windows93.net/"SAVE_DIR = Path("/vol1/1000/Home/w93")JSON_FILE = "files.json"
def load_json():    """加载JSON文件"""    try:        with open(JSON_FILE, 'r', encoding='utf-8') as f:            return json.load(f)    except FileNotFoundError:        print(f"错误: 找不到文件 {JSON_FILE}")        sys.exit(1)    except json.JSONDecodeError as e:        print(f"错误: JSON解析失败 - {e}")        sys.exit(1)
def create_directories(data, base_path="", current_path=""):    """递归创建目录结构"""    if isinstance(data, dict):        for key, value in data.items():            # 如果是文件(值为0),跳过目录创建            if value == 0:                continue                        new_path = os.path.join(current_path, key)            full_path = SAVE_DIR / base_path / new_path                        # 创建目录            try:                full_path.mkdir(parents=True, exist_ok=True)                print(f"创建目录: {full_path}")            except Exception as e:                print(f"创建目录失败 {full_path}: {e}")                        # 递归处理子目录            create_directories(value, base_path, new_path)
def download_files(data, base_path="", current_path=""):    """递归下载文件"""    if isinstance(data, dict):        for key, value in data.items():            # 如果是文件(值为0)            if value == 0:                # 构建文件路径                file_relative_path = os.path.join(current_path, key)                file_local_path = SAVE_DIR / base_path / file_relative_path                                # 检查文件是否已存在                if file_local_path.exists():                    file_size = file_local_path.stat().st_size                    size_str = f"{file_size/1024:.1f}KB" if file_size < 1024*1024 else f"{file_size/(1024*1024):1f}MB"                    print(f"文件已存在,跳过: {file_local_path} ({size_str})")                    continue                                # 构建下载URL(需要加上基础路径前缀,如"c/"或"a/")                file_url = urljoin(BASE_URL, os.path.join(base_path, file_relative_path))                                # 确保父目录存在                file_local_path.parent.mkdir(parents=True, exist_ok=True)                                # 下载文件                try:                    print(f"下载: {file_url}")                    response = requests.get(file_url, stream=True, timeout=30)                    response.raise_for_status()                                        # 获取文件大小信息                    file_size = int(response.headers.get('content-length', 0))                                        # 保存文件                    downloaded_size = 0                    with open(file_local_path, 'wb') as f:                        for chunk in response.iter_content(chunk_size=8192):                            if chunk:                                f.write(chunk)                                downloaded_size += len(chunk)                                        # 显示文件大小                    size_str = f"{file_size/1024:.1f}KB" if file_size < 1024*1024 else f"{file_size/(1024*1024):.1f}MB"                    print(f"  保存到: {file_local_path} ({size_str})")                                        # 添加短暂延迟,避免对服务器造成过大压力                    # time.sleep(0.01)                                    except requests.RequestException as e:                    print(f"  下载失败 {file_url}: {e}")                except Exception as e:                    print(f"  保存失败 {file_local_path}: {e}")                        # 递归处理子目录            else:                new_path = os.path.join(current_path, key)                download_files(value, base_path, new_path)
def main():    print("=" * 60)    print("Windows93 文件下载脚本")    print(f"源URL: {BASE_URL}")    print(f"目标目录: {SAVE_DIR}")    print("=" * 60)        # 确保保存目录存在    SAVE_DIR.mkdir(parents=True, exist_ok=True)    print(f"创建目标目录: {SAVE_DIR}")        # 加载JSON数据    print(f"\n加载JSON文件: {JSON_FILE}")    data = load_json()        # 处理每个顶级目录    for top_dir in data:        print(f"\n处理目录: '{top_dir}'")                # 获取该目录的数据        dir_data = data[top_dir]                # 创建目录结构        print(f"创建 '{top_dir}' 目录结构...")        create_directories(dir_data, top_dir)                # 下载文件        print(f"下载 '{top_dir}' 文件...")        download_files(dir_data, top_dir)        print("\n" + "=" * 60)    print("下载完成!")    print("=" * 60)
if __name__ == "__main__":    main()

上一篇:[易语言]虚拟机检测

下一篇:没有了

相关内容

热门资讯

【易语言】文件批量改名 这是一款纯绿色的免费软件,能对大批量的文件进行批量更名,使用简单,更名速度快; 提供基本的文件更名(...
HTML 在线工具箱网站主页... 全能工具箱 - 在线工具集合 ...
Python MP3批量更名工... [md]# MP3批量更名工具背景:之前下载到了一堆像ap1014_us1846931430_mii...
Python ida 9.0注... import jsonimport hashlibimport osfrom datetime im...
PHP最新在线聊天系统源码.z... 源码简介PHP最新在线聊天系统源码,支持多人在线同时聊天,注册记录 ip,封禁 ip 功能。觉得好用...
[易语言]虚拟机检测 [md]```.版本 2.支持库 spec.程序集 虚拟机检测.子程序 检测虚拟机, 逻辑型, 公开...
Python AES128解密... import osfrom Crypto.Cipher import AESfrom Crypto....
[Python爬虫] v2.w... 将这个文件下载到Python脚本相同的目录下https://v2.windows93.net/fil...
python 电脑性能可视化工... import pygameimport psutilimport sysdef get_system...
PHP二维码生成系统源码 源码简介阿宅QR轻量二维码生成系统源码基于PHP编写的二维码在线生成系统。只需点击几下就可以生成您的...

免责声明

本站为个人博客,博客所发布的一切破解软件、补丁、注册机和注册信息及软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

本站所有内容均来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容,如有需要,请去软件官网下载正版。

访问和下载本站内容,说明您已同意上述条款。

本站为非盈利性站点,不贩卖软件,不会收取任何费用,所有内容不作为商业行为。

正在初始化播放器,请稍后


人生倒计时

今天已过去 20 小时
84%
本周已过去 2 天
28%
本月已过去 26 天
86%
今年已过去 8 个月 零 26 天
66%
离春节还有137天4时
62%