Example #1
0
        /// <summary>
        /// Gets the local filename of an image from a Trakt URL
        /// </summary>
        /// <param name="url">The online URL of the trakt image</param>
        /// <param name="type">The Type of image to get</param>
        /// <returns>Retruns the local filename of the image</returns>
        public static string LocalImageFilename(this string url, ArtworkType type)
        {
            if (string.IsNullOrEmpty(url))
            {
                return(string.Empty);
            }

            string folder = string.Empty;

            // clean image url
            if (url.Contains("jpg?") && !url.Contains("gravatar"))
            {
                url = url.Replace("jpg?", string.Empty) + ".jpg";
            }

            switch (type)
            {
            case ArtworkType.Avatar:
                folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Avatars");
                break;

            case ArtworkType.Headshot:
                folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\People");
                break;

            case ArtworkType.SeasonPoster:
                folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Seasons");
                break;

            case ArtworkType.MoviePoster:
                url    = url.ToSmallPoster();
                folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Movies\Posters");
                break;

            case ArtworkType.MovieFanart:
                url    = url.ToSmallFanart();
                folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Movies\Fanart");
                break;

            case ArtworkType.ShowPoster:
                url    = url.ToSmallPoster();
                folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Posters");
                break;

            case ArtworkType.ShowBanner:
                folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Banners");
                break;

            case ArtworkType.ShowFanart:
                url    = url.ToSmallFanart();
                folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Fanart");
                break;

            case ArtworkType.EpisodeImage:
                folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Episodes");
                break;
            }

            return(Path.Combine(folder, Path.GetFileName(new Uri(url).LocalPath)));;
        }
Example #2
0
        public string GetFileName(string path, string extension, ArtworkType type)
        {
            if (string.IsNullOrEmpty(Path.GetPathRoot(path)))
            {
                return(null);
            }
            var directoryName = Path.GetDirectoryName(path);
            var names         = default(string[]);

            switch (type)
            {
            case ArtworkType.FrontCover:
                names = this.Front;
                break;

            case ArtworkType.BackCover:
                names = this.Back;
                break;

            default:
                throw new NotImplementedException();
            }
            var name = names.FirstOrDefault();

            if (string.IsNullOrEmpty(name))
            {
                name = "cover";
            }
            return(Path.Combine(directoryName, string.Concat(name, ".", extension.TrimStart('.'))));
        }
Example #3
0
        public ActionResult DeleteConfirmed(int id)
        {
            ArtworkType artworkType = db.ArtworkTypes.Find(id);

            db.ArtworkTypes.Remove(artworkType);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Example #4
0
        public string Find(string path, ArtworkType type)
        {
            if (string.IsNullOrEmpty(Path.GetPathRoot(path)))
            {
                return(null);
            }
            lock (SyncRoot)
            {
                var directoryName = Path.GetDirectoryName(path);
                {
                    var fileName = default(string);
                    if (this.Store.TryGetValue(directoryName, type, out fileName))
                    {
                        return(fileName);
                    }
                }
                var names = default(string[]);
                switch (type)
                {
                case ArtworkType.FrontCover:
                    names = this.Front;
                    break;

                case ArtworkType.BackCover:
                    names = this.Back;
                    break;

                default:
                    throw new NotImplementedException();
                }
                try
                {
                    foreach (var name in names)
                    {
                        foreach (var fileName in FileSystemHelper.EnumerateFiles(directoryName, string.Format("{0}.*", name), FileSystemHelper.SearchOption.None))
                        {
                            var info = new FileInfo(fileName);
                            if (!EXTENSIONS.Contains(info.Extension, StringComparer.OrdinalIgnoreCase))
                            {
                                continue;
                            }
                            if (info.Length <= this.MaxSize)
                            {
                                this.Store.Add(directoryName, type, fileName);
                                return(fileName);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    Logger.Write(this, LogLevel.Warn, "Error locating artwork of type {0} in {1}: {2}", Enum.GetName(typeof(ArtworkType), type), path, e.Message);
                }
                this.Store.Add(directoryName, type, null);
            }
            return(null);
        }
Example #5
0
        private static PictureType GetPictureType(ArtworkType artworkType)
        {
            var pictureType = default(PictureType);

            if (ArtworkTypeMapping.TryGetValue(artworkType, out pictureType))
            {
                return(pictureType);
            }
            return(PictureType.NotAPicture);
        }
Example #6
0
 public ActionResult Edit([Bind(Include = "Id,Name")] ArtworkType artworkType)
 {
     if (ModelState.IsValid)
     {
         db.Entry(artworkType).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(artworkType));
 }
Example #7
0
        public static string GetCachePath(Int32 EntityId, ArtworkType Type)
        {
            string SavePath = CachePath + EntityId.ToString() + "\\" + Type.ToString() + "\\";
            if (!Directory.Exists(SavePath))
            {
                Directory.CreateDirectory(SavePath);
            }

            return SavePath;
        }
Example #8
0
        public void Reset(string path, ArtworkType type)
        {
            if (string.IsNullOrEmpty(Path.GetPathRoot(path)))
            {
                return;
            }
            var directoryName = Path.GetDirectoryName(path);

            this.Store.TryRemove(directoryName, type);
        }
Example #9
0
        public ActionResult Create([Bind(Include = "Id,Name")] ArtworkType artworkType)
        {
            if (ModelState.IsValid)
            {
                db.ArtworkTypes.Add(artworkType);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(artworkType));
        }
Example #10
0
        public static string SaveArtwork(Int32 EntityId, string Uri, ArtworkType Type)
        {
            string SavePath = GetCachePath(EntityId, Type);

            string Filename = Path.GetFileName(Uri);
            Uri = BannerRoot + Uri;

            WebClient webClient = new WebClient();
            webClient.DownloadFile(Uri, SavePath + Filename);

            return SavePath + Filename;
        }
Example #11
0
        // GET: ArtworkTypes/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ArtworkType artworkType = db.ArtworkTypes.Find(id);

            if (artworkType == null)
            {
                return(HttpNotFound());
            }
            return(View(artworkType));
        }
Example #12
0
        public string Find(PlaylistItem playlistItem, ArtworkType type)
        {
            var result = playlistItem.MetaDatas.FirstOrDefault(
                metaDataItem =>
                metaDataItem.Type == MetaDataItemType.Image &&
                string.Equals(metaDataItem.Name, Enum.GetName(typeof(ArtworkType), type), StringComparison.OrdinalIgnoreCase) &&
                File.Exists(metaDataItem.Value)
                );

            if (result != null)
            {
                return(result.Value);
            }
            return(this.Find(playlistItem.FileName, type));
        }
Example #13
0
        public async Task <string> Find(IFileData fileData, ArtworkType type)
        {
            var fileName = await this.OnDemandMetaDataProvider.GetMetaData(
                fileData,
                new OnDemandMetaDataRequest(
                    Enum.GetName(typeof(ArtworkType), type),
                    MetaDataItemType.Image,
                    false
                    )
                ).ConfigureAwait(false);

            if (!string.IsNullOrEmpty(fileName) && File.Exists(fileName))
            {
                return(fileName);
            }
            return(this.Find(fileData.FileName, type));
        }
Example #14
0
        public bool CanDeleteArtworkType(ArtworkType artworkType, out List <string> reasons)
        {
            reasons = new List <string>();
            if (artworkType.Name == "漫画")
            {
                reasons.Add("cartoon can not be deleted!");
                return(false);
            }

            var artworks = _artworkRepository.Table.Where(i => i.ArtworkType.Id == artworkType.Id);

            if (artworks.Any())
            {
                reasons.Add("该分类已被使用,不能删除!");
                return(false);
            }

            return(true);
        }
Example #15
0
        private static string GetPictureId(File file, IPicture picture, ArtworkType type)
        {
            //Year + (Album | Checksum) + Type
            var hashCode = default(long);

            unchecked
            {
                if (file.Tag.Year != 0)
                {
                    hashCode = (hashCode * 29) + file.Tag.Year.GetHashCode();
                }
                if (!string.IsNullOrEmpty(file.Tag.Album))
                {
                    hashCode += file.Tag.Album.ToLower().GetHashCode();
                }
                else
                {
                    hashCode += picture.Data.Checksum;
                }
                hashCode = (hashCode * 29) + type.GetHashCode();
            }
            return(Math.Abs(hashCode).ToString());
        }
Example #16
0
 public void AddArtworkType(ArtworkType artworkType)
 {
     _artworkTypeRepository.Insert(artworkType);
 }
        private static void DownloadArtwork(string url, Game game, ArtworkType artType)
        {
            WebClient webClient = new WebClient ();

            webClient.DownloadDataCompleted += (sender, e) => {
                string filename = Path.GetRandomFileName() + Path.GetExtension(url);
                string path = Path.Combine(ARTWORK_FOLDER, filename);
                File.WriteAllBytes(path, e.Result);

                if(artType == ArtworkType.Banner)
                    game.bannerArtPath = path;
                else if (artType == ArtworkType.BoxArt)
                    game.boxArtPath= path;
            };

            webClient.DownloadDataAsync (new Uri (url));
        }
Example #18
0
            public string GetOrAdd(string path, ArtworkType type, Func <string> factory)
            {
                var key = new Key(path, type);

                return(this.Store.GetOrAdd(key, factory));
            }
Example #19
0
            public bool TryGetValue(string path, ArtworkType type, out string fileName)
            {
                var key = new Key(path, type);

                return(this.Store.TryGetValue(key, out fileName));
            }
Example #20
0
 public Key(string path, ArtworkType type)
 {
     this.Path = path;
     this.Type = type;
 }
Example #21
0
            public bool TryRemove(string path, ArtworkType type)
            {
                var key = new Key(path, type);

                return(this.Store.TryRemove(key));
            }
Example #22
0
            public void Add(string path, ArtworkType type, string fileName)
            {
                var key = new Key(path, type);

                this.Store.Add(key, fileName);
            }
Example #23
0
 public bool DeleteArtworkType(ArtworkType artworkType)
 {
     _artworkTypeRepository.Delete(artworkType);
     return(true);
 }
        /// <summary>
        /// Gets the local filename of an image from a Trakt URL
        /// </summary>
        /// <param name="url">The online URL of the trakt image</param>
        /// <param name="type">The Type of image to get</param>
        /// <returns>Retruns the local filename of the image</returns>
        public static string LocalImageFilename(this TraktImage image, ArtworkType type)
        {
            if (image == null) return string.Empty;

            string filename = string.Empty;
            string folder = string.Empty;

            switch (type)
            {
                case ArtworkType.Avatar:
                    filename = image.FullSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Avatars");
                    break;

                case ArtworkType.PersonHeadshot:
                    filename = image.ThumbSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\People");
                    break;

                case ArtworkType.PersonFanart:
                    filename = TraktSettings.DownloadFullSizeFanart ? image.FullSize.ToClearUrl() : image.MediumSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\People\Fanart");
                    break;

                case ArtworkType.SeasonPoster:
                    filename = image.ThumbSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Seasons");
                    break;

                case ArtworkType.MoviePoster:
                    filename = image.ThumbSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Movies\Posters");
                    break;

                case ArtworkType.MovieFanart:
                    filename = TraktSettings.DownloadFullSizeFanart ? image.FullSize.ToClearUrl() : image.MediumSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Movies\Fanart");
                    break;

                case ArtworkType.MovieBanner:
                    filename = image.FullSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Movies\Banners");
                    break;

                case ArtworkType.ShowPoster:
                    filename = image.ThumbSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Posters");
                    break;

                case ArtworkType.ShowBanner:
                    filename = image.FullSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Banners");
                    break;

                case ArtworkType.ShowFanart:
                    filename = TraktSettings.DownloadFullSizeFanart ? image.FullSize.ToClearUrl() : image.MediumSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Fanart");
                    break;

                case ArtworkType.EpisodeImage:
                    filename = image.ThumbSize.ToClearUrl();
                    folder = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Episodes");
                    break;
            }

            if (string.IsNullOrEmpty(filename))
                return null;

            return Path.Combine(folder, Path.GetFileName(new Uri(filename).LocalPath));
        }
Example #25
0
 public void UpdateArtworkType(ArtworkType artworkType)
 {
     _artworkTypeRepository.Update(artworkType);
 }
Example #26
0
        private static Task <string> ImportImage(File file, IPicture picture, ArtworkType type, bool overwrite)
        {
            var id = GetPictureId(file, picture, type);

            return(ImportImage(picture, id, overwrite));
        }
        protected override void Seed(ArtDbContext context)
        {
            var professionsString = "油画家 版画家 国画家 漫画家 水墨画家 当代艺术家 摄影家";
            var professions       = professionsString.Split(' ');

            for (var i = 0; i < professions.Length; i++)
            {
                var prof = new Profession
                {
                    Id   = i + 1,
                    Name = professions[i]
                };
                context.Set <Profession>().Add(prof);
            }
            ;

            var genresString = "风景、肖像、海景、静物、自然、人物、运动、流行文化、文本、个人记忆、怀旧、建筑、政治、动物、叙事、幽默、花卉、其他";
            var genres       = genresString.Split('、');

            for (var i = 0; i < genres.Length; i++)
            {
                var genre = new Genre
                {
                    Id   = i + 1,
                    Name = genres[i]
                };
                context.Set <Genre>().Add(genre);
            }
            ;

            context.SaveChanges();

            var artist = new Artist()
            {
                Name          = "zhangheng",
                Birthday      = DateTime.Now.AddYears(-10),
                School        = "Peiking University",
                Gender        = Genders.Female,
                PrizeItems    = "aaaa",
                Degree        = Degree.博士,
                Professions   = new Profession[] { context.Set <Profession>().First() },
                SkilledGenres = new Genre[] { context.Set <Genre>().First() }
            };

            context.Set <Artist>().Add(artist);


            var user = new AdminUser
            {
                Name      = "liu zhiwei",
                LoginName = "lzw",
                Password  = "******",
                Position  = "PM",
                Contact   = "13866666666"
            };

            context.Set <AdminUser>().Add(user);


            var typeName    = "artworkType1";
            var artworkType = new ArtworkType()
            {
                Name = "artworkType1"
            };

            artworkType.ArtMaterials = new List <ArtMaterial>();
            artworkType.ArtMaterials.Add(new ArtMaterial
            {
                Name = typeName + "-material-1"
            });
            artworkType.ArtShapes = new List <ArtShape>();
            artworkType.ArtShapes.Add(new ArtShape
            {
                Name = typeName + "-shape-1"
            });
            artworkType.ArtShapes.Add(new ArtShape
            {
                Name = typeName + "-shape-2"
            });
            context.Set <ArtworkType>().Add(artworkType);


            context.SaveChanges();

            var at = context.Set <ArtworkType>().First();

            at.ArtMaterials.Add(new ArtMaterial
            {
                Name = "dddd"
            });
            context.SaveChanges();


            var artPlaces = "卧室、餐厅、客厅、办公室、书房、酒吧".Split('、').Select(i => new ArtPlace {
                Name = i
            }).ToList();                                                                                     // new List<ArtPlace>() { new ArtPlace { Name = "卧室" }, new ArtPlace { Name = "客厅" }, new ArtPlace { Name = "餐厅" }, new ArtPlace { Name = "办公室" } };

            context.Set <ArtPlace>().AddRange(artPlaces);

            var artPeriods = new List <ArtPeriod>()
            {
                new ArtPeriod {
                    Name = "50 n"
                }, new ArtPeriod {
                    Name = "60 n"
                }, new ArtPeriod {
                    Name = "70 n"
                }
            };

            context.Set <ArtPeriod>().AddRange(artPeriods);

            var auctionTypes = new List <AuctionType>()
            {
                new AuctionType {
                    Name = "一口价 "
                }, new AuctionType {
                    Name = "竞价拍-上升价格拍"
                }, new AuctionType {
                    Name = "竞价拍-向下价格拍 "
                }
            };

            context.Set <AuctionType>().AddRange(auctionTypes);

            context.SaveChanges();

            var artwork = new Artwork();

            artwork.Name                = "蒙娜丽莎的微笑";
            artwork.Artist              = context.Set <Artist>().First();
            artwork.ArtMaterial         = context.Set <ArtMaterial>().First();
            artwork.ArtPeriod           = context.Set <ArtPeriod>().First();
            artwork.ArtworkType         = context.Set <ArtworkType>().First();
            artwork.AuctionType         = context.Set <AuctionType>().First();
            artwork.Genre               = context.Set <Genre>().First();
            artwork.AuctionPrice        = 998;
            artwork.CreationInspiration = "apple";
            artwork.Institution         = "guowuyuan";
            artwork.SuitableArtPlaces   = new List <ArtPlace> {
                context.Set <ArtPlace>().First()
            };
            artwork.Size          = "80cm * 90cm";
            artwork.StartDateTime = DateTime.Now.AddDays(-3);
            artwork.EndDateTime   = DateTime.Now.AddDays(3);
            context.Set <Artwork>().Add(artwork);

            var customer = new Customer()
            {
                Name = "lifengbao"
            };

            context.Set <Customer>().Add(customer);

            var adminUser = new AdminUser
            {
                LoginName = "a",
                Name      = "a"
            };

            context.Set <AdminUser>().Add(adminUser);
            context.SaveChanges();

            var notice = new SystemNotice();

            notice.Title      = "aaaaa";
            notice.Content    = "bbbbbbbbbbbbbbbbbb";
            notice.AdminUser  = context.Set <AdminUser>().First();
            notice.FADateTime = DateTime.Now;
            context.Set <SystemNotice>().Add(notice);

            var comment = new Comment();

            comment.Text       = "好漂亮的油画哦";
            comment.Artwork    = context.Set <Artwork>().First();
            comment.Customer   = context.Set <Customer>().First();
            comment.State      = CommentState.Approving;
            comment.FADateTime = DateTime.Now;
            context.Set <Comment>().Add(comment);
            context.SaveChanges();
            //base.Seed(context);
        }
Example #28
0
 private async Task <string> ImportImage(Tag tag, IPicture picture, ArtworkType type, bool overwrite)
 {
     return(await this.ImportImage(picture, picture.Data.Checksum.ToString(), overwrite).ConfigureAwait(false));
 }
        /// <summary>
        /// Gets the local filename of an image from a Trakt URL
        /// </summary>
        /// <param name="url">The online URL of the trakt image</param>
        /// <param name="type">The Type of image to get</param>
        /// <returns>Retruns the local filename of the image</returns>
        public static string LocalImageFilename(this TraktImage image, ArtworkType type)
        {
            if (image == null)
            {
                return(string.Empty);
            }

            string filename = string.Empty;
            string folder   = string.Empty;

            switch (type)
            {
            case ArtworkType.Avatar:
                filename = image.FullSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Avatars");
                break;

            case ArtworkType.PersonHeadshot:
                filename = image.ThumbSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\People");
                break;

            case ArtworkType.PersonFanart:
                filename = TraktSettings.DownloadFullSizeFanart ? image.FullSize.ToClearUrl() : image.MediumSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\People\Fanart");
                break;

            case ArtworkType.SeasonPoster:
                filename = image.ThumbSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Seasons");
                break;

            case ArtworkType.MoviePoster:
                filename = image.ThumbSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Movies\Posters");
                break;

            case ArtworkType.MovieFanart:
                filename = TraktSettings.DownloadFullSizeFanart ? image.FullSize.ToClearUrl() : image.MediumSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Movies\Fanart");
                break;

            case ArtworkType.MovieBanner:
                filename = image.FullSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Movies\Banners");
                break;

            case ArtworkType.ShowPoster:
                filename = image.ThumbSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Posters");
                break;

            case ArtworkType.ShowBanner:
                filename = image.FullSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Banners");
                break;

            case ArtworkType.ShowFanart:
                filename = TraktSettings.DownloadFullSizeFanart ? image.FullSize.ToClearUrl() : image.MediumSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Shows\Fanart");
                break;

            case ArtworkType.EpisodeImage:
                filename = image.ThumbSize.ToClearUrl();
                folder   = Config.GetSubFolder(Config.Dir.Thumbs, @"Trakt\Episodes");
                break;
            }

            if (string.IsNullOrEmpty(filename))
            {
                return(null);
            }

            return(Path.Combine(folder, Path.GetFileName(new Uri(filename).LocalPath)));
        }