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 ...
随机推荐
- yum -y install pip No package pip available. Error: Nothing to do
centos下安装pip时失败: [root@wfm ~]# yum -y install pipLoaded plugins: fastestmirror, refresh-packagekit, ...
- 【jmeter】使用jmeter进行测试-示例
介绍 jmeter主要用于负载测试,详细信息可以参见Google. 这里使用一个简单的示例,来介绍jmeter的使用. 涉及的功能点包括: HTTP HEADER配置 HTTP Request配置 J ...
- EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(一)使用Onvif协议进行设备发现以及指定设备信息探测
背景分析 众所周知,EasyNVR不拘泥.不受限于摄像机的品牌厂商及其配套平台,只要是网络监控摄像机IPC.硬盘录像机NVR.且设备支持标准的RTSP/Onvif协议,都可以接入实时视频流进入Easy ...
- 相同数据中选择id最大数据 的sql
select max(id)id ,name, age from tablename group by name, age
- Jenkins - 分布式构建
1 - 简介 Jenkins支持分布式多节点(Master-Slave)运行模式. 将安装Jenkins的主机作为Master节点,然后通过界面配置(或远端启动服务)来添加Slave节点. 在这种部署 ...
- 递归下降和LL(1)语法分析
什么是自顶向下分析法 在语法分析过程中一般有两种语法分析方法,自顶向下和自底向上,递归下降分析和LL(1)都属于是自顶向下的语法分析 自顶向下分析法的过程就像从第一个非终结符作为根节点开始根据产生式进 ...
- 深入理解虚拟机、容器和 Hyper 技术
本文首先介绍了操作系统,然后引出容器技术以及虚拟机技术,最后介绍了 Docker 和 Hyper 技术.通过本文可以清楚地对三者有感性认识. 操作系统概述 我们可以把操作系统简化为: 操作系统 = 内 ...
- python入门之垃圾回收机制
目录 一 引入 二.什么是垃圾回收机制? 三.为什么要用垃圾回收机制? 四.垃圾回收机制原理分析 4.1.什么是引用计数? 4.2.引用计数扩展阅读 4.2.1 标记-清除 4.2.2 分代回收 一 ...
- HBase 详解
1.HBase 架构 ============================================ 2. HBase Shell 操作 2.1. 基本操作 进入HBase客户端命令行:bi ...
- 使用docker-compose快速搭建gitlab
1. 准备工作: centos7 [root@dev_vonedao_95 gitlab]# docker -v Docker version , build 633a0ea [root@dev_vo ...