在https://crates.io上下载所有板条箱

cratesmirror的Python项目详细描述


板条箱错误

https://img.shields.io/pypi/v/cratesmirror.svg

关于

下载crates.io上的所有板条箱

要求

  • python=2.7.9
  • requests
  • GitPython
  • 至少有4G可用磁盘空间,用于存放本地板条箱

安装

# pip install cratesmirror

用法

$ cratesmirror -h

usage: cratesmirror [-h][-i INDEX][-w CRATES][-d DBPATH][-f LOGFILE][-c CHECKDB][-v]

optional arguments:
  -h, --help            show this help message and exit
  -i, --index INDEX     registry index directory (default: /srv/git/index)
  -w, --crates CRATES   crates directory (default: /srv/www/crates)
  -d, --dbpath DBPATH   database file path (default: None)
  -f, --logfile LOGFILE
                        log file path (default: None)
  -c, --checkdb CHECKDB
                        check database for missing crates (default: False)
  -v, --verbose

Available environment variables: HTTP_PROXY, HTTPS_PROXY, CRATES_DL, CRATES_API


Examples:
# Download all crates only
$ cratesmirror -d /var/lib/crates/crates.db -f /var/log/crates/debug.log

# Find out missing crates, then update the repository
$ cratesmirror --checkdb -d /var/lib/crates/crates.db -f /var/log/crates/debug.log

# Update repo and commit custom settings
$ CRATES_DL='https://crates.mirrors.ustc.edu.cn/api/v1/crates'\
      cratesmirror -d /var/lib/crates/crates.db -f /var/log/crates/debug.log

# Using proxy
$ HTTPS_PROXY='https://127.0.0.1:8081'\
      cratesmirror -d /var/lib/crates/crates.db -f /var/log/crates/debug.log

或者在脚本中使用它

fromcratesmirrorimportCratesMirrorindexdir='/srv/git/index'cratesdir='/srv/www/crates'config={'dl':'https://crates.mirrors.ustc.edu.cn/api/v1/crates','api':'https://crates.io'}# By default, it will be saved at os.getcwd()/crates.dbdbpath='/var/lib/cratesmirror/crates.db'withCratesMirror(indexdir,cratesdir,config=config,dbpath=dbpath)asmirror:mirror.update_repo()# with proxyproxies={"http":"http://10.10.1.10:3128","https":"http://10.10.1.10:1080",}withCratesMirror(indexdir,cratesdir,config=config,proxy=proxies,dbpath=dbpath)asmirror:mirror.update_repo()

  • 默认情况下,脚本将:
    • 假设注册表索引目录位于/srv/git/index,板条箱保存在/srv/www/crates
    • 将下载的板条箱另存为<CratesDir>/{name}/{name}-{version}.crate
    • 将数据库文件保存在os.getcwd()/crates.db
  • 如果设置了环境变量CRATES_DLCRATES_API,则其值将保存在<IndexDir>/config.json,并且将自动提交更改。
  • 在第一次运行之后,您只需要使用crontab之类的工具或systemd.timer定期运行此脚本,以便与上游同步。

变更日志

1.1.3

bugfix

  • 在修改后的索引文件中提取所有新的板条箱,而不仅仅是最新的

1.1.2

bugfix

  • <RegistryDir>/config.json
  • 中将none替换为默认值

1.1.1

其他

  • 添加更改日志

1.1.0

改进

  • 始终使用多线程下载板条箱

1.0.4

功能

  • 添加-c/–checkdb选项,允许用户检查数据库中丢失的板条箱

1.0.3

改进

  • 当<;板条箱dir>;为空时,以多线程方式下载所有板条箱

1.0.2

  • 天真的爬虫

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java限制C++代码访问JNI中的某些类   Android上的java DateFormat:不可解析的日期   通过json进行java迭代,并为其他请求调用多个API   Netbeans中的java JavaFX项目引发异常“输入流不能为null”   多线程Java newFixedThreadPool解释   |在java字符串中无法识别。split()方法   Java中的原始包装器类是否被视为引用类型?   Java swing。如何在intellij idea GUI设计工具中重写组件方法   数组乘矩阵   java将30GB的XML文件分割成小块XML   java通过一棵树递归找到一个节点,并返回指向该节点的路径   java如何将可观察的<Observable<List<T>>转换为可观察的<List<T>>   使用java在web服务器上更改php文件中的字符串?   java希望开发像tomcat这样的servlet容器   java希望提高编程的数学技能