implement yande.re source
This commit is contained in:
		
							
								
								
									
										16
									
								
								GallerySources/Gallery.Danbooru/Gallery.Danbooru.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								GallerySources/Gallery.Danbooru/Gallery.Danbooru.csproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
|  | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>netstandard2.1</TargetFramework> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||
|     <LangVersion>9.0</LangVersion> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||||
|     <LangVersion>9.0</LangVersion> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\..\Gallery.Util\Gallery.Util.csproj" /> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
							
								
								
									
										24
									
								
								GallerySources/Gallery.Danbooru/GallerySource.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								GallerySources/Gallery.Danbooru/GallerySource.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| using System; | ||||
| using System.Threading.Tasks; | ||||
| using Gallery.Util.Interface; | ||||
| using Gallery.Util.Model; | ||||
|  | ||||
| namespace Gallery.Danbooru | ||||
| { | ||||
|     public class GallerySource : IGallerySource | ||||
|     { | ||||
|         public string Name => "Danbooru"; | ||||
|  | ||||
|         public string HomePage => "https://danbooru.donmai.us"; | ||||
|  | ||||
|         public Task<GalleryItem[]> GetRecentItemsAsync(int page) | ||||
|         { | ||||
|             throw new NotImplementedException(); | ||||
|         } | ||||
|  | ||||
|         public void SetCookie() | ||||
|         { | ||||
|             throw new NotImplementedException(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										16
									
								
								GallerySources/Gallery.Gelbooru/Gallery.Gelbooru.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								GallerySources/Gallery.Gelbooru/Gallery.Gelbooru.csproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
|  | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>netstandard2.1</TargetFramework> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||
|     <LangVersion>9.0</LangVersion> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||||
|     <LangVersion>9.0</LangVersion> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\..\Gallery.Util\Gallery.Util.csproj" /> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
							
								
								
									
										24
									
								
								GallerySources/Gallery.Gelbooru/GallerySource.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								GallerySources/Gallery.Gelbooru/GallerySource.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| using System; | ||||
| using System.Threading.Tasks; | ||||
| using Gallery.Util.Interface; | ||||
| using Gallery.Util.Model; | ||||
|  | ||||
| namespace Gallery.Gelbooru | ||||
| { | ||||
|     public class GallerySource : IGallerySource | ||||
|     { | ||||
|         public string Name => "Gelbooru"; | ||||
|  | ||||
|         public string HomePage => "https://gelbooru.com"; | ||||
|  | ||||
|         public Task<GalleryItem[]> GetRecentItemsAsync(int page) | ||||
|         { | ||||
|             throw new NotImplementedException(); | ||||
|         } | ||||
|  | ||||
|         public void SetCookie() | ||||
|         { | ||||
|             throw new NotImplementedException(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -4,6 +4,12 @@ | ||||
|     <TargetFramework>netstandard2.1</TargetFramework> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||
|     <LangVersion>9.0</LangVersion> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||||
|     <LangVersion>9.0</LangVersion> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\..\Gallery.Util\Gallery.Util.csproj" /> | ||||
|   </ItemGroup> | ||||
|   | ||||
							
								
								
									
										65
									
								
								GallerySources/Gallery.Yandere/GallerySource.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								GallerySources/Gallery.Yandere/GallerySource.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| using System; | ||||
| using System.Text.RegularExpressions; | ||||
| using System.Threading.Tasks; | ||||
| using Gallery.Util; | ||||
| using Gallery.Util.Interface; | ||||
| using Gallery.Util.Model; | ||||
|  | ||||
| namespace Gallery.Yandere | ||||
| { | ||||
|     public class GallerySource : IGallerySource | ||||
|     { | ||||
|         public string Name => "Yande.re"; | ||||
|         public string HomePage => "https://yande.re"; | ||||
|  | ||||
|         public async Task<GalleryItem[]> GetRecentItemsAsync(int page) | ||||
|         { | ||||
|             var url = $"https://yande.re/post?page={page}"; | ||||
|             var (result, error) = await NetHelper.RequestObject<YandereItem[]>(url, contentHandler: ContentHandler); | ||||
|  | ||||
|             if (result == null || !string.IsNullOrEmpty(error)) | ||||
|             { | ||||
|                 Log.Error("yandere.content.load", $"failed to load content array, error: {error}"); | ||||
|                 return null; | ||||
|             } | ||||
|  | ||||
|             var items = new GalleryItem[result.Length]; | ||||
|             for (var i = 0; i < items.Length; i++) | ||||
|             { | ||||
|                 var y = result[i]; | ||||
|                 var item = new GalleryItem(y.id) | ||||
|                 { | ||||
|                     Tags = y.tags?.Split(' '), | ||||
|                     CreatedTime = y.created_at.ToLocalTime(), | ||||
|                     UpdatedTime = y.updated_at.ToLocalTime(), | ||||
|                     UserId = y.creator_id.ToString(), | ||||
|                     UserName = y.author, | ||||
|                     Source = y.source, | ||||
|                     PreviewUrl = y.preview_url, | ||||
|                     RawUrl = y.file_url, | ||||
|                     Width = y.width, | ||||
|                     Height = y.height | ||||
|                 }; | ||||
|                 items[i] = item; | ||||
|             } | ||||
|             return items; | ||||
|         } | ||||
|  | ||||
|         private string ContentHandler(string content) | ||||
|         { | ||||
|             var regex = new Regex(@"Post\.register\((\{.+\})\)\s*$", RegexOptions.Multiline); | ||||
|             var matches = regex.Matches(content); | ||||
|             var array = new string[matches.Count]; | ||||
|             for (var i = 0; i < array.Length; i++) | ||||
|             { | ||||
|                 array[i] = matches[i].Groups[1].Value; | ||||
|             } | ||||
|             return $"[{string.Join(',', array)}]"; | ||||
|         } | ||||
|  | ||||
|         public void SetCookie() | ||||
|         { | ||||
|             throw new NotImplementedException(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										29
									
								
								GallerySources/Gallery.Yandere/YandereItem.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								GallerySources/Gallery.Yandere/YandereItem.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| using System; | ||||
|  | ||||
| namespace Gallery.Yandere | ||||
| { | ||||
|     public class YandereItem | ||||
|     { | ||||
| #pragma warning disable IDE1006 // Naming Styles | ||||
|  | ||||
|         public long id { get; set; } | ||||
|         public string tags { get; set; } | ||||
|         public long created_at { get; set; } | ||||
|         public long updated_at { get; set; } | ||||
|         public long creator_id { get; set; } | ||||
|         public string author { get; set; } | ||||
|         public string source { get; set; } | ||||
|         public int score { get; set; } | ||||
|         public int file_size { get; set; } | ||||
|         public string file_ext { get; set; } | ||||
|         public string file_url { get; set; } | ||||
|         public string preview_url { get; set; } | ||||
|         public int actual_preview_width { get; set; } | ||||
|         public int actual_preview_height { get; set; } | ||||
|         public string rating { get; set; } | ||||
|         public int width { get; set; } | ||||
|         public int height { get; set; } | ||||
|  | ||||
| #pragma warning restore IDE1006 // Naming Styles | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user