public static Metro_AniDB_Character ToContractMetro(this AniDB_Character character, ISession session, AniDB_Anime_Character charRel) { Metro_AniDB_Character contract = new Metro_AniDB_Character { AniDB_CharacterID = character.AniDB_CharacterID, CharID = character.CharID, CharName = character.CharName, CharKanjiName = character.CharKanjiName, CharDescription = character.CharDescription, CharType = charRel.CharType, ImageType = (int)ImageEntityType.AniDB_Character, ImageID = character.AniDB_CharacterID }; AniDB_Seiyuu seiyuu = character.GetSeiyuu(session); if (seiyuu != null) { contract.SeiyuuID = seiyuu.AniDB_SeiyuuID; contract.SeiyuuName = seiyuu.SeiyuuName; contract.SeiyuuImageType = (int)ImageEntityType.AniDB_Creator; contract.SeiyuuImageID = seiyuu.AniDB_SeiyuuID; } return(contract); }
public override void ProcessCommand() { logger.Info("Processing CommandRequest_GetCreator: {0}", CreatorID); try { AniDB_CreatorRepository repCreator = new AniDB_CreatorRepository(); AniDB_Seiyuu creator = repCreator.GetByCreatorID(CreatorID); if (ForceRefresh || creator == null) { // redownload anime details from http ap so we can get an update character list creator = JMMService.AnidbProcessor.GetCreatorInfoUDP(CreatorID); } if (creator != null || !string.IsNullOrEmpty(creator.PosterPath) && !File.Exists(creator.PosterPath)) { CommandRequest_DownloadImage cmd = new CommandRequest_DownloadImage(creator.AniDB_SeiyuuID, ImageEntityType.AniDB_Creator, false); cmd.Save(); } } catch (Exception ex) { logger.Error("Error processing CommandRequest_GetCreator: {0} - {1}", CreatorID, ex.ToString()); return; } }
public void DownloadCharacterImagesForSeiyuu(AniDB_Seiyuu seiyuu) { if (downloadCharacterImagesForSeiyuuWorker.IsBusy) { return; } downloadCharacterImagesForSeiyuuWorker.RunWorkerAsync(seiyuu); }
public AniDB_Seiyuu GetBySeiyuuID(ISession session, int id) { AniDB_Seiyuu cr = session .CreateCriteria(typeof(AniDB_Seiyuu)) .Add(Restrictions.Eq("SeiyuuID", id)) .UniqueResult <AniDB_Seiyuu>(); return(cr); }
public static string GetPosterPathPlain(this AniDB_Seiyuu aniDbSeiyuuVm) { if (String.IsNullOrEmpty(aniDbSeiyuuVm.PicName)) { return(""); } return(Path.Combine(Utils.GetAniDBCreatorImagePath(aniDbSeiyuuVm.SeiyuuID), aniDbSeiyuuVm.PicName)); }
public static string GetPosterPath(this AniDB_Seiyuu seiyuu) { if (String.IsNullOrEmpty(seiyuu.PicName)) { return(""); } return(System.IO.Path.Combine(ImageUtils.GetAniDBCreatorImagePath(seiyuu.SeiyuuID), seiyuu.PicName)); }
public AniDB_Seiyuu GetBySeiyuuID(int id) { using (var session = JMMService.SessionFactory.OpenSession()) { AniDB_Seiyuu cr = session .CreateCriteria(typeof(AniDB_Seiyuu)) .Add(Restrictions.Eq("SeiyuuID", id)) .UniqueResult <AniDB_Seiyuu>(); return(cr); } }
public void Save(AniDB_Seiyuu obj) { using (var session = JMMService.SessionFactory.OpenSession()) { // populate the database using (var transaction = session.BeginTransaction()) { session.SaveOrUpdate(obj); transaction.Commit(); } } }
public AnimeCharacterAndSeiyuu(int animeID, AniDB_Character character, AniDB_Seiyuu seiyuu = null, string characterType = null) { if (character == null) { throw new ArgumentNullException(nameof(character)); } AnimeID = animeID; Character = character; Seiyuu = seiyuu; CharacterType = characterType ?? String.Empty; }
private string GetFileName(ImageDownloadRequest req, bool thumbNailOnly) { switch (req.ImageType) { case ImageEntityType.AniDB_Cover: SVR_AniDB_Anime anime = req.ImageData as SVR_AniDB_Anime; return(anime.PosterPath); case ImageEntityType.TvDB_Episode: TvDB_Episode ep = req.ImageData as TvDB_Episode; return(ep.GetFullImagePath()); case ImageEntityType.TvDB_FanArt: TvDB_ImageFanart fanart = req.ImageData as TvDB_ImageFanart; if (thumbNailOnly) { return(fanart.GetFullThumbnailPath()); } else { return(fanart.GetFullImagePath()); } case ImageEntityType.TvDB_Cover: TvDB_ImagePoster poster = req.ImageData as TvDB_ImagePoster; return(poster.GetFullImagePath()); case ImageEntityType.TvDB_Banner: TvDB_ImageWideBanner wideBanner = req.ImageData as TvDB_ImageWideBanner; return(wideBanner.GetFullImagePath()); case ImageEntityType.MovieDB_Poster: MovieDB_Poster moviePoster = req.ImageData as MovieDB_Poster; return(moviePoster.GetFullImagePath()); case ImageEntityType.MovieDB_FanArt: MovieDB_Fanart movieFanart = req.ImageData as MovieDB_Fanart; return(movieFanart.GetFullImagePath()); case ImageEntityType.AniDB_Character: AniDB_Character chr = req.ImageData as AniDB_Character; return(chr.GetPosterPath()); case ImageEntityType.AniDB_Creator: AniDB_Seiyuu creator = req.ImageData as AniDB_Seiyuu; return(creator.GetPosterPath()); default: return(string.Empty); } }
public static string GetFileURL(ImageDownloadRequest req, bool thumbNailOnly) { switch (req.ImageType) { case ImageEntityType.TvDB_Episode: TvDB_Episode ep = req.ImageData as TvDB_Episode; return(string.Format(Constants.URLS.TvDB_Images, ep.Filename)); case ImageEntityType.TvDB_FanArt: TvDB_ImageFanart fanart = req.ImageData as TvDB_ImageFanart; if (thumbNailOnly) { return(string.Format(Constants.URLS.TvDB_Images, fanart.ThumbnailPath)); } else { return(string.Format(Constants.URLS.TvDB_Images, fanart.BannerPath)); } case ImageEntityType.TvDB_Cover: TvDB_ImagePoster poster = req.ImageData as TvDB_ImagePoster; return(string.Format(Constants.URLS.TvDB_Images, poster.BannerPath)); case ImageEntityType.TvDB_Banner: TvDB_ImageWideBanner wideBanner = req.ImageData as TvDB_ImageWideBanner; return(string.Format(Constants.URLS.TvDB_Images, wideBanner.BannerPath)); case ImageEntityType.MovieDB_Poster: MovieDB_Poster moviePoster = req.ImageData as MovieDB_Poster; return(string.Format(Constants.URLS.MovieDB_Images, moviePoster.URL)); case ImageEntityType.MovieDB_FanArt: MovieDB_Fanart movieFanart = req.ImageData as MovieDB_Fanart; return(string.Format(Constants.URLS.MovieDB_Images, movieFanart.URL)); case ImageEntityType.AniDB_Cover: SVR_AniDB_Anime anime = req.ImageData as SVR_AniDB_Anime; return(string.Format(Constants.URLS.AniDB_Images, anime.Picname)); case ImageEntityType.AniDB_Character: AniDB_Character chr = req.ImageData as AniDB_Character; return(string.Format(Constants.URLS.AniDB_Images, chr.PicName)); case ImageEntityType.AniDB_Creator: AniDB_Seiyuu creator = req.ImageData as AniDB_Seiyuu; return(string.Format(Constants.URLS.AniDB_Images, creator.PicName)); default: return(string.Empty); } }
protected override void OnClicked(int controlId, GUIControl control, Action.ActionType actionType) { MainMenu menu = new MainMenu(); menu.Add(btnGetMissingInfo, () => { VM_ShokoServer.Instance.ShokoServices.UpdateAnimeData(mainAnime.AnimeID); SetGUIProperty(GuiProperty.Character_Status, Translation.RequestSendToServerPleaseRefresh + "..."); m_Facade.Focus = true; }); menu.Add(btnRefreshView, () => { VM_ShokoServer.Instance.ShokoServices.UpdateAnimeData(mainAnime.AnimeID); SetGUIProperty(GuiProperty.Character_Status, Translation.RequestSendToServerPleaseRefresh + "..."); m_Facade.Focus = true; }); menu.Add(btnSeiyuu, () => GUIWindowManager.ActivateWindow(Constants.WindowIDs.ACTORS, false)); if (menu.Check(control)) { return; } try { if (actionType == Action.ActionType.ACTION_SELECT_ITEM) { if (control == m_Facade) { GUIListItem item = m_Facade.SelectedListItem; if (item == null || item.TVTag == null || !(item.TVTag is CL_AniDB_Character)) { return; } CL_AniDB_Character aniChar = item.TVTag as CL_AniDB_Character; AniDB_Seiyuu actor = aniChar.Seiyuu; MainWindow.GlobalSeiyuuID = actor.AniDB_SeiyuuID; GUIWindowManager.ActivateWindow(Constants.WindowIDs.ACTORS, false); } } } // ReSharper disable EmptyGeneralCatchClause catch { } // ReSharper restore EmptyGeneralCatchClause base.OnClicked(controlId, control, actionType); }
void downloadCharacterImagesForSeiyuuWorker_DoWork(object sender, DoWorkEventArgs e) { AniDB_Seiyuu seiyuu = (AniDB_Seiyuu)e.Argument; List <CL_AniDB_Character> charContracts = VM_ShokoServer.Instance.ShokoServices.GetCharactersForSeiyuu(seiyuu.AniDB_SeiyuuID); if (charContracts == null) { return; } MainWindow.imageHelper.DownloadAniDBCharactersForSeiyuuSync(charContracts, false); OnGotCharacterImagesEvent(new GotCharacterImagesEventArgs(seiyuu.AniDB_SeiyuuID)); }
public void Delete(int id) { using (var session = JMMService.SessionFactory.OpenSession()) { // populate the database using (var transaction = session.BeginTransaction()) { AniDB_Seiyuu cr = GetByID(id); if (cr != null) { session.Delete(cr); transaction.Commit(); } } } }
public static string GetPosterPath(this AniDB_Seiyuu aniDbSeiyuuVm) { if (String.IsNullOrEmpty(aniDbSeiyuuVm.GetPosterPathPlain())) { return(aniDbSeiyuuVm.GetPosterPathPlain()); } if (!File.Exists(aniDbSeiyuuVm.GetPosterPathPlain())) { ImageDownloadRequest req = new ImageDownloadRequest(ImageEntityType.AniDB_Creator, aniDbSeiyuuVm, false); MainWindow.imageHelper.DownloadImage(req); if (File.Exists(aniDbSeiyuuVm.GetPosterPathPlain())) { return(aniDbSeiyuuVm.GetPosterPathPlain()); } } return(aniDbSeiyuuVm.GetPosterPathPlain()); }
private string GetFileName(ImageDownloadRequest req, bool thumbNailOnly) { switch (req.ImageType) { case ImageEntityType.AniDB_Cover: SVR_AniDB_Anime anime = req.ImageData as SVR_AniDB_Anime; return(anime.PosterPath); case ImageEntityType.AniDB_Character: AniDB_Character chr = req.ImageData as AniDB_Character; return(chr.GetPosterPath()); case ImageEntityType.AniDB_Creator: AniDB_Seiyuu creator = req.ImageData as AniDB_Seiyuu; return(creator.GetPosterPath()); default: return(string.Empty); } }
public static Azure_AnimeCharacter ToContractAzure(this AniDB_Character character, AniDB_Anime_Character charRel) { Azure_AnimeCharacter contract = new Azure_AnimeCharacter { CharID = character.CharID, CharName = character.CharName, CharKanjiName = character.CharKanjiName, CharDescription = character.CharDescription, CharType = charRel.CharType, CharImageURL = string.Format(Constants.URLS.AniDB_Images, character.PicName) }; AniDB_Seiyuu seiyuu = character.GetSeiyuu(); if (seiyuu != null) { contract.SeiyuuID = seiyuu.AniDB_SeiyuuID; contract.SeiyuuName = seiyuu.SeiyuuName; contract.SeiyuuImageURL = string.Format(Constants.URLS.AniDB_Images, seiyuu.PicName); } return(contract); }
public override void ProcessCommand() { logger.Info("Processing CommandRequest_DownloadImage: {0}", EntityID); string downloadURL = ""; try { ImageDownloadRequest req = null; switch (EntityTypeEnum) { case JMMImageType.AniDB_Cover: AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); AniDB_Anime anime = repAnime.GetByID(EntityID); if (anime == null) { return; } req = new ImageDownloadRequest(EntityTypeEnum, anime, ForceDownload); break; case JMMImageType.TvDB_Episode: TvDB_EpisodeRepository repTvEp = new TvDB_EpisodeRepository(); TvDB_Episode ep = repTvEp.GetByID(EntityID); if (ep == null) { return; } if (string.IsNullOrEmpty(ep.Filename)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, ep, ForceDownload); break; case JMMImageType.TvDB_FanArt: TvDB_ImageFanartRepository repFanart = new TvDB_ImageFanartRepository(); TvDB_ImageFanart fanart = repFanart.GetByID(EntityID); if (fanart == null) { return; } if (string.IsNullOrEmpty(fanart.BannerPath)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, fanart, ForceDownload); break; case JMMImageType.TvDB_Cover: TvDB_ImagePosterRepository repPoster = new TvDB_ImagePosterRepository(); TvDB_ImagePoster poster = repPoster.GetByID(EntityID); if (poster == null) { return; } if (string.IsNullOrEmpty(poster.BannerPath)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, poster, ForceDownload); break; case JMMImageType.TvDB_Banner: TvDB_ImageWideBannerRepository repBanners = new TvDB_ImageWideBannerRepository(); TvDB_ImageWideBanner wideBanner = repBanners.GetByID(EntityID); if (wideBanner == null) { return; } if (string.IsNullOrEmpty(wideBanner.BannerPath)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, wideBanner, ForceDownload); break; case JMMImageType.MovieDB_Poster: MovieDB_PosterRepository repMoviePosters = new MovieDB_PosterRepository(); MovieDB_Poster moviePoster = repMoviePosters.GetByID(EntityID); if (moviePoster == null) { return; } if (string.IsNullOrEmpty(moviePoster.URL)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, moviePoster, ForceDownload); break; case JMMImageType.MovieDB_FanArt: MovieDB_FanartRepository repMovieFanart = new MovieDB_FanartRepository(); MovieDB_Fanart movieFanart = repMovieFanart.GetByID(EntityID); if (movieFanart == null) { return; } if (string.IsNullOrEmpty(movieFanart.URL)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, movieFanart, ForceDownload); break; case JMMImageType.Trakt_Poster: Trakt_ImagePosterRepository repTraktPosters = new Trakt_ImagePosterRepository(); Trakt_ImagePoster traktPoster = repTraktPosters.GetByID(EntityID); if (traktPoster == null) { return; } if (string.IsNullOrEmpty(traktPoster.ImageURL)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, traktPoster, ForceDownload); break; case JMMImageType.Trakt_Fanart: Trakt_ImageFanartRepository repTraktFanarts = new Trakt_ImageFanartRepository(); Trakt_ImageFanart traktFanart = repTraktFanarts.GetByID(EntityID); if (traktFanart == null) { return; } if (string.IsNullOrEmpty(traktFanart.ImageURL)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, traktFanart, ForceDownload); break; case JMMImageType.Trakt_Friend: Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); Trakt_Friend friend = repFriends.GetByID(EntityID); if (friend == null) { return; } if (string.IsNullOrEmpty(friend.Avatar)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, friend, ForceDownload); break; case JMMImageType.Trakt_Episode: Trakt_EpisodeRepository repTraktEpisodes = new Trakt_EpisodeRepository(); Trakt_Episode traktEp = repTraktEpisodes.GetByID(EntityID); if (traktEp == null) { return; } if (string.IsNullOrEmpty(traktEp.EpisodeImage)) { return; } req = new ImageDownloadRequest(EntityTypeEnum, traktEp, ForceDownload); break; case JMMImageType.AniDB_Character: AniDB_CharacterRepository repChars = new AniDB_CharacterRepository(); AniDB_Character chr = repChars.GetByID(EntityID); if (chr == null) { return; } req = new ImageDownloadRequest(EntityTypeEnum, chr, ForceDownload); break; case JMMImageType.AniDB_Creator: AniDB_SeiyuuRepository repCreator = new AniDB_SeiyuuRepository(); AniDB_Seiyuu creator = repCreator.GetByID(EntityID); if (creator == null) { return; } req = new ImageDownloadRequest(EntityTypeEnum, creator, ForceDownload); break; } if (req == null) { return; } List <string> fileNames = new List <string>(); List <string> downloadURLs = new List <string>(); string fileNameTemp = GetFileName(req, false); string downloadURLTemp = GetFileURL(req, false); fileNames.Add(fileNameTemp); downloadURLs.Add(downloadURLTemp); if (req.ImageType == JMMImageType.TvDB_FanArt) { fileNameTemp = GetFileName(req, true); downloadURLTemp = GetFileURL(req, true); fileNames.Add(fileNameTemp); downloadURLs.Add(downloadURLTemp); } for (int i = 0; i < fileNames.Count; i++) { string fileName = fileNames[i]; downloadURL = downloadURLs[i]; bool downloadImage = true; bool fileExists = File.Exists(fileName); if (fileExists) { if (!req.ForceDownload) { downloadImage = false; } else { downloadImage = true; } } else { downloadImage = true; } if (downloadImage) { string tempName = Path.Combine(ImageUtils.GetImagesTempFolder(), Path.GetFileName(fileName)); if (File.Exists(tempName)) { File.Delete(tempName); } try { if (fileExists) { File.Delete(fileName); } } catch (Exception ex) { Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(ServerSettings.Culture); string msg = string.Format(JMMServer.Properties.Resources.Command_DeleteError, fileName, ex.Message); logger.Warn(msg); return; } // download image using (WebClient client = new WebClient()) { client.Headers.Add("user-agent", "JMM"); //OnImageDownloadEvent(new ImageDownloadEventArgs("", req, ImageDownloadEventType.Started)); //BaseConfig.MyAnimeLog.Write("ProcessImages: Download: {0} *** to *** {1}", req.URL, fullName); if (downloadURL.Length > 0) { client.DownloadFile(downloadURL, tempName); string extension = ""; string contentType = client.ResponseHeaders["Content-type"].ToLower(); if (contentType.IndexOf("gif") >= 0) { extension = ".gif"; } if (contentType.IndexOf("jpg") >= 0) { extension = ".jpg"; } if (contentType.IndexOf("jpeg") >= 0) { extension = ".jpg"; } if (contentType.IndexOf("bmp") >= 0) { extension = ".bmp"; } if (contentType.IndexOf("png") >= 0) { extension = ".png"; } if (extension.Length > 0) { string newFile = Path.ChangeExtension(tempName, extension); if (!newFile.ToLower().Equals(tempName.ToLower())) { try { System.IO.File.Delete(newFile); } catch { //BaseConfig.MyAnimeLog.Write("DownloadedImage:Download() Delete failed:{0}", newFile); } System.IO.File.Move(tempName, newFile); tempName = newFile; } } } } // move the file to it's final location // check that the final folder exists string fullPath = Path.GetDirectoryName(fileName); if (!Directory.Exists(fullPath)) { Directory.CreateDirectory(fullPath); } System.IO.File.Move(tempName, fileName); logger.Info("Image downloaded: {0}", fileName); } } } catch (Exception ex) { logger.Warn("Error processing CommandRequest_DownloadImage: {0} ({1}) - {2}", downloadURL, EntityID, ex.Message); return; } }
public static CL_AniDB_Character ToClient(this AniDB_Character character, string charType, AniDB_Seiyuu seiyuu) { CL_AniDB_Character contract = character.ToClient(); if (seiyuu != null) { contract.Seiyuu = seiyuu; } return(contract); }
public System.IO.Stream GetImage(string ImageType, string ImageID) { AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); TvDB_ImagePosterRepository repPosters = new TvDB_ImagePosterRepository(); TvDB_EpisodeRepository repEpisodes = new TvDB_EpisodeRepository(); TvDB_ImageFanartRepository repFanart = new TvDB_ImageFanartRepository(); TvDB_ImageWideBannerRepository repWideBanners = new TvDB_ImageWideBannerRepository(); MovieDB_PosterRepository repMoviePosters = new MovieDB_PosterRepository(); MovieDB_FanartRepository repMovieFanart = new MovieDB_FanartRepository(); Trakt_ImageFanartRepository repTraktFanart = new Trakt_ImageFanartRepository(); Trakt_ImagePosterRepository repTraktPosters = new Trakt_ImagePosterRepository(); Trakt_EpisodeRepository repTraktEpisodes = new Trakt_EpisodeRepository(); Trakt_FriendRepository repTraktFriends = new Trakt_FriendRepository(); JMMImageType imageType = (JMMImageType)int.Parse(ImageType); switch (imageType) { case JMMImageType.AniDB_Cover: AniDB_Anime anime = repAnime.GetByAnimeID(int.Parse(ImageID)); if (anime == null) { return(null); } if (File.Exists(anime.PosterPath)) { FileStream fs = File.OpenRead(anime.PosterPath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find AniDB_Cover image: {0}", anime.PosterPath); return(BlankImage()); } case JMMImageType.AniDB_Character: AniDB_CharacterRepository repChar = new AniDB_CharacterRepository(); AniDB_Character chr = repChar.GetByID(int.Parse(ImageID)); if (chr == null) { return(null); } if (File.Exists(chr.PosterPath)) { FileStream fs = File.OpenRead(chr.PosterPath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find AniDB_Character image: {0}", chr.PosterPath); return(BlankImage()); } case JMMImageType.AniDB_Creator: AniDB_SeiyuuRepository repCreator = new AniDB_SeiyuuRepository(); AniDB_Seiyuu creator = repCreator.GetByID(int.Parse(ImageID)); if (creator == null) { return(null); } if (File.Exists(creator.PosterPath)) { FileStream fs = File.OpenRead(creator.PosterPath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find AniDB_Creator image: {0}", creator.PosterPath); return(BlankImage()); } case JMMImageType.TvDB_Cover: TvDB_ImagePoster poster = repPosters.GetByID(int.Parse(ImageID)); if (poster == null) { return(null); } if (File.Exists(poster.FullImagePath)) { FileStream fs = File.OpenRead(poster.FullImagePath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find TvDB_Cover image: {0}", poster.FullImagePath); return(BlankImage()); } case JMMImageType.TvDB_Banner: TvDB_ImageWideBanner wideBanner = repWideBanners.GetByID(int.Parse(ImageID)); if (wideBanner == null) { return(null); } if (File.Exists(wideBanner.FullImagePath)) { FileStream fs = File.OpenRead(wideBanner.FullImagePath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find TvDB_Banner image: {0}", wideBanner.FullImagePath); return(BlankImage()); } case JMMImageType.TvDB_Episode: TvDB_Episode ep = repEpisodes.GetByID(int.Parse(ImageID)); if (ep == null) { return(null); } if (File.Exists(ep.FullImagePath)) { FileStream fs = File.OpenRead(ep.FullImagePath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find TvDB_Episode image: {0}", ep.FullImagePath); return(BlankImage()); } case JMMImageType.TvDB_FanArt: TvDB_ImageFanart fanart = repFanart.GetByID(int.Parse(ImageID)); if (fanart == null) { return(null); } if (File.Exists(fanart.FullImagePath)) { FileStream fs = File.OpenRead(fanart.FullImagePath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find TvDB_FanArt image: {0}", fanart.FullImagePath); return(BlankImage()); } case JMMImageType.MovieDB_Poster: MovieDB_Poster mPoster = repMoviePosters.GetByID(int.Parse(ImageID)); if (mPoster == null) { return(null); } // now find only the original size mPoster = repMoviePosters.GetByOnlineID(mPoster.URL); if (mPoster == null) { return(null); } if (File.Exists(mPoster.FullImagePath)) { FileStream fs = File.OpenRead(mPoster.FullImagePath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find MovieDB_Poster image: {0}", mPoster.FullImagePath); return(BlankImage()); } case JMMImageType.MovieDB_FanArt: MovieDB_Fanart mFanart = repMovieFanart.GetByID(int.Parse(ImageID)); if (mFanart == null) { return(null); } mFanart = repMovieFanart.GetByOnlineID(mFanart.URL); if (mFanart == null) { return(null); } if (File.Exists(mFanart.FullImagePath)) { FileStream fs = File.OpenRead(mFanart.FullImagePath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find MovieDB_FanArt image: {0}", mFanart.FullImagePath); return(BlankImage()); } case JMMImageType.Trakt_Fanart: Trakt_ImageFanart tFanart = repTraktFanart.GetByID(int.Parse(ImageID)); if (tFanart == null) { return(null); } if (File.Exists(tFanart.FullImagePath)) { FileStream fs = File.OpenRead(tFanart.FullImagePath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find Trakt_Fanart image: {0}", tFanart.FullImagePath); return(BlankImage()); } case JMMImageType.Trakt_Poster: Trakt_ImagePoster tPoster = repTraktPosters.GetByID(int.Parse(ImageID)); if (tPoster == null) { return(null); } if (File.Exists(tPoster.FullImagePath)) { FileStream fs = File.OpenRead(tPoster.FullImagePath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find Trakt_Poster image: {0}", tPoster.FullImagePath); return(BlankImage()); } case JMMImageType.Trakt_Episode: case JMMImageType.Trakt_WatchedEpisode: Trakt_Episode tEpisode = repTraktEpisodes.GetByID(int.Parse(ImageID)); if (tEpisode == null) { return(null); } if (File.Exists(tEpisode.FullImagePath)) { FileStream fs = File.OpenRead(tEpisode.FullImagePath); WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; return(fs); } else { logger.Trace("Could not find Trakt_Episode image: {0}", tEpisode.FullImagePath); return(BlankImage()); } default: return(BlankImage()); } }
private string GetFileName(ImageDownloadRequest req, bool thumbNailOnly) { switch (req.ImageType) { case JMMImageType.AniDB_Cover: AniDB_Anime anime = req.ImageData as AniDB_Anime; return(anime.PosterPath); case JMMImageType.TvDB_Episode: TvDB_Episode ep = req.ImageData as TvDB_Episode; return(ep.FullImagePath); case JMMImageType.TvDB_FanArt: TvDB_ImageFanart fanart = req.ImageData as TvDB_ImageFanart; if (thumbNailOnly) { return(fanart.FullThumbnailPath); } else { return(fanart.FullImagePath); } case JMMImageType.TvDB_Cover: TvDB_ImagePoster poster = req.ImageData as TvDB_ImagePoster; return(poster.FullImagePath); case JMMImageType.TvDB_Banner: TvDB_ImageWideBanner wideBanner = req.ImageData as TvDB_ImageWideBanner; return(wideBanner.FullImagePath); case JMMImageType.MovieDB_Poster: MovieDB_Poster moviePoster = req.ImageData as MovieDB_Poster; return(moviePoster.FullImagePath); case JMMImageType.MovieDB_FanArt: MovieDB_Fanart movieFanart = req.ImageData as MovieDB_Fanart; return(movieFanart.FullImagePath); case JMMImageType.Trakt_Poster: Trakt_ImagePoster traktPoster = req.ImageData as Trakt_ImagePoster; return(traktPoster.FullImagePath); case JMMImageType.Trakt_Fanart: Trakt_ImageFanart traktFanart = req.ImageData as Trakt_ImageFanart; return(traktFanart.FullImagePath); case JMMImageType.Trakt_Friend: Trakt_Friend traktFriend = req.ImageData as Trakt_Friend; return(traktFriend.FullImagePath); case JMMImageType.Trakt_Episode: Trakt_Episode traktEp = req.ImageData as Trakt_Episode; return(traktEp.FullImagePath); case JMMImageType.AniDB_Character: AniDB_Character chr = req.ImageData as AniDB_Character; return(chr.PosterPath); case JMMImageType.AniDB_Creator: AniDB_Seiyuu creator = req.ImageData as AniDB_Seiyuu; return(creator.PosterPath); default: return(""); } }
private AniDB_Anime SaveResultsForAnimeXML(ISession session, int animeID, bool downloadRelations, AniDBHTTPCommand_GetFullAnime getAnimeCmd) { AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); AniDB_Anime anime = null; logger.Trace("cmdResult.Anime: {0}", getAnimeCmd.Anime); anime = repAnime.GetByAnimeID(session, animeID); if (anime == null) { anime = new AniDB_Anime(); } anime.PopulateAndSaveFromHTTP(session, getAnimeCmd.Anime, getAnimeCmd.Episodes, getAnimeCmd.Titles, getAnimeCmd.Categories, getAnimeCmd.Tags, getAnimeCmd.Characters, getAnimeCmd.Relations, getAnimeCmd.SimilarAnime, getAnimeCmd.Recommendations, downloadRelations); // Request an image download CommandRequest_DownloadImage cmd = new CommandRequest_DownloadImage(anime.AniDB_AnimeID, JMMImageType.AniDB_Cover, false); cmd.Save(session); // create AnimeEpisode records for all episodes in this anime // only if we have a series AnimeSeriesRepository repSeries = new AnimeSeriesRepository(); AnimeSeries ser = repSeries.GetByAnimeID(session, animeID); if (ser != null) { ser.CreateAnimeEpisodes(session); } // update any files, that may have been linked /*CrossRef_File_EpisodeRepository repCrossRefs = new CrossRef_File_EpisodeRepository(); * repCrossRefs.GetByAnimeID(*/ // update cached stats StatsCache.Instance.UpdateUsingAnime(session, anime.AnimeID); StatsCache.Instance.UpdateAnimeContract(session, anime.AnimeID); // download character images foreach (AniDB_Anime_Character animeChar in anime.GetAnimeCharacters(session)) { AniDB_Character chr = animeChar.GetCharacter(session); if (chr == null) { continue; } if (ServerSettings.AniDB_DownloadCharacters) { if (!string.IsNullOrEmpty(chr.PosterPath) && !File.Exists(chr.PosterPath)) { logger.Debug("Downloading character image: {0} - {1}({2}) - {3}", anime.MainTitle, chr.CharName, chr.CharID, chr.PosterPath); cmd = new CommandRequest_DownloadImage(chr.AniDB_CharacterID, JMMImageType.AniDB_Character, false); cmd.Save(); } } if (ServerSettings.AniDB_DownloadCreators) { AniDB_Seiyuu seiyuu = chr.GetSeiyuu(session); if (seiyuu == null || string.IsNullOrEmpty(seiyuu.PosterPath)) { continue; } if (!File.Exists(seiyuu.PosterPath)) { logger.Debug("Downloading seiyuu image: {0} - {1}({2}) - {3}", anime.MainTitle, seiyuu.SeiyuuName, seiyuu.SeiyuuID, seiyuu.PosterPath); cmd = new CommandRequest_DownloadImage(seiyuu.AniDB_SeiyuuID, JMMImageType.AniDB_Creator, false); cmd.Save(); } } } return(anime); }
public string GetImagePath(string ImageType, string ImageID, bool thumnbnailOnly) { JMMImageType imageType = (JMMImageType)int.Parse(ImageType); switch (imageType) { case JMMImageType.AniDB_Cover: AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(int.Parse(ImageID)); if (anime == null) { return(null); } if (File.Exists(anime.PosterPath)) { return(anime.PosterPath); } else { logger.Trace("Could not find AniDB_Cover image: {0}", anime.PosterPath); return(""); } case JMMImageType.AniDB_Character: AniDB_Character chr = RepoFactory.AniDB_Character.GetByID(int.Parse(ImageID)); if (chr == null) { return(null); } if (File.Exists(chr.PosterPath)) { return(chr.PosterPath); } else { logger.Trace("Could not find AniDB_Character image: {0}", chr.PosterPath); return(""); } case JMMImageType.AniDB_Creator: AniDB_Seiyuu creator = RepoFactory.AniDB_Seiyuu.GetByID(int.Parse(ImageID)); if (creator == null) { return(""); } if (File.Exists(creator.PosterPath)) { return(creator.PosterPath); } else { logger.Trace("Could not find AniDB_Creator image: {0}", creator.PosterPath); return(""); } case JMMImageType.TvDB_Cover: TvDB_ImagePoster poster = RepoFactory.TvDB_ImagePoster.GetByID(int.Parse(ImageID)); if (poster == null) { return(null); } if (File.Exists(poster.FullImagePath)) { return(poster.FullImagePath); } else { logger.Trace("Could not find TvDB_Cover image: {0}", poster.FullImagePath); return(""); } case JMMImageType.TvDB_Banner: TvDB_ImageWideBanner wideBanner = RepoFactory.TvDB_ImageWideBanner.GetByID(int.Parse(ImageID)); if (wideBanner == null) { return(null); } if (File.Exists(wideBanner.FullImagePath)) { return(wideBanner.FullImagePath); } else { logger.Trace("Could not find TvDB_Banner image: {0}", wideBanner.FullImagePath); return(""); } case JMMImageType.TvDB_Episode: TvDB_Episode ep = RepoFactory.TvDB_Episode.GetByID(int.Parse(ImageID)); if (ep == null) { return(null); } if (File.Exists(ep.FullImagePath)) { return(ep.FullImagePath); } else { logger.Trace("Could not find TvDB_Episode image: {0}", ep.FullImagePath); return(""); } case JMMImageType.TvDB_FanArt: TvDB_ImageFanart fanart = RepoFactory.TvDB_ImageFanart.GetByID(int.Parse(ImageID)); if (fanart == null) { return(null); } if (thumnbnailOnly) { if (File.Exists(fanart.FullThumbnailPath)) { return(fanart.FullThumbnailPath); } else { logger.Trace("Could not find TvDB_FanArt image: {0}", fanart.FullThumbnailPath); return(""); } } else { if (File.Exists(fanart.FullImagePath)) { return(fanart.FullImagePath); } else { logger.Trace("Could not find TvDB_FanArt image: {0}", fanart.FullImagePath); return(""); } } case JMMImageType.MovieDB_Poster: MovieDB_Poster mPoster = RepoFactory.MovieDB_Poster.GetByID(int.Parse(ImageID)); if (mPoster == null) { return(null); } // now find only the original size mPoster = RepoFactory.MovieDB_Poster.GetByOnlineID(mPoster.URL); if (mPoster == null) { return(null); } if (File.Exists(mPoster.FullImagePath)) { return(mPoster.FullImagePath); } else { logger.Trace("Could not find MovieDB_Poster image: {0}", mPoster.FullImagePath); return(""); } case JMMImageType.MovieDB_FanArt: MovieDB_Fanart mFanart = RepoFactory.MovieDB_Fanart.GetByID(int.Parse(ImageID)); if (mFanart == null) { return(null); } mFanart = RepoFactory.MovieDB_Fanart.GetByOnlineID(mFanart.URL); if (mFanart == null) { return(null); } if (File.Exists(mFanart.FullImagePath)) { return(mFanart.FullImagePath); } else { logger.Trace("Could not find MovieDB_FanArt image: {0}", mFanart.FullImagePath); return(""); } case JMMImageType.Trakt_Fanart: Trakt_ImageFanart tFanart = RepoFactory.Trakt_ImageFanart.GetByID(int.Parse(ImageID)); if (tFanart == null) { return(null); } if (File.Exists(tFanart.FullImagePath)) { return(tFanart.FullImagePath); } else { logger.Trace("Could not find Trakt_Fanart image: {0}", tFanart.FullImagePath); return(""); } case JMMImageType.Trakt_Poster: Trakt_ImagePoster tPoster = RepoFactory.Trakt_ImagePoster.GetByID(int.Parse(ImageID)); if (tPoster == null) { return(null); } if (File.Exists(tPoster.FullImagePath)) { return(tPoster.FullImagePath); } else { logger.Trace("Could not find Trakt_Poster image: {0}", tPoster.FullImagePath); return(""); } case JMMImageType.Trakt_Episode: case JMMImageType.Trakt_WatchedEpisode: Trakt_Episode tEpisode = RepoFactory.Trakt_Episode.GetByID(int.Parse(ImageID)); if (tEpisode == null) { return(null); } if (File.Exists(tEpisode.FullImagePath)) { return(tEpisode.FullImagePath); } else { logger.Trace("Could not find Trakt_Episode image: {0}", tEpisode.FullImagePath); return(""); } default: return(""); } }
/// <summary> /// Internal function that return valid image file path on server that exist /// </summary> /// <param name="id">image id</param> /// <param name="type">image type</param> /// <param name="thumb">thumb mode</param> /// <returns>string</returns> internal string ReturnImagePath(int type, int id, bool thumb) { JMMImageType imageType = (JMMImageType)type; string path = ""; switch (imageType) { // 1 case JMMImageType.AniDB_Cover: SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(id); if (anime == null) { return(null); } path = anime.PosterPath; if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find AniDB_Cover image: {0}", anime.PosterPath); } break; // 2 case JMMImageType.AniDB_Character: AniDB_Character chr = RepoFactory.AniDB_Character.GetByCharID(id); if (chr == null) { return(null); } path = chr.GetPosterPath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find AniDB_Character image: {0}", chr.GetPosterPath()); } break; // 3 case JMMImageType.AniDB_Creator: AniDB_Seiyuu creator = RepoFactory.AniDB_Seiyuu.GetBySeiyuuID(id); if (creator == null) { return(null); } path = creator.GetPosterPath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find AniDB_Creator image: {0}", creator.GetPosterPath()); } break; // 4 case JMMImageType.TvDB_Banner: TvDB_ImageWideBanner wideBanner = RepoFactory.TvDB_ImageWideBanner.GetByID(id); if (wideBanner == null) { return(null); } path = wideBanner.GetFullImagePath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find TvDB_Banner image: {0}", wideBanner.GetFullImagePath()); } break; // 5 case JMMImageType.TvDB_Cover: TvDB_ImagePoster poster = RepoFactory.TvDB_ImagePoster.GetByID(id); if (poster == null) { return(null); } path = poster.GetFullImagePath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find TvDB_Cover image: {0}", poster.GetFullImagePath()); } break; // 6 case JMMImageType.TvDB_Episode: TvDB_Episode ep = RepoFactory.TvDB_Episode.GetByID(id); if (ep == null) { return(null); } path = ep.GetFullImagePath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find TvDB_Episode image: {0}", ep.GetFullImagePath()); } break; // 7 case JMMImageType.TvDB_FanArt: TvDB_ImageFanart fanart = RepoFactory.TvDB_ImageFanart.GetByID(id); if (fanart == null) { return(null); } if (thumb) { //ratio path = fanart.GetFullThumbnailPath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find TvDB_FanArt image: {0}", fanart.GetFullThumbnailPath()); } } else { path = fanart.GetFullImagePath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find TvDB_FanArt image: {0}", fanart.GetFullImagePath()); } } break; // 8 case JMMImageType.MovieDB_FanArt: MovieDB_Fanart mFanart = RepoFactory.MovieDB_Fanart.GetByID(id); if (mFanart == null) { return(null); } mFanart = RepoFactory.MovieDB_Fanart.GetByOnlineID(mFanart.URL); if (mFanart == null) { return(null); } path = mFanart.GetFullImagePath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find MovieDB_FanArt image: {0}", mFanart.GetFullImagePath()); } break; // 9 case JMMImageType.MovieDB_Poster: MovieDB_Poster mPoster = RepoFactory.MovieDB_Poster.GetByID(id); if (mPoster == null) { return(null); } mPoster = RepoFactory.MovieDB_Poster.GetByOnlineID(mPoster.URL); if (mPoster == null) { return(null); } path = mPoster.GetFullImagePath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find MovieDB_Poster image: {0}", mPoster.GetFullImagePath()); } break; // 10 case JMMImageType.Trakt_Poster: Trakt_ImagePoster tPoster = RepoFactory.Trakt_ImagePoster.GetByID(id); if (tPoster == null) { return(null); } path = tPoster.GetFullImagePath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find Trakt_Poster image: {0}", tPoster.GetFullImagePath()); } break; // 11 case JMMImageType.Trakt_Fanart: Trakt_ImageFanart tFanart = RepoFactory.Trakt_ImageFanart.GetByID(id); if (tFanart == null) { return(null); } path = tFanart.GetFullImagePath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find Trakt_Fanart image: {0}", tFanart.GetFullImagePath()); } break; // 12 + 16 case JMMImageType.Trakt_Episode: case JMMImageType.Trakt_WatchedEpisode: Trakt_Episode tEpisode = RepoFactory.Trakt_Episode.GetByID(id); if (tEpisode == null) { return(null); } path = tEpisode.GetFullImagePath(); if (Pri.LongPath.File.Exists(path)) { return(path); } else { path = ""; logger.Trace("Could not find Trakt_Episode image: {0}", tEpisode.GetFullImagePath()); } break; // 0, 13-15, 17+ default: path = ""; break; } return(path); }
public override void ProcessCommand() { logger.Info("Processing CommandRequest_DownloadImage: {0}", EntityID); string downloadURL = string.Empty; try { ImageDownloadRequest req = null; switch (EntityTypeEnum) { case ImageEntityType.TvDB_Episode: TvDB_Episode ep = Repo.Instance.TvDB_Episode.GetByID(EntityID); if (string.IsNullOrEmpty(ep?.Filename)) { logger.Warn($"TvDB Episode image failed to download: Can't get episode with ID: {EntityID}"); return; } req = new ImageDownloadRequest(EntityTypeEnum, ep, ForceDownload); break; case ImageEntityType.TvDB_FanArt: TvDB_ImageFanart fanart = Repo.Instance.TvDB_ImageFanart.GetByID(EntityID); if (string.IsNullOrEmpty(fanart?.BannerPath)) { logger.Warn($"TvDB Fanart image failed to download: Can't find valid fanart with ID: {EntityID}"); RemoveImageRecord(); return; } req = new ImageDownloadRequest(EntityTypeEnum, fanart, ForceDownload); break; case ImageEntityType.TvDB_Cover: TvDB_ImagePoster poster = Repo.Instance.TvDB_ImagePoster.GetByID(EntityID); if (string.IsNullOrEmpty(poster?.BannerPath)) { logger.Warn($"TvDB Poster image failed to download: Can't find valid poster with ID: {EntityID}"); RemoveImageRecord(); return; } req = new ImageDownloadRequest(EntityTypeEnum, poster, ForceDownload); break; case ImageEntityType.TvDB_Banner: TvDB_ImageWideBanner wideBanner = Repo.Instance.TvDB_ImageWideBanner.GetByID(EntityID); if (string.IsNullOrEmpty(wideBanner?.BannerPath)) { logger.Warn($"TvDB Banner image failed to download: Can't find valid banner with ID: {EntityID}"); RemoveImageRecord(); return; } req = new ImageDownloadRequest(EntityTypeEnum, wideBanner, ForceDownload); break; case ImageEntityType.MovieDB_Poster: MovieDB_Poster moviePoster = Repo.Instance.MovieDB_Poster.GetByID(EntityID); if (string.IsNullOrEmpty(moviePoster?.URL)) { logger.Warn($"MovieDB Poster image failed to download: Can't find valid poster with ID: {EntityID}"); RemoveImageRecord(); return; } req = new ImageDownloadRequest(EntityTypeEnum, moviePoster, ForceDownload); break; case ImageEntityType.MovieDB_FanArt: MovieDB_Fanart movieFanart = Repo.Instance.MovieDB_Fanart.GetByID(EntityID); if (string.IsNullOrEmpty(movieFanart?.URL)) { logger.Warn($"MovieDB Fanart image failed to download: Can't find valid fanart with ID: {EntityID}"); return; } req = new ImageDownloadRequest(EntityTypeEnum, movieFanart, ForceDownload); break; case ImageEntityType.AniDB_Cover: SVR_AniDB_Anime anime = Repo.Instance.AniDB_Anime.GetByAnimeID(EntityID); if (anime == null) { logger.Warn($"AniDB poster image failed to download: Can't find AniDB_Anime with ID: {EntityID}"); return; } AniDbImageRateLimiter.Instance.EnsureRate(); req = new ImageDownloadRequest(EntityTypeEnum, anime, ForceDownload); break; case ImageEntityType.AniDB_Character: AniDB_Character chr = Repo.Instance.AniDB_Character.GetByCharID(EntityID); if (chr == null) { logger.Warn($"AniDB Character image failed to download: Can't find AniDB Character with ID: {EntityID}"); return; } AniDbImageRateLimiter.Instance.EnsureRate(); req = new ImageDownloadRequest(EntityTypeEnum, chr, ForceDownload); break; case ImageEntityType.AniDB_Creator: AniDB_Seiyuu creator = Repo.Instance.AniDB_Seiyuu.GetBySeiyuuID(EntityID); if (creator == null) { logger.Warn($"AniDB Seiyuu image failed to download: Can't find Seiyuu with ID: {EntityID}"); return; } AniDbImageRateLimiter.Instance.EnsureRate(); req = new ImageDownloadRequest(EntityTypeEnum, creator, ForceDownload); break; } if (req == null) { logger.Warn($"Image failed to download: No implementation found for {EntityTypeEnum}"); return; } List <string> fileNames = new List <string>(); List <string> downloadURLs = new List <string>(); string fileNameTemp = GetFileName(req, false); string downloadURLTemp = GetFileURL(req, false); fileNames.Add(fileNameTemp); downloadURLs.Add(downloadURLTemp); if (req.ImageType == ImageEntityType.TvDB_FanArt) { fileNameTemp = GetFileName(req, true); downloadURLTemp = GetFileURL(req, true); fileNames.Add(fileNameTemp); downloadURLs.Add(downloadURLTemp); } for (int i = 0; i < fileNames.Count; i++) { try { string fileName = fileNames[i]; downloadURL = downloadURLs[i]; bool downloadImage = true; bool fileExists = File.Exists(fileName); bool imageValid = fileExists && Misc.IsImageValid(fileName); if (imageValid && !req.ForceDownload) { downloadImage = false; } if (!downloadImage) { continue; } string tempName = Path.Combine(ImageUtils.GetImagesTempFolder(), Path.GetFileName(fileName)); try { if (fileExists) { File.Delete(fileName); } } catch (Exception ex) { Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(ServerSettings.Instance.Culture); logger.Warn(Resources.Command_DeleteError, fileName, ex.Message); return; } // If this has any issues, it will throw an exception, so the catch below will handle it RecursivelyRetryDownload(downloadURL, ref tempName, 0, 5); // move the file to it's final location // check that the final folder exists string fullPath = Path.GetDirectoryName(fileName); if (!Directory.Exists(fullPath)) { Directory.CreateDirectory(fullPath); } File.Move(tempName, fileName); logger.Info($"Image downloaded: {fileName} from {downloadURL}"); } catch (WebException e) { logger.Warn("Error processing CommandRequest_DownloadImage: {0} ({1}) - {2}", downloadURL, EntityID, e.Message); // Remove the record if the image doesn't exist or can't download RemoveImageRecord(); } } } catch (Exception ex) { logger.Warn("Error processing CommandRequest_DownloadImage: {0} ({1}) - {2}", downloadURL, EntityID, ex.Message); } }
public static CL_AniDB_Character ToClient(this AniDB_Character character, string charType) { AniDB_Seiyuu seiyuu = character.GetSeiyuu(); return(character.ToClient(charType, seiyuu)); }
private static void FillSerie(Video p, SVR_AnimeSeries aser, Dictionary <SVR_AnimeEpisode, CL_AnimeEpisode_User> eps, SVR_AniDB_Anime anidb, CL_AnimeSeries_User ser, int userid) { using (ISession session = DatabaseFactory.SessionFactory.OpenSession()) { ISessionWrapper sessionWrapper = session.Wrap(); CL_AniDB_Anime anime = ser.AniDBAnime.AniDBAnime; p.Id = ser.AnimeSeriesID; p.AnimeType = AnimeTypes.AnimeSerie.ToString(); if (ser.AniDBAnime.AniDBAnime.Restricted > 0) { p.ContentRating = "R"; } p.Title = aser.GetSeriesName(); p.Summary = SummaryFromAnimeContract(ser); p.Type = "show"; p.AirDate = DateTime.MinValue; TextInfo textInfo = new CultureInfo("en-US", false).TextInfo; if (anime.GetAllTags().Count > 0) { p.Genres = new List <Tag>(); anime.GetAllTags() .ToList() .ForEach(a => p.Genres.Add(new Tag { Value = textInfo.ToTitleCase(a.Trim()) })); } //p.OriginalTitle if (anime.AirDate.HasValue) { p.AirDate = anime.AirDate.Value; p.OriginallyAvailableAt = anime.AirDate.Value.ToPlexDate(); p.Year = anime.AirDate.Value.Year; } p.LeafCount = anime.EpisodeCount; //p.ChildCount = p.LeafCount; p.ViewedLeafCount = ser.WatchedEpisodeCount; p.Rating = (int)Math.Round((anime.Rating / 100D), 1); AniDB_Vote vote = RepoFactory.AniDB_Vote.GetByEntityAndType(anidb.AnimeID, AniDBVoteType.Anime) ?? RepoFactory.AniDB_Vote.GetByEntityAndType(anidb.AnimeID, AniDBVoteType.AnimeTemp); if (vote != null) { p.UserRating = (int)(vote.VoteValue / 100D); } List <CrossRef_AniDB_TvDBV2> ls = ser.CrossRefAniDBTvDBV2; if (ls != null && ls.Count > 0) { foreach (CrossRef_AniDB_TvDBV2 c in ls) { if (c.TvDBSeasonNumber == 0) { continue; } p.Season = c.TvDBSeasonNumber.ToString(); p.Index = c.TvDBSeasonNumber; } } p.Thumb = p.ParentThumb = anime.DefaultImagePoster.GenPoster(null); p.Art = anime?.DefaultImageFanart?.GenArt(null); if (anime?.Fanarts != null) { p.Fanarts = new List <Contract_ImageDetails>(); anime.Fanarts.ForEach( a => p.Fanarts.Add(new Contract_ImageDetails { ImageID = a.AniDB_Anime_DefaultImageID, ImageType = a.ImageType })); } if (anime?.Banners != null) { p.Banners = new List <Contract_ImageDetails>(); anime.Banners.ForEach( a => p.Banners.Add(new Contract_ImageDetails { ImageID = a.AniDB_Anime_DefaultImageID, ImageType = a.ImageType })); } if (eps != null) { List <EpisodeType> types = eps.Keys.Where(a => a.AniDB_Episode != null) .Select(a => a.EpisodeTypeEnum).Distinct().ToList(); p.ChildCount = types.Count > 1 ? types.Count : eps.Keys.Count; } p.Roles = new List <RoleTag>(); //TODO Character implementation is limited in JMM, One Character, could have more than one Seiyuu if (anime.Characters != null) { foreach (CL_AniDB_Character c in anime.Characters) { string ch = c?.CharName; AniDB_Seiyuu seiyuu = c?.Seiyuu; if (String.IsNullOrEmpty(ch)) { continue; } RoleTag t = new RoleTag { Value = seiyuu?.SeiyuuName }; if (seiyuu != null) { t.TagPicture = ConstructSeiyuuImage(null, seiyuu.AniDB_SeiyuuID); } t.Role = ch; t.RoleDescription = c?.CharDescription; t.RolePicture = ConstructCharacterImage(null, c.CharID); p.Roles.Add(t); } } p.Titles = new List <AnimeTitle>(); foreach (AniDB_Anime_Title title in anidb.GetTitles()) { p.Titles.Add( new AnimeTitle { Language = title.Language, Title = title.Title, Type = title.TitleType }); } } }
private void SetActorProperties(CL_AniDB_Character aniChar) { if (dummyMainActorExists != null) { dummyMainActorExists.Visible = false; } if (dummySeriesExists != null) { dummySeriesExists.Visible = false; } string imagePath = GUIGraphicsContext.Skin + @"\Media\MyAnime3\anime3_blankchar.png"; // get the actor from the character AniDB_Seiyuu actor = aniChar.Seiyuu; if (actor == null) { try { Image theImage = Image.FromFile(imagePath); float width = theImage.PhysicalDimension.Width; float height = theImage.PhysicalDimension.Height; if (dummyPosterMainActor != null) { dummyPosterMainActor.Visible = height > width; } } // ReSharper disable EmptyGeneralCatchClause catch { } // ReSharper restore EmptyGeneralCatchClause SetGUIProperty(GuiProperty.Character_PosterMainActor, imagePath); ClearGUIProperty(GuiProperty.Actor_Name); } else { MainWindow.GlobalSeiyuuID = actor.AniDB_SeiyuuID; if (dummyMainActorExists != null) { dummyMainActorExists.Visible = true; } SetGUIProperty(GuiProperty.Actor_Name, actor.SeiyuuName); if (File.Exists(actor.GetPosterPath())) { imagePath = actor.GetPosterPath(); } try { Image theImage = Image.FromFile(imagePath); float width = theImage.PhysicalDimension.Width; float height = theImage.PhysicalDimension.Height; if (dummyPosterMainActor != null) { dummyPosterMainActor.Visible = height > width; } } // ReSharper disable EmptyGeneralCatchClause catch { } // ReSharper restore EmptyGeneralCatchClause SetGUIProperty(GuiProperty.Character_PosterMainActor, imagePath); } }
private void ShowCharacters() { GUIControl.ClearControl(GetID, m_Facade.GetID); BaseConfig.MyAnimeLog.Write("ActorWindow.GlobalSeiyuuID = {0}", MainWindow.GlobalSeiyuuID.ToString(CultureInfo.InvariantCulture)); charList.Clear(); seiyuu = null; seiyuu = VM_ShokoServer.Instance.ShokoServices.GetAniDBSeiyuu(MainWindow.GlobalSeiyuuID); if (seiyuu == null) { ClearGUIProperty(GuiProperty.Actors_Actor_Name); ClearGUIProperty(GuiProperty.Actors_Actor_Poster); ClearGUIProperty(GuiProperty.Actors_Character_CharacterCount); return; } SetGUIProperty(GuiProperty.Actors_Actor_Name, seiyuu.SeiyuuName); string imagePath = GUIGraphicsContext.Skin + @"\Media\MyAnime3\anime3_blankchar.png"; if (File.Exists(seiyuu.GetPosterPath())) { imagePath = seiyuu.GetPosterPath(); } SetGUIProperty(GuiProperty.Actors_Actor_Poster, imagePath); charList = VM_ShokoServer.Instance.ShokoServices.GetCharactersForSeiyuu(MainWindow.GlobalSeiyuuID); bool missingImages = false; string imagePathNoPicture = GUIGraphicsContext.Skin + @"\Media\MyAnime3\anime3_blankchar.png"; foreach (CL_AniDB_Character aniChar in charList) { imagePath = imagePathNoPicture; if (!string.IsNullOrEmpty(aniChar.GetPosterPath()) && File.Exists(aniChar.GetPosterPath())) { imagePath = aniChar.GetPosterPath(); } else { missingImages = true; } GUIListItem item = new GUIListItem(string.Empty); item.IconImage = item.IconImageBig = imagePath; item.TVTag = aniChar; item.OnItemSelected += onFacadeItemSelected; m_Facade.Add(item); BaseConfig.MyAnimeLog.Write(aniChar.ToString()); } if (dummyCharactersExist != null) { dummyCharactersExist.Visible = charList.Count > 0; } SetGUIProperty(GuiProperty.Actors_Character_CharacterCount, charList.Count.ToString(Globals.Culture)); if (m_Facade.Count > 0) { m_Facade.SelectedListItemIndex = 0; CL_AniDB_Character aniChar = m_Facade.SelectedListItem.TVTag as CL_AniDB_Character; if (aniChar != null) { SetCharacterProperties(aniChar); } } if (missingImages) { GetMissingInfo(); } }
public static Video GenerateFromAnimeGroup(SVR_AnimeGroup grp, int userid, List <SVR_AnimeSeries> allSeries, ISessionWrapper session = null) { CL_AnimeGroup_User cgrp = grp.GetUserContract(userid); int subgrpcnt = grp.GetAllChildGroups().Count; if ((cgrp.Stat_SeriesCount == 1) && (subgrpcnt == 0)) { SVR_AnimeSeries ser = ShokoServiceImplementation.GetSeriesForGroup(grp.AnimeGroupID, allSeries); CL_AnimeSeries_User cserie = ser?.GetUserContract(userid); if (cserie == null) { return(null); } Video v = GenerateFromSeries(cserie, ser, ser.GetAnime(), userid, session); v.AirDate = ser.AirDate; v.UpdatedAt = ser.LatestEpisodeAirDate.HasValue ? ser.LatestEpisodeAirDate.Value.ToUnixTime() : null; v.Group = cgrp; return(v); } else { SVR_AnimeSeries ser = grp.DefaultAnimeSeriesID.HasValue ? allSeries.FirstOrDefault(a => a.AnimeSeriesID == grp.DefaultAnimeSeriesID.Value) : allSeries.Find(a => a.AirDate != DateTime.MinValue); if (ser == null && allSeries.Count > 0) { ser = allSeries[0]; } CL_AnimeSeries_User cserie = ser?.GetUserContract(userid); Video v = FromGroup(cgrp, cserie, userid, subgrpcnt); v.Group = cgrp; v.AirDate = cgrp.Stat_AirDate_Min ?? DateTime.MinValue; v.UpdatedAt = cgrp.LatestEpisodeAirDate?.ToUnixTime(); v.Rating = (int)Math.Round((grp.AniDBRating / 100), 1); List <Tag> newTags = new List <Tag>(); foreach (AniDB_Tag tag in grp.Tags) { Tag newTag = new Tag(); TextInfo textInfo = new CultureInfo("en-US", false).TextInfo; newTag.Value = textInfo.ToTitleCase(tag.TagName.Trim()); if (!newTags.Contains(newTag)) { newTags.Add(newTag); } } v.Genres = newTags; if (ser == null) { return(v); } List <AnimeTitle> newTitles = ser.GetAnime() .GetTitles() .Select(title => new AnimeTitle { Title = title.Title, Language = title.Language, Type = title.TitleType }) .ToList(); v.Titles = newTitles; v.Roles = new List <RoleTag>(); //TODO Character implementation is limited in JMM, One Character, could have more than one Seiyuu if (ser.GetAnime()?.Contract?.AniDBAnime?.Characters != null) { foreach (CL_AniDB_Character c in ser.GetAnime().Contract.AniDBAnime.Characters) { string ch = c?.CharName; AniDB_Seiyuu seiyuu = c?.Seiyuu; if (String.IsNullOrEmpty(ch)) { continue; } RoleTag t = new RoleTag { Value = seiyuu?.SeiyuuName }; if (seiyuu != null) { t.TagPicture = ConstructSeiyuuImage(null, seiyuu.AniDB_SeiyuuID); } t.Role = ch; t.RoleDescription = c?.CharDescription; t.RolePicture = ConstructCharacterImage(null, c.CharID); v.Roles.Add(t); } } if (cserie?.AniDBAnime?.AniDBAnime?.Fanarts != null) { v.Fanarts = new List <Contract_ImageDetails>(); cserie?.AniDBAnime?.AniDBAnime?.Fanarts.ForEach( a => v.Fanarts.Add(new Contract_ImageDetails { ImageID = a.AniDB_Anime_DefaultImageID, ImageType = a.ImageType })); } if (cserie?.AniDBAnime?.AniDBAnime?.Banners == null) { return(v); } v.Banners = new List <Contract_ImageDetails>(); cserie?.AniDBAnime?.AniDBAnime?.Banners.ForEach( a => v.Banners.Add(new Contract_ImageDetails { ImageID = a.AniDB_Anime_DefaultImageID, ImageType = a.ImageType })); return(v); } }