public async Task <IGallery> GetGallery(int id, string token = null) { using (var db = new LocalDbSourceContext()) { var dbGallery = await db.ViewerGallery .Include(vg => vg.ViewerGalleryTags) .ThenInclude(vgt => vgt.Tag) .FirstAsync(vg => vg.Gid == id.ToString()); var gallery = new ExGallery(); gallery.Category = dbGallery.Category.ToEnum <GalleryCategory>(); gallery.FileCount = dbGallery.Filecount ?? 0; gallery.FileSize = dbGallery.Filesize ?? 0; gallery.Id = Convert.ToInt32(dbGallery.Gid); gallery.IsExpunged = dbGallery.Expunged != "False"; gallery.PostedDateTime = Convert.ToDateTime(dbGallery.Posted); gallery.Rating = Convert.ToDouble(dbGallery.Rating); gallery.TagStrings = dbGallery.ViewerGalleryTags.Select(vgt => vgt.Tag).Select(t => $"{t.Scope}:{t.Name}").ToList(); gallery.Title = dbGallery.Title; gallery.TitleJpn = dbGallery.TitleJpn; gallery.Token = dbGallery.Token; gallery.Uploader = dbGallery.Uploader; return(gallery); } }
private static async Task StartImageDownloadAsync(ExGallery gallery, ExGalleryImageListItem image, StorageFile file, BackgroundDownloader downloader) { Debug.WriteLine(image.Link); var htmlSource = await ExClient.GetStringWithExCookie($"{image.Link}"); Uri uri = new Uri(ExImage.GetImageUriFromHtml(htmlSource)); DownloadOperation download = downloader.CreateDownload(uri, file); download.StartAsync(); }
private static string GetPrefix(ExGallery g) { switch (g.ParsedLanguage) { default: case LanguageType.Other: case LanguageType.NotApplicable: case LanguageType.Japanese: return(""); case LanguageType.English: return("[Eng]"); case LanguageType.Chinese: return("[中]"); case LanguageType.Dutch: return("[Dutch]"); case LanguageType.French: return("[Fr]"); case LanguageType.German: return("[De]"); case LanguageType.Hungarian: return("[Magyar]"); case LanguageType.Italian: return("[it]"); case LanguageType.Korean: return("[한]"); case LanguageType.Polish: return("[Pol]"); case LanguageType.Portuguese: return("[Port]"); case LanguageType.Russian: return("[русский]"); case LanguageType.Spanish: return("[Es]"); case LanguageType.Thai: return("[ไทย]"); case LanguageType.Vietnamese: return("[Việt]"); } }
private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e) { try { // Load the gallery info if (GalleryViewModel.Gallery == null || GalleryViewModel.Gallery.Count == 0 || (e.NavigationParameter as string) != GalleryViewModel.Gallery?.Link) { this.GalleryViewModel = new GalleryViewModel(); this.GalleryViewModel.Gallery = await ExGallery.DownloadGalleryAsync(e.NavigationParameter as string, 1, 3); } } catch (Exception ex) { } }
public static async Task StartGalleryDownloadAsync(ExGallery gallery, StorageFolder galleryFolder) { // Download image list await gallery.LoadAllItemsAsync(); BackgroundTransferCompletionGroup completionGroup = new BackgroundTransferCompletionGroup(); BackgroundTaskBuilder builder = new BackgroundTaskBuilder() { Name = "DownloadFinished" }; builder.SetTrigger(completionGroup.Trigger); BackgroundTaskRegistration taskRegistration = builder.Register(); BackgroundDownloader downloader = new BackgroundDownloader(completionGroup) { TransferGroup = BackgroundTransferGroup.CreateGroup("Gallery") }; downloader.TransferGroup.TransferBehavior = BackgroundTransferBehavior.Parallel; // Create tasks and file for each pic StorageFile[] files = new StorageFile[gallery.Count]; foreach (var image in gallery) { files[gallery.IndexOf(image)] = await galleryFolder.CreateFileAsync($"{gallery.IndexOf(image) + 1}.jpg", CreationCollisionOption.ReplaceExisting); } // Get the image uri and download data for each pic List <Task> getImageUriTasks = new List <Task>(); foreach (var image in gallery) { if (files[gallery.IndexOf(image)] != null) { getImageUriTasks.Add(StartImageDownloadAsync(gallery, image, files[gallery.IndexOf(image)], downloader)); } } await Task.WhenAll(getImageUriTasks); downloader.CompletionGroup.Enable(); }
public ReadingViewModel(ExGallery gallery) { _gallery = gallery; _gallery.CollectionChanged += _gallery_CollectionChanged; // Create vm for each previewed image foreach (var item in _gallery) { _imageViewModels.Add(new ImageViewModel(item)); } // Add dummy vm for all un-previewed images while (_imageViewModels.Count < gallery.FileCount) { _imageViewModels.Add(new ImageViewModel()); } }
private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e) { try { if (GalleryViewModel.Gallery == null || GalleryViewModel.Gallery.Count == 0 || (e.NavigationParameter as string) != GalleryViewModel.Gallery?.Link) { this.GalleryViewModel.Gallery = await ExGallery.DownloadGalleryAsync(e.NavigationParameter as string, 1, 3); var f = new ImageWallRows <ExGalleryImageListItem>(); f.ItemsSource = this.GalleryViewModel.Gallery; this.GalleryViewModel.GalleryImages = f; //GalleryWall.DataContext = f; } } catch (Exception ex) { var x = ex.GetType(); } }
private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e) { // Load Images try { readyForConnectedAnimation = false; var galleryLinkFromLastPage = QueryString.Parse(e.NavigationParameter as string)["link"]; // Get ExGallery if (App.Current.Resources.ContainsKey("Gallery")) { this.ReadingViewModel = new ReadingViewModel(App.Current.Resources["Gallery"] as ExGallery); } else { this.ReadingViewModel = new ReadingViewModel(await ExGallery.DownloadGalleryAsync(galleryLinkFromLastPage, 1, 3)); } this.ReadingViewModel.CurrentImageIndex = -1; flipView.SelectedIndex = -1; // Jump to Page indexFromLastPage = int.Parse(QueryString.Parse(e.NavigationParameter as string)["page"]); if (this.ReadingViewModel.CurrentImageIndex != indexFromLastPage) { readyForConnectedAnimation = true; this.ReadingViewModel.CurrentImageIndex = indexFromLastPage; } else { // Handle the connected animation flipView.UpdateLayout(); HandleConnectedAnimation(); } } catch (Exception ex) { } }
private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e) { // Load Images try { var galleryLinkFromLastPage = QueryString.Parse(e.NavigationParameter as string)["link"]; // Get ExGallery if (App.Current.Resources.ContainsKey("Gallery")) { this.ReadingViewModel.Gallery = App.Current.Resources["Gallery"] as ExGallery; } else { this.ReadingViewModel.Gallery = await ExGallery.DownloadGalleryAsync(galleryLinkFromLastPage, 1, 3); } // Load all image item var images = new ObservableCollection <ExImage>(); await this.ReadingViewModel.Gallery.LoadAllItemsAsync(); foreach (var item in this.ReadingViewModel.Gallery) { images.Add(new ExImage() { Link = item.Link, Thumb = item.Thumb }); } this.ReadingViewModel.Images = images; // Jump to Page var indexFromLastPage = int.Parse(QueryString.Parse(e.NavigationParameter as string)["page"]); this.ReadingViewModel.CurrentImageIndex = indexFromLastPage; } catch (Exception ex) { } }