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 ...
随机推荐
- leetcode 688. “马”在棋盘上的概率
题目描述: 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1). 现有一个 “马”(也译作 “骑士”)位于 ( ...
- mstar安卓智能电视方案源代码常用修改
优先 替换 Supernova\projects\customerinfo\inc\Customer_Info.h替换 内核中linux/drivers/mmc/core/mmc.c文件 1, key ...
- 防止同一IP多次请求攻击
防止同一IP多次请求攻击 防止入侵者,通过死循环同一时间批量向服务器请求数据,导致服务器内存开销不断膨胀,最后直接瘫痪. 一. 新增一个spring的拦截器 , 拦截所有请求 <mvc:inte ...
- 检查 chrome 插件是否存在
你必须了解 chrome 插件开发才能阅读以下内容. 传送门: https://qa.1r1g.com/sf/ask/440544891/ 原理:页面 js 向 chrome 插件的 backgrou ...
- 2019 GDD breaking world‘s record of π
Day 2 1.breaking pi‘s world record with google cloud [concept] memory wall: Originally theorized in ...
- FileHelper-文件操作工具
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...
- python中实现延时回调普通函数示例代码
python中实现延时回调普通函数示例代码 这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的 ...
- FinalShell—一体化服务器管理软件(SSH客户端)
下面附上一些截图和官方连接: 官网:http://www.hostbuf.com/ FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发 ...
- mysql报错 常见 1045 10061
报错1045: 远程没有设置用户远程访问的权限 解决方案: 进行授权(红色是你的密码) 如果想root用户使用password从任何主机连接到mysql服务器的话. GRANT ALL PRIVILE ...
- 实用———springmvc接收参数校验
https://www.cnblogs.com/funyoung/p/8670550.html https://www.cnblogs.com/monkeydai/p/10068547.html He ...