Git-Annex 海量下载器和元数据器
项目描述
gamdam是 Git-Annex Mass Downloader 和 Metadata-er。它需要一个 JSON 行流,描述要下载的内容以及每个文件具有哪些元数据,将它们并行下载到git-annex存储库,使用 git-annex 的元数据工具附加元数据,并提交结果。
这个程序是作为一个更大程序的实验/概念验证编写的,现在只进行了最低限度的维护。
安装
gamdam需要 Python 3.8 或更高版本。只需使用Python 3 的pip(你有 pip,对吗?)来安装 gamdam及其依赖项:
python3 -m pip install gamdam
gamdam还需要单独安装git-annex v10.20220222 或更高版本才能运行。
用法
gamdam [<options>] [<input-file>]
gamdam按照下面描述的输入格式从文件(如果没有指定文件,则从标准输入)读取一系列 JSON 条目。它将 URL 和输出路径提供给git-annex addurl,一旦每个文件完成下载,它就会分别使用 git-annex metadata和git-annex registerurl附加任何列出的元数据和额外的 URL 。
选项
- --addurl-opts OPTIONS
传递给git-annex addurl命令的额外选项。请注意,需要将多个选项和参数引用为单个字符串,这也必须在内部使用正确的 shell 引用;例如,--addurl-opts="--user-agent 'gamdam via git-annex'"。
- -C DIR, --chdir DIR
下载文件的目录;默认为当前目录。如果该目录不存在,则会创建该目录。如果该目录不属于 Git 或 git-annex 存储库,它将被初始化为一个。
- -F FILE, --failures FILE
如果任何文件下载失败,将其输入记录写回FILE
- -J INT, --jobs INT
git-annex addurl使用的并行作业数;默认情况下,进程被指示为每个 CPU 内核使用一个作业。
- -l LEVEL, --log-level LEVEL
将日志级别设置为给定值。可能的值为“ CRITICAL ”、“ ERROR ”、“ WARNING ”、“ INFO ”、“ DEBUG ”(全部不区分大小写)及其 Python 整数等价物。[默认:信息]
- -m TEXT, --message TEXT
保存时使用的提交消息。这可能包含一个{downloaded}占位符,它将替换为成功下载的文件数。
- --no-save-on-fail
如果任何文件下载失败,请不要提交下载的文件
- --save, --no-save
下载的文件全部下载后是否提交[默认值:-- save ]
输入格式
输入是一系列 JSON 对象,每行一个(又名“JSON 行”)。每个对象都有以下字段:
- 网址
(必填)下载地址
- 小路
(必需)应保存 URL 内容的相对路径。如果在下载具有相同路径的另一个条目时遇到具有给定路径的条目,则丢弃后面的条目,并发出警告。
如果给定路径中已经存在文件,git-annex将尝试将 URL 注册为文件的附加位置,如果 URL 上的资源与现有文件的大小不同,则会失败。
- 元数据
git-annex metadata使用的形式的元数据集合,即将键名映射到字符串值列表的字典。
- 额外的网址
资源的替代 URL 列表,使用git-annex registerurl附加到下载的文件。注意这个操作只能对git-annex跟踪的文件进行;例如,如果您已将 git-annex 配置为不跟踪文本文件,那么下载的任何文本文件都不会注册任何替代 URL。
如果给定的输入行无效,则将其丢弃,并发出错误消息。
图书馆使用
gamdam也可以用作 Python 库。它导出以下内容:
async def download(
repo: pathlib.Path,
objects: AsyncIterator[Downloadable],
jobs: Optional[int] = None,
addurl_opts: Optional[List[str]] = None,
subscriber: Optional[anyio.abc.ObjectSendStream[DownloadResult]] = None,
) -> Report
将异步迭代器对象产生的项目下载到目录 repo(它必须是 git-annex 存储库的一部分)并设置它们的元数据。 jobs是git-annex addurl进程要使用的并行作业数;None值表示每个 CPU 内核使用一个作业。 addurl_opts 包含附加到git-annex addurl 命令的任何附加参数。
如果提供了订阅者,它将为每个完成的下载(成功和失败)发送一个DownloadResult (见下文)。这可用于实现下载的自定义后处理。
class Downloadable(pydantic.BaseModel):
path: pathlib.Path
url: pydantic.AnyHttpUrl
metadata: Optional[Dict[str, List[str]]] = None
extra_urls: Optional[List[pydantic.AnyHttpUrl]] = None
Downloadable是一个pydantic模型,用于表示要下载的文件;有关字段的含义,请参见 上面的输入格式。
class DownloadResult(pydantic.BaseModel):
downloadable: Downloadable
success: bool
key: Optional[str] = None
error_messages: Optional[List[str]] = None
DownloadResult是一个pydantic模型,用于表示已完成的下载。它包含原始的Downloadable、指示下载成功的标志、下载文件的 git-annex 密钥(仅在下载成功且文件被 git-annex 跟踪时设置)以及来自 addurl 进程的任何错误消息(仅在下载失败)。
@dataclass
class Report:
downloaded: int
failed: int
报告用作download()的返回值;它包含成功下载的文件数和失败的下载数。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。