在https://crates.io上下载所有板条箱
cratesmirror的Python项目详细描述
关于
下载crates.io上的所有板条箱
安装
# 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_DL
或CRATES_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
- 天真的爬虫