Skip to content

Commit 30a0f8c

Browse files
committed
[MediaCCC] Extract audio language property for single language audio tracks
1 parent 7f0269c commit 30a0f8c

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.schabi.newpipe.extractor.stream.StreamType;
2525
import org.schabi.newpipe.extractor.stream.VideoStream;
2626
import org.schabi.newpipe.extractor.utils.JsonUtils;
27+
import org.schabi.newpipe.extractor.utils.LocaleCompat;
2728

2829
import java.io.IOException;
2930
import java.util.ArrayList;
@@ -114,15 +115,24 @@ public List<AudioStream> getAudioStreams() throws ExtractionException {
114115
mediaFormat = null;
115116
}
116117

117-
// Not checking containsSimilarStream here, since MediaCCC does not provide enough
118-
// information to decide whether two streams are similar. Hence that method would
119-
// always return false, e.g. even for different language variations.
120-
audioStreams.add(new AudioStream.Builder()
118+
final AudioStream.Builder builder = new AudioStream.Builder()
121119
.setId(recording.getString("filename", ID_UNKNOWN))
122120
.setContent(recording.getString("recording_url"), true)
123121
.setMediaFormat(mediaFormat)
124-
.setAverageBitrate(UNKNOWN_BITRATE)
125-
.build());
122+
.setAverageBitrate(UNKNOWN_BITRATE);
123+
124+
final String language = recording.getString("language");
125+
// If the language contains a - symbol, this means that the stream has an audio
126+
// track with multiple languages, so there is no specific language for this stream
127+
// Don't set the audio language in this case
128+
if (language != null && !language.contains("-")) {
129+
builder.setAudioLocale(LocaleCompat.forLanguageTag(language));
130+
}
131+
132+
// Not checking containsSimilarStream here, since MediaCCC does not provide enough
133+
// information to decide whether two streams are similar. Hence that method would
134+
// always return false, e.g. even for different language variations.
135+
audioStreams.add(builder.build());
126136
}
127137
}
128138
return audioStreams;

0 commit comments

Comments
 (0)