コード例 #1
0
        public void ParseResult(CmsAlbum album)
        {
            var ddexFolder = this.GetDDEXFolder(album.AlbumCode);

            if (!string.IsNullOrEmpty(ddexFolder))
            {
                var ackFilePath = Directory.GetFiles(ddexFolder, "ACK_*");
                if (ackFilePath != null && ackFilePath.Any())
                {
                    var serializer = new System.Xml.Serialization.XmlSerializer(typeof(AckMessage));
                    using (var fileStream = System.IO.File.OpenRead(ackFilePath[0]))
                    {
                        var ackMessage = serializer.Deserialize(fileStream) as AckMessage;
                        if (ackMessage != null &&
                            ackMessage.AffectedResources != null &&
                            ackMessage.AffectedResources.Any())
                        {
                            foreach (var asset in album.Assets)
                            {
                                var affectedResource = ackMessage.AffectedResources.Where(p => p.ISRC != null && p.ISRC.Equals(asset.ISRC, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
                                if (affectedResource != null)
                                {
                                    asset.AssetID         = affectedResource.SoundRecordingAssetID;
                                    asset.ArtTrackAssetID = affectedResource.ArtTrackAssetID;
                                    asset.VideoID         = affectedResource.VideoID;
                                    //Logger.Instance.Info("Asset ISRC {0}, SR {1}, AT {2}", asset.ISRC, asset.AssetID, asset.ArtTrackAssetID);
                                    Console.WriteLine(string.Format("Album {0}, Asset ISRC {1}, SR {2}, AT {3}, Video {4}", album.AlbumCode, asset.ISRC, asset.AssetID, asset.ArtTrackAssetID, asset.VideoID));
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
        public void ParseResultCSV(CmsAlbum album)
        {
            var csvFolder = this.GetCSVFolderSoundRecording(album.AlbumCode);

            if (!string.IsNullOrEmpty(csvFolder))
            {
                var reportFilePath = Directory.GetFiles(csvFolder, "report-*");
                if (reportFilePath != null && reportFilePath.Any())
                {
                    using (var streamReader = System.IO.File.OpenText(reportFilePath[0]))
                    {
                        using (var reader = new CsvHelper.CsvReader(streamReader, System.Threading.Thread.CurrentThread.CurrentCulture))
                        {
                            reader.Read();
                            reader.ReadHeader();
                            while (reader.Read())
                            {
                                var isrc    = reader.GetField("ISRC");
                                var assetID = reader.GetField("Asset ID");

                                foreach (var asset in album.Assets)
                                {
                                    if (isrc == asset.ISRC)
                                    {
                                        asset.AssetID = assetID;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #3
0
        public void SaveAlbum(CmsAlbum cmsAlbum)
        {
            //save album image to imageFolder
            if (!string.IsNullOrEmpty(cmsAlbum.NewAlbumImagePath))
            {
                cmsAlbum.AlbumImage = cmsAlbum.AlbumCode + System.IO.Path.GetExtension(cmsAlbum.NewAlbumImagePath);
                var albumImageFilePath = System.IO.Path.Combine(_imageFolder, cmsAlbum.AlbumImage);
                System.IO.File.Copy(cmsAlbum.NewAlbumImagePath, albumImageFilePath, true);
            }

            //save mp3 file to trackFolder
            foreach (var cmsAsset in cmsAlbum.Assets)
            {
                if (!string.IsNullOrEmpty(cmsAsset.NewFilePath))
                {
                    cmsAsset.Filename = System.IO.Path.GetFileName(cmsAsset.NewFilePath);
                    var trackFolderPath = System.IO.Path.Combine(_trackFolder, cmsAlbum.AlbumCode);
                    System.IO.Directory.CreateDirectory(trackFolderPath);
                    var mediaFilePath = System.IO.Path.Combine(trackFolderPath, cmsAsset.Filename);
                    System.IO.File.Copy(cmsAsset.NewFilePath, mediaFilePath);
                }
            }

            //write album json file
            var albumFolderPath = System.IO.Path.Combine(_albumFolder, cmsAlbum.AlbumCode);

            System.IO.Directory.CreateDirectory(albumFolderPath);
            var albumFilePath = System.IO.Path.Combine(albumFolderPath, cmsAlbum.AlbumCode + ".json");
            var settings      = new JsonSerializerSettings()
            {
                ContractResolver = new NullToEmptyStringResolver(), Formatting = Formatting.Indented
            };

            System.IO.File.WriteAllText(albumFilePath, JsonConvert.SerializeObject(cmsAlbum, settings));
        }
コード例 #4
0
        public string GetSoundRecordingCSVSubmitStatus(CmsAlbum album)
        {
            //check if assets has asset id
            string status = null;

            if (!album.Assets.Where(p => string.IsNullOrEmpty(p.AssetID)).Any())
            {
                status = "Success";
            }
            if (album.Assets.Where(p => string.IsNullOrEmpty(p.AssetID)).Any() &&
                album.Assets.Where(p => !string.IsNullOrEmpty(p.AssetID)).Any())
            {
                status = "Partial Success";
            }

            string packageStatus = null;
            var    csvFolder     = this.GetCSVFolderSoundRecording(album.AlbumCode);

            if (!string.IsNullOrEmpty(csvFolder))
            {
                var ackFilePath = Directory.GetFiles(csvFolder, "report-*");
                if (ackFilePath != null && ackFilePath.Any())
                {
                    packageStatus = "Submitted";
                }
                else if (!string.IsNullOrEmpty(album.AlbumIdentifier))
                {
                    var csvFilePath = Directory.GetFiles(csvFolder, album.AlbumIdentifier + ".csv");
                    if (csvFilePath != null && csvFilePath.Any())
                    {
                        packageStatus = "Package Generated";
                    }
                }
            }

            if (string.IsNullOrEmpty(status) && string.IsNullOrEmpty(packageStatus))
            {
                return(null);
            }
            else if (!string.IsNullOrEmpty(status) && !string.IsNullOrEmpty(packageStatus))
            {
                return(string.Format("{0}-{1}", status, packageStatus));
            }
            else if (!string.IsNullOrEmpty(status))
            {
                return(status);
            }
            else
            {
                return(packageStatus);
            }
        }
コード例 #5
0
 public CmsAlbumVM(CmsAlbum cmsAlbum)
 {
     _cmsAlbum = cmsAlbum;
     Assets    = new ObservableCollection <CmsAssetVM>();
     if (cmsAlbum.Assets != null)
     {
         foreach (var asset in cmsAlbum.Assets)
         {
             Assets.Add(new CmsAssetVM(asset));
         }
     }
     if (!string.IsNullOrEmpty(cmsAlbum.AlbumImage))
     {
         var imagePath = System.IO.Path.Combine(Settings.ImageFolder, cmsAlbum.AlbumImage);
         this.AlbumImageObj = GetBitmapImge(imagePath);
     }
 }
コード例 #6
0
        public string GetCompositionSubmitStatus(CmsAlbum album)
        {
            var compositionFolder = this.GetCompositionFolder(album.AlbumCode);

            if (!string.IsNullOrEmpty(compositionFolder))
            {
                var reportFilePath = Directory.GetFiles(compositionFolder, "report-*");
                if (reportFilePath != null && reportFilePath.Any())
                {
                    return("Submitted");
                }
                if (!string.IsNullOrEmpty(album.AlbumIdentifier))
                {
                    var compoisitionFilePath = Directory.GetFiles(compositionFolder, album.AlbumIdentifier + ".csv");
                    if (compoisitionFilePath != null && compoisitionFilePath.Any())
                    {
                        return("Package Generated");
                    }
                }
            }
            return(null);
        }
コード例 #7
0
 public void EditAlbum(CmsAlbum cmsAlbum)
 {
     this.Album  = new CmsAlbumVM(cmsAlbum);
     this.Asset  = null;
     this.IsEdit = true;
 }
コード例 #8
0
 public CmsAlbumVM()
 {
     _cmsAlbum = new CmsAlbum();
     Assets    = new ObservableCollection <CmsAssetVM>();
 }