diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index 9ad734cb5..0441e1ba1 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -103,6 +103,7 @@ import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.COMMENTS; +import static org.schabi.newpipe.extractor.stream.StreamExtractor.NO_AGE_LIMIT; import static org.schabi.newpipe.util.AnimationUtils.animateView; public class VideoDetailFragment extends BaseStateFragment @@ -806,19 +807,25 @@ public class VideoDetailFragment extends BaseStateFragment currentWorker.dispose(); } + final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); + currentWorker = ExtractorHelper.getStreamInfo(serviceId, url, forceLoad) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe((@NonNull StreamInfo result) -> { + .subscribe((@NonNull final StreamInfo result) -> { isLoading.set(false); - currentInfo = result; - handleResult(result); - showContent(); - }, (@NonNull Throwable throwable) -> { + if (result.getAgeLimit() != NO_AGE_LIMIT && !prefs.getBoolean( + getString(R.string.show_age_restricted_content), false)) { + hideAgeRestrictedContent(); + } else { + currentInfo = result; + handleResult(result); + showContent(); + } + }, (@NonNull final Throwable throwable) -> { isLoading.set(false); onError(throwable); }); - } private void initTabs() { @@ -1232,6 +1239,16 @@ public class VideoDetailFragment extends BaseStateFragment } } + private void hideAgeRestrictedContent() { + showError(getString(R.string.restricted_video), false); + + if (relatedStreamsLayout != null) { // tablet + relatedStreamsLayout.setVisibility(View.INVISIBLE); + } + + viewPager.setVisibility(View.GONE); + tabLayout.setVisibility(View.GONE); + } public void openDownloadDialog() { try { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4af6149b4..f5c993dda 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -136,8 +136,9 @@ Play Content Age restricted content - Live Show age restricted video. Future changes are possible from the settings. + This video is age restricted.\n\nIf you want to view it, enable \"Age restricted content\" in the settings. + Live Downloads Downloads Error report @@ -645,4 +646,4 @@ Disable fast mode Do you think feed loading is too slow? If so, try enabling fast loading (you can change it in settings or by pressing the button below).\n\nNewPipe offers two feed loading strategies:\n• Fetching the whole subscription channel, which is slow but complete.\n• Using a dedicated service endpoint, which is fast but usually not complete.\n\nThe difference between the two is that the fast one usually lacks some information, like the item\'s duration or type (can\'t distinguish between live videos and normal ones) and it may return less items.\n\nYouTube is an example of a service that offers this fast method with its RSS feed.\n\nSo the choice boils down to what you prefer: speed or precise information. This content is not yet supported by NewPipe.\n\nIt will hopefully be supported in a future version. - \ No newline at end of file +