/// <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)));; }
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('.')))); }
public ActionResult DeleteConfirmed(int id) { ArtworkType artworkType = db.ArtworkTypes.Find(id); db.ArtworkTypes.Remove(artworkType); db.SaveChanges(); return(RedirectToAction("Index")); }
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); }
private static PictureType GetPictureType(ArtworkType artworkType) { var pictureType = default(PictureType); if (ArtworkTypeMapping.TryGetValue(artworkType, out pictureType)) { return(pictureType); } return(PictureType.NotAPicture); }
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)); }
public static string GetCachePath(Int32 EntityId, ArtworkType Type) { string SavePath = CachePath + EntityId.ToString() + "\\" + Type.ToString() + "\\"; if (!Directory.Exists(SavePath)) { Directory.CreateDirectory(SavePath); } return SavePath; }
public void Reset(string path, ArtworkType type) { if (string.IsNullOrEmpty(Path.GetPathRoot(path))) { return; } var directoryName = Path.GetDirectoryName(path); this.Store.TryRemove(directoryName, type); }
public ActionResult Create([Bind(Include = "Id,Name")] ArtworkType artworkType) { if (ModelState.IsValid) { db.ArtworkTypes.Add(artworkType); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(artworkType)); }
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; }
// 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)); }
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)); }
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)); }
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); }
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()); }
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)); }
public string GetOrAdd(string path, ArtworkType type, Func <string> factory) { var key = new Key(path, type); return(this.Store.GetOrAdd(key, factory)); }
public bool TryGetValue(string path, ArtworkType type, out string fileName) { var key = new Key(path, type); return(this.Store.TryGetValue(key, out fileName)); }
public Key(string path, ArtworkType type) { this.Path = path; this.Type = type; }
public bool TryRemove(string path, ArtworkType type) { var key = new Key(path, type); return(this.Store.TryRemove(key)); }
public void Add(string path, ArtworkType type, string fileName) { var key = new Key(path, type); this.Store.Add(key, fileName); }
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)); }
public void UpdateArtworkType(ArtworkType artworkType) { _artworkTypeRepository.Update(artworkType); }
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); }
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))); }