首页 > 其他分享 >alist下载

alist下载

时间:2025-01-18 21:21:24浏览次数:1  
标签:get url alist token path response 下载

import requests
import os
from tqdm import tqdm

def get_token(alist_url, username, password):
    """登录并获取token"""
    login_url = f"{alist_url}/api/auth/login"
    data = {
        "username": username,
        "password": password
    }
    response = requests.post(login_url, json=data)
    if response.status_code == 200:
        return response.json()["data"]["token"]
    raise Exception("登录失败")

def download_file(alist_url, token, file_path, save_path):
    """下载文件"""
    headers = {
        "Authorization": token
    }
    
    # 获取文件下载链接
    fs_url = f"{alist_url}/api/fs/get"
    params = {"path": file_path}
    response = requests.get(fs_url, headers=headers, params=params)
    
    if response.status_code == 200:
        download_url = response.json()["data"]["raw_url"]
        
        # 获取文件大小
        response = requests.get(download_url, stream=True)
        total_size = int(response.headers.get('content-length', 0))
        
        # 在进度条之前只显示一次文件名
        print(f"\n正在下载: {os.path.basename(file_path)}")
        
        # 使用tqdm创建进度条,不再显示文件名
        progress_bar = tqdm(
            total=total_size,
            unit='iB',
            unit_scale=True,
            leave=True,
            ncols=100,
            bar_format='{percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}]'  # 移除desc
        )
        
        # 下载文件并更新进度条
        with open(save_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                size = f.write(chunk)
                progress_bar.update(size)
        
        progress_bar.close()
        # 下载完成后再打印一个换行
        print("")
        if total_size != 0 and progress_bar.n != total_size:
            return False
        return True
    return False

def list_directory(alist_url, token, dir_path):
    """列出目录内容"""
    headers = {"Authorization": token}
    fs_list_url = f"{alist_url}/api/fs/list"
    params = {"path": dir_path}
    response = requests.post(fs_list_url, headers=headers, json=params)
    if response.status_code == 200:
        return response.json()["data"]["content"]
    return []

def recursive_download(alist_url, token, current_path, base_save_path, target_keyword, level=0):
    """递归遍历目录并下载符合条件的文件"""
    items = list_directory(alist_url, token, current_path)
    indent = "  " * level
    
    print(f"{indent}

标签:get,url,alist,token,path,response,下载
From: https://www.cnblogs.com/meetrice/p/18678876

相关文章

  • 免费下载CapCut海外版,解锁剪映VIP功能无广告
    前言大家好,今天给大家带来一个超级实用的教程——剪映海外版CapCut下载:免费解锁剪映VIP功能的完整步骤!剪映是目前非常流行的视频编辑软件,它让我们的短视频创作变得更加简单和高效。不管是记录生活点滴、制作旅行回忆,还是做一些创意短视频,剪映都提供了非常强大的功能支持。除......
  • Flask Web开发实战:入门、进阶与原理解析PDF免费下载
    适读人群:本书适合了解Python基本语法,想要自己动手做网站的编程人员;熟悉Python。想要从事PythonWeb开发的后端工程师、运维工程师和爬虫工程师;香葱Django等其他PythonWeb框架转向Flask的Python工程师阅读。PythonWeb框架Flask开发团队成员撰写,内容全面,从基础知识到进阶实战,再到......
  • 集体智慧编程 : 构建智能Web 2.0应用PDF、EPUB免费下载
    适读人群:Web开发者、架构师、应用工程师电子版仅供预览,支持正版,喜欢的请购买正版书籍点击原文去下载书籍信息作者:[美]TobySegaran出版社:电子工业出版社副标题:构建智能Web2.0应用原作名:ProgrammingCollectiveIntelligence:BuildingSmartWeb2.0Applica......
  • 【2017-2025】Adobe Premiere Pro(简称PR)专业视频编辑软件下载
    AdobePremierePro软件简介AdobePremierePro(简称PR)是由Adobe公司开发的一款专业视频编辑软件,广泛应用于电影制作、电视播出和网络视频的制作。该软件以其强大的编辑功能和灵活的工作流程,在业界中享有盛誉。无论是专业影视制作人还是业余爱好者,PremierePro都能满足他们的......
  • Adobe AU(Audition)专业音频编辑软件下载安装(附win/mac安装包)
    AdobeAU软件简介AdobeAU(Audition)是由Adobe公司开发的专业音频编辑软件,广泛用于音频录制、编辑、混音和恢复等工作。软件的设计旨在为音乐制作人、广播制作人、视频编辑师及音频行业的其他专业人士提供全方位的音频后期处理解决方案。随着数字音频技术的发展,AdobeAU的软件......
  • pikachu靶场的详细搭建,附pikachu靶场源码下载链接
    一、安装好phpstudy首先搭建pikachu靶场的第一步,先是安装好phpstudy,这是一款集成环境的软件,里面包含了Apache,FTP,MySQL,Nginx。phpstudy的官方网址:https://www.xp.cn/download.这里就根据大家的需要,选择Windows版,查看电脑的型号选择对应的PhpStudyV8版本位数,但现在一般电脑配置......
  • 帝国CMS8.0测试版开源发布免费提供下载
    2025年1月18日10点28分44秒帝国发布了CMS8.0在帝国软件官网创建22周年之后,我们很高兴地宣布:帝国CMS8.0版发布了!    帝国CMS经历过19个版本更新,8.0是第20个版本。我们一直不断在实践中突破创新,帝国CMS7.5版让系统全面完善,功能更加强大实用,做精品中的精品。而帝国CMS8.0版则在......
  • 25年网络安全大厂原来都面试这些,附大厂面经下载链接
    ​最近1-2个月小伙伴们因为裁员或其他原因,都在面试,以应用安全为主。所以24年甲方大厂都在面试什么呢?这里供为参考安全的行情确实不太好,讲明白简历上的项目和内容才是最为重要的。面试资料,里面含有蚂蚁p9对于职业规划和面经分享,包含各种安全岗位面经资料下载链接:面经资料下载......
  • 首发 最新AWVS/Acunetix Premium V24.8高级版漏洞扫描器(最新版)Windows/Linux下载
    前言AcunetixPremium是一种Web应用程序安全解决方案,用于管理多个网站、Web应用程序和API的安全。集成功能允许您自动化DevOps和问题管理基础架构。AcunetixPremium:全面的Web应用程序安全解决方案Web应用程序对于企业和组织与客户、合作伙伴和员工的联系至关重要。......
  • JSP如何实现文件断点上传和断点下载?
    要求:免费,开源,技术支持技术:百度webuploader,分块,切片,断点续传,秒传,MD5验证,纯JS实现,支持第三方软件集成前端:vue2,vue3,vue-cli,html5,webuploader后端:asp.net,.netmvc,.netcore,asp,jsp,java,springboot,php,数据库:MySQL,Oracle,SQLServer,达梦,人大金仓,国产数据库平......