public static async Task <MangaList> GetMangaList(NetworkCredential credentials, string Username)
        {
            MangaList       mangaList = new MangaList();
            HttpWebResponse response  = null;

            try
            {
                response = await SendHttpWebGETRequest(credentials, MAL_URL + "mangalist/" + Username + "/load.json", ContentType.JSON);

                if (EnsureStatusCode(response))
                {
                    StreamReader responseStream   = new StreamReader(response.GetResponseStream());
                    string       responseAsString = responseStream.ReadToEnd();
                    mangaList = JSONConverter.DeserializeJSon <MangaList>(responseAsString);
                }
            }
            catch (WebException ex)
            {
                Debug.Write("GetMangaList: WebException response: " + ex.Status);
            }
            finally
            {
                if (response != null)
                {
                    response.Dispose();
                }
            }
            return(mangaList);
        }
Exemple #2
0
        public async Task <IActionResult> PutUserMangaList(MangaList mangaList)
        {
            var name = User.FindFirstValue(ClaimTypes.Name);
            var user = await _context.User.FirstOrDefaultAsync(a => a.UserName == name);

            mangaList.UserId = user.Id;
            var mangaListItem = await _context.MangaList.FirstOrDefaultAsync(a => a.MangaItemId == mangaList.MangaItemId && a.UserId == user.Id);

            var novelItem = await _context.MangaItem.FirstOrDefaultAsync(a => a.Id == mangaListItem.MangaItemId);

            if (mangaList.UserRating >= 1 && mangaList.UserRating <= 10 && mangaList.UserProgress >= 0 && mangaList.UserProgress <= novelItem.EpisodeCount)
            {
                mangaListItem.UserRating   = mangaList.UserRating;
                mangaListItem.UserProgress = mangaList.UserProgress;
                if (mangaListItem.UserProgress == novelItem.EpisodeCount)
                {
                    // Set to complete
                    mangaListItem.CompleteStatus = (CompleteStatusManga)1;
                }
                else if (mangaListItem.UserProgress > 0)
                {
                    // Set to reading
                    mangaListItem.CompleteStatus = (CompleteStatusManga)2;
                }
                _context.Entry(mangaListItem).State = EntityState.Modified;
                await _context.SaveChangesAsync();

                return(Ok("Updated list"));
            }
            else
            {
                return(BadRequest());
            }
        }
Exemple #3
0
        private async void ParseTitle(string id)
        {
            string url = "http://desu.me/manga/api/" + id;

            desu_me = await GetTitleList(url);

            int n = desu_me.response.chapters.count;

            nums       = new int[n];
            inv_nums   = new int[n];
            Title.Text = desu_me.response.russian;
            //RotateMatrixs(n);
            //Cover.Source = new BitmapImage(new Uri(desu_me.response.image.original));
            for (int i = 0; i < n; ++i)
            {
                inv_nums[i] = i;
                //Chapters.Items.Add("sd");
                Chapters.Items.Add(new wtf()
                {
                    Title = "  " + desu_me.response.chapters.list[i].vol + '-' + desu_me.response.chapters.list[i].ch + " " + desu_me.response.chapters.list[i].title, isRead = await IsReaded(desu_me.response.id, desu_me.response.chapters.list[i])
                });

                //DesuMe.Items.Add(new Manga { image = bitmap, name = desu_me.Response[i].name, description = desu_me.Response[i].description });
            }
            Reverse(n);
            LoadFavorite();
        }
Exemple #4
0
        /// <summary>
        /// Called whenever the settings object has been modified.
        /// </summary>
        public static void SettingsChanged()
        {
            Win.KeepAbove = Settings.KeepWindowOnTop;

            // Check default accounts
            if (Settings.DefaultAnime == null)
            {
                AnimeList = null; // The account is null!
            }
            // The list is null (but the default is not.. adding account) OR the account has changed
            else if (AnimeList == null || Settings.DefaultAnime.Provider != AnimeList.Api || Settings.DefaultAnime.Username != AnimeList.Username)
            {
                AnimeList = GetAnimeList();
            }
            if (Settings.DefaultManga == null)
            {
                MangaList = null;
            }
            else if (MangaList == null || Settings.DefaultManga.Provider != MangaList.Api || Settings.DefaultManga.Username != MangaList.Username)
            {
                MangaList = GetMangaList();
            }

            // Reload the list - what if the user changed the title type?
            Win.Fill();
        }
Exemple #5
0
    private void llenado()
    {
        String Nick = Convert.ToString(Session["Admin"]);

        cdc = new ConexionLQDataContext();
        MangaList.DataSource = cdc.vManga.OrderBy(x => x.Nombre);
        MangaList.DataBind();
    }
    private void Llenar()
    {
        String Nick = Convert.ToString(Session["Admin"]);

        cdc = new ConexionLQDataContext();
        MangaList.DataSource = cdc.vMangaUsuario(Nick);
        MangaList.DataBind();
    }
Exemple #7
0
        public void AddEntry(MangaList record)
        {
            bool titleExists = _webScraperDataContext.Manga.Any(t => t.Title.Equals(record.Title));

            if (!titleExists)
            {
                _webScraperDataContext.Manga.Add(record);
            }
        }
Exemple #8
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            Recommandations = await HomeController.GetRecommendations();

            AnimeList = await HomeController.GetAnimeList();

            MangaList = await HomeController.GetMangaList();

            HomeController.ContentFrameNavigate(typeof(AnimeListControl), AnimeList);
        }
 private void SearchBar_TextChanged(object sender, TextChangedEventArgs e)
 {
     MangaList.BeginRefresh();
     if (string.IsNullOrWhiteSpace(e.NewTextValue))
     {
         MangaList.ItemsSource = mangaResults;
     }
     else
     {
         MangaList.ItemsSource = mangaResults.Where(x => x.Name.ToLower().Contains(e.NewTextValue.ToLower()));
     }
     MangaList.EndRefresh();
 }
Exemple #10
0
        private async void Parse(string url)
        {
            desu_me = await GetMangaList(url);

            int n = desu_me.Response.Count;

            for (int i = 0; i < n; ++i)
            {
                var uri    = new Uri(desu_me.Response[i].image.original);
                var bitmap = new BitmapImage(uri);
                DesuMe.Items.Add(new Manga {
                    image = bitmap, name = desu_me.Response[i].name, description = desu_me.Response[i].description
                });
            }
        }
Exemple #11
0
        private async void ParseSearch(string url)
        {
            search123 = await GetMangaList(url);

            int n = search123.Response.Count;

            for (int i = 0; i < n; ++i)
            {
                var uri    = new Uri(search123.Response[i].image.original);
                var bitmap = new BitmapImage(uri);
                Search.Items.Add(new Manga {
                    name = "\t" + search123.Response[i].name, image = bitmap
                });
            }
        }
Exemple #12
0
        private async void ParseTitle(string id1, string id2)
        {
            string url = "http://desu.me/manga/api/" + id1 + "/chapter/" + id2;

            desu_me = await GetTitleList(url);

            int n = desu_me.response.pages.list.Count;

            Title.Text = desu_me.response.russian + "  " + desu_me.response.pages.ch_curr.vol + '-' + desu_me.response.pages.ch_curr.ch + " " + desu_me.response.pages.ch_curr.title;
            for (int i = 0; i < n; ++i)
            {
                Pages.Items.Add(new Pic {
                    ImagePath = desu_me.response.pages.list[i].img
                });
            }
        }
Exemple #13
0
        public async Task <IActionResult> Top()
        {
            var username = User.FindFirstValue(ClaimTypes.Name);

            if (username == null)
            {
                var noUserViewModel    = new UserMangaListViewModel();
                var topNovelNoUserList = await _context.MangaItem.OrderByDescending(a => a.Rating).ToListAsync <MangaItem>();

                noUserViewModel.MangaInfoList = topNovelNoUserList;
                return(View(noUserViewModel));
            }
            var user = await _context.User.FirstOrDefaultAsync(a => a.UserName == username);

            var userId    = user.Id;
            var mangaList = await _context.MangaItem.OrderByDescending(a => a.Rating).ToListAsync <MangaItem>();

            var userStats = new List <MangaList>();

            foreach (var manga in mangaList)
            {
                var userScore = await _context.MangaList.FirstOrDefaultAsync(a => a.MangaItemId == manga.Id && a.UserId == userId);

                if (userScore == null)
                {
                    var notOnList = new MangaList
                    {
                        UserRating     = 0,
                        UserProgress   = 0,
                        CompleteStatus = 0
                    };
                    userStats.Add(notOnList);
                }
                else
                {
                    userStats.Add(userScore);
                }
            }
            var viewModel = new UserMangaListViewModel
            {
                User          = user,
                MangaInfoList = mangaList,
                UserMangaList = userStats
            };

            return(View(viewModel));
        }
Exemple #14
0
        public static void Main(string[] args)
        {
            // If the settings file doesn't exist, force the user to set up account.
            var force = !Settings.Exists;

            // This will load the settings file for us or return a new one (if force is true)
            try {
                Core.Program.UserSettings = Settings.Load();
            }
            catch (InvalidOperationException) { // Wrong version of settings, most likely. For now we will recreate
                Settings.Delete();
                Core.Program.UserSettings = Settings.Load();
            }
            finally { Settings = Core.Program.UserSettings; }
            Debug.Assert(Settings != null);

            Application.Init();
            if (force)
            {
                using (var s = new SettingsWindow(true)) {
                    var res = s.Run();
                    s.Destroy();
                    if (res != (int)ResponseType.Accept)
                    {
                        Environment.Exit(0);
                    }
                }
            }
            // Get our lists ready (and sync them)
            AnimeList = GetAnimeList();
            MangaList = GetMangaList();

            // we have a settings file! Spawn our notification icon and window
            _tray = new SystemTray();
            Win   = new MainWindow {
                Visible = Settings.ShowWindowOnStart
            };
            Win.Fill();
            Application.Run();
        }
Exemple #15
0
        public async Task <IActionResult> PostUserMangaList(MangaList mangaList)
        {
            var name = User.FindFirstValue(ClaimTypes.Name);
            var user = await _context.User.FirstOrDefaultAsync(a => a.UserName == name);

            mangaList.UserId = user.Id;
            var currentMangaList = await _context.MangaList.Where(a => a.UserId == user.Id).ToListAsync <MangaList>();

            foreach (var listItem in currentMangaList)
            {
                if (listItem.MangaItemId == mangaList.MangaItemId)
                {
                    return(BadRequest("Item already on list"));
                }
            }
            _context.MangaList.Add(mangaList);
            var updateManga = await _context.MangaItem.FirstOrDefaultAsync(a => a.Id == mangaList.MangaItemId);

            updateManga.Members += 1;
            _context.Entry(updateManga).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(Ok("Added to list"));
        }
Exemple #16
0
 public void RemoveEntry(MangaList record)
 {
     _webScraperDataContext.Manga.Remove(record);
 }
Exemple #17
0
        protected virtual void StartScraping()
        {
            AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Started WebScraper @(" + BaseURL + ")...");

            for (var nextPage = 1; ; nextPage++)
            {
                var nextURL = CreateNextURL(nextPage);
                var doc     = HtmlLoader.LoadDocument(nextURL);

                AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Processing page [" + nextPage.ToString() + "] @(" + nextURL + ")");

                var rows     = GetMangaRows(doc);
                var rowCount = rows.Count();

                AppLogHelper.Log(AppLoggerBase.LogTarget.File, "[" + rowCount + "] rows found. Processing rows...");

                if (rowCount == 0)
                {
                    AppLogHelper.Log(AppLoggerBase.LogTarget.File, "No more titles found, exiting main loop...");
                    break;
                }

                foreach (var row in rows)
                {
                    var title = GetMangaTitle(row);
                    if (title == null)
                    {
                        AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Failed in extracting title, skipping...");
                        continue;
                    }

                    var titleURL = GetMangaURL(row);
                    if (titleURL == null)
                    {
                        AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Failed in extracting URL, skipping...");
                        continue;
                    }

                    var author = GetMangaAuthor(row);
                    if (author == null)
                    {
                        AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Failed in extracting author, skipping...");
                        continue;
                    }

                    var imagePath = GetMangaImagePath(row);
                    if (imagePath == null)
                    {
                        AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Failed in extracting image URL, skipping...");
                        continue;
                    }

                    var pubStatus = GetMangaPublishingStatus(row);
                    if (pubStatus == null)
                    {
                        AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Failed in extracting publishing status, skipping...");
                        continue;
                    }

                    AppLogHelper.Log(AppLoggerBase.LogTarget.File, title + ", " + titleURL);

                    var mangaEntry = new MangaList {
                        Title     = title,
                        Site      = titleURL,
                        Author    = author,
                        ImagePath = imagePath,
                        PubStatus = pubStatus
                    };

                    ScraperRepo.AddEntry(mangaEntry);
                }
                ScraperRepo.SaveChanges();
                AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Successfully added [" + rowCount + "] records to repository");

                var hasOnePageOnly = HasOnePageOnly();
                if (hasOnePageOnly)
                {
                    break;
                }

                AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Finished scraping page [" + nextPage + "]");
            }
            AppLogHelper.Log(AppLoggerBase.LogTarget.File, "Finished scraping @(" + BaseURL + ")");
        }