Esempio n. 1
0
        }                               //任务的GID

        public async void GetFileInfo() //获得文件信息
        {
            JRCtler.JsonRpcRes x = await Aria2Methords.GetFiles(Gid);

            if (x.Result.Count == 1)
            {
                string filepath = x.Result[0].path;
                if (filepath != null)
                {
                    FileName       = filepath.Substring(filepath.LastIndexOf(@"/") + 1);
                    FileNameSource = FileNameSources.Path;
                }
                else
                {
                    string uri = x.Result[0].uris[0].uri;
                    FileName       = uri.Substring(uri.LastIndexOf(@"/") + 1);
                    FileNameSource = FileNameSources.Uri;
                }
            }
            else
            {
                string path  = x.Result[0].path;
                int    count = x.Result.Count;
                FileName = path.Substring(path.IndexOf(@"/") + 1, path.LastIndexOf(@"/")) + ",共计" + count.ToString() + "个文件";
            }
            OnPropertyChanged("FileName");
        }
Esempio n. 2
0
        /// <summary>
        /// 关闭Aria2C,调用Aria2自己的方法
        /// </summary>
        public static void ShutDown()
        {
            ArrayList Params = new ArrayList
            {
                "token:" + Stc.GloConf.Rpc_secret,
            };

            JRCtler.JsonRpcRes Result = Stc.Line.JsonRpc("aria2.shutdown", Params);
        }
Esempio n. 3
0
        public static async Task <JRCtler.JsonRpcRes> GetGlobalStat()
        {
            ArrayList Params = new ArrayList
            {
                "token:" + Stc.GloConf.Rpc_secret,
            };

            JRCtler.JsonRpcRes Result = await Stc.Line.JsonRpcAsync("aria2.getGlobalStat", Params);

            return(Result);
        }
Esempio n. 4
0
        public static async Task <JRCtler.JsonRpcRes> GetFiles(string Gid)
        {
            ArrayList Params = new ArrayList
            {
                "token:" + Stc.GloConf.Rpc_secret,
                Gid
            };

            JRCtler.JsonRpcRes Result = await Stc.Line.JsonRpcAsync("aria2.getFiles", Params);

            return(Result);
        }
Esempio n. 5
0
        private async void Refresh()//更新任务列表
        {
            JRCtler.JsonRpcRes x = await Aria2Methords.TellActive();

            CheckRefreshResult(x);
            JRCtler.JsonRpcRes y = await Aria2Methords.TellWaiting();

            CheckRefreshResult(y);
            JRCtler.JsonRpcRes z = await Aria2Methords.TellStopped();

            CheckRefreshResult(z);
        }
Esempio n. 6
0
        public static async Task <JRCtler.JsonRpcRes> TellActive()
        {
            string[]  Keys   = new string[] { "status", "totalLength", "completedLength", "downloadSpeed", "gid" };
            ArrayList Params = new ArrayList
            {
                "token:" + Stc.GloConf.Rpc_secret,
                Keys
            };

            JRCtler.JsonRpcRes Result = await Stc.Line.JsonRpcAsync("aria2.tellActive", Params);

            return(Result);
        }
Esempio n. 7
0
        public static async Task <JRCtler.JsonRpcRes> TellStatus(string Gid, string[] Keys)
        {
            ArrayList Params = new ArrayList
            {
                "token:" + Stc.GloConf.Rpc_secret,
                Gid,
                Keys
            };

            JRCtler.JsonRpcRes Result = await Stc.Line.JsonRpcAsync("aria2.tellStatus", Params);

            return(Result);
        }
Esempio n. 8
0
        public async Task Refresh()//刷新任务状态
        {
            if (OughtToRefresh <= 0)
            {
                JRCtler.JsonRpcRes e = await Aria2Methords.TellStatus(Gid);

                InformationRefresh(e);
            }
            else
            {
                OughtToRefresh--;
            }
        }
Esempio n. 9
0
 private void CheckRefreshResult(JRCtler.JsonRpcRes e)//检查Refresh方法中异步返回的结果
 {
     foreach (dynamic s in e.Result)
     {
         JRCtler.JsonRpcRes a = new JRCtler.JsonRpcRes
         {
             Result = s
         };
         string g = a.Result.gid;
         if (GidList.Contains(g) != true)
         {
             GidList.Add(g);
             string Status = a.Result.status;
             if (Status != "complete")
             {
                 Add(new TaskLite(a));
             }
             else
             {
                 TaskFinished?.Invoke(new TaskLite(a));
             }
         }
     }
 }
Esempio n. 10
0
 public TaskLite(JRCtler.JsonRpcRes e)//构造函数
 {
     InformationRefresh(e);
 }
Esempio n. 11
0
        private void InformationRefresh(JRCtler.JsonRpcRes e)
        {
            //计算当前下载速度
            double SpeedLong = e.Result.downloadSpeed;

            if (SpeedLong / 1024 == 0)
            {
                Speed = Math.Round(SpeedLong, 2).ToString() + "B/S";
            }
            else if (SpeedLong / 1048576 == 0)
            {
                Speed = Math.Round((SpeedLong / 1024), 2).ToString() + "KB/S";
            }
            else
            {
                Speed = Math.Round((SpeedLong / 1048578), 2).ToString() + "MB/S";
            }
            OnPropertyChanged("Speed");

            //更新状态
            string NewStatus = e.Result.status;

            if (Status != NewStatus)
            {
                Status = NewStatus;
                switch (Status)
                {
                case "active":
                    State = "none";
                    break;

                case "waiting":
                    State          = "wait";
                    OughtToRefresh = 5;
                    break;

                case "paused":
                    State          = "wait";
                    OughtToRefresh = 5;
                    break;

                case "error":
                    State          = "error";
                    OughtToRefresh = 10;
                    break;

                case "complete":
                    State = "none";
                    TaskFinished?.Invoke(this);
                    OughtToRefresh = 10;
                    break;

                case "removed":
                    State          = "error";
                    OughtToRefresh = 10;
                    break;

                default:
                    State          = "wait";
                    OughtToRefresh = 5;
                    break;
                }
                OnPropertyChanged("State");
            }

            //更新进度
            string CompletedNew = e.Result.completedLength;

            Total = e.Result.totalLength;
            if (CompletedNew != Completed)
            {
                Completed = CompletedNew;
                OnPropertyChanged("Progress");
            }
            else if (CompletedNew == "0")
            {
                State = "wait";
                OnPropertyChanged("State");
            }

            Gid = e.Result.gid;
            if (FileName == null || FileNameSource != FileNameSources.Path)
            {
                GetFileInfo();
            }
            e = null;
        }