跳转到主要内容

Git-Annex 大规模下载器和元数据生成器

项目描述

Project Status: Unsupported – The project has reached a stable, usable state but the author(s) have ceased all work on it. A new maintainer may be desired. CI Status https://codecov.io/gh/jwodder/gamdam/branch/master/graph/badge.svg https://img.shields.io/pypi/pyversions/gamdam.svg MIT License

GitHub | PyPI | 问题 | 变更日志

gamdam 是 Git-Annex 大规模下载器和元数据生成器。它接收一系列描述要下载的内容和每个文件所具有的元数据的 JSON 行,并将它们并行下载到一个 git-annex 仓库中,使用 git-annex 的元数据功能附加元数据,并提交结果。

此程序被编写为一个更大程序的经验/概念验证,现已不再维护。然而,作者还在 <https://github.com/jwodder/gamdam-rust> 产生了一个 Rust 翻译,目前正在维护。

安装

gamdam 需要 Python 3.8 或更高版本。只需使用 Python 3 的 pip 安装 gamdam 及其依赖项即可(您有 pip,对吧?)

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。

请注意,后者步骤只能在 git-annex 跟踪的文件上执行;如果您已经配置 git-annex 不跟踪文本文件,那么下载的任何文本文件都不会注册任何元数据或替代 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 整数等效值。[默认:INFO]

-m TEXT, --message TEXT

保存时使用的提交信息。这可能包含一个 {downloaded} 占位符,该占位符将被成功下载的文件数替换。

--no-save-on-fail

如果有任何文件下载失败,不要提交下载的文件

--save, --no-save

下载所有文件后是否提交下载的文件 [默认:--save]

输入格式

输入是一系列 JSON 对象,每行一个(即“JSON 行”)。每个对象具有以下字段

url

(必填) 下载的 URL

path

(必填) 应保存 URL 内容的相对路径。如果在下载另一个具有相同路径的条目时遇到具有给定路径的条目,则丢弃较晚的条目,并发出警告。

如果给定路径已存在文件,git-annex 将尝试将 URL 注册为文件的附加位置,如果 URL 的资源大小与现有文件不同,则失败。

metadata

使用 git-annex metadata 格式的一组元数据,即键名称到字符串值列表的映射字典。

extra_urls

资源替代 URL 的列表,使用 git-annex registerurl 附加到下载的文件。

如果给定的输入行无效,则将其丢弃,并发出错误消息。

库使用

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

将异步迭代器 objects 产生的项下载到目录 repo(必须属于 git-annex 仓库)并设置其元数据。 jobsgit-annex addurl 进程使用的并行作业数量;None 的值表示每个 CPU 核心使用一个作业。 addurl_opts 包含要附加到 git-annex addurl 命令的任何额外参数。

如果提供了 subscriber,它将为每次完成的下载(无论是成功还是失败)发送一个 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

Report 用作 download() 的返回值;它包含成功下载的文件数量和失败下载的数量。

项目详情


下载文件

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

源分发

gamdam-0.5.0.tar.gz (14.2 kB 查看哈希)

上传

构建分发

gamdam-0.5.0-py3-none-any.whl (12.3 kB 查看哈希)

上传 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面