当前位置: 首页 > news >正文

为 AriaNg 持久保存下载历史

前言

Aria2 的任务记录默认存储在内存中,AriaNg 重启后已完成任务会全部消失。为了让下载历史能够长期保存,可以利用 Aria2 的 event‑hook 机制,在任务完成时自动写入日志文件。

本文提供两个方案:

  • 简单方案:直接记录完成时间、GID、文件路径
  • 进阶方案:通过 JSON‑RPC 查询更多信息(如文件大小、下载地址)

当前环境:
Aria2 1.37.0
AriaNg 1.3.11

官方文档:event-hook


简单方案:直接写入日志

Aria2 在触发 on-download-complete 时会向脚本传递三个参数:

  1. %1:GID
  2. %2:文件数量
  3. %3:文件路径

思路:在任务完成时调用批处理脚本,将必要信息写入 history.txt

1. 修改 aria2.conf

on-download-complete=on-complete-hook.bat

2. 创建 on-complete-hook.bat(放在 aria2.exe 同目录)

@echo off
chcp 65001 > nul
setlocal enabledelayedexpansion:: 获取当前时间
set datetime=%date% %time%:: 写入日志
echo [%datetime%] GID=%1 FILE=%3 >> history.txtendlocal

3. 示例输出

[周一 2026/03/02 19:29:44.41] GID=68c9c804983c04fd FILE="F:/Downloads/test.txt"
[周一 2026/03/02 19:33:44.67] GID=8ec7f5f31254dbfb FILE="F:/Downloads/test2.txt"

此方案简单无脑,但只能获取 GID 、文件数量和文件路径3个信息。


进阶方案:通过 JSON‑RPC 获取完整任务信息

如果需要记录 文件大小、下载地址、更多元数据,可以在 hook 中调用 PowerShell,通过 RPC 查询任务详情。

流程:

aria2 → on-complete-hook.bat → on-complete.ps1 → history.txt

1. 修改 aria2.conf

on-download-complete=on-complete-hook.bat

2. 创建 on-complete-hook.bat

@echo off
powershell -ExecutionPolicy Bypass -File "D:\Program Files\Aria2\on-complete.ps1" %1 %2 %3

3. 创建 on-complete.ps1(放在 aria2.exe 同目录)

param([string]$GID,[string]$FileCount,[string]$FilePath
)# ========= 配置 =========
$RpcUrl = "http://127.0.0.1:6800/jsonrpc"
$RpcToken = 
$LogFile = "history.txt"
# ========================$Now = Get-Date -Format "yyyy-MM-dd HH:mm:ss"# 构造 JSON 请求
$Body = @{jsonrpc = "2.0"method  = "aria2.tellStatus"id      = "1"params  = @("token:$RpcToken", $GID, @("totalLength","files"))
} | ConvertTo-Json -Depth 5# 调用 RPC
$response = Invoke-RestMethod -Uri $RpcUrl -Method Post -Body $Body -ContentType "application/json"$totalLength = [int64]$response.result.totalLength
$uri = $response.result.files[0].uris[0].uri# 文件大小格式化
function Format-Size($bytes) {if ($bytes -ge 1GB) { return "{0:N2} GB" -f ($bytes / 1GB) }elseif ($bytes -ge 1MB) { return "{0:N2} MB" -f ($bytes / 1MB) }elseif ($bytes -ge 1KB) { return "{0:N2} KB" -f ($bytes / 1KB) }else { return "$bytes B" }
}$sizeText = Format-Size $totalLength# 写入日志
$logText = @"
======================================
GID: $GID
时间: $Now
路径: $FilePath
大小: $sizeText
地址: $uri"@$logText | Out-File -FilePath $LogFile -Encoding Default -Append

4. 示例输出

======================================
GID: 274e3438cfcfc01c
时间: 2026-03-02 19:48:26
路径: F:/Downloads/test.txt
大小: 16 B
地址: https://d.pcs.baidu.com/file/...

这种方法可记录完整下载信息,适合需要长期归档或分析下载历史。


总结

Aria2 的 event‑hook 提供了灵活的扩展能力:

  • 简单方案:无需 RPC,快速记录基础信息
  • 进阶方案:通过 JSON‑RPC 获取完整任务详情,适合需要更丰富日志的用户

两种方案均适用于 Windows,Linux/macOS 也可以用同样方式实现。

http://www.jsqmd.com/news/429100/

相关文章:

  • 【Azure Container App】Debug Console的调式工具指南
  • 基于OFDM技术的水下声学通信多径信道图像传输研究附Matlab代码
  • DIFY 工作流获取 Linux 系统时间:从踩坑到实战,一行代码搞定落款时间!
  • 您好,我采用WD Drive Utilities软件打开后,好像无法识别我的西数机械硬盘(图中G盘),也无法检测,这是什么原因?
  • Jetson A/B 分区与回滚机制:官方视角的总结与实战记录(L4T 36.x / Orin / UEFI)
  • 35岁真的是一道坎啊!!!
  • 西部数据-机械硬盘出现声音的原因-官方解释-官方查询硬件问题方法——给出了下载软件-可以检测-但是需要保存好数据,以防万一出现数据崩溃
  • 7 道 RAG 基础概念知识点/面试题总结
  • 【nestjs】连接redis
  • 智能指针
  • py -3.8
  • 永磁同步电机高频方波电压注入法(V1)。 整个仿真提供两种形式,一个采用状态机控制转速环,电流环
  • CF2196C2题解
  • 第3章 Windows运行机理-3.5 PE结构分析(1)
  • 人工智能+的七大赛道
  • 【医学数据分析与挖掘】(一):概述
  • 【node】Prisma 基础使用
  • python+flask+vue框架的个人健康菜谱生成系统_ 项目源码
  • 【python】使用chinesecalendar判断是不是工作日
  • python+flask+vue框架的个人物品管理系统
  • 大模型开发全景图升级:7大框架+3平台+7UI,助你抢占AI高地!
  • 普通人怎么学AI
  • Hadoop集群搭建实战:手把手教你部署高可用环境
  • 7.5kw异步电机经典矢量控制仿真:Matlab/Simulink 实战
  • 告别知识孤岛!Wiki.js打造知识库,并实现随处可用。
  • Virtio 虚拟化 I/O 框架:间接描述符与 Event Index
  • python+flask+vue框架的基于.的社区服务平台 项目源码
  • python+flask+vue框架的基于 的图书借阅管理信息系统
  • Planner to PowerBI
  • 提示工程人才培养的敏捷学习路径:快速响应业务需求