diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54415858ef5..f6708fa832c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -111,6 +111,7 @@ jobs: path: app/build/reports/androidTests/connected/** sonar: + if: ${{ false }} # the key has expired and needs to be regenerated by the sonar admins runs-on: ubuntu-latest permissions: diff --git a/README.md b/README.md index 3cd7927af3a..c1914406438 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -

We are planning to rewrite large chunks of the codebase, to bring about a new, modern and stable NewPipe!

-

Please do not open pull requests for new features now, only bugfix PRs will be accepted.

+

We are rewriting large chunks of the codebase, to bring about a modern and stable NewPipe! You can download nightly builds here.

+

Please work on the refactor branch if you want to contribute new features. The current codebase is in maintenance mode and will only receive bugfixes.

NewPipe

A libre lightweight streaming front-end for Android.

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt index 91ff7cd279d..8c5d05394d1 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt @@ -12,6 +12,7 @@ import android.view.MenuItem import android.view.SubMenu import android.view.View import android.view.ViewGroup +import android.webkit.MimeTypeMap import android.widget.Toast import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult @@ -456,6 +457,7 @@ class SubscriptionFragment : BaseStateFragment() { } companion object { - const val JSON_MIME_TYPE = "application/json" + val JSON_MIME_TYPE = MimeTypeMap.getSingleton() + .getMimeTypeFromExtension("json") ?: "application/octet-stream" } } diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/PlayerHolder.java b/app/src/main/java/org/schabi/newpipe/player/helper/PlayerHolder.java index 5452068d993..ba8a5e0ff7d 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/PlayerHolder.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/PlayerHolder.java @@ -167,6 +167,11 @@ class PlayerServiceConnection implements ServiceConnection { private boolean playAfterConnect = false; + /** + * @param playAfterConnection Sets the value of `playAfterConnect` to pass to the {@link + * PlayerServiceExtendedEventListener#onPlayerConnected(Player, boolean)} the next time it + * is called. The value of `playAfterConnect` will be reset to false after that. + */ public void doPlayAfterConnect(final boolean playAfterConnection) { this.playAfterConnect = playAfterConnection; } @@ -371,6 +376,8 @@ public void onServiceStopped() { listener.onPlayerDisconnected(); } else { listener.onPlayerConnected(player, serviceConnection.playAfterConnect); + // reset the value of playAfterConnect: if it was true before, it is now "consumed" + serviceConnection.playAfterConnect = false; player.setFragmentListener(internalListener); } } diff --git a/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserImpl.kt b/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserImpl.kt index 3108da80f1c..f15d7ab08a5 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserImpl.kt +++ b/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserImpl.kt @@ -8,6 +8,7 @@ import android.support.v4.media.MediaBrowserCompat import android.support.v4.media.MediaDescriptionCompat import android.util.Log import androidx.annotation.DrawableRes +import androidx.core.net.toUri import androidx.media.MediaBrowserServiceCompat import androidx.media.MediaBrowserServiceCompat.Result import androidx.media.utils.MediaConstants @@ -103,7 +104,7 @@ class MediaBrowserImpl( private fun onLoadChildren(parentId: String): Single> { try { - val parentIdUri = Uri.parse(parentId) + val parentIdUri = parentId.toUri() val path = ArrayList(parentIdUri.pathSegments) if (path.isEmpty()) { @@ -185,7 +186,7 @@ class MediaBrowserImpl( builder .setMediaId(createMediaIdForInfoItem(playlist is PlaylistRemoteEntity, playlist.uid)) .setTitle(playlist.orderingName) - .setIconUri(playlist.thumbnailUrl?.let { Uri.parse(it) }) + .setIconUri(imageUriOrNullIfDisabled(playlist.thumbnailUrl)) val extras = Bundle() extras.putString( @@ -212,7 +213,7 @@ class MediaBrowserImpl( } ImageStrategy.choosePreferredImage(item.thumbnails)?.let { - builder.setIconUri(Uri.parse(it)) + builder.setIconUri(imageUriOrNullIfDisabled(it)) } return MediaBrowserCompat.MediaItem( @@ -258,7 +259,7 @@ class MediaBrowserImpl( builder.setMediaId(createMediaIdForPlaylistIndex(false, playlistId, index)) .setTitle(item.streamEntity.title) .setSubtitle(item.streamEntity.uploader) - .setIconUri(Uri.parse(item.streamEntity.thumbnailUrl)) + .setIconUri(imageUriOrNullIfDisabled(item.streamEntity.thumbnailUrl)) return MediaBrowserCompat.MediaItem( builder.build(), @@ -277,7 +278,7 @@ class MediaBrowserImpl( .setSubtitle(item.uploaderName) ImageStrategy.choosePreferredImage(item.thumbnails)?.let { - builder.setIconUri(Uri.parse(it)) + builder.setIconUri(imageUriOrNullIfDisabled(it)) } return MediaBrowserCompat.MediaItem( @@ -316,7 +317,7 @@ class MediaBrowserImpl( builder.setMediaId(mediaId) .setTitle(streamHistoryEntry.streamEntity.title) .setSubtitle(streamHistoryEntry.streamEntity.uploader) - .setIconUri(Uri.parse(streamHistoryEntry.streamEntity.thumbnailUrl)) + .setIconUri(imageUriOrNullIfDisabled(streamHistoryEntry.streamEntity.thumbnailUrl)) return MediaBrowserCompat.MediaItem( builder.build(), @@ -395,5 +396,13 @@ class MediaBrowserImpl( companion object { private val TAG: String = MediaBrowserImpl::class.java.getSimpleName() + + fun imageUriOrNullIfDisabled(url: String?): Uri? { + return if (ImageStrategy.shouldLoadImages()) { + url?.toUri() + } else { + null + } + } } } diff --git a/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserPlaybackPreparer.kt b/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserPlaybackPreparer.kt index f34677a2984..a3791e2e73f 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserPlaybackPreparer.kt +++ b/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserPlaybackPreparer.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.os.ResultReceiver import android.support.v4.media.session.PlaybackStateCompat import android.util.Log +import androidx.core.net.toUri import com.google.android.exoplayer2.Player import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector.PlaybackPreparer import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers @@ -137,7 +138,7 @@ class MediaBrowserPlaybackPreparer( private fun extractPlayQueueFromMediaId(mediaId: String): Single { try { - val mediaIdUri = Uri.parse(mediaId) + val mediaIdUri = mediaId.toUri() val path = ArrayList(mediaIdUri.pathSegments) if (path.isEmpty()) { throw parseError(mediaId) diff --git a/doc/README.ar.md b/doc/README.ar.md index 8747d3e2c36..f005050c70a 100644 --- a/doc/README.ar.md +++ b/doc/README.ar.md @@ -2,7 +2,7 @@

NewPipe

.Android واجهة أمامية متدفقة خفيفة الوزن لنظام

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.asm.md b/doc/README.asm.md index c2d919d09ee..37d0949b71b 100644 --- a/doc/README.asm.md +++ b/doc/README.asm.md @@ -2,7 +2,7 @@

NewPipe

এণ্ড্ৰইডৰ বাবে এটা লিব্ৰে লাইটৱেট ষ্ট্ৰীমিং ফ্ৰন্ট-এণ্ড।

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.de.md b/doc/README.de.md index 03dd2b364a3..34ad94ab1da 100644 --- a/doc/README.de.md +++ b/doc/README.de.md @@ -1,11 +1,11 @@ -

Wir planen große Teile des Quellcodes neu zu schreiben, um NewPipe neu, modern und stabiler zu machen!

-

Öffne keine neuen Pull Requests für neue Features, es werden nur Fehlerbehebungen akzeptiert.

+

Wir sind im Prozess, größere Teile unseres Codes neuzuschreiben, um eine moderne und stabile NewPipe App zu kreieren! Du kannst nightly builds hier herunterladen.

+

Bitte nutze den refactor branch als Arbeitsgrundlage, wenn du neue Funktionen beitragen willst. Die aktuelle Codebase ist im reinen Maintenance mode und bekommt nur noch Fehlerbehebungen.

NewPipe

Eine freie, offene und leichtgewichtige Streaming App für Android.

-

Hole es dir auf F-Droid

+

Hole es dir auf F-Droid

diff --git a/doc/README.es.md b/doc/README.es.md index 338b3242a7c..4a08cba0841 100644 --- a/doc/README.es.md +++ b/doc/README.es.md @@ -2,7 +2,7 @@

NewPipe

Una interfaz de streaming ligera y libre para Android.

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.fr.md b/doc/README.fr.md index ee3621e27cf..cfebcb2a6e9 100644 --- a/doc/README.fr.md +++ b/doc/README.fr.md @@ -5,7 +5,7 @@

NewPipe

Un front-end de streaming libre et léger pour Android.

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.hi.md b/doc/README.hi.md index ed56fca144d..6098c6c266d 100644 --- a/doc/README.hi.md +++ b/doc/README.hi.md @@ -2,7 +2,7 @@

NewPipe

Android के लिए एक ओपन सोर्स, हल्का YouTube ऐप।

-

इसे F-Droid पर पाएँ

+

इसे F-Droid पर पाएँ

diff --git a/doc/README.it.md b/doc/README.it.md index 930959c77eb..d926db6bcd6 100644 --- a/doc/README.it.md +++ b/doc/README.it.md @@ -2,7 +2,7 @@

NewPipe

Un frontend di streaming libero e leggero per Android.

-

Scaricalo su F-Droid

+

Scaricalo su F-Droid

diff --git a/doc/README.ja.md b/doc/README.ja.md index 19902d57e2a..1e751855b7b 100644 --- a/doc/README.ja.md +++ b/doc/README.ja.md @@ -2,7 +2,7 @@

NewPipe

自由で軽量な Android 向けストリーミングフロントエンド

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.ko.md b/doc/README.ko.md index 3c2f9f39efc..39fb7e11cd9 100644 --- a/doc/README.ko.md +++ b/doc/README.ko.md @@ -2,7 +2,7 @@

NewPipe

A libre lightweight streaming frontend for Android.

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.pa.md b/doc/README.pa.md index 2dbc94c14e6..9b84ded1806 100644 --- a/doc/README.pa.md +++ b/doc/README.pa.md @@ -2,7 +2,7 @@

NewPipe

ਐਂਡਰੌਇਡ ਲਈ ਇੱਕ ਮੁਫ਼ਤ ਹਲਕਾ-ਫੁਲਕਾ ਸਟ੍ਰੀਮਿੰਗ ਯੂਟਿਊਬ ਫਰੰਟ-ਐਂਡ।

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.pl.md b/doc/README.pl.md index 9d216c59032..9574491c7cc 100644 --- a/doc/README.pl.md +++ b/doc/README.pl.md @@ -2,7 +2,7 @@

NewPipe

Wolny, lekki streamingowy frontend na Androida.

-

Pobierz z F-Droid

+

Pobierz z F-Droid

diff --git a/doc/README.pt_BR.md b/doc/README.pt_BR.md index d65fa979055..b73da2de139 100644 --- a/doc/README.pt_BR.md +++ b/doc/README.pt_BR.md @@ -6,7 +6,7 @@

NewPipe

Uma interface de streaming leve e gratuita para Android.

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.ro.md b/doc/README.ro.md index 5363ef7bce4..3f146f7e4d2 100644 --- a/doc/README.ro.md +++ b/doc/README.ro.md @@ -2,7 +2,7 @@

NewPipe

Un front-end de streaming „uşor” liber, pentru Android.

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.ru.md b/doc/README.ru.md index 894e5f2e0aa..8a9955707b7 100644 --- a/doc/README.ru.md +++ b/doc/README.ru.md @@ -2,7 +2,7 @@

NewPipe

Свободный и легковесный клиент потоковых сервисов для Android.

-

Скачать на F-Droid

+

Скачать на F-Droid

diff --git a/doc/README.ryu.md b/doc/README.ryu.md index 8676f1bfd3d..f3ca31af057 100644 --- a/doc/README.ryu.md +++ b/doc/README.ryu.md @@ -2,7 +2,7 @@

NewPipe

じゆーいっしけいりょうなAndroidんきーストリーミングフロントエンド

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.so.md b/doc/README.so.md index 82e544d93e2..843bed7495d 100644 --- a/doc/README.so.md +++ b/doc/README.so.md @@ -2,7 +2,7 @@

NewPipe

App bilaash ah oo fudud looguna talagalay in Android-ka wax loogu daawado.

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.sr.md b/doc/README.sr.md index d8b0fe4354b..21e4d857c02 100644 --- a/doc/README.sr.md +++ b/doc/README.sr.md @@ -5,7 +5,7 @@

NewPipe

Бесплатна и лагана апликација за стримовање за Android.

-

Набавите на F-Droid

+

Набавите на F-Droid

diff --git a/doc/README.tr.md b/doc/README.tr.md index c6610d97db3..6e95e54defe 100644 --- a/doc/README.tr.md +++ b/doc/README.tr.md @@ -2,7 +2,7 @@

NewPipe

Android için hafif ve özgür bir akış arayüzü.

-

Get it on F-Droid

+

Get it on F-Droid

diff --git a/doc/README.zh_TW.md b/doc/README.zh_TW.md index 04a8355cb58..05518624fe1 100644 --- a/doc/README.zh_TW.md +++ b/doc/README.zh_TW.md @@ -2,7 +2,7 @@

NewPipe

輕巧的 Android 串流前端

-

Get it on F-Droid

+

Get it on F-Droid