Downloader Ver.III

Downloader Ver.III

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading;
using UnityEngine;
using UnityEngine.Experimental.UIElements;
using UnityEngine.UI;

public class UGUI : MonoBehaviour
{
    public string URL;
    public string SavePath;
    public string Result;

    Thread c;
    private static string Username, Password, Speed;

    // Use this for initialization
    void Start()
    {
        URL = "URL";
        SavePath = "SavePath";
        Result = "Downloader Ver.III";
        Username = "";
        Password = "";
        Speed = "";
        
    }
    // Update is called once per frame
    void Update()
    {

    }
    private void OnGUI()
    {
        URL = GUI.TextField(new Rect(Screen.width / 2 - (300 / 2), Screen.height / 2 - 100, 300, 30), URL);
        SavePath = GUI.TextField(new Rect(Screen.width / 2 - (300 / 2), Screen.height / 2 - 50, 300, 30), SavePath);
        GUI.Label(new Rect(Screen.width / 2 - (600 / 2), Screen.height / 2 + 100, 600, 200), Result);
        if (GUI.Button(new Rect(Screen.width / 2 - (300 / 2), Screen.height / 2, 300, 30), "Download"))
        {
            Result = "Build";
            Bulid();            
            Result = "Start";
            Cmd();
        }
    }
    private void Bulid()
    {
        File.Copy("Z:\\wget.exe", SavePath + "\\wget.exe", true);
        FileStream fileStream = new FileStream(SavePath + "\\DownloadVer.III.bat", FileMode.Create, FileAccess.Write);
        StreamWriter streamWriter = new StreamWriter(fileStream);
        streamWriter.Write("Z:\\wget.exe -c -e ");
        bool hasHttps = URL[4] == 's';
        bool hasUsername = Username != "";
        bool hasPassword = Password != "";
        bool hasSpeed = Speed != "";
        if (hasHttps)
        {
            if (hasUsername)
            {
                if (hasSpeed)
                {
                    streamWriter.Write("--limit-rate=" + Speed + " robots=off -x --user=" + Username + " --password=" + Password + " -m --no-check-certificate ");
                }
                else
                {
                    streamWriter.Write("robots=off -x --user=" + Username + " --password=" + Password + " -m --no-check-certificate ");
                }
            }
            else
            {
                if (hasSpeed)
                {
                    streamWriter.Write("--limit-rate=" + Speed + " robots=off -x -m --no-check-certificate ");
                }
                else
                {
                    streamWriter.Write("robots=off -x -m --no-check-certificate ");
                }
            }
        }
        else
        {
            if (hasUsername)
            {
                if (hasSpeed)
                {
                    streamWriter.Write("--limit-rate=" + Speed + " robots=off -x --user=" + Username + " --password=" + Password + " -m ");
                }
                else
                {
                    streamWriter.Write("robots=off -x --user=" + Username + " --password=" + Password + " -m ");
                }
            }
            else
            {
                if (hasSpeed)
                {
                    streamWriter.Write("--limit-rate=" + Speed + " robots=off -x -m ");
                }
                else
                {
                    streamWriter.Write("robots=off -x -m ");
                }
            }
        }
        streamWriter.Write("\"" + URL + "\"");
        streamWriter.Close();
    }
    private void Cmd()
    {
        c = new Thread(() =>
        {
            ProcessStartInfo processInfo = new ProcessStartInfo(SavePath + "\\DownloadVer.III.bat", "2>&1")
            {
                WorkingDirectory = Directory.GetCurrentDirectory(),
                CreateNoWindow = false,
                UseShellExecute = false,
                RedirectStandardOutput = true
            };
            Process proc = Process.Start(processInfo);
            proc.EnableRaisingEvents = true;
            proc.Exited += new EventHandler(ProcExit);
            proc.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
            proc.BeginOutputReadLine();
            proc.WaitForExit();
        });
        c.Start();
    }

    private void ProcExit(object sender, EventArgs e)
    {
        Result = "Done.";
    }
    private void OutputHandler(object sender, DataReceivedEventArgs e)
    {
        if (!String.IsNullOrEmpty(e.Data))
        {
            Result = e.Data;
        }
    }
}

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注