diff --git a/README.ja.md b/README.ja.md
index 5d9d46f75..2deab555c 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -17,7 +17,7 @@
ウェブサイト • ブログ • FAQ • ニュース
-*他の言語で読む: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt.br.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md)。*
+*他の言語で読む: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md)。*
注意: これはベータ版のため、バグが発生する可能性があります。もしバグが発生した場合、GitHub のリポジトリで Issue を開いてください。
diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/PlayerDataSource.java b/app/src/main/java/org/schabi/newpipe/player/helper/PlayerDataSource.java
index b7584151d..708b72ff2 100644
--- a/app/src/main/java/org/schabi/newpipe/player/helper/PlayerDataSource.java
+++ b/app/src/main/java/org/schabi/newpipe/player/helper/PlayerDataSource.java
@@ -1,18 +1,14 @@
package org.schabi.newpipe.player.helper;
import android.content.Context;
-import android.os.Build;
import androidx.annotation.NonNull;
-import com.google.android.exoplayer2.source.MediaParserExtractorAdapter;
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.source.SingleSampleMediaSource;
-import com.google.android.exoplayer2.source.chunk.MediaParserChunkExtractor;
import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
-import com.google.android.exoplayer2.source.hls.MediaParserHlsMediaChunkExtractor;
import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource;
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
import com.google.android.exoplayer2.upstream.DataSource;
@@ -46,17 +42,10 @@ public class PlayerDataSource {
}
public HlsMediaSource.Factory getLiveHlsMediaSourceFactory() {
- final HlsMediaSource.Factory factory =
- new HlsMediaSource.Factory(cachelessDataSourceFactory)
- .setAllowChunklessPreparation(true)
- .setLoadErrorHandlingPolicy(
- new DefaultLoadErrorHandlingPolicy(MANIFEST_MINIMUM_RETRY));
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
- factory.setExtractorFactory(MediaParserHlsMediaChunkExtractor.FACTORY);
- }
-
- return factory;
+ return new HlsMediaSource.Factory(cachelessDataSourceFactory)
+ .setAllowChunklessPreparation(true)
+ .setLoadErrorHandlingPolicy(
+ new DefaultLoadErrorHandlingPolicy(MANIFEST_MINIMUM_RETRY));
}
public DashMediaSource.Factory getLiveDashMediaSourceFactory() {
@@ -71,26 +60,11 @@ public class PlayerDataSource {
private DefaultDashChunkSource.Factory getDefaultDashChunkSourceFactory(
final DataSource.Factory dataSourceFactory
) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
- return new DefaultDashChunkSource.Factory(
- MediaParserChunkExtractor.FACTORY,
- dataSourceFactory,
- 1
- );
- }
-
return new DefaultDashChunkSource.Factory(dataSourceFactory);
}
public HlsMediaSource.Factory getHlsMediaSourceFactory() {
- final HlsMediaSource.Factory factory = new HlsMediaSource.Factory(cacheDataSourceFactory);
-
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
- return factory;
- }
-
- // *** >= Android 11 / R / API 30 ***
- return factory.setExtractorFactory(MediaParserHlsMediaChunkExtractor.FACTORY);
+ return new HlsMediaSource.Factory(cacheDataSourceFactory);
}
public DashMediaSource.Factory getDashMediaSourceFactory() {
@@ -101,18 +75,9 @@ public class PlayerDataSource {
}
public ProgressiveMediaSource.Factory getExtractorMediaSourceFactory() {
- final ProgressiveMediaSource.Factory factory;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
- factory = new ProgressiveMediaSource.Factory(
- cacheDataSourceFactory,
- MediaParserExtractorAdapter.FACTORY
- );
- } else {
- factory = new ProgressiveMediaSource.Factory(cacheDataSourceFactory);
- }
-
- return factory.setLoadErrorHandlingPolicy(
- new DefaultLoadErrorHandlingPolicy(EXTRACTOR_MINIMUM_RETRY));
+ return new ProgressiveMediaSource.Factory(cacheDataSourceFactory)
+ .setLoadErrorHandlingPolicy(
+ new DefaultLoadErrorHandlingPolicy(EXTRACTOR_MINIMUM_RETRY));
}
public SingleSampleMediaSource.Factory getSampleMediaSourceFactory() {
diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java
index f435653b5..8b8eb265b 100644
--- a/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java
+++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java
@@ -33,7 +33,9 @@ import static org.schabi.newpipe.util.external_communication.InternalUrlsHandler
public final class TextLinkifier {
public static final String TAG = TextLinkifier.class.getSimpleName();
- private static final Pattern HASHTAGS_PATTERN = Pattern.compile("(#[A-Za-z0-9_]+)");
+ // Looks for hashtags with characters from any language (\p{L}), numbers, or underscores
+ private static final Pattern HASHTAGS_PATTERN =
+ Pattern.compile("(#[\\p{L}0-9_]+)");
private TextLinkifier() {
}