예제 #1
0
        private SourceTrack CreateSourceTrackForFile(
            Artist artist,
            Source dbSource,
            Vendor.ArchiveOrg.Metadata.Metadata meta,
            Vendor.ArchiveOrg.Metadata.File file,
            int previousTrackNumber,
            IDictionary <string, Vendor.ArchiveOrg.Metadata.File> flacFiles,
            SourceSet set = null
            )
        {
            int trackNum = previousTrackNumber + 1;

            var title = !String.IsNullOrEmpty(file.title) ? file.title : file.original;

            var flac = flacFiles.GetValue(file.original);

            return(new SourceTrack()
            {
                title = title,
                track_position = trackNum,
                source_set_id = set == null ? -1 : set.id,
                source_id = dbSource.id,
                duration = file.length.
                           Split(':').
                           Reverse().
                           Select((v, k) => (int)Math.Round(Math.Max(1, 60 * k) * double.Parse(v, NumberStyles.Any))).
                           Sum(),
                slug = Slugify(title),
                mp3_url = $"https://archive.org/download/{meta.identifier}/{file.name}",
                mp3_md5 = file.md5,
                flac_url = flac == null ? null : $"https://archive.org/download/{meta.identifier}/{flac.name}",
                flac_md5 = flac?.md5,
                updated_at = dbSource.updated_at
            });
        }
예제 #2
0
        private IEnumerable <SourceTrack> CreateSourceTracksForFiles(
            Artist artist,
            Source dbSource,
            Vendor.ArchiveOrg.Metadata.Metadata meta,
            IEnumerable <Vendor.ArchiveOrg.Metadata.File> mp3Files,
            IDictionary <string, Vendor.ArchiveOrg.Metadata.File> flacFiles,
            SourceSet set = null
            )
        {
            var trackNum = 0;

            return(mp3Files.
                   Where(file =>
            {
                return !(
                    (file.title == null && file.original == null && file.name == null) ||
                    file.length == null ||
                    file.name == null
                    );
            }).
                   OrderBy(file => file.name).
                   Select(file =>
            {
                var r = CreateSourceTrackForFile(artist, dbSource, meta, file, trackNum, flacFiles, set);
                trackNum = r.track_position;

                return r;
            })
                   );
        }