64 lines
1.3 KiB
C#
64 lines
1.3 KiB
C#
using Cedar.Core.Coroutines;
|
|
using HtmlAgilityPack;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine.Networking;
|
|
|
|
public enum LoaderStatus
|
|
{
|
|
Initializing,
|
|
Ready,
|
|
Error
|
|
}
|
|
|
|
public class ImageLoader
|
|
{
|
|
private bool ready = false;
|
|
private string errorMessage;
|
|
private string url;
|
|
|
|
public LoaderStatus Status
|
|
{
|
|
get
|
|
{
|
|
if (!ready) return LoaderStatus.Initializing;
|
|
if (string.IsNullOrEmpty(errorMessage)) return LoaderStatus.Ready;
|
|
return LoaderStatus.Error;
|
|
}
|
|
}
|
|
|
|
public List<string> images;
|
|
|
|
public ImageLoader(string url)
|
|
{
|
|
this.url = url;
|
|
CoroutineRunner.Instance.StartCoroutine(OnUrlUpdated());
|
|
}
|
|
|
|
private IEnumerator OnUrlUpdated()
|
|
{
|
|
errorMessage = null;
|
|
var request = UnityWebRequest.Get(url);
|
|
yield return request.SendWebRequest();
|
|
if (request.isNetworkError || request.isHttpError)
|
|
{
|
|
errorMessage = request.error;
|
|
ready = true;
|
|
yield break;
|
|
}
|
|
var responseText = request.downloadHandler.text;
|
|
var doc = new HtmlDocument();
|
|
doc.LoadHtml(responseText);
|
|
var nodes = doc.DocumentNode.SelectNodes("//a[preceding-sibling::img[@alt=\"[IMG]\"]]");
|
|
images = new List<string>();
|
|
foreach (var node in nodes)
|
|
{
|
|
var target = node.GetAttributeValue("href", "");
|
|
images.Add(url + "/" + target);
|
|
}
|
|
ready = true;
|
|
request.Dispose();
|
|
}
|
|
}
|