Пример #1
0
        static void Main(string[] args)
        {
            var username = "******";
            var password = "******";
            // Test login check
            var checkResult = Authentication.LoginCheck(username);

            CheckSuccess(checkResult);
            // Handle verify code
            if (checkResult.needVCode)
            {
                File.WriteAllBytes("vcode.png", checkResult.image);
                Console.WriteLine("Verification code required. Input the text in vcode.png.");
                try
                {
                    System.Diagnostics.Process.Start("vcode.png");
                }
                catch (Exception) { }
                checkResult.verifyCode = Console.ReadLine();
                try
                {
                    File.Delete("vcode.png");
                }
                catch (Exception) { }
            }
            else
            {
                Console.WriteLine("Verification code NOT required.");
            }
            // Test login
            var loginResult = Authentication.Login(username, password, checkResult);

            CheckSuccess(loginResult);
            Console.WriteLine(loginResult.credential);
            Console.WriteLine("uid: " + loginResult.credential.uid);
            var credential = loginResult.credential;
            // Test get quota
            var quotaResult = Operation.GetQuota(credential);

            CheckSuccess(quotaResult);
            Console.WriteLine(quotaResult.used + "/" + quotaResult.total);
            // Test get user info
            var infoResult = Operation.GetUserInfo(credential);

            CheckSuccess(infoResult);
            Console.WriteLine(infoResult.records[0].uname + " " + infoResult.records[0].priority_name + " " + infoResult.records[0].avatar_url);
            // Test list file
            var fileListResult = Operation.GetFileList("/", credential);

            CheckSuccess(fileListResult);
            Console.WriteLine(string.Join("\r\n", fileListResult.list.Take(5).Select(e => e.path + " " + e.isdir + " " + e.size).ToArray()));
            // Test thumbnail
            var thumbnailResult = Operation.GetThumbnail("/1.mp4", credential);

            CheckSuccess(thumbnailResult);
            Console.WriteLine("Thumbnail " + thumbnailResult.image.Length + " bytes.");
            try
            {
                File.WriteAllBytes("thumb.jpg", thumbnailResult.image);
                var process = System.Diagnostics.Process.Start("thumb.jpg");
            }
            catch (Exception) { }
            // Test rapid upload
            var rapidUploadResult = Operation.RapidUpload(UploadHelper.GetFileProperty("Z:\\Thunder9.0.14.358.exe"), "/t.exe", credential);

            CheckSuccess(rapidUploadResult);
            Console.WriteLine("Rapid: " + rapidUploadResult.info.path + " " + rapidUploadResult.info.size);
            // Test get upload servers
            var servers = Operation.GetUploadServers(credential);

            CheckSuccess(servers);
            Console.WriteLine("Servers: " + string.Join(" ", servers.servers));
            // Test simple upload
            var simpleUploadResult = Operation.SimpleUpload("Z:\\1.rar", "/1.rar", credential, servers.servers[0]);

            CheckSuccess(simpleUploadResult);
            Console.WriteLine("Simple: " + simpleUploadResult.path + " " + simpleUploadResult.size);
            // Test chunked upload
            var chunkedUploadResult = Operation.ChunkedUpload("Z:\\2.rar", "/2.rar", credential);

            CheckSuccess(chunkedUploadResult);
            Console.WriteLine("Chunked: " + chunkedUploadResult.path + " " + chunkedUploadResult.size);
            // Test get download urls
            var downloadResult = Operation.GetDownload("/1.mp4", credential);

            CheckSuccess(downloadResult);
            Console.WriteLine("Download URL count = " + downloadResult.urls.Length + " " + downloadResult.urls[0].rank + " " + downloadResult.urls[0].url);
            // Test file operations
            var fileopResult = Operation.Copy("/1.mp4", "/", "2.mp4", credential);

            CheckSuccess(fileopResult);
            fileopResult = Operation.Move("/2.mp4", "/", "3.mp4", credential);
            CheckSuccess(fileopResult);
            fileopResult = Operation.Rename("/3.mp4", "4.mp4", credential);
            CheckSuccess(fileopResult);
            fileopResult = Operation.Delete("/4.mp4", credential);
            CheckSuccess(fileopResult);
            fileopResult = Operation.CreateFolder("/test", credential);
            CheckSuccess(fileopResult);
            Console.WriteLine("New folder name: " + fileopResult.path);
            // Test share
            var shareResult = Operation.Share(new[] { "/1.mp4" }, credential);

            CheckSuccess(shareResult);
            Console.WriteLine(shareResult.link + " " + shareResult.shorturl);
            shareResult = Operation.Share(new[] { "/1.mp4" }, credential, "8888");
            CheckSuccess(shareResult);
            Console.WriteLine(shareResult.link + " " + shareResult.shorturl);
            // Test transfer shared files
            var transferResult = Operation.Transfer("http://pan.baidu.com/s/1hsfZ1TM", "/", credential, "1w9w");

            CheckSuccess(transferResult);
            Console.WriteLine(transferResult.extra.list.Select(e => e.from + " " + e.to + "\r\n").ToString());
            // Test offline
            var queryLinkResult = Operation.QueryLinkFiles("/downfile.torrent", credential);

            CheckSuccess(queryLinkResult);
            queryLinkResult.files.ToList().ForEach(f => Console.WriteLine(f.file_name + " " + f.size));
            var addOfflineResult = Operation.AddOfflineTask("/downfile.torrent", "/", credential, new[] { 1 }, queryLinkResult.sha1);

            CheckSuccess(addOfflineResult);
            Console.WriteLine(addOfflineResult.task_id + " " + addOfflineResult.rapid_download);
            addOfflineResult = Operation.AddOfflineTask("http://www.baidu.com/", "/", credential);
            CheckSuccess(addOfflineResult);
            Console.WriteLine(addOfflineResult.task_id + " " + addOfflineResult.rapid_download);
            addOfflineResult = Operation.AddOfflineTask("magnet:?xt=urn:btih:eb748516ee0968422d9827a9991d28cbd4dc4f3f", "/", credential, new[] { 1, 2 });
            CheckSuccess(addOfflineResult);
            Console.WriteLine(addOfflineResult.task_id + " " + addOfflineResult.rapid_download);
            addOfflineResult = Operation.AddOfflineTask("ed2k://|file|[柳井正与优衣库].蔡成平.文字版(ED2000.COM).epub|890525|90a92b89df20a8b2283fe3450f872590|h=oxrt54bznbtq5pr47dfmj4zfn5ctbvek|/", "/", credential);
            CheckSuccess(addOfflineResult);
            Console.WriteLine(addOfflineResult.task_id + " " + addOfflineResult.rapid_download);
            var offlineListResult = Operation.GetOfflineList(credential);

            CheckSuccess(offlineListResult);
            offlineListResult.tasks.ToList().ForEach(t => Console.WriteLine(t.status + " " + t.task_id + " " + t.task_name + " " + t.finished_size + "/" + t.file_size + " " + t.od_type));
            Operation.ClearOfflineTask(credential);
            foreach (var item in offlineListResult.tasks)
            {
                Operation.CancelOfflineTask(item.task_id, credential);
                Operation.DeleteOfflineTask(item.task_id, credential);
            }
            offlineListResult = Operation.GetOfflineList(credential);
            CheckSuccess(offlineListResult);
            Debug.Assert(offlineListResult.tasks.Length == 0);
            Console.WriteLine("Offline list cleared.");
            // Test download
            var adapter = new BaiduAdapter()
            {
                credential = credential, path = "/1.mp4", size = fileListResult.list.First(e => e.path == "/1.mp4").size
            };
            var task = new FileTask(adapter, "Z:\\1.mp4");
            var st   = new Stopwatch();

            st.Start();
            while (!task.IsCompleted())
            {
                Console.WriteLine(task.GetDownloadedBytes());
                foreach (var item in task.DownloadSources)
                {
                    Console.WriteLine("  " + item.URL.Substring(0, 20) + " " + item.GetDownloadedBytes());
                }
                Thread.Sleep(1000);
            }
            st.Stop();
            Console.WriteLine("Time taken: " + st.ElapsedMilliseconds / 1000);
            // Done
            Console.WriteLine("Success");
            Console.ReadLine();
        }