aria2 adduri
demo, ok
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter/services.dart';
import 'dart:io';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:json_rpc_2/json_rpc_2.dart' as json_rpc;
import 'package:stream_channel/stream_channel.dart';
import 'dart:io';
import 'package:web_socket_channel/web_socket_channel.dart';
import 'package:web_socket_channel/io.dart';
import 'dart:convert'; void main() => runApp(MaterialApp(
home: MyApp(),
)); class MyApp extends StatefulWidget { @override
State<StatefulWidget> createState() {
return MyAppState();
}
} class MyAppState extends State<MyApp> {
var permit;
Directory setupPath;
Directory sdCard;
File aria2Main;
IOWebSocketChannel channel; checkPermission()async{
permit = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage);
if(permit!=PermissionStatus.granted){
await PermissionHandler().requestPermissions([PermissionGroup.storage]);
}
} setupFile()async{
setupPath = await getApplicationDocumentsDirectory();
aria2Main = File(join(setupPath.path, 'aria2'));
bool existFile = await aria2Main.exists();
if(!existFile) {
print('no exist so to create it');
var aria2File = await rootBundle.load('assets/aria2c');
var aria2FileBuf = aria2File.buffer;
aria2Main.writeAsBytesSync(aria2FileBuf.asUint8List()); await Process.run('chmod', ['755', aria2Main.path]).then((e) {
print(e.stdout);
print(e.stderr);
print(e.exitCode);
});
} var configFile = await rootBundle.load('assets/aria2.conf');
var confbuf = configFile.buffer;
File(join(setupPath.path, 'aria2.conf')).writeAsBytesSync(confbuf.asUint8List()); print('start servicess rpc:');
await Process.run(aria2Main.path, ['--conf-path=${setupPath.path}//aria2.conf']).then((e){
print(e.stdout);
print(e.stderr);
print(e.exitCode);
});
} startService()async{
channel = IOWebSocketChannel.connect('ws://localhost:6800/jsonrpc');
channel.stream.listen((data){
print('data: $data');
});
} downloadFile()async{
sdCard = await getExternalStorageDirectory();
String url = 'http://speed.189.cn/upload/BSSAClientSetup9.exe';
Map xx = {"jsonrpc":"2.0","id":"m","method":"aria2.addUri","params":[["$url"]]};
channel.sink.add(json.encode(xx));
} @override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Aria2'),),
body: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
RaisedButton(child: Text('checkPermission'),onPressed: (){
checkPermission();
},),
RaisedButton(child: Text('setupFile'),onPressed: (){
setupFile();
},),
RaisedButton(child: Text('start service'),onPressed: (){
startService();
},),
RaisedButton(child: Text('Download'),onPressed: (){
downloadFile();
},),
],
),
),
);
}
}
V/BoostFramework(13547): BoostFramework() : mPerf = com.qualcomm.qti.Performance@667a10e
I/flutter (13547): start servicess rpc:
I/flutter (13547): data: {"id":"m","jsonrpc":"2.0","result":"3a85b5cc8bda8388"}
I/flutter (13547): data: {"jsonrpc":"2.0","method":"aria2.onDownloadStart","params":[{"gid":"3a85b5cc8bda8388"}]}
I/flutter (13547): data: {"jsonrpc":"2.0","method":"aria2.onDownloadComplete","params":[{"gid":"3a85b5cc8bda8388"}]}
aria2 adduri的更多相关文章
- test aria2 on windows platform
import 'dart:io'; import 'dart:convert'; import 'package:path/path.dart'; import 'package:web_socket ...
- aria2 资料
https://www.jianshu.com/p/8124b5b6ef95https://quan.ithome.com/0/331/853.htmhttp://www.360doc.com/con ...
- python3 使用aria2下载的一个脚本
import requests import time ariaurl="http://localhost:6800/jsonrpc" dlurl="http://xxx ...
- aria2使用ajax调用/页面浏览器RPC调用aria2
@ 目录 1. aria2使用ajax调用/页面浏览器RPC调用aria2 1.1. 总结: 1.2. ajax调用aria2-Demo 1.3. postMan命令测试 1.3.1. post基本使 ...
- m3u8文件下载合并的一种方法
# -*- coding: utf-8 -*- """ Created on Wed Mar 14 15:09:14 2018 @author: Y "&quo ...
- 一个用python简单的封装了aria2的jsonrpc中adduri的脚本
aria2是一个十分牛逼的下载神器,有时候项目需要一个很牛逼的下载中间件的话,aria2是一个不错的选择.其中支持jsonrpc和websocket的特性尤其诱人.但是python用起来还是有点不爽, ...
- ubuntu下载工具uget和aria2
一直想在ubuntu下找到个和迅雷差不多的下载工具.在网上找到了. 这篇文章完全是抄袭整理网上的. 我的系统版本是ubuntu14.04. 1.安装uget和aria2 sudo apt-get in ...
- Centos6.4 aria2 webui-aria2
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm rpm -ivh ...
- Mac Aria2 使用Privoxy将socks代理转化为http代理
安装Privoxy 打开终端安装privoxy来实现这里我是通过brew来进行的安装 brew install privoxy 看到这行已经安装成功 ==> Caveats To have la ...
随机推荐
- DICOM中的UID
UID形式上是一个字符串,用于唯一标识DICOM标准中各种不同信息对象,如数据元素的值表示类型.DICOM抽象语法名.传输语法.应用程序上下文名字等,以保证在各个不同的国家.地区.生产商.设备使用时的 ...
- Python中的日志记录方案-logging模块&loguru模块
原文链接 原创: 崔庆才 在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样.在使用时我们需要配置一些 Handler.Formatter ...
- TOKEN验证防止CSRF攻击的原理
TOKEN验证防止CSRF攻击的原理.CSRF中文名是跨站请求伪造攻击,黑客可以通过CSRF攻击来伪造我们的身份,从而进行不法的活动.比如说是以我们的身份进行转账,发送邮件等操作. 要想做到预防CSR ...
- Vue 项目中断点没有跳转到指定源码的问题
将配置中 devtool 改为以下即可. devtool: 'source-map' 如果是在 vue-cli 2.x ,那么就在 webpack.dev.config.js 中 如果是 vue-cl ...
- kotlin基础 字符串模板
${变量名} var tmp="字符串模板” print("今天学习${tmp}这个知识点")
- EVE-NG使用手册
转裁于https://www.cnblogs.com/51yuki/articles/eve01.html EVE-NG使用手册 一)EVE-NG的安装 1)下载EVE镜像包 https://pa ...
- Qt开发经验小技巧51-60
在某些http post数据的时候,如果采用的是&字符串连接的数据发送,中文解析乱码的话,需要将中文进行URL转码. QString content = "测试中文"; Q ...
- k8s记录-k8s基本概念和术语
每次个节点上当然都要运行Docker.Docker来负责所有具体的映像下载和容器运行. Kubernetes主要由以下几个核心组件组成: etcd保存了整个集群的状态: apiserver提供了资源操 ...
- ThinkPHP5中模型关联关系一对一,一对多
TP5 返回json反斜杠前面转义了class XinDai extends Controller{ public function index(){ $res = [ ['logo'=>'/i ...
- (原)理解码率控制模式(x264,x265,vpx)
理解码率控制模式(x264,x265,vpx) 原文链接:https://slhck.info/video/2017/03/01/rate-control.html 翻译:lihaiping1603@ ...