예제 #1
0
        protected BaseFile(FileServer server, FileInfo aFile, DlnaMime aType, DlnaMediaTypes aMediaType)
        {
            if (server == null) {
            throw new ArgumentNullException("server");
              }
              this.server = server;
              Item = aFile;

              length = Item.Length;
              lastModified = Item.LastWriteTimeUtc;

              Type = aType;
              MediaType = aMediaType;

              title = System.IO.Path.GetFileNameWithoutExtension(Item.Name);
              if (string.IsNullOrEmpty(title)) {
            title = Item.Name;
              }
              if (!string.IsNullOrWhiteSpace(title)) {
            try {
              title = Uri.UnescapeDataString(title);
            }
            catch (UriFormatException) {
              // no op
            }
              }
              title = title.StemNameBase();
        }
예제 #2
0
        protected BaseFile(FileServer server, FileInfo file, DlnaMime type,
                           DlnaMediaTypes mediaType)
        {
            if (server == null)
            {
                throw new ArgumentNullException(nameof(server));
            }
            Server = server;
            Item   = file;

            length       = Item.Length;
            lastModified = Item.LastWriteTimeUtc;

            Type      = type;
            MediaType = mediaType;

            title = System.IO.Path.GetFileNameWithoutExtension(Item.Name);
            if (string.IsNullOrEmpty(title))
            {
                title = Item.Name;
            }
            if (!string.IsNullOrWhiteSpace(title))
            {
                try {
                    title = Uri.UnescapeDataString(title);
                }
                catch (UriFormatException) {
                    // no op
                }
            }
            title = title.StemNameBase();
        }
예제 #3
0
        protected BaseFile(FileServer server, FileInfo aFile, DlnaMime aType, DlnaMediaTypes aMediaType)
        {
            if (server == null)
            {
                throw new ArgumentNullException("server");
            }
            this.server = server;
            Item        = aFile;

            length       = Item.Length;
            lastModified = Item.LastWriteTimeUtc;

            Type      = aType;
            MediaType = aMediaType;

            title = System.IO.Path.GetFileNameWithoutExtension(Item.Name);
            if (string.IsNullOrEmpty(title))
            {
                title = Item.Name;
            }
            if (!string.IsNullOrWhiteSpace(title))
            {
                title = Uri.UnescapeDataString(title);
            }
            title = title.StemNameBase();
        }
예제 #4
0
파일: Track.cs 프로젝트: jindal1979/roadie
 public Track(string id, string artistName, string releaseTitle, short mediaNumber,
              string title, string genre, string trackArtistName,
              int trackNumber, int?releaseYear, TimeSpan duration,
              string description, DateTime infoDate, byte[] coverData, byte[] fileData = null)
 {
     Id         = id;
     Title      = $"[{ trackNumber.ToString().PadLeft(3, '0') }] { title }";
     MetaArtist = artistName;
     MetaAlbum  = releaseTitle;
     if (mediaNumber > 1)
     {
         MetaAlbum = $"{ mediaNumber.ToString().PadLeft(2, '0') } { releaseTitle}";
     }
     MetaDescription = description;
     MetaDuration    = duration;
     MetaGenre       = genre;
     MetaPerformer   = trackArtistName;
     MetaReleaseYear = releaseYear;
     MetaTrack       = trackNumber;
     InfoDate        = infoDate;
     if (fileData != null)
     {
         FileData = fileData;
         InfoSize = fileData.Length;
     }
     MediaType = DlnaMediaTypes.Audio;
     Type      = DlnaMime.AudioMP3;
     if (coverData != null)
     {
         Cover = new CoverArt(coverData, 320, 320);
     }
 }
예제 #5
0
 internal BaseFile MaybeGetFile(FileServer server, FileInfo info,
                                DlnaMime type)
 {
     if (connection == null)
     {
         return(null);
     }
     byte[] data;
     lock (connection) {
         try {
             selectKey.Value  = info.FullName;
             selectSize.Value = info.Length;
             selectTime.Value = info.LastWriteTimeUtc.Ticks;
             try {
                 data = select.ExecuteScalar() as byte[];
             }
             catch (DbException ex) {
                 Error("Failed to lookup file from store", ex);
                 return(null);
             }
         }
         finally {
             select.Cancel();
         }
     }
     if (data == null)
     {
         return(null);
     }
     try {
         using (var s = new MemoryStream(data)) {
             var ctx = new StreamingContext(
                 StreamingContextStates.Persistence,
                 new DeserializeInfo(server, info, type));
             var formatter = new BinaryFormatter(null, ctx)
             {
                 TypeFormat     = FormatterTypeStyle.TypesWhenNeeded,
                 AssemblyFormat = FormatterAssemblyStyle.Simple
             };
             var rv = formatter.Deserialize(s) as BaseFile;
             if (rv == null)
             {
                 throw new SerializationException("Deserialized as null");
             }
             rv.Item = info;
             return(rv);
         }
     }
     catch (Exception ex) {
         if (ex is TargetInvocationException || ex is SerializationException)
         {
             Debug("Failed to deserialize an item", ex);
             return(null);
         }
         throw;
     }
 }
예제 #6
0
파일: VideoFile.cs 프로젝트: jxp/simpleDLNA
 internal VideoFile(FileServer server, FileInfo aFile, DlnaMime aType)
     : base(server, aFile, aType, DlnaMediaTypes.Video)
 {
     // access the subtitle property when loading
     //  Some players need this early to work properly
     TryLoadSubtitle(true);
     if (!this.subTitle.HasSubtitle)
     {
         // Loading an external subtitle file early failed
         // Reset for possible internal subtitle loading
         this.subTitle = null;
     }
 }
예제 #7
0
 internal static BaseFile GetFile(PlainFolder parentFolder, FileInfo file,
                                  DlnaMime type, DlnaMediaTypes mediaType)
 {
   switch (mediaType) {
     case DlnaMediaTypes.Video:
       return new VideoFile(parentFolder.Server, file, type);
     case DlnaMediaTypes.Audio:
       return new AudioFile(parentFolder.Server, file, type);
     case DlnaMediaTypes.Image:
       return new ImageFile(parentFolder.Server, file, type);
     default:
       return new BaseFile(parentFolder.Server, file, type, mediaType);
   }
 }
예제 #8
0
        internal static BaseFile GetFile(PlainFolder aParentFolder, FileInfo aFile, DlnaMime aType, DlnaMediaTypes aMediaType)
        {
            switch (aMediaType)
            {
            case DlnaMediaTypes.Video:
                return(new VideoFile(aParentFolder.Server, aFile, aType));

            case DlnaMediaTypes.Audio:
                return(new AudioFile(aParentFolder.Server, aFile, aType));

            case DlnaMediaTypes.Image:
                return(new ImageFile(aParentFolder.Server, aFile, aType));

            default:
                return(new BaseFile(aParentFolder.Server, aFile, aType, aMediaType));
            }
        }
예제 #9
0
 public DeserializeInfo(FileServer server, FileInfo info, DlnaMime type)
 {
   Server = server;
   Info = info;
   Type = type;
 }
예제 #10
0
 internal VideoFile(FileServer server, FileInfo aFile, DlnaMime aType)
     : base(server, aFile, aType, DlnaMediaTypes.Video)
 {
 }
예제 #11
0
 public BaseFileMock(FileServer server, FileInfo file, DlnaMime type,
                     DlnaMediaTypes mediaType) : base(server, file, type, mediaType)
 {
 }
예제 #12
0
 internal AudioFile(FileServer server, FileInfo aFile, DlnaMime aType)
     : base(server, aFile, aType, DlnaMediaTypes.Audio)
 {
 }
예제 #13
0
 internal static BaseFile GetFile(PlainFolder aParentFolder, FileInfo aFile, DlnaMime aType, DlnaMediaTypes aMediaType)
 {
     switch (aMediaType) {
     case DlnaMediaTypes.Video:
       return new VideoFile(aParentFolder.Server, aFile, aType);
     case DlnaMediaTypes.Audio:
       return new AudioFile(aParentFolder.Server, aFile, aType);
     case DlnaMediaTypes.Image:
       return new ImageFile(aParentFolder.Server, aFile, aType);
     default:
       return new BaseFile(aParentFolder.Server, aFile, aType, aMediaType);
       }
 }
예제 #14
0
 public BaseFileMock(FileServer server, FileInfo file, DlnaMime type,
            DlnaMediaTypes mediaType)
     : base(server,file,type,mediaType)
 {
 }
예제 #15
0
 internal BaseFile MaybeGetFile(FileServer server, FileInfo info, DlnaMime type)
 {
     if (connection == null) {
     return null;
       }
       byte[] data;
       lock (connection) {
     selectKey.Value = info.FullName;
     selectSize.Value = info.Length;
     selectTime.Value = info.LastWriteTimeUtc.Ticks;
     try {
       data = select.ExecuteScalar() as byte[];
     }
     catch (DbException ex) {
       Error("Failed to lookup file from store", ex);
       return null;
     }
       }
       if (data == null) {
     return null;
       }
       try {
     using (var s = new MemoryStream(data)) {
       var ctx = new StreamingContext(StreamingContextStates.Persistence, new DeserializeInfo(server, info, type));
       var formatter = new BinaryFormatter(null, ctx) { TypeFormat = FormatterTypeStyle.TypesWhenNeeded, AssemblyFormat = FormatterAssemblyStyle.Simple };
       var rv = formatter.Deserialize(s) as BaseFile;
       rv.Item = info;
       return rv;
     }
       }
       catch (Exception ex) {
     if (ex is TargetInvocationException || ex is SerializationException) {
       Debug("Failed to deserialize an item", ex);
       return null;
     }
     throw;
       }
 }
예제 #16
0
 internal ImageFile(FileServer server, FileInfo aFile, DlnaMime aType)
     : base(server, aFile, aType, DlnaMediaTypes.Image)
 {
 }
예제 #17
0
 internal ImageFile(FileServer server, FileInfo aFile, DlnaMime aType)
     : base(server, aFile, aType, DlnaMediaTypes.Image)
 {
 }
예제 #18
0
 internal static BaseFile GetFile(PlainFolder parentFolder, FileInfo file,
                              DlnaMime type, DlnaMediaTypes mediaType)
 {
     switch (mediaType) {
     case DlnaMediaTypes.Video:
       return new VideoFile(parentFolder.Server, file, type);
     case DlnaMediaTypes.Audio:
       return new AudioFile(parentFolder.Server, file, type);
     case DlnaMediaTypes.Image:
       return new ImageFile(parentFolder.Server, file, type);
     default:
       return new BaseFile(parentFolder.Server, file, type, mediaType);
       }
 }
예제 #19
0
 internal VideoFile(FileServer server, FileInfo aFile, DlnaMime aType)
     : base(server, aFile, aType, DlnaMediaTypes.Video)
 {
 }
예제 #20
0
 internal AudioFile(FileServer server, FileInfo aFile, DlnaMime aType)
     : base(server, aFile, aType, DlnaMediaTypes.Audio)
 {
 }
예제 #21
0
 public DeserializeInfo(FileServer server, FileInfo info, DlnaMime type)
 {
     Server = server;
     Info   = info;
     Type   = type;
 }
예제 #22
0
 public BaseFile GetFile(FileInfo info, FileServer server, DlnaMime type)
 {
     return(Decode <BaseFile>(_store.MaybeGetFile(info), new DeserializeInfo(server, info, type)));
 }