Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
 public void DownloadCharacterImagesForSeiyuu(AniDB_Seiyuu seiyuu)
 {
     if (downloadCharacterImagesForSeiyuuWorker.IsBusy)
     {
         return;
     }
     downloadCharacterImagesForSeiyuuWorker.RunWorkerAsync(seiyuu);
 }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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));
        }
Beispiel #7
0
 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);
     }
 }
Beispiel #8
0
 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);
            }
        }
Beispiel #11
0
        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);
            }
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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));
        }
Beispiel #14
0
 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();
             }
         }
     }
 }
Beispiel #15
0
        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());
        }
Beispiel #16
0
        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);
            }
        }
Beispiel #17
0
        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);
        }
Beispiel #18
0
        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;
            }
        }
Beispiel #19
0
        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());
            }
        }
Beispiel #21
0
        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("");
            }
        }
Beispiel #22
0
        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("");
            }
        }
Beispiel #24
0
        /// <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);
            }
        }
Beispiel #26
0
        public static CL_AniDB_Character ToClient(this AniDB_Character character, string charType)
        {
            AniDB_Seiyuu seiyuu = character.GetSeiyuu();

            return(character.ToClient(charType, seiyuu));
        }
Beispiel #27
0
        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
                    });
                }
            }
        }
Beispiel #28
0
        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);
            }
        }
Beispiel #29
0
        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();
            }
        }
Beispiel #30
0
        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);
            }
        }