public IEnumerator CheckExistanceQueue()
    {
        while (true)
        {
            yield return(null);

            if (queueExistance.Count != 0)
            {
                E621_NavigationButton b = queueExistance.Dequeue();
                b.existanceChecked = false;
                b.CheckExistance();
                float waitTime = Time.time + 3f;
                int   maxTries = 3, currentTries = 1;
                do
                {
                    yield return(null);

                    if (waitTime <= Time.time && !b.existanceChecked && maxTries < currentTries)
                    {
                        waitTime = Time.time + 3f;
                        print("Retry");
                        currentTries++;
                    }
                    else if (!b.existanceChecked && maxTries >= currentTries)
                    {
                        b.imageExistance.color = Color.magenta;
                    }
                }while (waitTime > Time.time && !b.existanceChecked);
            }
        }
    }
    public IEnumerator DownloadImageCo(string url, Sprite sprPrev, GameObject objProgress, ImageData downloaded, E621_NavigationButton origin)
    {
        yield return(null);

        Image imgProgress = objProgress.transform.GetChild(0).GetComponent <Image>();
        Image imgPrev     = objProgress.transform.GetChild(1).GetComponent <Image>();

        imgPrev.sprite = sprPrev;
        Text textProgress = objProgress.transform.GetChild(2).GetComponent <Text>();

        textProgress.text = "...Downloading...";

        using (UnityWebRequest uwr = UnityWebRequest.Get(url))
        {
            uwr.SendWebRequest();
            while (!uwr.isDone)
            {
                imgProgress.fillAmount = uwr.downloadProgress;
                yield return(null);
            }
            //yield return uwr.SendWebRequest();
            if (uwr.isNetworkError || uwr.isHttpError)
            {
                textProgress.text  = uwr.error;
                textProgress.color = Color.red;
                Debug.Log(uwr.error);
                yield return(new WaitForSeconds(10f));

                Destroy(objProgress);
            }
            else
            {
                //https://static1.e621.net/data/fa/04/fa0477361df7971421e00f3c38950f47.jpg
                string filename = url.Substring(url.LastIndexOf("/") + 1, url.Length - (url.LastIndexOf("/") + 1));
                filename = downloaded.id + "-" + filename;
                byte[] result = uwr.downloadHandler.data;

                //string targetUrl = @"D:\HardDrive\No pls\e621\Te lo advierto\Tools\test";
                string targetUrl = !(downloaded.tags.Contains("dickgirl") || downloaded.tags.Contains("intersex") || downloaded.tags.Contains("herm"))
                    ? inputStraightGal.text : inputDickgirlGal.text;

                if (downloaded.tags.Contains("animated"))
                {
                    targetUrl = !targetUrl.Contains("Dickgirl") ? inputStraightVid.text : inputDickgirlVid.text;
                }
                File.WriteAllBytes(targetUrl + "/" + filename, result);
                print(targetUrl);
            }
        }

        Resources.UnloadUnusedAssets();
        imgProgress.fillAmount = 0f;
        textProgress.text      = "Done...";
        try
        {
            queueExistance.Enqueue(origin);
        }
        catch
        {
            print("IMG download: Button didn't exist anymore");
        }
        yield return(new WaitForSeconds(1f));

        listCoroutines.Remove(listCoroutines.Where(temp => temp.data.id == downloaded.id).Single());
        Destroy(objProgress);
    }
    void ThreadedLoadPage()
    {
        try
        {
            //Ejecutar hasta que no haya mas datos
            while (html.IndexOf("Post.register({") != -1)
            {
                html = html.Substring(html.IndexOf("Post.register({"), html.Length - html.IndexOf("Post.register({"));
                //eliminar el post register actual para no ciclarse infinitamente
                html = html.Substring(15, html.Length - 15);


                int           id          = -1;
                List <string> tags        = new List <string>();
                string        urlDownload = "";
                string        urlThumb    = "";
                string        urlPreview  = "";
                string        rating      = "";
                string        status      = "";
                string        md5         = "";

                string temp;
                //obtener datos del post
                //ID
                temp = html.Substring(html.IndexOf("id") + 4, html.IndexOf(",") - 5);
                id   = int.Parse(temp);
                html = html.Substring(html.IndexOf(",") + 9, html.Length - html.IndexOf(",") - 9);
                //print(html);

                //tags
                temp  = html.Substring(0, html.IndexOf(",") - 1);
                temp += " ";
                while (temp.IndexOf(" ") != -1)
                {
                    tags.Add(temp.Substring(0, temp.IndexOf(" ")));
                    temp = temp.Substring(temp.IndexOf(" ") + 1, temp.Length - (temp.IndexOf(" ") + 1));
                }

                html = html.Substring(html.IndexOf("md5") + 6, html.Length - (html.IndexOf("md5") + 6));
                //MD5
                md5 = html.Substring(0, html.IndexOf(",") - 1);
                //print("MD5: " + md5);
                html = html.Substring(html.IndexOf("file_url") + 11, html.Length - (html.IndexOf("file_url") + 11));

                //Image URL
                urlDownload = html.Substring(0, html.IndexOf(",") - 1);
                //print(urlDownload);
                html = html.Substring(html.IndexOf("preview_url") + 14, html.Length - (html.IndexOf("preview_url") + 14));

                //Thumb URL
                urlThumb = html.Substring(0, html.IndexOf(",") - 1);
                //print(urlThumb);
                html = html.Substring(html.IndexOf("sample_url") + 13, html.Length - (html.IndexOf("sample_url") + 13));

                //Preview URL
                urlPreview = html.Substring(0, html.IndexOf(",") - 1);
                //print(urlPreview);
                html = html.Substring(html.IndexOf("rating") + 9, html.Length - (html.IndexOf("rating") + 9));

                //Rating
                rating = html.Substring(0, html.IndexOf(",") - 1);
                //print(html);
                print("Rating: " + rating);
                html = html.Substring(html.IndexOf("rating") + 9, html.Length - (html.IndexOf("rating") + 9));

                //Status
                print(html);
                html = html.Substring(html.IndexOf("status") + 9, html.Length - (html.IndexOf("status") + 9));
                print(html);
                status = html.Substring(0, html.IndexOf(",") - 1);
                //print(status);

                //Spawn Button
                bool end = false;
                UnityThread.executeInUpdate(() =>
                {
                    GameObject button       = Instantiate(prefabNavButton, transformNavigation);
                    E621_NavigationButton b = button.GetComponent <E621_NavigationButton>();
                    b.urlDownload           = urlDownload;
                    b.urlThumb   = urlThumb;
                    b.urlPreview = urlPreview;
                    b.rating     = rating;
                    b.status     = status;
                    b.md5        = md5;
                    b.urlPage    = @"https://e621.net/post/index/1/id:" + id;
                    b.id         = id;
                    b.tags       = tags;
                    b.Initialize();
                    end = true;
                });
                while (!end)
                {
                }
            }

            UnityThread.executeInUpdate(() =>
            {
                buttonSearch.interactable = true;
                buttonReturn.interactable = true;
            });
        }
        catch
        {
            print("Thread Error: Navigation.");
            return;
        }
    }
 public DownloadImage(string urlDownlaod, E621_NavigationButton origin, Sprite sprPrev, ImageData _data, GameObject _objProgress)
 {
     data        = _data;
     objProgress = _objProgress;
     E621_Navigation.act.StartCoroutine(E621_Navigation.act.DownloadImageCo(urlDownlaod, sprPrev, objProgress, data, origin));
 }