Ejemplo n.º 1
0
        public DoujinMessage(Doujin doujin,
                             bool isFeed = false)
        {
            Doujin = doujin;

            _isFeed = isFeed;
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            Doujin.Describe(modelBuilder);
            Collection.Describe(modelBuilder);
            Tag.Describe(modelBuilder);
            Guild.Describe(modelBuilder);
            FeedChannel.Describe(modelBuilder);
        }
Ejemplo n.º 4
0
        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();
            }
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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));
            });
        }
Ejemplo n.º 8
0
        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)));
            }
        }
Ejemplo n.º 9
0
            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 }]));
            }
Ejemplo n.º 10
0
        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);
            }));
        }
Ejemplo n.º 11
0
        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);
                }
            }
        }
Ejemplo n.º 13
0
 public DoujinReadMessage(Doujin doujin)
 {
     _doujin = doujin;
 }
Ejemplo n.º 14
0
 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);
 }
Ejemplo n.º 15
0
        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));
        }
Ejemplo n.º 16
0
 private string GetImageUrl(Doujin doujin, int posicao)
 {
     return(BaseCdnUrl + string.Format(Pagina, doujin.MediaId, posicao, (doujin.Imagens.Paginas[posicao - 1].Tipo == "j") ? "jpg" : "png"));
 }
Ejemplo n.º 17
0
            protected override Embed CreateEmbed(Doujin value)
            {
                Message.Doujin = value;

                return(DoujinMessage.View.CreateEmbed(value, Context.GetLocalization()["doujinMessage"]));
            }
Ejemplo n.º 18
0
 static string GetUrl(Doujin d) => $"https://chiya.dev/nhitomi-dl/?id={d.AccessId}";
Ejemplo n.º 19
0
 public DownloadMessage(Doujin doujin)
 {
     _doujin = doujin;
 }
Ejemplo n.º 20
0
 public static string GetGalleryUrl(Doujin doujin) => $"https://nhentai.net/g/{doujin.SourceId}/";
Ejemplo n.º 21
0
 public void InitializeImageRequest(Doujin doujin,
                                    HttpRequestMessage message)
 {
 }
Ejemplo n.º 22
0
 public static string GetGalleryUrl(Doujin doujin) => $"https://hitomi.la/galleries/{doujin.SourceId}.html";
Ejemplo n.º 23
0
 public void InitializeImageRequest(Doujin doujin,
                                    HttpRequestMessage message) => message.Headers.Referrer =
     new Uri($"https://hitomi.la/reader/{doujin.SourceId}.html");
Ejemplo n.º 24
0
        public EditWindow(Doujin doujin)
        {
            InitializeComponent();

            this.doujin = doujin;
        }