public DoujinMessage(Doujin doujin, bool isFeed = false) { Doujin = doujin; _isFeed = isFeed; }
private void Heart_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Image obj = (Image)sender; Grid grid = (Grid)obj.Parent; DoujinControl control = (DoujinControl)grid.Parent; int nhId = (int)control.img.Tag; if (DoujinUtility.CheckFavorised(new Doujin(nhId))) { DatabaseControler.favorites.FindBynHentaiID(nhId).favorite = false; DatabaseControler.mainDataTable.FindBynHentaiID(nhId).favorite = false; control.heart.Source = new BitmapImage(new Uri("pack://application:,,,/heart_nofav.png")); DatabaseControler.favorites.RemoveDoujinDataRow(DatabaseControler.favorites.FindBynHentaiID(nhId)); DatabaseControler.favorites.WriteXml(DatabaseControler.favDataPath); } else { Doujin doujin = new Doujin(nhId); DatabaseControler.mainDataTable.FindBynHentaiID(nhId).favorite = true; control.heart.Source = new BitmapImage(new Uri("pack://application:,,,/heart_fav.png")); DoujinUtility.AddDoujinDataRow(doujin, DatabaseControler.favorites); DatabaseControler.favorites.WriteXml(DatabaseControler.favDataPath); //.Add(); var notify = Notifications.Notifications.NotificationNoImg(doujin.name, "", "The doujin got favorised and you can acess it at your favourite page"); DoujinUtility.MainWindow.notificationPanellul.Children.Add(notify); } }
protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); Doujin.Describe(modelBuilder); Collection.Describe(modelBuilder); Tag.Describe(modelBuilder); Guild.Describe(modelBuilder); FeedChannel.Describe(modelBuilder); }
private void Img_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var img = (Image)sender; using (var doujin = new Doujin((int)img.Tag)) { var viewer = new DoujinViewer(doujin); viewer.Show(); } }
public static string GetGalleryUrl(Doujin d) //todo: move this to GalleryUtility.cs { switch (d.Source.ToLowerInvariant()) { case "nhentai": return(nhentaiClient.GetGalleryUrl(d)); case "hitomi": return(HitomiClient.GetGalleryUrl(d)); default: return(null); } }
public static string GetSourceIconUrl(Doujin d) { switch (d.Source.ToLowerInvariant()) { case "nhentai": return("https://cdn.cybrhome.com/media/website/live/icon/icon_nhentai.net_57f740.png"); case "hitomi": return("https://ltn.hitomi.la/favicon-160x160.png"); } return(null); }
private void ApplyAdvancedSearch() { DoujinsModel.FilteredDoujinsView.Filter = new Predicate <object>(o => { Doujin doujin = ((Doujin)o); return(TitleKeywords.All(doujin.Title.ToLower().Contains) && AuthorKeywords.All(doujin.Author.ToLower().Contains) && ParodyKeywords.All(doujin.Parodies.ToLower().Contains) && CharacterKeywords.All(doujin.Characters.ToLower().Contains) && TagKeywords.All(doujin.Tags.ToLower().Contains)); }); }
public IEnumerable <string> PopulatePages(Doujin doujin) { var data = _serializer.Deserialize <InternalDoujinData>(doujin.Data); if (data.MediaId == 0 || data.Extensions == null) { yield break; } for (var i = 0; i < data.Extensions.Length; i++) { var ext = data.Extensions[i]; yield return(nhentai.Image(data.MediaId, i, FixExtension(ext))); } }
public static Embed CreateEmbed(Doujin doujin, LocalizationAccess l, bool isFeed = false) { return(new EmbedBuilder { Title = doujin.OriginalName, Description = doujin.OriginalName == doujin.PrettyName ? null : doujin.PrettyName, Url = GetGalleryUrl(doujin), ImageUrl = $"https://nhitomi.chiya.dev/api/v1/images/{doujin.AccessId}/-1", Color = Color.Green, Author = new EmbedAuthorBuilder { Name = doujin.GetTag(TagType.Artist)?.Value ?? doujin.Source, IconUrl = GetSourceIconUrl(doujin) }, Footer = new EmbedFooterBuilder { Text = $"{doujin.Source}/{doujin.SourceId} {(isFeed ? " | feed" : null)}" }, Fields = getFields() .Where(x => !string.IsNullOrWhiteSpace(x.value)) .Select(x => new EmbedFieldBuilder { Name = x.name, Value = x.value, IsInline = true }) .ToList() }.Build()); IEnumerable <(string name, string value)> getFields() => new[] { TagType.Language, TagType.Group, TagType.Parody, TagType.Category, TagType.Character, TagType.Tag }.Select(type => (l[type.ToString()].ToString(), string.Join(", ", doujin.GetTags(type).Select(t => t.Value)))) .Append((l["content"], l["contentValue", new { doujin }])); }
private void Invoke_AddDoujinToViewModel(string coverImagePath, DateTime dateAdded, string title, string author, string directory, string parodies, string characters, string tags, string id) { Application.Current.Dispatcher.Invoke(new Action(() => { Doujin doujin = new Doujin { DateAdded = dateAdded, Title = title, Author = author, Directory = directory, Parodies = parodies, Characters = characters, Tags = tags, ID = id }; doujin.CreateAndSetCoverImage(coverImagePath); DoujinsModel.Doujins.Add(doujin); })); }
public IEnumerable<string> PopulatePages(Doujin doujin) { if (!int.TryParse(doujin.SourceId, out var intId)) yield break; var data = _serializer.Deserialize<InternalDoujinData>(doujin.Data); if (data.ImageNames == null || data.Extensions == null) yield break; for (var i = 0; i < data.ImageNames.Length; i++) { var name = data.ImageNames[i]; string extension; switch (data.Extensions[i]) { case '.': extension = ""; break; case 'p': extension = ".png"; break; case 'J': extension = ".jpeg"; break; case 'g': extension = ".gif"; break; default: extension = ".jpg"; break; } yield return Hitomi.Image(intId, name + extension); } }
public void DisplayFavorites() { search.Visibility = Visibility.Hidden; favscroll.Visibility = Visibility.Visible; favscroll.IsEnabled = true; if (favgrid.Children.Count < DatabaseControler.favorites.Count) { foreach (DoujinDataRow row in DatabaseControler.favorites) { /* * DoujinControl doujinControl = new DoujinControl(row.nHentaiID); * doujinControl.heart.Source = new BitmapImage(new Uri("pack://application:,,,/UiElements/heart_fav.png")); * favgrid.Children.Add(doujinControl); */ Doujin doujin = DoujinUtility.DataRowToDoujin(row); if (DoujinUtility.DoujinIsPartOfDataTable(doujin, DatabaseControler.localDummy)) { continue; } DoujinControl doujinControl = new DoujinControl(); favgrid.Children.Insert(0, doujinControl); var source = new BitmapImage(new Uri(row.coverUrl)); doujinControl.img.Source = source; doujinControl.img.ToolTip = doujin.name; doujinControl.img.Tag = doujin.nhentaiId; doujinControl.img.Width = 160; doujinControl.img.Height = 230; doujinControl.img.Margin = new Thickness(5, 3, 5, 3); doujinControl.img.MouseLeftButtonDown += Img_MouseLeftButtonDown; doujinControl.img.MouseRightButtonDown += Img_MouseRightButtonDown; doujinControl.heart.Source = new BitmapImage(new Uri("pack://application:,,,/UiElements/heart_fav.png")); doujinControl.heart.MouseLeftButtonDown += Heart_MouseLeftButtonDown; Thickness margin = doujinControl.Margin; margin.Right = 10; margin.Bottom = 10; doujinControl.Margin = margin; doujinControl.doujinName.Text = doujin.name; doujinControl.doujinCreator.Text = doujin.ArtistsConcat(); doujinControl.doujinTags.Text = doujin.TagsConcat(); DatabaseControler.localDummy.AddDoujinDataRow(DatabaseControler.mainDataTable.Rows.Count, row.nHentaiID, row.mediaID, row.name, row.fullName, row.artist, row.character, row.parody, row.group, row.tags, row.language, true, row.pages, row.coverUrl, row.extension); } } else if (favgrid.Children.Count > DatabaseControler.favorites.Count) { List <DoujinControl> controlList = new List <DoujinControl>(); foreach (DoujinControl doujinControl in favgrid.Children) { if (!DoujinUtility.DoujinIsPartOfDataTable((int)doujinControl.img.Tag, DatabaseControler.favorites)) { controlList.Add(doujinControl); DatabaseControler.localDummy.RemoveDoujinDataRow(DatabaseControler.localDummy.FindBynHentaiID((int)doujinControl.img.Tag)); } } foreach (DoujinControl doujinControl in controlList) { favgrid.Children.Remove(doujinControl); } } }
public DoujinReadMessage(Doujin doujin) { _doujin = doujin; }
private void Invoke_AddDoujinToViewModel(Doujin doujin) { Invoke_AddDoujinToViewModel(doujin.CoverImage.UriSource.ToString(), doujin.DateAdded, doujin.Title, doujin.Author, doujin.Directory, doujin.Parodies, doujin.Characters, doujin.Tags, doujin.ID); }
internal async Task LerDoujin(uint codigo) { await Task.Yield(); bool permissao = false; Doujin dou = await HttpsExtension.PegarJsonGET <Doujin>(BaseURL + Doujin, codigo.ToString()); permissao = (byte)(await new ServidoresDAO().Get(new Servidores { ID = Context.Guild.Id })).Especial >= (byte)TiposServidores.LolisEdition; if (!permissao && dou.Tags.Where(x => x.Id == 19440 || x.Id == 32241).Count() > 0) { throw new Exception("Sem permissao loli"); } IEnumerable <Doujin> relacionados; if (!permissao) { relacionados = (await HttpsExtension.PegarJsonGET <Relacionados>(BaseURL + Relacionados, codigo.ToString())).Doujins.Where(x => x.Tags.Where(y => y.Id != 19440 && y.Id != 32241).Count() == 0); } else { relacionados = (await HttpsExtension.PegarJsonGET <Relacionados>(BaseURL + Relacionados, codigo.ToString())).Doujins; } StringBuilder sb = new StringBuilder(); foreach (Doujin temp in relacionados) { sb.AppendLine($"- [{temp.Titulo.Abreviacao} ({temp.Id})]({BaseURL}/g/{temp.Id})"); } PagesExtensions pages = new PagesExtensions(); DiscordEmbedBuilder eb = new DiscordEmbedBuilder { Title = WebUtility.HtmlDecode(dou.Titulo.NomeIngles), Url = $"{BaseURL}/g/{dou.Id}", Color = DiscordColor.Lilac, ImageUrl = GetImageUrl(dou, 1) }; IEnumerable <Tags> tags = dou.Tags.Where(x => x.Tipo == "artist" || x.Tipo == "group"); string artistName = tags.Where(x => x.Tipo == "artist").FirstOrDefault()?.Nome; if (!string.IsNullOrWhiteSpace(artistName)) { eb.AddField("Autor:", artistName, true); } Tags grupo; if ((grupo = tags.Where(x => x.Tipo == "group").FirstOrDefault()) != null) { eb.AddField("Grupo:", grupo.Nome, true); } eb.AddField("Votos:", dou.Favoritos.ToString(), true); string srela = sb.ToString(); if (!string.IsNullOrEmpty(srela)) { eb.AddField("Relacionados:", WebUtility.HtmlDecode(srela), true); } pages.AdicionarEmbed(eb); for (ulong i = 2; i < dou.TotalPaginas; i++) { string imgurl = GetImageUrl(dou, Convert.ToInt32(i)); pages.AdicionarEmbed(new DiscordEmbedBuilder { Title = $"{i - 1}/{dou.TotalPaginas - 2}", Url = imgurl, ImageUrl = imgurl, Color = DiscordColor.Lilac }); } await Context.Client.GetInteractivityModule().SendPaginatedMessage(Context.Channel, Context.User, pages.Paginador, TimeSpan.FromMinutes(10)); }
private string GetImageUrl(Doujin doujin, int posicao) { return(BaseCdnUrl + string.Format(Pagina, doujin.MediaId, posicao, (doujin.Imagens.Paginas[posicao - 1].Tipo == "j") ? "jpg" : "png")); }
protected override Embed CreateEmbed(Doujin value) { Message.Doujin = value; return(DoujinMessage.View.CreateEmbed(value, Context.GetLocalization()["doujinMessage"])); }
static string GetUrl(Doujin d) => $"https://chiya.dev/nhitomi-dl/?id={d.AccessId}";
public DownloadMessage(Doujin doujin) { _doujin = doujin; }
public static string GetGalleryUrl(Doujin doujin) => $"https://nhentai.net/g/{doujin.SourceId}/";
public void InitializeImageRequest(Doujin doujin, HttpRequestMessage message) { }
public static string GetGalleryUrl(Doujin doujin) => $"https://hitomi.la/galleries/{doujin.SourceId}.html";
public void InitializeImageRequest(Doujin doujin, HttpRequestMessage message) => message.Headers.Referrer = new Uri($"https://hitomi.la/reader/{doujin.SourceId}.html");
public EditWindow(Doujin doujin) { InitializeComponent(); this.doujin = doujin; }