代码远程调用aria2实现URL资源或BT种子下载

说明

aria2是一个非常强大的下载工具,再加上ariang可视化界面,可以非常方便的使用,不过我发现ariang和aria2都没有定时下载的功能,想要半夜利用网络快速下载比较麻烦,于是我便想用SpringBoot的定时任务为其添加延时下载的功能,网上一统找后发现乱七八糟基本都是抄的官网案例,但是官网也有一个大坑,就是对于用户验证只说使用token验证,但没对token过多描述,网上其他人写的也完全不提token

代码

这里只要搞清除 JSON 数据格式发个post请求就可以了,不一定使用那门语言

添加URL下载

{
  "jsonrpc": "2.0",
  "id": "sksk",//id随意  用来查询下载情况的 调用返回的id与这个一样
  "method": "aria2.addUri",
  "params": [
    "token:你的RPC密钥",//大坑,token就直接是你的RPC密钥 且要写在参数第一个
    ["下载资源的URL"]//你要下载的URL资源地址
  ]
}

添加bt种子下载

{
  "jsonrpc": "2.0",
  "id": "sksk",//id随意  用来查询下载情况的 调用返回的id与这个一样
  "method": "aria2.addTorrent",
  "params": [
    "token:你的RPC密钥",//大坑,token就直接是你的RPC密钥 且要写在参数第一个
    "bt种子文件的Base64编码"// bt种子文件的Base64编码
  ]
}

请求地址:http://{你服务器的ip地址}:{你设置的RPC端口}/jsonrpc

解法来源

观察ariang发的网络请求
在这里插入图片描述
不过注意它默认会发很多检测同步请求,需要找准时机关闭网络监听减少干扰,同样其他API的使用也可以通过抓包获取调用示例。
同样也参考了官方文档,但官方文档对它的api案例提的非常少

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Akka 远程调用实现基于 Akka Remoting 模块。以下是一个简单的示例: 首先,需要在项目中添加 Akka Remoting 依赖: ```xml <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-remote_2.11</artifactId> <version>2.5.9</version> </dependency> ``` 然后,定义一个远程 Actor,它可以通过网络接收和处理消息: ```java import akka.actor.AbstractActor; import akka.event.Logging; import akka.event.LoggingAdapter; public class RemoteActor extends AbstractActor { private LoggingAdapter log = Logging.getLogger(getContext().getSystem(), this); @Override public Receive createReceive() { return receiveBuilder() .match(String.class, message -> { log.info("Received message: {}", message); getSender().tell("Hello from remote actor", getSelf()); }) .build(); } } ``` 接下来,在本地 Actor 中创建一个远程 Actor 的引用,并向其发送消息: ```java import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; import akka.pattern.Patterns; import scala.concurrent.Await; import scala.concurrent.duration.Duration; import java.util.concurrent.TimeUnit; public class LocalActor { public static void main(String[] args) throws Exception { ActorSystem system = ActorSystem.create("MySystem"); // 创建远程 Actor 的引用 ActorRef remoteActor = system.actorOf(Props.create(RemoteActor.class), "remoteActor"); // 向远程 Actor 发送消息,并等待其回复 String message = "Hello from local actor"; Object response = Patterns.ask(remoteActor, message, 5000).toCompletableFuture().get(5000, TimeUnit.MILLISECONDS); System.out.println("Received response: " + response); system.terminate(); } } ``` 在上面的代码中,我们使用 `Patterns.ask` 方法向远程 Actor 发送一条消息,并等待其回复。该方法返回一个 `Future` 对象,我们可以使用 `toCompletableFuture()` 方法将其转换为 Java 8 的 `CompletableFuture` 对象,从而方便地使用 `get` 方法等待结果。 以上就是一个简单的 Akka 远程调用的示例。在实际应用中,还需要配置 Akka Remoting 的一些参数,例如远程 Actor 的地址、端口等。具体配置方法可以参考 Akka 官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值