Skip to content

gldsly/aria2-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aria2-go

使用 jsonrpc 和 aria2 通信的 sdk

完整实现 文档中 jsonrpc 的 method 请求构造

预置常用的操作方法

go get -u github.com/gldsly/aria2-go

示例:

package main

import (
	"encoding/json"
	"fmt"

	aria2go "github.com/gldsly/aria2-go"
)

var client *aria2go.Aria2Client

// Download 下载文件
func Download() {
	gid, err := client.Download("https://dl.google.com/go/go1.18.4.linux-amd64.tar.gz")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(gid)
}

// GetTaskStatus 查询任务状态
func GetTaskStatus() {
	status, err := client.QueryTaskStatus("fc9b15cfe91ee80b")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(status)
}

// GetStoppedTask 构建请求发送到 aria2 中查询
func GetStoppedTask() {
	request, replayID, err := aria2go.NewRequestWithToken(client.Token).TellStopped(0, 10).Create()

	if err != nil {
		fmt.Println(err)
		return
	}

	result, err := client.SendRequest(request)
	if err != nil {
		fmt.Println(err)
		return
	}

	resp := &aria2go.TellTaskListResponse{}
	if err := json.Unmarshal(result, &resp); err != nil {
		fmt.Println(err)
		return
	}

	fmt.Printf("replay id: %s \nresult: %#v\n",replayID, resp.Result[0])
}

func main() {
	client = aria2go.NewAria2Client("thanks")
	GetStoppedTask()
}