123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.Composition;
- using System.IO;
- using System.Linq;
- using System.Threading.Tasks;
- using MediaBrowser.Controller.Events;
- using MediaBrowser.Model.Entities;
- namespace MediaBrowser.Controller.Providers
- {
- [Export(typeof(BaseMetadataProvider))]
- public class ImageFromMediaLocationProvider : BaseMetadataProvider
- {
- public override bool Supports(BaseEntity item)
- {
- return item is BaseItem;
- }
-
- public override Task Fetch(BaseEntity item, ItemResolveEventArgs args)
- {
- return Task.Run(() =>
- {
- if (args.IsFolder)
- {
- PopulateImages(item as BaseItem, args);
- }
- });
- }
- /// <summary>
- /// Fills in image paths based on files win the folder
- /// </summary>
- private void PopulateImages(BaseItem item, ItemResolveEventArgs args)
- {
- List<string> backdropFiles = new List<string>();
- foreach (KeyValuePair<string, FileAttributes> file in args.FileSystemChildren)
- {
- if (file.Value.HasFlag(FileAttributes.Directory))
- {
- continue;
- }
- string filePath = file.Key;
- string ext = Path.GetExtension(filePath);
- // Only support png and jpg files
- if (!ext.EndsWith("png", StringComparison.OrdinalIgnoreCase) && !ext.EndsWith("jpg", StringComparison.OrdinalIgnoreCase))
- {
- continue;
- }
- string name = Path.GetFileNameWithoutExtension(filePath);
- if (name.Equals("folder", StringComparison.OrdinalIgnoreCase))
- {
- item.PrimaryImagePath = filePath;
- }
- else if (name.StartsWith("backdrop", StringComparison.OrdinalIgnoreCase))
- {
- backdropFiles.Add(filePath);
- }
- if (name.Equals("logo", StringComparison.OrdinalIgnoreCase))
- {
- item.LogoImagePath = filePath;
- }
- if (name.Equals("banner", StringComparison.OrdinalIgnoreCase))
- {
- item.BannerImagePath = filePath;
- }
- if (name.Equals("art", StringComparison.OrdinalIgnoreCase))
- {
- item.ArtImagePath = filePath;
- }
- if (name.Equals("thumb", StringComparison.OrdinalIgnoreCase))
- {
- item.ThumbnailImagePath = filePath;
- }
- }
- if (backdropFiles.Any())
- {
- item.BackdropImagePaths = backdropFiles;
- }
- }
- }
- }
|