metadata = metadata.with(FILE_SIZE, Files.size(normalizedPath)) .with(DURATION, Duration.ofSeconds(header.getTrackLength())) .with(BIT_RATE, (int)header.getBitRateAsNumber()) .with(SAMPLE_RATE, header.getSampleRateAsNumber()) .with(BITS_PER_SAMPLE, header.getBitsPerSample()) .with(CHANNELS, parseOptionalInt(header.getChannels())) .with(FORMAT, Optional.ofNullable(header.getFormat())) .with(ENCODING_TYPE, Optional.ofNullable(header.getEncodingType())) .with(ARTIST, tag.getFirst(FieldKey.ARTIST)) .with(ALBUM, tag.getFirst(FieldKey.ALBUM)) .with(TITLE, tag.getFirst(FieldKey.TITLE)) .with(COMMENT, tag.getAll(FieldKey.COMMENT)) .with(TRACK_NUMBER, parseOptionalInt(tag.getFirst(FieldKey.TRACK))) .with(DISK_NUMBER, parseOptionalInt(tag.getFirst(FieldKey.DISC_NO))) .with(DISK_COUNT, parseOptionalInt(tag.getFirst(FieldKey.DISC_TOTAL))) .with(COMPOSER, tag.getFirst(FieldKey.COMPOSER)) .with(MBZ_TRACK_ID, id(tag.getFirst(FieldKey.MUSICBRAINZ_TRACK_ID))) .with(MBZ_WORK_ID, id(tag.getFirst(FieldKey.MUSICBRAINZ_WORK_ID))) .with(MBZ_DISC_ID, id(tag.getFirst(FieldKey.MUSICBRAINZ_DISC_ID))) .with(MBZ_ARTIST_ID, optionalList(tag.getAll(FieldKey.MUSICBRAINZ_ARTISTID).stream() .filter(s -> ((s != null) && !"".equals(s))) .flatMap(s -> Stream.of(s.split("/"))) // FIXME:correct? metadata = metadata.with(key, values); metadata = metadata.with(ITUNES_COMMENT, ITunesComment.from(metadata));
public RepositoryAudioFile (final @Nonnull Repository repository, final @Nonnull BindingSet bindingSet) { super(repository, bindingSet, "audioFile", rdfsLabelOf(bindingSet.getBinding("path").getValue().stringValue())); this.path = toPath(bindingSet.getBinding("path")); this.duration = toDuration(bindingSet.getBinding("duration")); this.fileSize = toLong(bindingSet.getBinding("fileSize")); this.trackId = toId(bindingSet.getBinding("track")); this.metadata = new MetadataSupport(path).with(TITLE, rdfsLabel) .with(DURATION, duration) .with(FILE_SIZE, fileSize) .withFallback(key -> fallbackMetadata.get(this::loadFallbackMetadata)); }
public RepositoryTrack (final @Nonnull Repository repository, final @Nonnull BindingSet bindingSet) { super(repository, bindingSet, "track"); audioFilePath = toPath(bindingSet.getBinding("path")); duration = toDuration(bindingSet.getBinding("duration")); trackNumber = toInteger(bindingSet.getBinding("track_number")); diskNumber = toInteger(bindingSet.getBinding("disk_number")); diskCount = toInteger(bindingSet.getBinding("disk_count")); // this.recordRdfsLabel = toString(bindingSet.getBinding("record_label")); metadata = new MetadataSupport(audioFilePath).with(DURATION, duration) .with(TRACK_NUMBER, trackNumber) .with(DISK_NUMBER, diskNumber) .with(DISK_COUNT, diskCount); audioFile = new Memoize<>(() -> new RepositoryAudioFile(repository, bindingSet)); }