From 238e255489f3ca29c526bdda88081eb0ce9146ae Mon Sep 17 00:00:00 2001 From: xkeyC <3334969096@qq.com> Date: Sat, 24 Feb 2024 21:48:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=87=8D=E5=90=AF=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=90=8E=E7=9A=84=E9=99=90=E9=80=9F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/api/api.dart | 5 +++++ lib/common/io/aria2c.dart | 14 +++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/api/api.dart b/lib/api/api.dart index 96ff9bc..9cebb15 100644 --- a/lib/api/api.dart +++ b/lib/api/api.dart @@ -63,6 +63,11 @@ class Api { return l; } + static Future getTorrentTrackerList() async { + final data = await getRepoData("sc_doctor", "tracker.list"); + return data; + } + static Future getScServerStatus() async { final r = await RSHttp.getText( "https://status.robertsspaceindustries.com/index.json"); diff --git a/lib/common/io/aria2c.dart b/lib/common/io/aria2c.dart index dfc62b9..209ff3d 100644 --- a/lib/common/io/aria2c.dart +++ b/lib/common/io/aria2c.dart @@ -4,6 +4,8 @@ import 'dart:math'; import 'package:aria2/aria2.dart'; import 'package:flutter/foundation.dart'; +import 'package:hive/hive.dart'; +import 'package:starcitizen_doctor/api/api.dart'; import 'package:starcitizen_doctor/base/ui.dart'; import 'package:starcitizen_doctor/common/conf/app_conf.dart'; import 'package:starcitizen_doctor/common/conf/binary_conf.dart'; @@ -57,6 +59,9 @@ class Aria2cManager { final exePath = "$_aria2cDir\\aria2c.exe"; final port = await getFreePort(); final pwd = generateRandomPassword(16); + dPrint("pwd === $pwd"); + final trackerList = await Api.getTorrentTrackerList(); + dPrint("trackerList === $trackerList"); dPrint("Aria2cManager .----- aria2c start $port------"); final p = await Process.start( exePath, @@ -77,7 +82,7 @@ class Aria2cManager { "--seed-time=0", ], workingDirectory: _aria2cDir); - p.stdout.transform(utf8.decoder).listen((event) { + p.stdout.transform(utf8.decoder).listen((event) async { if (event.trim().isEmpty) return; dPrint("[aria2c]: ${event.trim()}"); if (event.contains("IPv4 RPC: listening on TCP port")) { @@ -86,6 +91,13 @@ class Aria2cManager { _aria2c!.getVersion().then((value) { dPrint("Aria2cManager.connected! version == ${value.version}"); }); + final box = await Hive.openBox("app_conf"); + _aria2c!.changeGlobalOption(Aria2Option() + ..maxOverallUploadLimit = + textToByte(box.get("downloader_up_limit", defaultValue: "0")) + ..maxOverallDownloadLimit = + textToByte(box.get("downloader_down_limit", defaultValue: "0")) + ..btTracker = trackerList); } }, onDone: () { dPrint("[aria2c] onDone: ");