Pixiview/Pixiview/Utils/IllustData.cs

277 lines
7.4 KiB
C#

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Pixiview.Illust;
using Xamarin.Forms;
namespace Pixiview.Utils
{
public class IllustResponse<T>
{
public bool error;
public string message;
public T body;
}
public class Illust
{
public string illustId;
public string illustTitle;
public string id;
public string title;
public int illustType;
public int xRestrict;
public string url;
public string description;
public string[] tags;
public string userId;
public string userName;
public int width;
public int height;
public int pageCount;
public string alt;
public IllustUrls urls;
public string seriesId;
public string seriesTitle;
public string profileImageUrl;
public class IllustUrls
{
[JsonProperty("250x250")]
public string x250;
[JsonProperty("360x360")]
public string x360;
[JsonProperty("540x540")]
public string x540;
}
public IllustItem ConvertToItem(ImageSource image = null)
{
return new IllustItem
{
Id = illustId,
Title = illustTitle,
RankTitle = illustTitle,
IllustType = (IllustType)illustType,
Image = image,
ImageUrl = urls?.x360 ?? url,
IsRestrict = xRestrict == 1,
ProfileUrl = profileImageUrl,
UserId = userId,
UserName = userName,
Width = width,
Height = height,
PageCount = pageCount
};
}
}
public class User
{
public string userId;
public string name;
public string image;
public string imageBig;
public bool premium;
public bool isFollowed;
//public string background;
public int partial;
}
public class IllustData : IllustResponse<IllustBody> { }
public class IllustBody
{
public Page page;
public Thumbnail thumbnails;
public User[] users;
public class Page
{
public int[] follow;
public string[] recommend;
public RecommendByTag[] recommendByTags;
public Ranking ranking;
public RecommendUser[] recommendUser;
public EditorRecommend[] editorRecommend;
public string[] newPost;
public class RecommendByTag
{
public string tag;
public string[] ids;
}
public class Ranking
{
public RankingItem[] items;
public string date;
public class RankingItem
{
public string rank;
public string id;
}
}
public class RecommendUser
{
public int id;
public string[] illustIds;
}
public class EditorRecommend
{
public string illustId;
public string comment;
}
}
public class Thumbnail
{
public Illust[] illust;
}
}
public class IllustPreloadBody
{
public Dictionary<string, Illust> illust;
public Dictionary<string, User> user;
public class Illust
{
public string illustId;
public string illustTitle;
public string illustComment;
public string id;
public string title;
public string description;
public int illustType;
public DateTime createDate;
public DateTime uploadDate;
public int xRestrict;
public IllustUrls urls;
public IllustTag tags;
public string alt;
public string userId;
public string userName;
public string userAccount;
//public Dictionary<string, Illust> userIllusts;
public int width;
public int height;
public int pageCount;
public int bookmarkCount;
public int likeCount;
public int commentCount;
public int responseCount;
public int viewCount;
public bool isOriginal;
public IllustItem CopyToItem(IllustItem item)
{
item.Title = illustTitle;
item.RankTitle = illustTitle;
item.IllustType = (IllustType)illustType;
item.ImageUrl = urls?.regular;
item.IsRestrict = xRestrict == 1;
item.UserId = userId;
item.UserName = userName;
item.Width = width;
item.Height = height;
item.PageCount = pageCount;
return item;
}
[JsonIgnore]
public string Url => urls.regular;
public class IllustUrls
{
public string mini;
public string thumb;
public string small;
public string regular;
public string original;
}
public class IllustTag
{
public string authorId;
public bool isLocked;
public IllustTagItem[] tags;
public bool writable;
public class IllustTagItem
{
public string tag;
public bool locked;
public bool deletable;
public string userId;
public IllustTranslate translation;
public string userName;
public class IllustTranslate
{
public string en;
}
}
}
}
}
public class IllustPageData : IllustResponse<IllustPageBody[]> { }
public class IllustPageBody
{
public Urls urls;
public int width;
public int height;
public class Urls
{
public string thumb_mini;
public string small;
public string regular;
public string original;
}
}
public class IllustRecommendsData : IllustResponse<IllustRecommendsBody> { }
public class IllustRecommendsBody
{
public Illust[] illusts;
public string[] nextIds;
}
public class IllustUserListData : IllustResponse<IllustUserListBody> { }
public class IllustUserListBody
{
public Dictionary<string, object> illusts;
}
public class IllustUserData : IllustResponse<IllustUserBody> { }
public class IllustUserBody
{
public Dictionary<string, Illust> works;
}
public class IllustUgoiraData : IllustResponse<IllustUgoiraBody> { }
public class IllustUgoiraBody
{
public string src;
public string originalSrc;
public string mime_type;
public Frame[] frames;
public class Frame
{
public string file;
public int delay;
public bool Incompleted;
public int First;
public int Last;
public int Offset;
public int Length;
}
}
}