Skip to main content

Git-Annex 海量下载器和元数据器

项目描述

项目状态:非活动——项目已达到稳定、可用状态,但不再积极开发; 将在时间允许的情况下提供支持/维护。 CI 状态 https://codecov.io/gh/jwodder/gamdam/branch/master/graph/badge.svg https://img.shields.io/pypi/pyversions/gamdam.svg 麻省理工学院许可证

GitHub | 派皮 | 问题 | 变更日志

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 metadatagit-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 存储库的一部分)并设置它们的元数据。 jobsgit-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()的返回值;它包含成功下载的文件数和失败的下载数。

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

gamdam-0.3.0.tar.gz (16.6 kB 查看哈希

已上传 source

内置分布

gamdam-0.3.0-py3-none-any.whl (12.2 kB 查看哈希

已上传 py3