From e333197ed5dfcb67b33029a0cbbc82e5afd2b344 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sat, 27 Aug 2022 08:06:58 +0530 Subject: [PATCH 001/147] Use OnClickListener and OnLongClickListener lambdas in the player UIs. --- .../newpipe/player/ui/MainPlayerUi.java | 47 ++--- .../newpipe/player/ui/VideoPlayerUi.java | 174 +++++++----------- 2 files changed, 89 insertions(+), 132 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java index 248104738..6226900f6 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java @@ -154,6 +154,16 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh protected void initListeners() { super.initListeners(); + binding.screenRotationButton.setOnClickListener(makeOnClickListener(() -> { + // Only if it's not a vertical video or vertical video but in landscape with locked + // orientation a screen orientation can be changed automatically + if (!isVerticalVideo || (isLandscape() && globalScreenOrientationLocked(context))) { + player.getFragmentListener() + .ifPresent(PlayerServiceEventListener::onScreenRotationButtonClicked); + } else { + toggleFullscreen(); + } + })); binding.queueButton.setOnClickListener(v -> onQueueClicked()); binding.segmentsButton.setOnClickListener(v -> onSegmentsClicked()); @@ -173,6 +183,14 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh settingsContentObserver); binding.getRoot().addOnLayoutChangeListener(this); + + binding.moreOptionsButton.setOnLongClickListener(v -> { + player.getFragmentListener() + .ifPresent(PlayerServiceEventListener::onMoreOptionsLongClicked); + hideControls(0, 0); + hideSystemUIIfNeeded(); + return true; + }); } @Override @@ -846,23 +864,6 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh //////////////////////////////////////////////////////////////////////////*/ //region Click listeners - @Override - public void onClick(final View v) { - if (v.getId() == binding.screenRotationButton.getId()) { - // Only if it's not a vertical video or vertical video but in landscape with locked - // orientation a screen orientation can be changed automatically - if (!isVerticalVideo || (isLandscape() && globalScreenOrientationLocked(context))) { - player.getFragmentListener().ifPresent( - PlayerServiceEventListener::onScreenRotationButtonClicked); - } else { - toggleFullscreen(); - } - } - - // call it later since it calls manageControlsAfterOnClick at the end - super.onClick(v); - } - @Override protected void onPlaybackSpeedClicked() { final AppCompatActivity activity = getParentActivity().orElse(null); @@ -875,18 +876,6 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh .show(activity.getSupportFragmentManager(), null); } - @Override - public boolean onLongClick(final View v) { - if (v.getId() == binding.moreOptionsButton.getId() && isFullscreen) { - player.getFragmentListener().ifPresent( - PlayerServiceEventListener::onMoreOptionsLongClicked); - hideControls(0, 0); - hideSystemUIIfNeeded(); - return true; - } - return super.onLongClick(v); - } - @Override public boolean onKeyDown(final int keyCode) { if (keyCode == KeyEvent.KEYCODE_SPACE && isFullscreen) { diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index 1709755f2..64a6ba376 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -83,11 +83,11 @@ import org.schabi.newpipe.util.external_communication.ShareUtils; import org.schabi.newpipe.views.player.PlayerFastSeekOverlay; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; -public abstract class VideoPlayerUi extends PlayerUi - implements SeekBar.OnSeekBarChangeListener, View.OnClickListener, View.OnLongClickListener, +public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBarChangeListener, PopupMenu.OnMenuItemClickListener, PopupMenu.OnDismissListener { private static final String TAG = VideoPlayerUi.class.getSimpleName(); @@ -131,9 +131,11 @@ public abstract class VideoPlayerUi extends PlayerUi private GestureDetector gestureDetector; private BasePlayerGestureListener playerGestureListener; - @Nullable private View.OnLayoutChangeListener onLayoutChangeListener = null; + @Nullable + private View.OnLayoutChangeListener onLayoutChangeListener = null; - @NonNull private final SeekbarPreviewThumbnailHolder seekbarPreviewThumbnailHolder = + @NonNull + private final SeekbarPreviewThumbnailHolder seekbarPreviewThumbnailHolder = new SeekbarPreviewThumbnailHolder(); @@ -186,13 +188,13 @@ public abstract class VideoPlayerUi extends PlayerUi abstract BasePlayerGestureListener buildGestureListener(); protected void initListeners() { - binding.qualityTextView.setOnClickListener(this); - binding.playbackSpeed.setOnClickListener(this); + binding.qualityTextView.setOnClickListener(makeOnClickListener(this::onQualityClicked)); + binding.playbackSpeed.setOnClickListener(makeOnClickListener(this::onPlaybackSpeedClicked)); binding.playbackSeekBar.setOnSeekBarChangeListener(this); - binding.captionTextView.setOnClickListener(this); - binding.resizeTextView.setOnClickListener(this); - binding.playbackLiveSync.setOnClickListener(this); + binding.captionTextView.setOnClickListener(makeOnClickListener(this::onCaptionClicked)); + binding.resizeTextView.setOnClickListener(makeOnClickListener(this::onResizeClicked)); + binding.playbackLiveSync.setOnClickListener(makeOnClickListener(player::seekToDefault)); playerGestureListener = buildGestureListener(); gestureDetector = new GestureDetector(context, playerGestureListener); @@ -201,20 +203,36 @@ public abstract class VideoPlayerUi extends PlayerUi binding.repeatButton.setOnClickListener(v -> onRepeatClicked()); binding.shuffleButton.setOnClickListener(v -> onShuffleClicked()); - binding.playPauseButton.setOnClickListener(this); - binding.playPreviousButton.setOnClickListener(this); - binding.playNextButton.setOnClickListener(this); + binding.playPauseButton.setOnClickListener(makeOnClickListener(player::playPause)); + binding.playPreviousButton.setOnClickListener(makeOnClickListener(player::playPrevious)); + binding.playNextButton.setOnClickListener(makeOnClickListener(player::playNext)); - binding.moreOptionsButton.setOnClickListener(this); - binding.moreOptionsButton.setOnLongClickListener(this); - binding.share.setOnClickListener(this); - binding.share.setOnLongClickListener(this); - binding.fullScreenButton.setOnClickListener(this); - binding.screenRotationButton.setOnClickListener(this); - binding.playWithKodi.setOnClickListener(this); - binding.openInBrowser.setOnClickListener(this); - binding.playerCloseButton.setOnClickListener(this); - binding.switchMute.setOnClickListener(this); + binding.moreOptionsButton.setOnClickListener( + makeOnClickListener(this::onMoreOptionsClicked)); + binding.share.setOnClickListener(makeOnClickListener(() -> { + final PlayQueueItem currentItem = player.getCurrentItem(); + if (currentItem != null) { + ShareUtils.shareText(context, currentItem.getTitle(), + player.getVideoUrlAtCurrentTime(), currentItem.getThumbnailUrl()); + } + })); + binding.share.setOnLongClickListener(v -> { + ShareUtils.copyToClipboard(context, player.getVideoUrlAtCurrentTime()); + return true; + }); + binding.fullScreenButton.setOnClickListener(makeOnClickListener(() -> { + player.setRecovery(); + NavigationHelper.playOnMainPlayer(context, + Objects.requireNonNull(player.getPlayQueue()), true); + })); + binding.playWithKodi.setOnClickListener(makeOnClickListener(this::onPlayWithKodiClicked)); + binding.openInBrowser.setOnClickListener(makeOnClickListener(this::onOpenInBrowserClicked)); + binding.playerCloseButton.setOnClickListener(makeOnClickListener(() -> + // set package to this app's package to prevent the intent from being seen outside + context.sendBroadcast(new Intent(VideoDetailFragment.ACTION_HIDE_MAIN_PLAYER) + .setPackage(App.PACKAGE_NAME)) + )); + binding.switchMute.setOnClickListener(makeOnClickListener(player::toggleMute)); ViewCompat.setOnApplyWindowInsetsListener(binding.itemsListPanel, (view, windowInsets) -> { final Insets cutout = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()); @@ -228,11 +246,8 @@ public abstract class VideoPlayerUi extends PlayerUi // player_overlays and fast_seek_overlay too. Without it they will be off-centered. onLayoutChangeListener = (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> { - binding.playerOverlays.setPadding( - v.getPaddingLeft(), - v.getPaddingTop(), - v.getPaddingRight(), - v.getPaddingBottom()); + binding.playerOverlays.setPadding(v.getPaddingLeft(), v.getPaddingTop(), + v.getPaddingRight(), v.getPaddingBottom()); // If we added padding to the fast seek overlay, too, it would not go under the // system ui. Instead we apply negative margins equal to the window insets of @@ -1324,86 +1339,39 @@ public abstract class VideoPlayerUi extends PlayerUi //////////////////////////////////////////////////////////////////////////*/ //region Click listeners - @Override - public void onClick(final View v) { - if (DEBUG) { - Log.d(TAG, "onClick() called with: v = [" + v + "]"); - } - if (v.getId() == binding.resizeTextView.getId()) { - onResizeClicked(); - } else if (v.getId() == binding.captionTextView.getId()) { - onCaptionClicked(); - } else if (v.getId() == binding.playbackLiveSync.getId()) { - player.seekToDefault(); - } else if (v.getId() == binding.playPauseButton.getId()) { - player.playPause(); - } else if (v.getId() == binding.playPreviousButton.getId()) { - player.playPrevious(); - } else if (v.getId() == binding.playNextButton.getId()) { - player.playNext(); - } else if (v.getId() == binding.moreOptionsButton.getId()) { - onMoreOptionsClicked(); - } else if (v.getId() == binding.share.getId()) { - final PlayQueueItem currentItem = player.getCurrentItem(); - if (currentItem != null) { - ShareUtils.shareText(context, currentItem.getTitle(), - player.getVideoUrlAtCurrentTime(), currentItem.getThumbnailUrl()); - } - } else if (v.getId() == binding.playWithKodi.getId()) { - onPlayWithKodiClicked(); - } else if (v.getId() == binding.openInBrowser.getId()) { - onOpenInBrowserClicked(); - } else if (v.getId() == binding.fullScreenButton.getId()) { - player.setRecovery(); - NavigationHelper.playOnMainPlayer(context, player.getPlayQueue(), true); - return; - } else if (v.getId() == binding.switchMute.getId()) { - player.toggleMute(); - } else if (v.getId() == binding.playerCloseButton.getId()) { - // set package to this app's package to prevent the intent from being seen outside - context.sendBroadcast(new Intent(VideoDetailFragment.ACTION_HIDE_MAIN_PLAYER) - .setPackage(App.PACKAGE_NAME)); - } else if (v.getId() == binding.playbackSpeed.getId()) { - onPlaybackSpeedClicked(); - } else if (v.getId() == binding.qualityTextView.getId()) { - onQualityClicked(); - } - - manageControlsAfterOnClick(v); - } - /** - * Manages the controls after a click occurred on the player UI. - * @param v – The view that was clicked + * Create on-click listener which manages the player controls after the view on-click action. + * + * @param runnable The action to be executed. + * @return The view click listener. */ - public void manageControlsAfterOnClick(@NonNull final View v) { - if (player.getCurrentState() == STATE_COMPLETED) { - return; - } + protected View.OnClickListener makeOnClickListener(@NonNull final Runnable runnable) { + return v -> { + if (DEBUG) { + Log.d(TAG, "onClick() called with: v = [" + v + "]"); + } - controlsVisibilityHandler.removeCallbacksAndMessages(null); - showHideShadow(true, DEFAULT_CONTROLS_DURATION); - animate(binding.playbackControlRoot, true, DEFAULT_CONTROLS_DURATION, - AnimationType.ALPHA, 0, () -> { - if (player.getCurrentState() == STATE_PLAYING && !isSomePopupMenuVisible) { - if (v.getId() == binding.playPauseButton.getId() - // Hide controls in fullscreen immediately - || (v.getId() == binding.screenRotationButton.getId() - && isFullscreen())) { - hideControls(0, 0); - } else { - hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME); + runnable.run(); + + // Manages the player controls after handling the view click. + if (player.getCurrentState() == STATE_COMPLETED) { + return; + } + controlsVisibilityHandler.removeCallbacksAndMessages(null); + showHideShadow(true, DEFAULT_CONTROLS_DURATION); + animate(binding.playbackControlRoot, true, DEFAULT_CONTROLS_DURATION, + AnimationType.ALPHA, 0, () -> { + if (player.getCurrentState() == STATE_PLAYING && !isSomePopupMenuVisible) { + if (v == binding.playPauseButton + // Hide controls in fullscreen immediately + || (v == binding.screenRotationButton && isFullscreen())) { + hideControls(0, 0); + } else { + hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME); + } } - } - }); - } - - @Override - public boolean onLongClick(final View v) { - if (v.getId() == binding.share.getId()) { - ShareUtils.copyToClipboard(context, player.getVideoUrlAtCurrentTime()); - } - return true; + }); + }; } public boolean onKeyDown(final int keyCode) { From e4f97465a41a103c7f2cbb9f4f3269e90b5d3105 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 21 Aug 2022 06:38:33 +0530 Subject: [PATCH 002/147] Use lambdas for VideoDetailFragment listeners. --- .../fragments/detail/VideoDetailFragment.java | 366 ++++++++---------- 1 file changed, 152 insertions(+), 214 deletions(-) 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 bf84c7325..68cb9948b 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 @@ -10,6 +10,8 @@ import static org.schabi.newpipe.player.helper.PlayerHelper.isClearingQueueConfi import static org.schabi.newpipe.player.playqueue.PlayQueueItem.RECOVERY_UNSET; import static org.schabi.newpipe.util.ExtractorHelper.showMetaInfoInTextView; import static org.schabi.newpipe.util.ListHelper.getUrlAndNonTorrentStreams; +import static org.schabi.newpipe.util.NavigationHelper.openPlayQueue; +import static org.schabi.newpipe.util.NavigationHelper.playWithKore; import android.animation.ValueAnimator; import android.app.Activity; @@ -119,6 +121,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; import icepick.State; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; @@ -129,9 +132,6 @@ import io.reactivex.rxjava3.schedulers.Schedulers; public final class VideoDetailFragment extends BaseStateFragment implements BackPressable, - SharedPreferences.OnSharedPreferenceChangeListener, - View.OnClickListener, - View.OnLongClickListener, PlayerServiceExtendedEventListener, OnKeyDownListener { public static final String KEY_SWITCHING_PLAYERS = "switching_players"; @@ -167,6 +167,20 @@ public final class VideoDetailFragment private boolean tabSettingsChanged = false; private int lastAppBarVerticalOffset = Integer.MAX_VALUE; // prevents useless updates + private final SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener = + (sharedPreferences, key) -> { + if (key.equals(getString(R.string.show_comments_key))) { + showComments = sharedPreferences.getBoolean(key, true); + tabSettingsChanged = true; + } else if (key.equals(getString(R.string.show_next_video_key))) { + showRelatedItems = sharedPreferences.getBoolean(key, true); + tabSettingsChanged = true; + } else if (key.equals(getString(R.string.show_description_key))) { + showDescription = sharedPreferences.getBoolean(key, true); + tabSettingsChanged = true; + } + }; + @State protected int serviceId = Constants.NO_SERVICE_ID; @State @@ -290,7 +304,7 @@ public final class VideoDetailFragment showDescription = prefs.getBoolean(getString(R.string.show_description_key), true); selectedTabTag = prefs.getString( getString(R.string.stream_info_selected_tab_key), COMMENTS_TAB_TAG); - prefs.registerOnSharedPreferenceChangeListener(this); + prefs.registerOnSharedPreferenceChangeListener(preferenceChangeListener); setupBroadcastReceiver(); @@ -375,7 +389,7 @@ public final class VideoDetailFragment } PreferenceManager.getDefaultSharedPreferences(activity) - .unregisterOnSharedPreferenceChangeListener(this); + .unregisterOnSharedPreferenceChangeListener(preferenceChangeListener); activity.unregisterReceiver(broadcastReceiver); activity.getContentResolver().unregisterContentObserver(settingsContentObserver); @@ -421,130 +435,129 @@ public final class VideoDetailFragment } } - @Override - public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, - final String key) { - if (key.equals(getString(R.string.show_comments_key))) { - showComments = sharedPreferences.getBoolean(key, true); - tabSettingsChanged = true; - } else if (key.equals(getString(R.string.show_next_video_key))) { - showRelatedItems = sharedPreferences.getBoolean(key, true); - tabSettingsChanged = true; - } else if (key.equals(getString(R.string.show_description_key))) { - showDescription = sharedPreferences.getBoolean(key, true); - tabSettingsChanged = true; - } - } - /*////////////////////////////////////////////////////////////////////////// // OnClick //////////////////////////////////////////////////////////////////////////*/ - @Override - public void onClick(final View v) { - switch (v.getId()) { - case R.id.detail_controls_background: - openBackgroundPlayer(false); - break; - case R.id.detail_controls_popup: - openPopupPlayer(false); - break; - case R.id.detail_controls_playlist_append: - if (getFM() != null && currentInfo != null) { - disposables.add( - PlaylistDialog.createCorrespondingDialog( - getContext(), - List.of(new StreamEntity(currentInfo)), - dialog -> dialog.show(getFM(), TAG) - ) - ); - } - break; - case R.id.detail_controls_download: - if (PermissionHelper.checkStoragePermissions(activity, - PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE)) { - this.openDownloadDialog(); - } - break; - case R.id.detail_controls_share: - if (currentInfo != null) { - ShareUtils.shareText(requireContext(), currentInfo.getName(), - currentInfo.getUrl(), currentInfo.getThumbnailUrl()); - } - break; - case R.id.detail_controls_open_in_browser: - if (currentInfo != null) { - ShareUtils.openUrlInBrowser(requireContext(), currentInfo.getUrl()); - } - break; - case R.id.detail_controls_play_with_kodi: - if (currentInfo != null) { - try { - NavigationHelper.playWithKore( - requireContext(), Uri.parse(currentInfo.getUrl())); - } catch (final Exception e) { - if (DEBUG) { - Log.i(TAG, "Failed to start kore", e); - } - KoreUtils.showInstallKoreDialog(requireContext()); - } - } - break; - case R.id.detail_uploader_root_layout: - if (isEmpty(currentInfo.getSubChannelUrl())) { - if (!isEmpty(currentInfo.getUploaderUrl())) { - openChannel(currentInfo.getUploaderUrl(), currentInfo.getUploaderName()); - } - - if (DEBUG) { - Log.i(TAG, "Can't open sub-channel because we got no channel URL"); - } - } else { - openChannel(currentInfo.getSubChannelUrl(), - currentInfo.getSubChannelName()); - } - break; - case R.id.detail_thumbnail_root_layout: - // make sure not to open any player if there is nothing currently loaded! - // FIXME removing this `if` causes the player service to start correctly, then stop, - // then restart badly without calling `startForeground()`, causing a crash when - // later closing the detail fragment - if (currentInfo != null) { - autoPlayEnabled = true; // forcefully start playing - // FIXME Workaround #7427 - if (isPlayerAvailable()) { - player.setRecovery(); - } - openVideoPlayerAutoFullscreen(); - } - break; - case R.id.detail_title_root_layout: - toggleTitleAndSecondaryControls(); - break; - case R.id.overlay_thumbnail: - case R.id.overlay_metadata_layout: - case R.id.overlay_buttons_layout: - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); - break; - case R.id.overlay_play_queue_button: - NavigationHelper.openPlayQueue(getContext()); - break; - case R.id.overlay_play_pause_button: - if (playerIsNotStopped()) { - player.playPause(); - player.UIs().get(VideoPlayerUi.class).ifPresent(ui -> ui.hideControls(0, 0)); - showSystemUi(); - } else { - autoPlayEnabled = true; // forcefully start playing - openVideoPlayer(false); + private void setOnClickListeners() { + binding.detailTitleRootLayout.setOnClickListener(v -> toggleTitleAndSecondaryControls()); + binding.detailUploaderRootLayout.setOnClickListener(makeOnClickListener(info -> { + if (isEmpty(info.getSubChannelUrl())) { + if (!isEmpty(info.getUploaderUrl())) { + openChannel(info.getUploaderUrl(), info.getUploaderName()); } - setOverlayPlayPauseImage(isPlayerAvailable() && player.isPlaying()); - break; - case R.id.overlay_close_button: - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); - break; + if (DEBUG) { + Log.i(TAG, "Can't open sub-channel because we got no channel URL"); + } + } else { + openChannel(info.getSubChannelUrl(), info.getSubChannelName()); + } + })); + binding.detailThumbnailRootLayout.setOnClickListener(v -> { + autoPlayEnabled = true; // forcefully start playing + // FIXME Workaround #7427 + if (isPlayerAvailable()) { + player.setRecovery(); + } + openVideoPlayerAutoFullscreen(); + }); + + binding.detailControlsBackground.setOnClickListener(v -> openBackgroundPlayer(false)); + binding.detailControlsPopup.setOnClickListener(v -> openPopupPlayer(false)); + binding.detailControlsPlaylistAppend.setOnClickListener(makeOnClickListener(info -> + disposables.add(PlaylistDialog.createCorrespondingDialog(requireContext(), + List.of(new StreamEntity(info)), + dialog -> dialog.show(getParentFragmentManager(), TAG))))); + binding.detailControlsDownload.setOnClickListener(v -> { + if (PermissionHelper.checkStoragePermissions(activity, + PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE)) { + openDownloadDialog(); + } + }); + binding.detailControlsShare.setOnClickListener(makeOnClickListener(info -> + ShareUtils.shareText(requireContext(), info.getName(), info.getUrl(), + info.getThumbnailUrl()))); + binding.detailControlsOpenInBrowser.setOnClickListener(makeOnClickListener(info -> + ShareUtils.openUrlInBrowser(requireContext(), info.getUrl()))); + binding.detailControlsPlayWithKodi.setOnClickListener(makeOnClickListener(info -> { + try { + playWithKore(requireContext(), Uri.parse(info.getUrl())); + } catch (final Exception e) { + if (DEBUG) { + Log.i(TAG, "Failed to start kore", e); + } + KoreUtils.showInstallKoreDialog(requireContext()); + } + })); + if (DEBUG) { + binding.detailControlsCrashThePlayer.setOnClickListener(v -> + VideoDetailPlayerCrasher.onCrashThePlayer(requireContext(), player)); } + + final View.OnClickListener overlayListener = v -> bottomSheetBehavior + .setState(BottomSheetBehavior.STATE_EXPANDED); + binding.overlayThumbnail.setOnClickListener(overlayListener); + binding.overlayMetadataLayout.setOnClickListener(overlayListener); + binding.overlayButtonsLayout.setOnClickListener(overlayListener); + binding.overlayCloseButton.setOnClickListener(v -> bottomSheetBehavior + .setState(BottomSheetBehavior.STATE_HIDDEN)); + binding.overlayPlayQueueButton.setOnClickListener(v -> openPlayQueue(requireContext())); + binding.overlayPlayPauseButton.setOnClickListener(v -> { + if (playerIsNotStopped()) { + player.playPause(); + player.UIs().get(VideoPlayerUi.class).ifPresent(ui -> ui.hideControls(0, 0)); + showSystemUi(); + } else { + autoPlayEnabled = true; // forcefully start playing + openVideoPlayer(false); + } + + setOverlayPlayPauseImage(isPlayerAvailable() && player.isPlaying()); + }); + } + + private View.OnClickListener makeOnClickListener(final Consumer consumer) { + return v -> { + if (currentInfo != null) { + consumer.accept(currentInfo); + } + }; + } + + private void setOnLongClickListeners() { + binding.detailTitleRootLayout.setOnLongClickListener(makeOnLongClickListener(info -> + ShareUtils.copyToClipboard(requireContext(), + binding.detailVideoTitleView.getText().toString()))); + binding.detailUploaderRootLayout.setOnLongClickListener(makeOnLongClickListener(info -> { + if (isEmpty(info.getSubChannelUrl())) { + Log.w(TAG, "Can't open parent channel because we got no parent channel URL"); + } else { + openChannel(info.getUploaderUrl(), info.getUploaderName()); + } + })); + + binding.detailControlsBackground.setOnLongClickListener(makeOnLongClickListener(info -> + openBackgroundPlayer(true))); + binding.detailControlsPopup.setOnLongClickListener(makeOnLongClickListener(info -> + openPopupPlayer(true))); + binding.detailControlsDownload.setOnLongClickListener(makeOnLongClickListener(info -> + NavigationHelper.openDownloads(activity))); + + final View.OnLongClickListener overlayListener = makeOnLongClickListener(info -> + openChannel(info.getUploaderUrl(), info.getUploaderName())); + binding.overlayThumbnail.setOnLongClickListener(overlayListener); + binding.overlayMetadataLayout.setOnLongClickListener(overlayListener); + } + + private View.OnLongClickListener makeOnLongClickListener(final Consumer consumer) { + return v -> { + if (isLoading.get() || currentInfo == null) { + return false; + } + consumer.accept(currentInfo); + return true; + }; } private void openChannel(final String subChannelUrl, final String subChannelName) { @@ -556,43 +569,6 @@ public final class VideoDetailFragment } } - @Override - public boolean onLongClick(final View v) { - if (isLoading.get() || currentInfo == null) { - return false; - } - - switch (v.getId()) { - case R.id.detail_controls_background: - openBackgroundPlayer(true); - break; - case R.id.detail_controls_popup: - openPopupPlayer(true); - break; - case R.id.detail_controls_download: - NavigationHelper.openDownloads(activity); - break; - case R.id.overlay_thumbnail: - case R.id.overlay_metadata_layout: - openChannel(currentInfo.getUploaderUrl(), currentInfo.getUploaderName()); - break; - case R.id.detail_uploader_root_layout: - if (isEmpty(currentInfo.getSubChannelUrl())) { - Log.w(TAG, - "Can't open parent channel because we got no parent channel URL"); - } else { - openChannel(currentInfo.getUploaderUrl(), currentInfo.getUploaderName()); - } - break; - case R.id.detail_title_root_layout: - ShareUtils.copyToClipboard(requireContext(), - binding.detailVideoTitleView.getText().toString()); - break; - } - - return true; - } - private void toggleTitleAndSecondaryControls() { if (binding.detailSecondaryControlPanel.getVisibility() == View.GONE) { binding.detailVideoTitleView.setMaxLines(10); @@ -613,11 +589,6 @@ public final class VideoDetailFragment // Init //////////////////////////////////////////////////////////////////////////*/ - @Override - public void onViewCreated(@NonNull final View rootView, final Bundle savedInstanceState) { - super.onViewCreated(rootView, savedInstanceState); - } - @Override // called from onViewCreated in {@link BaseFragment#onViewCreated} protected void initViews(final View rootView, final Bundle savedInstanceState) { super.initViews(rootView, savedInstanceState); @@ -658,41 +629,25 @@ public final class VideoDetailFragment protected void initListeners() { super.initListeners(); - binding.detailTitleRootLayout.setOnClickListener(this); - binding.detailTitleRootLayout.setOnLongClickListener(this); - binding.detailUploaderRootLayout.setOnClickListener(this); - binding.detailUploaderRootLayout.setOnLongClickListener(this); - binding.detailThumbnailRootLayout.setOnClickListener(this); + setOnClickListeners(); + setOnLongClickListeners(); - binding.detailControlsBackground.setOnClickListener(this); - binding.detailControlsBackground.setOnLongClickListener(this); - binding.detailControlsPopup.setOnClickListener(this); - binding.detailControlsPopup.setOnLongClickListener(this); - binding.detailControlsPlaylistAppend.setOnClickListener(this); - binding.detailControlsDownload.setOnClickListener(this); - binding.detailControlsDownload.setOnLongClickListener(this); - binding.detailControlsShare.setOnClickListener(this); - binding.detailControlsOpenInBrowser.setOnClickListener(this); - binding.detailControlsPlayWithKodi.setOnClickListener(this); - if (DEBUG) { - binding.detailControlsCrashThePlayer.setOnClickListener( - v -> VideoDetailPlayerCrasher.onCrashThePlayer( - this.getContext(), - this.player) - ); - } + final View.OnTouchListener controlsTouchListener = (view, motionEvent) -> { + if (!PreferenceManager.getDefaultSharedPreferences(activity) + .getBoolean(getString(R.string.show_hold_to_append_key), true)) { + return false; + } - binding.overlayThumbnail.setOnClickListener(this); - binding.overlayThumbnail.setOnLongClickListener(this); - binding.overlayMetadataLayout.setOnClickListener(this); - binding.overlayMetadataLayout.setOnLongClickListener(this); - binding.overlayButtonsLayout.setOnClickListener(this); - binding.overlayPlayQueueButton.setOnClickListener(this); - binding.overlayCloseButton.setOnClickListener(this); - binding.overlayPlayPauseButton.setOnClickListener(this); - - binding.detailControlsBackground.setOnTouchListener(getOnControlsTouchListener()); - binding.detailControlsPopup.setOnTouchListener(getOnControlsTouchListener()); + if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { + animate(binding.touchAppendDetail, true, 250, AnimationType.ALPHA, + 0, () -> + animate(binding.touchAppendDetail, false, 1500, + AnimationType.ALPHA, 1000)); + } + return false; + }; + binding.detailControlsBackground.setOnTouchListener(controlsTouchListener); + binding.detailControlsPopup.setOnTouchListener(controlsTouchListener); binding.appBarLayout.addOnOffsetChangedListener((layout, verticalOffset) -> { // prevent useless updates to tab layout visibility if nothing changed @@ -711,23 +666,6 @@ public final class VideoDetailFragment } } - private View.OnTouchListener getOnControlsTouchListener() { - return (view, motionEvent) -> { - if (!PreferenceManager.getDefaultSharedPreferences(activity) - .getBoolean(getString(R.string.show_hold_to_append_key), true)) { - return false; - } - - if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { - animate(binding.touchAppendDetail, true, 250, AnimationType.ALPHA, - 0, () -> - animate(binding.touchAppendDetail, false, 1500, - AnimationType.ALPHA, 1000)); - } - return false; - }; - } - private void initThumbnailViews(@NonNull final StreamInfo info) { PicassoHelper.loadDetailsThumbnail(info.getThumbnailUrl()).tag(PICASSO_VIDEO_DETAILS_TAG) .into(binding.detailThumbnailImageView, new Callback() { From 3dc1adb69e757ff616be5faf3cca9549f52a3355 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Mon, 7 Nov 2022 17:12:22 +0530 Subject: [PATCH 003/147] Add helper methods for adding PendingIntent mutability. --- .../org/schabi/newpipe/NewVersionWorker.kt | 4 +- .../org/schabi/newpipe/error/ErrorUtil.kt | 11 +-- .../feed/notifications/NotificationHelper.kt | 9 +-- .../local/feed/service/FeedLoadService.kt | 10 +-- .../player/notification/NotificationUtil.java | 10 +-- .../newpipe/util/PendingIntentCompat.java | 69 +++++++++++++++++++ .../giga/service/DownloadManagerService.java | 6 +- 7 files changed, 89 insertions(+), 30 deletions(-) create mode 100644 app/src/main/java/org/schabi/newpipe/util/PendingIntentCompat.java diff --git a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt index 060114974..917b96b45 100644 --- a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt +++ b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt @@ -1,6 +1,5 @@ package org.schabi.newpipe -import android.app.PendingIntent import android.content.Context import android.content.Intent import android.util.Log @@ -18,6 +17,7 @@ import com.grack.nanojson.JsonParser import com.grack.nanojson.JsonParserException import org.schabi.newpipe.extractor.downloader.Response import org.schabi.newpipe.extractor.exceptions.ReCaptchaException +import org.schabi.newpipe.util.PendingIntentCompat import org.schabi.newpipe.util.ReleaseVersionUtil.coerceUpdateCheckExpiry import org.schabi.newpipe.util.ReleaseVersionUtil.isLastUpdateCheckExpired import org.schabi.newpipe.util.ReleaseVersionUtil.isReleaseApk @@ -49,7 +49,7 @@ class NewVersionWorker( // A pending intent to open the apk location url in the browser. val intent = Intent(Intent.ACTION_VIEW, apkLocationUrl?.toUri()) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - val pendingIntent = PendingIntent.getActivity(app, 0, intent, 0) + val pendingIntent = PendingIntentCompat.getActivity(app, 0, intent, 0) val channelId = app.getString(R.string.app_update_notification_channel_id) val notificationBuilder = NotificationCompat.Builder(app, channelId) .setSmallIcon(R.drawable.ic_newpipe_update) diff --git a/app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt b/app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt index 86e2e1028..c7b9beeed 100644 --- a/app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt +++ b/app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt @@ -5,7 +5,6 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import android.graphics.Color -import android.os.Build import android.view.View import android.widget.Toast import androidx.core.app.NotificationCompat @@ -13,6 +12,7 @@ import androidx.core.app.NotificationManagerCompat import androidx.fragment.app.Fragment import com.google.android.material.snackbar.Snackbar import org.schabi.newpipe.R +import org.schabi.newpipe.util.PendingIntentCompat /** * This class contains all of the methods that should be used to let the user know that an error has @@ -104,11 +104,6 @@ class ErrorUtil { */ @JvmStatic fun createNotification(context: Context, errorInfo: ErrorInfo) { - var pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - pendingIntentFlags = pendingIntentFlags or PendingIntent.FLAG_IMMUTABLE - } - val notificationBuilder: NotificationCompat.Builder = NotificationCompat.Builder( context, @@ -119,11 +114,11 @@ class ErrorUtil { .setContentText(context.getString(errorInfo.messageStringId)) .setAutoCancel(true) .setContentIntent( - PendingIntent.getActivity( + PendingIntentCompat.getActivity( context, 0, getErrorActivityIntent(context, errorInfo), - pendingIntentFlags + PendingIntent.FLAG_UPDATE_CURRENT ) ) diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/notifications/NotificationHelper.kt b/app/src/main/java/org/schabi/newpipe/local/feed/notifications/NotificationHelper.kt index 351975486..61a4936c8 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/notifications/NotificationHelper.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/notifications/NotificationHelper.kt @@ -1,7 +1,6 @@ package org.schabi.newpipe.local.feed.notifications import android.app.NotificationManager -import android.app.PendingIntent import android.content.Context import android.content.Intent import android.graphics.Bitmap @@ -20,6 +19,7 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem import org.schabi.newpipe.local.feed.service.FeedUpdateInfo import org.schabi.newpipe.util.Localization import org.schabi.newpipe.util.NavigationHelper +import org.schabi.newpipe.util.PendingIntentCompat import org.schabi.newpipe.util.PicassoHelper /** @@ -70,16 +70,13 @@ class NotificationHelper(val context: Context) { // open the channel page when clicking on the notification builder.setContentIntent( - PendingIntent.getActivity( + PendingIntentCompat.getActivity( context, data.pseudoId, NavigationHelper .getChannelIntent(context, data.listInfo.serviceId, data.listInfo.url) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) - PendingIntent.FLAG_IMMUTABLE - else - 0 + 0 ) ) diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadService.kt b/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadService.kt index f2ea40416..0850fef8c 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadService.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadService.kt @@ -19,7 +19,6 @@ package org.schabi.newpipe.local.feed.service -import android.app.PendingIntent import android.app.Service import android.content.BroadcastReceiver import android.content.Context @@ -43,6 +42,7 @@ import org.schabi.newpipe.extractor.ListInfo import org.schabi.newpipe.extractor.stream.StreamInfoItem import org.schabi.newpipe.local.feed.service.FeedEventManager.Event.ErrorResultEvent import org.schabi.newpipe.local.feed.service.FeedEventManager.postEvent +import org.schabi.newpipe.util.PendingIntentCompat import java.util.concurrent.TimeUnit class FeedLoadService : Service() { @@ -152,12 +152,8 @@ class FeedLoadService : Service() { private lateinit var notificationBuilder: NotificationCompat.Builder private fun createNotification(): NotificationCompat.Builder { - val cancelActionIntent = PendingIntent.getBroadcast( - this, - NOTIFICATION_ID, - Intent(ACTION_CANCEL), - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) PendingIntent.FLAG_IMMUTABLE else 0 - ) + val cancelActionIntent = + PendingIntentCompat.getBroadcast(this, NOTIFICATION_ID, Intent(ACTION_CANCEL), 0) return NotificationCompat.Builder(this, getString(R.string.notification_channel_id)) .setOngoing(true) diff --git a/app/src/main/java/org/schabi/newpipe/player/notification/NotificationUtil.java b/app/src/main/java/org/schabi/newpipe/player/notification/NotificationUtil.java index 3488ec61e..6e50dda7d 100644 --- a/app/src/main/java/org/schabi/newpipe/player/notification/NotificationUtil.java +++ b/app/src/main/java/org/schabi/newpipe/player/notification/NotificationUtil.java @@ -1,7 +1,6 @@ package org.schabi.newpipe.player.notification; import android.annotation.SuppressLint; -import android.app.PendingIntent; import android.content.Intent; import android.content.pm.ServiceInfo; import android.graphics.Bitmap; @@ -22,6 +21,7 @@ import org.schabi.newpipe.R; import org.schabi.newpipe.player.Player; import org.schabi.newpipe.player.mediasession.MediaSessionPlayerUi; import org.schabi.newpipe.util.NavigationHelper; +import org.schabi.newpipe.util.PendingIntentCompat; import java.util.List; import java.util.Objects; @@ -133,8 +133,8 @@ public final class NotificationUtil { R.color.dark_background_color)) .setColorized(player.getPrefs().getBoolean( player.getContext().getString(R.string.notification_colorize_key), true)) - .setDeleteIntent(PendingIntent.getBroadcast(player.getContext(), NOTIFICATION_ID, - new Intent(ACTION_CLOSE), FLAG_UPDATE_CURRENT)); + .setDeleteIntent(PendingIntentCompat.getBroadcast(player.getContext(), + NOTIFICATION_ID, new Intent(ACTION_CLOSE), FLAG_UPDATE_CURRENT)); // set the initial value for the video thumbnail, updatable with updateNotificationThumbnail setLargeIcon(builder); @@ -151,7 +151,7 @@ public final class NotificationUtil { } // also update content intent, in case the user switched players - notificationBuilder.setContentIntent(PendingIntent.getActivity(player.getContext(), + notificationBuilder.setContentIntent(PendingIntentCompat.getActivity(player.getContext(), NOTIFICATION_ID, getIntentForNotification(), FLAG_UPDATE_CURRENT)); notificationBuilder.setContentTitle(player.getVideoTitle()); notificationBuilder.setContentText(player.getUploaderName()); @@ -334,7 +334,7 @@ public final class NotificationUtil { @StringRes final int title, final String intentAction) { return new NotificationCompat.Action(drawable, player.getContext().getString(title), - PendingIntent.getBroadcast(player.getContext(), NOTIFICATION_ID, + PendingIntentCompat.getBroadcast(player.getContext(), NOTIFICATION_ID, new Intent(intentAction), FLAG_UPDATE_CURRENT)); } diff --git a/app/src/main/java/org/schabi/newpipe/util/PendingIntentCompat.java b/app/src/main/java/org/schabi/newpipe/util/PendingIntentCompat.java new file mode 100644 index 000000000..6b9c36eab --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/PendingIntentCompat.java @@ -0,0 +1,69 @@ +package org.schabi.newpipe.util; + +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.os.Build; + +import androidx.annotation.NonNull; + +public final class PendingIntentCompat { + private PendingIntentCompat() { + } + + private static int addImmutableFlag(final int flags) { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M + ? flags | PendingIntent.FLAG_IMMUTABLE : flags; + } + + /** + * Creates a {@link PendingIntent} to start an activity. It is immutable on API level 23 and + * greater. + * + * @param context The context in which the activity should be started. + * @param requestCode The request code + * @param intent The Intent of the activity to be launched. + * @param flags The flags for the intent. + * @return The pending intent. + * @see PendingIntent#getActivity(Context, int, Intent, int) + */ + @NonNull + public static PendingIntent getActivity(@NonNull final Context context, final int requestCode, + @NonNull final Intent intent, final int flags) { + return PendingIntent.getActivity(context, requestCode, intent, addImmutableFlag(flags)); + } + + /** + * Creates a {@link PendingIntent} to start a service. It is immutable on API level 23 and + * greater. + * + * @param context The context in which the service should be started. + * @param requestCode The request code + * @param intent The Intent of the service to be launched. + * @param flags The flags for the intent. + * @return The pending intent. + * @see PendingIntent#getService(Context, int, Intent, int) + */ + @NonNull + public static PendingIntent getService(@NonNull final Context context, final int requestCode, + @NonNull final Intent intent, final int flags) { + return PendingIntent.getService(context, requestCode, intent, addImmutableFlag(flags)); + } + + /** + * Creates a {@link PendingIntent} to perform a broadcast. It is immutable on API level 23 and + * greater. + * + * @param context The context in which the broadcast should be performed. + * @param requestCode The request code + * @param intent The Intent to be broadcast. + * @param flags The flags for the intent. + * @return The pending intent. + * @see PendingIntent#getBroadcast(Context, int, Intent, int) + */ + @NonNull + public static PendingIntent getBroadcast(@NonNull final Context context, final int requestCode, + @NonNull final Intent intent, final int flags) { + return PendingIntent.getBroadcast(context, requestCode, intent, addImmutableFlag(flags)); + } +} diff --git a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java index 8b8a6ff09..25ec87f80 100755 --- a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java +++ b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java @@ -47,6 +47,7 @@ import us.shandian.giga.get.MissionRecoveryInfo; import org.schabi.newpipe.streams.io.StoredDirectoryHelper; import org.schabi.newpipe.streams.io.StoredFileHelper; import org.schabi.newpipe.util.Localization; +import org.schabi.newpipe.util.PendingIntentCompat; import us.shandian.giga.postprocessing.Postprocessing; import us.shandian.giga.service.DownloadManager.NetworkState; @@ -142,7 +143,7 @@ public class DownloadManagerService extends Service { Intent openDownloadListIntent = new Intent(this, DownloadActivity.class) .setAction(Intent.ACTION_MAIN); - mOpenDownloadList = PendingIntent.getActivity(this, 0, + mOpenDownloadList = PendingIntentCompat.getActivity(this, 0, openDownloadListIntent, PendingIntent.FLAG_UPDATE_CURRENT); @@ -484,7 +485,8 @@ public class DownloadManagerService extends Service { private PendingIntent makePendingIntent(String action) { Intent intent = new Intent(this, DownloadManagerService.class).setAction(action); - return PendingIntent.getService(this, intent.hashCode(), intent, PendingIntent.FLAG_UPDATE_CURRENT); + return PendingIntentCompat.getService(this, intent.hashCode(), intent, + PendingIntent.FLAG_UPDATE_CURRENT); } private void manageLock(boolean acquire) { From bb83d2b489f26cd404a672fb529d68a1da6244ad Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 8 Nov 2022 09:24:09 +0100 Subject: [PATCH 004/147] Translated using Weblate (Odia) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 6.1% (40 of 646 strings) Translated using Weblate (Santali) Currently translated at 10.3% (67 of 646 strings) Translated using Weblate (Chinese (Traditional)) Currently translated at 63.8% (46 of 72 strings) Translated using Weblate (Arabic) Currently translated at 50.0% (36 of 72 strings) Translated using Weblate (Italian) Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (Portuguese) Currently translated at 69.4% (50 of 72 strings) Translated using Weblate (Bulgarian) Currently translated at 4.1% (3 of 72 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 16.6% (12 of 72 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 92.2% (596 of 646 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Vietnamese) Currently translated at 99.6% (644 of 646 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Arabic) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 99.8% (645 of 646 strings) Translated using Weblate (Korean) Currently translated at 99.8% (645 of 646 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Punjabi (Pakistan)) Currently translated at 18.4% (119 of 646 strings) Translated using Weblate (Slovak) Currently translated at 9.7% (7 of 72 strings) Translated using Weblate (Azerbaijani) Currently translated at 97.2% (70 of 72 strings) Translated using Weblate (Polish) Currently translated at 59.7% (43 of 72 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (Turkish) Currently translated at 99.8% (645 of 646 strings) Translated using Weblate (German) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Hungarian) Currently translated at 9.8% (7 of 71 strings) Translated using Weblate (Punjabi) Currently translated at 5.6% (4 of 71 strings) Translated using Weblate (Galician) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Vietnamese) Currently translated at 99.6% (644 of 646 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Italian) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Hungarian) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Asturian) Currently translated at 2.8% (2 of 71 strings) Translated using Weblate (Punjabi) Currently translated at 99.6% (644 of 646 strings) Translated using Weblate (Vietnamese) Currently translated at 98.9% (639 of 646 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 99.5% (643 of 646 strings) Translated using Weblate (Italian) Currently translated at 100.0% (646 of 646 strings) Added translation using Weblate (English (Middle)) Added translation using Weblate (English (Old)) Added translation using Weblate (Sicilian) Added translation using Weblate (Arabic (Najdi)) Added translation using Weblate (Kashmiri) Added translation using Weblate (German (Low)) Added translation using Weblate (Aymará) Added translation using Weblate (Kazakh) Translated using Weblate (Bulgarian) Currently translated at 2.8% (2 of 71 strings) Translated using Weblate (Bengali) Currently translated at 90.5% (585 of 646 strings) Translated using Weblate (Punjabi) Currently translated at 99.6% (644 of 646 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (646 of 646 strings) Co-authored-by: Agnieszka C Co-authored-by: Alex25820 Co-authored-by: Balázs Meskó Co-authored-by: Enol P Co-authored-by: Ergün Can Taş Co-authored-by: GET100PERCENT Co-authored-by: Gediminas Murauskas Co-authored-by: Giovanni Donisi Co-authored-by: Hoseok Seo Co-authored-by: Hosted Weblate Co-authored-by: Ihor Hordiichuk Co-authored-by: L-M-H Co-authored-by: Lyudmil Borisov Co-authored-by: Marian Hanzel Co-authored-by: Massimo Pissarello Co-authored-by: Nizami Co-authored-by: Oğuz Ersen Co-authored-by: Prasanta-Hembram Co-authored-by: Preston Waters Co-authored-by: Ray Co-authored-by: Rohan Deb Sarkar Co-authored-by: SC Co-authored-by: Sebi Co-authored-by: ShareASmile Co-authored-by: TXRdev Archive Co-authored-by: Thọ Bùi Nguyễn Hoàng Co-authored-by: Vri 🌈 Co-authored-by: Weblate Co-authored-by: bgo-eiu Co-authored-by: gallegonovato Co-authored-by: pjammo Co-authored-by: thami simo Co-authored-by: zaioti Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ast/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/az/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/bg/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hu/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sk/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/ Translation: NewPipe/Metadata --- app/src/main/res/values-ang/strings.xml | 2 + app/src/main/res/values-ar/strings.xml | 2 +- app/src/main/res/values-ars/strings.xml | 2 + app/src/main/res/values-ay/strings.xml | 2 + app/src/main/res/values-az/strings.xml | 70 +-- app/src/main/res/values-bn/strings.xml | 2 +- app/src/main/res/values-de/strings.xml | 12 +- app/src/main/res/values-enm/strings.xml | 2 + app/src/main/res/values-es/strings.xml | 5 +- app/src/main/res/values-gl/strings.xml | 1 + app/src/main/res/values-hu/strings.xml | 14 +- app/src/main/res/values-it/strings.xml | 6 +- app/src/main/res/values-kk/strings.xml | 2 + app/src/main/res/values-ko/strings.xml | 4 + app/src/main/res/values-ks/strings.xml | 2 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-nb-rNO/strings.xml | 42 +- app/src/main/res/values-nds/strings.xml | 2 + app/src/main/res/values-or/strings.xml | 18 +- app/src/main/res/values-pa-rPK/strings.xml | 1 + app/src/main/res/values-pa/strings.xml | 475 +++++++++++------- app/src/main/res/values-pt-rBR/strings.xml | 13 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ro/strings.xml | 6 +- app/src/main/res/values-sat/strings.xml | 5 + app/src/main/res/values-scn/strings.xml | 2 + app/src/main/res/values-sv/strings.xml | 6 +- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-vi/strings.xml | 28 +- app/src/main/res/values-zh-rHK/strings.xml | 7 +- .../metadata/android/ar/changelogs/71.txt | 17 +- .../metadata/android/ast/full_description.txt | 1 + .../android/ast/short_description.txt | 1 + .../metadata/android/az/changelogs/991.txt | 13 + .../metadata/android/bg/changelogs/63.txt | 8 + .../metadata/android/bg/short_description.txt | 1 + .../metadata/android/hu/changelogs/989.txt | 3 + .../metadata/android/hu/changelogs/990.txt | 15 + .../metadata/android/it/changelogs/65.txt | 26 + .../metadata/android/it/changelogs/66.txt | 33 ++ .../metadata/android/it/changelogs/68.txt | 31 ++ .../metadata/android/it/changelogs/69.txt | 19 + .../metadata/android/it/changelogs/70.txt | 25 + .../metadata/android/it/changelogs/71.txt | 10 + .../metadata/android/it/changelogs/740.txt | 23 + .../metadata/android/it/changelogs/750.txt | 22 + .../metadata/android/it/changelogs/760.txt | 43 ++ .../metadata/android/it/changelogs/780.txt | 12 + .../metadata/android/it/changelogs/790.txt | 14 + .../metadata/android/it/changelogs/800.txt | 27 + .../metadata/android/it/changelogs/810.txt | 19 + .../metadata/android/it/changelogs/820.txt | 1 + .../metadata/android/it/changelogs/840.txt | 22 + .../metadata/android/it/changelogs/900.txt | 14 + .../metadata/android/it/changelogs/920.txt | 9 + .../metadata/android/it/changelogs/930.txt | 19 + .../metadata/android/it/changelogs/951.txt | 17 + .../metadata/android/it/changelogs/957.txt | 10 + .../metadata/android/it/changelogs/965.txt | 6 + .../metadata/android/it/changelogs/966.txt | 14 + .../metadata/android/it/changelogs/967.txt | 1 + .../metadata/android/it/changelogs/968.txt | 7 + .../metadata/android/it/changelogs/969.txt | 8 + .../metadata/android/it/changelogs/970.txt | 11 + .../metadata/android/it/changelogs/971.txt | 3 + .../metadata/android/it/changelogs/972.txt | 14 + .../metadata/android/it/changelogs/973.txt | 4 + .../metadata/android/it/changelogs/974.txt | 5 + .../metadata/android/it/changelogs/975.txt | 17 + .../metadata/android/it/changelogs/976.txt | 10 + .../metadata/android/it/changelogs/977.txt | 10 + .../metadata/android/it/changelogs/978.txt | 1 + .../metadata/android/it/changelogs/979.txt | 2 + .../metadata/android/it/changelogs/980.txt | 13 + .../metadata/android/it/changelogs/981.txt | 2 + .../metadata/android/it/changelogs/982.txt | 1 + .../metadata/android/it/changelogs/983.txt | 9 + .../metadata/android/it/changelogs/986.txt | 16 + .../metadata/android/it/changelogs/991.txt | 13 + .../metadata/android/pa/short_description.txt | 2 +- .../metadata/android/pl/changelogs/991.txt | 13 + .../metadata/android/pt/changelogs/991.txt | 13 + .../metadata/android/sk/changelogs/991.txt | 13 + .../metadata/android/uk/changelogs/991.txt | 13 + .../android/zh-Hant/changelogs/991.txt | 13 + .../android/zh_Hant_HK/changelogs/991.txt | 13 + 86 files changed, 1158 insertions(+), 281 deletions(-) create mode 100644 app/src/main/res/values-ang/strings.xml create mode 100644 app/src/main/res/values-ars/strings.xml create mode 100644 app/src/main/res/values-ay/strings.xml create mode 100644 app/src/main/res/values-enm/strings.xml create mode 100644 app/src/main/res/values-kk/strings.xml create mode 100644 app/src/main/res/values-ks/strings.xml create mode 100644 app/src/main/res/values-nds/strings.xml create mode 100644 app/src/main/res/values-scn/strings.xml create mode 100644 fastlane/metadata/android/ast/full_description.txt create mode 100644 fastlane/metadata/android/ast/short_description.txt create mode 100644 fastlane/metadata/android/az/changelogs/991.txt create mode 100644 fastlane/metadata/android/bg/changelogs/63.txt create mode 100644 fastlane/metadata/android/bg/short_description.txt create mode 100644 fastlane/metadata/android/hu/changelogs/989.txt create mode 100644 fastlane/metadata/android/hu/changelogs/990.txt create mode 100644 fastlane/metadata/android/it/changelogs/65.txt create mode 100644 fastlane/metadata/android/it/changelogs/66.txt create mode 100644 fastlane/metadata/android/it/changelogs/68.txt create mode 100644 fastlane/metadata/android/it/changelogs/69.txt create mode 100644 fastlane/metadata/android/it/changelogs/70.txt create mode 100644 fastlane/metadata/android/it/changelogs/71.txt create mode 100644 fastlane/metadata/android/it/changelogs/740.txt create mode 100644 fastlane/metadata/android/it/changelogs/750.txt create mode 100644 fastlane/metadata/android/it/changelogs/760.txt create mode 100644 fastlane/metadata/android/it/changelogs/780.txt create mode 100644 fastlane/metadata/android/it/changelogs/790.txt create mode 100644 fastlane/metadata/android/it/changelogs/800.txt create mode 100644 fastlane/metadata/android/it/changelogs/810.txt create mode 100644 fastlane/metadata/android/it/changelogs/820.txt create mode 100644 fastlane/metadata/android/it/changelogs/840.txt create mode 100644 fastlane/metadata/android/it/changelogs/900.txt create mode 100644 fastlane/metadata/android/it/changelogs/920.txt create mode 100644 fastlane/metadata/android/it/changelogs/930.txt create mode 100644 fastlane/metadata/android/it/changelogs/951.txt create mode 100644 fastlane/metadata/android/it/changelogs/957.txt create mode 100644 fastlane/metadata/android/it/changelogs/965.txt create mode 100644 fastlane/metadata/android/it/changelogs/966.txt create mode 100644 fastlane/metadata/android/it/changelogs/967.txt create mode 100644 fastlane/metadata/android/it/changelogs/968.txt create mode 100644 fastlane/metadata/android/it/changelogs/969.txt create mode 100644 fastlane/metadata/android/it/changelogs/970.txt create mode 100644 fastlane/metadata/android/it/changelogs/971.txt create mode 100644 fastlane/metadata/android/it/changelogs/972.txt create mode 100644 fastlane/metadata/android/it/changelogs/973.txt create mode 100644 fastlane/metadata/android/it/changelogs/974.txt create mode 100644 fastlane/metadata/android/it/changelogs/975.txt create mode 100644 fastlane/metadata/android/it/changelogs/976.txt create mode 100644 fastlane/metadata/android/it/changelogs/977.txt create mode 100644 fastlane/metadata/android/it/changelogs/978.txt create mode 100644 fastlane/metadata/android/it/changelogs/979.txt create mode 100644 fastlane/metadata/android/it/changelogs/980.txt create mode 100644 fastlane/metadata/android/it/changelogs/981.txt create mode 100644 fastlane/metadata/android/it/changelogs/982.txt create mode 100644 fastlane/metadata/android/it/changelogs/983.txt create mode 100644 fastlane/metadata/android/it/changelogs/986.txt create mode 100644 fastlane/metadata/android/it/changelogs/991.txt create mode 100644 fastlane/metadata/android/pl/changelogs/991.txt create mode 100644 fastlane/metadata/android/pt/changelogs/991.txt create mode 100644 fastlane/metadata/android/sk/changelogs/991.txt create mode 100644 fastlane/metadata/android/uk/changelogs/991.txt create mode 100644 fastlane/metadata/android/zh-Hant/changelogs/991.txt create mode 100644 fastlane/metadata/android/zh_Hant_HK/changelogs/991.txt diff --git a/app/src/main/res/values-ang/strings.xml b/app/src/main/res/values-ang/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-ang/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index bd0658215..d38540895 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -23,7 +23,7 @@ فاتح خطأ في الشبكة لم يتم العثور على مشغل بث. تثبيت VLC؟ - فتح في المتصفح + فتح في متصفح الويب الصوت تشغيل بواسطة كودي البحث diff --git a/app/src/main/res/values-ars/strings.xml b/app/src/main/res/values-ars/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-ars/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-ay/strings.xml b/app/src/main/res/values-ay/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-ay/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index b2a98c414..c13cef94c 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -1,25 +1,25 @@ - Başlamaq üçün \"Axtarış\" bölməsinə toxun. + Başlamaq üçün böyüdücüyə toxun. %1$s tarixində yayımlanıb Yayım oynadıcı tapılmadı. \"VLC\" yüklənilsin\? - Yayım oynadıcı tapılmadı (baxmaq üçün \"VLC\"\'ni yükləyə bilərsiniz). - Yükləyin + Yayım oynadıcı tapılmadı (Oynatmaq üçün VLC\'ni quraşdıra bilərsiniz). + Yüklə İmtina Brauzerdə aç - Paylaşın - Endirin - Yayım faylını endirin - Axtarın + Paylaş + Endir + Yayım faylını endir + Axtar Tənzimləmələr Bunu nəzərdə tuturdunuz: \"%1$s\"\? - ...ilə paylaşın - Xarici video oynadıcı istifadə edin - Bəzi keyfiyyət seçimlərində səsi silir - Xarici səs oynadıcı istifadə edin + ilə paylaş + Xarici video oynadıcı istifadə et + Bəzi qətnamələrdə səsi silir + Xarici səs oynadıcı istifadə et Abunə Olun Abunə olundu - Kanal abunəliyindən çıxıldı + Kanal abunəliyi ləğv edildi Məlumat göstər Abunəliklər Əlfəcinlənmiş Pleylistlər @@ -27,10 +27,10 @@ Arxa Fon Video endirmə qovluğu Endirilmiş video fayllar burada saxlanılır - Video faylları üçün endirmə qovluğunu seçin + Video faylları üçün endirmə qovluğunu seç Səs endirmə qovluğu Endirilmiş səs faylları burada saxlanılır - Səs faylları üçün endirmə qovluğunu seçin + Səs faylları üçün endirmə qovluğunu seç Defolt keyfiyyət Daha böyük keyfiyyət seçimləri göstər \"Kodi\" ilə Oynat @@ -64,14 +64,14 @@ Oynadıcının parlaqlığını nizamlamaq üçün jestlərdən istifadə edin Parlaqlığı jestlə nizamlama Oynadıcının səsini nizamlamaq üçün jestlərdən istifadə edin - Səsi jestlə nizamlama + Səsi jestlə nizamla Avto-növbələmə Növbəti Yayımı Avto-növbələmə Üst məlumat keşi silindi - Keşlənmiş bütün veb-səhifə məlumatlarını silin - Keşlənmiş üst məlumatı təmizləyin + Keşlənmiş bütün veb-səhifə məlumatlarını sil + Keşlənmiş üst məlumatı təmizlə Şəkil keşi silindi - Şərhləri gizlətmək üçün söndürün + Şərhləri gizlətmək üçün söndür Şərhləri göstər Aktiv oynadıcının növbəsi dəyişdiriləcək Bir oynadıcıdan digərinə keçid növbənizi dəyişdirə bilər @@ -92,7 +92,7 @@ Defolt ani pəncərə keyfiyyəti Əlavə Et Ani Pəncərə - Tabı Seçin + Paneli Seç Abunəliyi yeniləmək alınmadı Abunəliyi dəyişdirmək alınmadı Nəticələr göstərilir: %s @@ -140,7 +140,7 @@ \nOnu görmək istəyirsinizsə, tənzimləmələrdə \"%1$s\" seçimini aktivləşdirin. YouTube potensial yetkin məzmunu gizlədən \"Məhdud Rejim\" təmin edir \"PeerTube\" serverləri - Miniatürləri yükləyin + Miniatürləri yüklə Siz yığcam bildirişdə göstərilməsi üçün ən çoxu üç fəaliyyət seçə bilərsiniz! Həmişə yenilə Axın @@ -215,7 +215,7 @@ Endirmə tarixçənizi təmizləmək və ya endirilmiş bütün faylları silmək istəyirsiniz\? Endirmə tarixçəsini təmizlə Endirmələrə başla - Endirmələrə fasilə verin + Endirmələri dayandır Haraya endiriləcəyini soruş Sizdən hər endirmənin harada saxlanılacağı soruşulacaq. \nXarici SD karta yükləmək istəyirsinizsə, sistem qovluğu seçicisini (SAF) aktiv edin @@ -265,7 +265,7 @@ Üst məlumatı göstər Video açıqlamasını və əlavə məlumatı gizlətmək üçün söndürün Açıqlamanı göstər - Bildirişi rəngləyin + Bildirişi rəngləndir Belə qovluq yoxdur Əsas oynadıcını tam ekranda başlat Xarici oynadıcılar bu cür linkləri dəstəkləmir @@ -273,7 +273,7 @@ Video Əlaqədar yayımlar Baxılmış kimi işarələ - ...ilə aç + ilə aç Gecə Mövzusu Ani pəncərə xüsusiyyətlərini xatırla Ani pəncərənin son ölçüsü və mövqeyini xatırla @@ -325,7 +325,7 @@ Video yoxdur Şərhlər qeyri-aktivdir Başladın - Dayandırın + Dayandır Təsdiqləmə İmtina Xəta @@ -432,7 +432,7 @@ Bu məzmun ölkənizdə mövcud deyil. Bu məzmun yalnız ödəniş etmiş istifadəçilər üçün əlçatandır, ona görə də NewPipe tərəfindən yayımlana və ya endirilə bilməz. Avtomatik (cihaz mövzusu) - Sevimli gecə mövzusunu seçin — %s + Sevimli gecə mövzunuzu seçin — %s Sabitlənmiş şərh Bildirişlər deaktiv edilib Bildiriş alın @@ -466,7 +466,7 @@ \"Yaddaş Giriş Çərçivəsi\"yalnız Android 10\'dan başlayaraq dəstəklənir Kanalın avatar miniatürü Sevdiyiniz gecə mövzusunu aşağıda seçə bilərsiniz - Android\'in bildiriş rəngini miniatürdəki əsas rəngə uyğun fərdiləşdirilməsini təmin edin(qeyd edək ki, bu, bütün cihazlarda mövcud deyil) + Android\'in bildiriş rəngini miniatürdəki əsas rəngə uyğun fərdiləşdirməsini təmin et (qeyd edək ki, bu, bütün cihazlarda mövcud deyil) GitHub\'da Baxın İanə Edin NewPipe, sizə ən yaxşı istifadəçi təcrübəsini göstərmək üçün boş vaxtlarını sərf edən könüllülər tərəfindən hazırlanmışdır. Tərtibatçılara bir fincan qəhvə içərkən NewPipe-ı daha da yaxşılaşdırmağa ianə etməklə kömək edin. @@ -499,7 +499,7 @@ Miniatürü 1:1 aspekt nisbətinə kəsin Yükləmə intervalının həcmini dəyişdirin (hazırda %s). Daha aşağı dəyər ilkin video yükləməni sürətləndirə bilər. Dəyişikliklər oynadıcının yenidən başladılmasını tələb edir Yayım yaradıcısı, məzmunu və ya axtarış sorğusu haqqında əlavə məlumat olan üst məlumat qutularını gizlətmək üçün söndürün - Əlaqədar yayımı əlavə etməklə (təkrar etməyən) sonlanacaq oynatma sırasını davam etdir + Əlaqədar yayımı əlavə etməklə (təkrarlanmayan) sonlanacaq oynatma sırasını davam etdir Kənar axtarış təklifləri Server artıq mövcuddur Videoları mini oynadıcıda başlatma, avtomatik fırlatma kilidlidirsə, birbaşa tam ekran rejiminə keçid. Siz hələ də tam ekran rejimindən çıxmaqla mini pleyerə daxil ola bilərsiniz @@ -533,8 +533,8 @@ Etiketlər Planşet rejimi Bağla - Yaradıcısından ürəkləndi - Veb saytı açın + Müəllifə ürəkləndi + Veb saytı aç %s baxış %s baxış @@ -705,21 +705,21 @@ Bu əməliyyat üçün uyğun fayl meneceri tapılmadı. \nZəhmət olmasa ,Yaddaş Giriş Çərçivəsinə uyğun fayl menecerini quraşdırın Bu video yalnız YouTube Music Premium üzvləri üçün əlçatandır, ona görə də NewPipe tərəfindən yayımlamaq və ya endirmək mümkün deyil. - İndi açıqlamadakı mətni seçə bilərsiniz. Nəzərə alın ki, seçim rejimində səhifə titrəyə bilər və keçidlər kliklənməyə bilər. - Bildirişdə göstərilən video miniatürünü 16:9-dan 1:1 nisbətinə qədər kəsin - Aşağıdakı bildiriş fəaliyyətini hər birinin üzərinə toxunaraq redaktə edin. Sağdakı təsdiq qutularından istifadə edərək yığcam bildirişdə göstərilməsi üçün onlardan üçə qədərini seçin + İndi açıqlamadakı mətni seçə bilərsiniz. Nəzərə alın ki, seçim rejimində səhifə titrəyə və keçidlər kliklənməyə bilər. + Bildirişdə göstərilən video miniatürünü 16:9-dan 1:1 nisbətinə qədər kəs + Aşağıdakı bildiriş fəaliyyətini hər birinin üzərinə toxunaraq redaktə edin. Sağdakı təsdiq qutularından istifadə edərək yığcam bildirişdə göstərilməsi üçün onlardan üçə qədərini seç Belə fayl/məzmun mənbəyi yoxdur Seçilmiş yayım xarici oynadıcılar tərəfindən dəstəklənmir Yükləyici tərəfindən hələ dəstəklənməyən yayımlar göstərilmir Xarici oynadıcılar üçün heç bir səs yayımı yoxdur Xarici oynadıcılar üçün heç bir video yayımı yoxdur - Xarici oynadıcılar üçün keyfiyyət seçin + Xarici oynadıcılar üçün keyfiyyət seç Naməlum format Naməlum keyfiyyət Oynatma yükləmə intervalı həcmi - Gələcək elementləri göstərin + Gələcək elementləri göstər Baxılan elementləri gizlədin - Gələcək elementləri gizlədin + Gələcək elementləri gizlət Tətbiqdən istifadə etməkdə çətinlik çəkirsinizsə, ümumi suallara bu cavabların yoxlanıldığına əmin ol! Tez-tez soruşulan suallar Veb Saytında baxın diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 392ca8a07..4b90b22e2 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -309,7 +309,7 @@ কিউ মোছার আগে নিশ্চিত করো কমপ্যাক্ট বিজ্ঞপ্তিতে প্রদর্শন করতে তুমি সর্বাধিক তিনটি ক্রিয়া নির্বাচন করতে পারো! নিচের প্রতিটি প্রজ্ঞাপন ক্রিয়া সম্পাদনা করো। ডান দিকের চেকবাক্স ব্যবহার করে কম্প্যাক্ট নোটিফিকেশনে দেখানোর জন্য তিনটি পর্যন্ত নির্বাচন করো - ১৬:৯ থেকে ১:১অনুপাতে প্রদর্শিত ভিডিও থাম্বনেইল পরিবর্তন করো (বিকৃতি প্রবর্তন করতে পারে) + প্রদর্শিত ভিডিও থাম্বনেইল ১৬:৯ থেকে ১:১অনুপাতে পরিবর্তন করো ফিড ওভাররাইট সারিবদ্ধ diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index f93f2e0a9..7502adbf8 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -126,7 +126,7 @@ Abonnieren Abonniert Kanal deabonniert - Abos + Abonnements Neuigkeiten Suchverlauf Suchanfragen lokal speichern @@ -323,7 +323,7 @@ \nDu musst den Datenschutzrichtlinien zustimmen, um den Fehlerbericht an uns zu senden. Unbegrenzt Auflösung bei Verwendung mobiler Daten begrenzen - Beim Appwechsel minimieren + Beim App-wechsel minimieren Aktion beim Umschalten auf eine andere App vom Haupt-Videoplayer — %s Keine Für die Wiedergabe im Hintergrund minimieren @@ -496,8 +496,8 @@ Immer aktualisieren Kanalgruppen Nicht geladen: %d - Feed wird geladen … - Feed wird verarbeitet … + Lade Feed … + Verarbeite Feed … Feed Abonnements auswählen Kein Abonnement ausgewählt @@ -665,7 +665,7 @@ Hauptplayer im Vollbildmodus starten Als Nächstes eingereiht Als Nächstes in Wiedergabe einreihen - Verarbeitung … Kann einen Moment dauern + Verarbeite … Kann einen Moment dauern Nach Aktualisierungen suchen Suche nach Aktualisierungen … Manuelle Prüfung auf neue Versionen @@ -714,7 +714,7 @@ Unbekanntes Format Keine Audiostreams für externe Player verfügbar Unbekannte Qualität - Streams, die noch nicht vom Downloader unterstützt werden, werden nicht angezeigt + Streams, die der Downloader noch nicht unterstützt, werden nicht angezeigt Der ausgewählte Stream wird von externen Playern nicht unterstützt Größe des Ladeintervalls für die Wiedergabe Zukünftige Elemente anzeigen diff --git a/app/src/main/res/values-enm/strings.xml b/app/src/main/res/values-enm/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-enm/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index ce00defd5..09115a31e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -48,7 +48,7 @@ Miniatura del avatar del usuario Contenido Mostrar contenido con restricción de edad - Toca en «Buscar» para comenzar. + Toque la lupa para comenzar. En directo Descargas Descargas @@ -732,11 +732,12 @@ Elija la calidad para reproductores externos Formato desconocido Calidad desconocida - Mostrar videos futuros + Mostrar elementos futuros Tamaño del intervalo de carga de reproducción Ocultar los elementos mirados Ocultar elementos futuros Ver en la página web Preguntas frecuentes Si tienes problemas al usar la aplicación, ¡Asegúrate de verificar estas respuestas a preguntas comunes! + Ordenar \ No newline at end of file diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 569b92a40..f1e815499 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -723,4 +723,5 @@ Ver na páxina web Preguntas máis frecuentes Se tes problemas para usala aplicación, asegúrate de consultar estas respostas ás preguntas comúns! + Ordenar \ No newline at end of file diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 49b472379..86f699a00 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -202,7 +202,7 @@ Legtöbb speciális karakter Nincs a fájl lejátszásához szükséges alkalmazás telepítve A NewPipe névjegye - Névjegy + Névjegy és GYIK Licencek Szabad, egyszerű közvetítésnézés Androidon. Közreműködés @@ -708,8 +708,8 @@ ExoPlayer alapértelmezett Feliratkoztál erre a csatornára , - Azok az élő adások melyek nem támogatottak a letöltő által, rejtve vannak. - A választott élő adást nem lehet külső lejátszóval lejátszani. + Azok az élő adások melyek nem támogatottak a letöltő által, rejtve vannak + A választott élő adást nem lehet külső lejátszóval lejátszani Összes váltása Külső lejátszók számára nem érhető el az hang csatorna Külső lejátszók számára nem érhető el videó @@ -717,5 +717,11 @@ Ismeretlen formátum Ismeretlen minőség Félhang - Jövőbeli videók megjelenítése + Jövőbeli elemek megjelenítése + Jövőbeli elemek elrejtése + Gyakran ismételt kérdések + Megtekintés a weboldalon + Rendezés + Ha problémája van az alkalmazás használatával, akkor nézze meg az ezekre a gyakori kérdésekre adott válaszokat. + Megnézett elemek elrejtése \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index bc7edb974..acb9d6bc0 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -107,7 +107,7 @@ \nper utilizzare il lettore popup Licenze di terze parti © %1$s di %2$s protetto da licenza %3$s - Informazioni + Info e domande frequenti Licenze Streaming libero e leggero su Android. Mostra su GitHub @@ -733,4 +733,8 @@ Mostra elementi futuri Nascondi elementi visti Nascondi elementi futuri + Domande frequenti + Se riscontri problemi nell\'utilizzo dell\'app, dai un\'occhiata alle risposte delle domande più comuni! + Ordina + Visualizza sul sito \ No newline at end of file diff --git a/app/src/main/res/values-kk/strings.xml b/app/src/main/res/values-kk/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-kk/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 85e15d3c5..0a36e3ee6 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -707,4 +707,8 @@ \n이후 버전에서 지원될 예정입니다. 감시한 항목 숨기기 향후 항목 숨기기 + 앱 사용에 문제가 있는 경우, 일반적인 질문에 대한 다음 답변을 확인하세요! + 자주 묻는 질문 + 웹사이트에서 보기 + 정렬 \ No newline at end of file diff --git a/app/src/main/res/values-ks/strings.xml b/app/src/main/res/values-ks/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-ks/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index fe4ab759c..77d55ae7e 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -736,4 +736,5 @@ Dažniausiai užduodami klausimai Žiūrėti svetainėje Jei kyla sunkumų naudojantis programėle, būtinai peržiūrėkite šiuos atsakymus į dažniausiai užduodamus klausimus! + Rikiuoti \ No newline at end of file diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 4bd996ede..196e4000d 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -127,7 +127,7 @@ Om NewPipe Tredjepartslisenser © %1$s av %2$s lisensiert %3$s - Om + Om og Ofte stilte spørsmål Lisenser Fri lett strømming på Android. Fortsett avspilling @@ -271,7 +271,7 @@ \n \nØnsker du å fortsette? Fartskontroller for avspilling - Tempo + Hastighet Tonehøyde Tøm avspillingshistorikk Slett historikken og posisjon for avspilte strømmer @@ -284,7 +284,7 @@ Ett element slettet. Inget program installert for avspilling av denne filen Undertekster - Endre undertekststørrelse og bakgrunnsstiler. Krever omstart av programmet for å tre i effekt. + Endre spillerens undertekststørrelse og bakgrunnsstiler. Krever omstart av appen for å tre i kraft NewPipe er copyleft, fri programvare: Du kan bruke, studere og forbedre etter egen vilje. Spesifikt kan du redistribuere og/eller modifisere det i henhold til vilkårene gitt i GNU General Public-lisensen, som publisert av Free Software Foundation, enten versjon 3 av lisensen, eller (etter eget ønske) enhver senere versjon. Ønsker du også å importere innstillinger? Kunne ikke importere abonnementer @@ -293,10 +293,11 @@ \n \n1. Gå til denne nettadressen: %1$s \n2. Logg inn når forespurt -\n3. Klikk på «All data inkludert\", så på «Fravelg alt», så på kun «Abonnementer», og klikk så «OK». -\n4. Klikk på «Neste steg» og så på «Opprett eksport» -\n5. Klikk på «Last ned»-knappen etter den vises, og -\n6. Fra nedlastet takeout.zip, pakk ut .json-filen (vanligvis under «YouTube og YouTube Music/subscriptions/subscriptions.json» og importer den her. +\n3. Klikk på \"All data inkludert\", så på \"Fjern merket for alle\", så på kun \"Abonnementer\", og klikk så \"OK\" +\n4. Klikk på \"Neste steg\" og så på \"Opprett eksport\" +\n5. Klikk på \"Last ned\"-knappen etter den vises%1$s +\n6. Klikk på IMPORTER FIL under og velg den nedlastede .zip filen +\n7. [Dersom .zip importen feiler] Pakk ut .csv filen (vanligvis under \"YouTube og YouTube Music/subscriptions/subscriptions.csv\"), klikk på IMPORTER FIL under og velg den utpakkede csv filen Importer en SoundCloud-profil ved å skrive enten nettadressen eller din ID: \n \n1. Skru på \"skrivebordsmodus\" i en nettleser ( siden er ikke tilgjengelig for mobile enheter) @@ -412,7 +413,8 @@ Start nedlastinger Sett nedlastinger på pause Spør om hvor ting skal lastes ned til - Du vil bli spurt om hvor hver nedlasting skal plasseres + Du vil bli spurt om hvor hver nedlasting skal plasseres +\nAktiver system mappe velgeren (SAF) dersom du vil laste ned til et eksternt SD kort Bruk systemmappevelger (SAF) «Lagringstilgangsrammeverk» (SAF) tillater nedlasting til eksternt SD-kort. Slett avspillingsposisjoner @@ -481,7 +483,7 @@ Alltid oppdater %d valgt - %d valgt + %d valgte Ingen abonnement valgt Velg abonnementer @@ -510,7 +512,7 @@ Kun på Wi-Fi Velg en spilleliste Innrapporter på GitHub - Legg i kø automatisk + Automatisk køstilling Den aktive spillerkøen blir erstattet Bytte fra en spiller til en annen kan erstatte køen din Be om bekreftelse før du tømmer køen @@ -533,7 +535,7 @@ Sjekk om det allerede eksisterer et problem som diskuterer ditt krasj. Når du oppretter duplikatbilletter, tar du tid fra oss som vi kan bruke på å fikse den faktiske feilen. Du kan maksimalt velge tre handlinger som skal vises i kompaktvarselet! Rediger hver varslingshandling nedenfor ved å trykke på den. Velg opptil tre av dem som skal vises i det kompakte varselet ved å bruke avmerkingsboksene til høyre - Skaler videominiatyrbildet som vises i varselet fra 16:9 til 1:1 sideforhold (kan føre til forvrengninger) + Beskjær videominiatyrbildet som vises i varselet fra 16:9 til 1:1 sideforhold (kan føre til forvrengninger) Tilgjengelig i noen tjenester, det er vanligvis mye raskere, men kan gi et begrenset antall elementer, og ofte ufullstendig info (f.eks. ingen varighet, elementtype, eller sanntidsstatus). Hent fra dedikert strøm når tilgjengelig Tid siden siste oppdatering før et abonnement vurderes utdatert — %s @@ -558,7 +560,7 @@ Tredje handlingstast Andre handlingstast Første handlingstast - Skaler miniatyrbildet til 1: 1-sideforhold + Beskjær miniatyrbildet til sideforholdet 1:1 Ingenting Vis minnelekkasjer Satt i kø @@ -659,8 +661,8 @@ Vis bildeindikatorer Dra elementer for å fjerne dem Start hovedspiller i fullskjerm - Spill etterpå - Spill etterpå + Still i kø neste + I kø neste Se etter oppdateringer Behandler … Kan ta sin tid Krasj avspilleren @@ -669,15 +671,19 @@ Nye informasjonskanalelementer Ser etter oppdateringer … Viser et krasjalternativ ved bruk av avspilleren - Det oppstod en feil. Sjekk merknaden. + Det oppsto en feil, se varselet Festet kommentar Feilrapport-merknad Merknader for innrapportering av feil - NewPipe-feil. Trykk for å rapportere. + NewPipe oppdaget en feil, trykk for å rapportere Opprett en feilmerknad Vis et feil-alternativsfelt - Installer en filbehandler først, eller skru av «%s» i nedlastingsinnstillingene. - Installer en filbehandler som støtter lagringstilgangsrammeverk først. + Ingen passende filbehandler ble funnet for denne handlingen. +\nVennligst installer en filbehandler, eller prøv å skru av \'%s\' i nedlastingsinnstillingene + Ingen passende filbehandler ble funnet for denne handlingen. +\nVennligst installer en Storage Access Framework kompatibel filbehandler LeakCanary er ikke tilgjengelig ExoPlayer-forvalg + Intervallstørrelse for avspillingsinnlasting + Bytt avspillinginnlastingens intervallstørrelse (for øyeblikket %s). En lavere verdi kan øke hastigheten på den første videoinnlastingen. Endringer krever en omstart av spilleren \ No newline at end of file diff --git a/app/src/main/res/values-nds/strings.xml b/app/src/main/res/values-nds/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-nds/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index be3ee95e4..b9bab7892 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -1,6 +1,6 @@ - ଆରମ୍ଭ କରିବା ପାଇଁ \"ସର୍ଚ୍ଚ\" ବଟନ କୁ ଦବାନ୍ତୁ + ଆରମ୍ଭ କରିବା ପାଇଁ \"ସର୍ଚ୍ଚ\" ବଟନ କୁ ଦବାନ୍ତୁ । ସିଷ୍ଟମ୍ ଡିଫଲ୍ଟ ନାମ ବଦଳାନ୍ତୁ ବନ୍ଦ @@ -36,4 +36,20 @@ %d ଦିନ ନୂଆ + %1$s ରେ ପ୍ରକାଶିତ + କୌଣସି ଷ୍ଟ୍ରିମ୍ ପ୍ଲେୟାର୍ ମିଳିଲା ନାହିଁ | VLC ସଂସ୍ଥାପନ କରନ୍ତୁ \? + କୌଣସି ଷ୍ଟ୍ରୀମ ପ୍ଲେୟାର ନାହିଁ । + ସଂସ୍ଥାପନ କରନ୍ତୁ + ପପ୍ଅପ୍ ମୋଡ୍ ରେ ଖୋଲନ୍ତୁ + ଏଥିରେ ଖୋଲନ୍ତୁ + ବାତିଲ୍ କରନ୍ତୁ + ଦେଖାଯାଇଥିବା ପରି ଚିହ୍ନିତ କର + ସଞ୍ଚୟ କରନ୍ତୁ + ସେଟିଂ + ତୁମେ ଏହା ଚାଂହ କି \"%1$s\"\? + ଫାଇଲ୍ ଡାଉନଲୋଡ କରନ୍ତୁ + ପଠାନ୍ତୁ + ସନ୍ଧାନ + ଠିକ୍ ଅଛି + ବ୍ରାଉଜରରେ ଖୋଲନ୍ତୁ \ No newline at end of file diff --git a/app/src/main/res/values-pa-rPK/strings.xml b/app/src/main/res/values-pa-rPK/strings.xml index 4369760cf..01b5deb60 100644 --- a/app/src/main/res/values-pa-rPK/strings.xml +++ b/app/src/main/res/values-pa-rPK/strings.xml @@ -119,4 +119,5 @@ پچھلی پلےبیک ستھتی توں مُڑ چلاؤ دِکھ صرف ایچ‌ٹی‌ٹی‌پی‌ایس نال کڑی دا پتہ ہی ماݨنیوگ ہن + ویکھیا جا چُکیا چنت کرو \ No newline at end of file diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 3ad5ade1b..f73e1b824 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -1,13 +1,13 @@ - ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਵੱਡਦਰਸ਼ੀ ਕੱਚ ਨੂੰ ਦਬਾਓ + ਵੱਡਦਰਸ਼ੀ ਕੱਚ \'ਤੇ ਟੈਪ ਕਰਕੇ ਸਰਚ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰੋ। %1$s ਨੂੰ ਜਾਰੀ ਕੀਤੀ ਗਈ ਕੋਈ ਸਟ੍ਰੀਮ ਪਲੇਅਰ ਨਹੀਂ ਮਿਲਿਆ। ਤੁਸੀਂ ਵੀਐੱਲਸੀ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੋਗੇ\? ਸਟ੍ਰੀਮ ਪਲੇਅਰ ਨਹੀਂ ਮਿਲਿਆ (ਤੁਸੀਂ ਵੀਐੱਲਸੀ ਸਥਾਪਤ ਕਰਕੇ ਇਸਨੂੰ ਚਲਾ ਸਕਦੇ ਹੋ)। ਸਥਾਪਤ ਕਰੋ ਰੱਦ ਕਰੋ ਬ੍ਰਾਊਜ਼ਰ \'ਚ ਖੋਲ੍ਹੋ - ਤੈਰਦੀ-ਤਸਵੀਰ \'ਚ ਖੋਲ੍ਹੋ + ਪੌਪ-ਅਪ ਮੋਡ \'ਚ ਖੋਲ੍ਹੋ ਸਾਂਝਾ ਕਰੋ ਡਾਊਨਲੋਡ ਕਰੋ ਸਟ੍ਰੀਮ ਫ਼ਾਈਲ ਡਾਊਨਲੋਡ ਕਰੋ @@ -16,7 +16,7 @@ ਕੀ ਤੁਹਾਡਾ ਮਤਲਬ ਸੀ \"%1$s\"\? ਇਸ ਨਾਲ਼ ਸਾਂਝਾ ਕਰੋ ਬਾਹਰੀ ਵੀਡੀਓ ਪਲੇਅਰ ਵਰਤੋ - ਕੁਝ ਰੈਜ਼ੋਲੂਸ਼ਨਾਂ \'ਤੇ ਆਵਾਜ਼ ਨੂੰ ਹਟਾ ਦਿੰਦੈ + ਕੁਝ ਰੈਜ਼ੋਲੂਸ਼ਨਾਂ \'ਤੇ ਆਵਾਜ਼ ਨੂੰ ਹਟਾ ਦਿੰਦਾ ਹੈ ਬਾਹਰੀ ਆਡੀਓ ਪਲੇਅਰ ਵਰਤੋ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ ਸਬਸਕ੍ਰਾਈਬ ਹੋ ਗਿਆ @@ -27,8 +27,8 @@ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਬੁੱਕਮਾਰਕ ਕੀਤੀਆਂ ਪਲੇ-ਸੂਚੀਆਂ ਨਵਾਂ ਕੀ ਹੈ - ਪਿਛੋਕੜ (ਬੈਕਗਰਾਊਂਡ) - ਤੈਰਦੀ-ਤਸਵੀਰ + ਬੈਕਗ੍ਰਾਊਂਡ ਆਡੀਓ + ਪੌਪ-ਅਪ ਇਸ ਵਿੱਚ ਜੋੜੋ ਵੀਡੀਓ ਲਈ ਡਾਊਨਲੋਡ ਫ਼ੋਲਡਰ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਵੀਡਿਓ ਇੱਥੇ ਜਮ੍ਹਾਂ ਹੁੰਦੀਆਂ ਹਨ @@ -37,55 +37,55 @@ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਆਡੀਓ ਇੱਥੇ ਜਮ੍ਹਾਂ ਹੁੰਦੀਆਂ ਹਨ ਆਡੀਓ ਫ਼ਾਈਲਾਂ ਲਈ ਡਾਊਨਲੋਡ ਫ਼ੋਲਡਰ ਚੁਣੋ ਡਿਫ਼ਾਲਟ ਰੈਜ਼ੋਲੂਸ਼ਨ - ਤੈਰਦੀ-ਤਸਵੀਰ ਲਈ ਡਿਫ਼ਾਲਟ ਰੈਜ਼ੋਲੂਸ਼ਨ + ਪੌਪ-ਅਪ ਲਈ ਡਿਫ਼ਾਲਟ ਰੈਜ਼ੋਲੂਸ਼ਨ ਵੱਡੀਆਂ ਰੈਜ਼ੋਲੂਸ਼ਨਾਂ ਦਿਖਾਓ ਸਿਰਫ਼ ਕੁਝ ਹੀ ਡਿਵਾਈਸ 2K/4K ਵੀਡੀਓ ਨੂੰ ਚਲਾ ਸਕਦੇ ਹਨ Kodi ਵਿੱਚ ਚਲਾਓ - Kore ਐਪ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ\? + Kodi ਐਪ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ\? \"Kodi ਵਿੱਚ ਚਲਾਓ\" ਆਪਸ਼ਨ ਦਿਖਾਓ - ਕੋਡੀ ਮੀਡੀਆ ਸੈਂਟਰ ਰਾਹੀਂ ਵੀਡੀਓ ਚਲਾਉਣ ਦੀ ਆਪਸ਼ਨ ਵਿਖਾਓ + Kodi ਮੀਡੀਆ ਸੈਂਟਰ ਰਾਹੀਂ ਵੀਡੀਓ ਚਲਾਉਣ ਦਾ ਵਿਕਲਪ ਦਿਖਾਓ ਆਡੀਓ - Default ਆਡੀਓ ਫਾਰਮੈਟ - Default ਵੀਡੀਓ ਫਾਰਮੈਟ + ਡੀਫ਼ਾਲਟ ਆਡੀਓ ਫ਼ਾਰਮੈਟ + ਡੀਫ਼ਾਲਟ ਵੀਡੀਓ ਫ਼ਾਰਮੈਟ ਥੀਮ ਸਫੈਦ ਗੂੜਾ - ਕਾਲਾ + ਕਾਲ੍ਹਾ ਪੌਪ-ਅਪ ਦਾ ਆਕਾਰ ਅਤੇ ਸਥਿਤੀ ਯਾਦ ਰੱਖੋ ਪੌਪ-ਅਪ ਦਾ ਆਖਰੀ ਅਕਾਰ ਅਤੇ ਸਥਿਤੀ ਯਾਦ ਰੱਖੋ ਤੇਜ਼ ਪਰ inexact seek ਵਰਤੋ - Inexact seek ਵੀਡੀਓ ਨੂੰ ਤੇਜ਼ ਪਰ ਅਣ-ਸਟੀਕ ਢੰਗ ਨਾਲ ਅੱਗੇ-ਪਿੱਛੇ ਲਿਜਾਂਦਾ ਹੈ । ਇਸ ਨਾਲ ਅੱਗੇ-ਪਿੱਛੇ 5,15 ਜਾਂ 25 ਸੈਕੰਡ ਜਾਣਾ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ। - ਥੰਬਨੇਲ ਲੋਡ ਕਰੋ - ਥੰਬਨੇਲ ਲੋਡ, ਡਾਟਾ ਦੀ ਬਚਤ ਅਤੇ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਰੋਕਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ। ਇਸ ਵਿਚ ਤਬਦੀਲੀ ਕਰਨ ਨਾਲ ਇਨ-ਮੈਮੋਰੀ ਅਤੇ ਆਨ-ਡਿਸਕ ਚਿੱਤਰ cache ਦੋਵੇਂ ਮਿਟ ਜਾਣਗੇ। + Inexact seek ਵੀਡੀਓ ਨੂੰ ਤੇਜ਼ ਪਰ ਅਣ-ਸਟੀਕ ਢੰਗ ਨਾਲ ਅੱਗੇ-ਪਿੱਛੇ ਲਿਜਾਂਦਾ ਹੈ । ਇਸ ਨਾਲ ਅੱਗੇ-ਪਿੱਛੇ 5,15 ਜਾਂ 25 ਸਕਿੰਟ ਜਾਣਾ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ + ਥੰਮਨੇਲ ਲੋਡ ਕਰੋ + ਥੰਮਨੇਲ ਲੋਡ, ਡਾਟਾ ਦੀ ਬੱਚਤ ਅਤੇ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਰੋਕਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ। ਇਸ ਵਿਚ ਤਬਦੀਲੀ ਕਰਨ ਨਾਲ ਇਨ-ਮੈਮੋਰੀ ਅਤੇ ਆਨ-ਡਿਸਕ ਚਿੱਤਰ cache ਦੋਵੇਂ ਮਿਟ ਜਾਣਗੇ ਚਿੱਤਰ cache ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ - Cached metadata ਮਿਟਾਓ + Cached ਮੈਟਾ-ਡਾਟਾ ਮਿਟਾਓ ਸਾਰੇ cached ਵੈੱਬ-ਪੇਜਾਂ ਦਾ ਡਾਟਾ ਮਿਟਾਓ - Metadata cache ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ + ਮੈਟਾ-ਡਾਟਾ cache ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ ਅਗਲੀ ਸਟ੍ਰੀਮ ਨੂੰ ਆਟੋ-ਕਤਾਰਬੱਧ ਕਰੋ - ਇੱਕ ਨਾ-ਦੁਹਰਾਉਣ ਵਾਲੀ ਕਤਾਰ ਨੂੰ, ਸੰਬੰਧਤ ਸਟ੍ਰੀਮ ਜੋੜਦਿਆਂ, ਮੁਕਾਉਂਦੇ ਰਹੋ + ਇੱਕ ਮੁੱਕਣ ਵਾਲੀ ਪਰ ਨਾ-ਦੁਹਰਾਉਣ ਵਾਲੀ ਕਤਾਰ ਨੂੰ, ਸੰਬੰਧਤ ਸਟ੍ਰੀਮ ਜੋੜਦਿਆਂ, ਚਲਾਉਂਦੇ ਜਾਓ ਖੋਜ ਸੁਝਾਅ - ਖੋਜ ਕਰਨ ਵੇਲੇ ਸੁਝਾਅ ਦਿਖਾਓ - ਖੋਜ ਸੂਚੀ - ਖੋਜ ਸੂਚੀ ਨੂੰ locally ਸਟੋਰ ਕਰੋ - ਪਹਿਲਾਂ ਤੋਂ ਵੇਖੀਆਂ ਹੋਈਆਂ ਚੀਜ਼ਾਂ ਦੀ ਸੂਚੀ - ਦੇਖੇ ਗਏ ਵਿਡੀਓਜ਼ ਦੀ ਸੂਚੀ ਰੱਖੋ + ਖੋਜ ਕਰਨ ਵੇਲੇ ਦਿਖਾਏ ਜਾਂਦੇ ਸੁਝਾਵਾਂ ਦੀ ਚੋਣ ਕਰੋ + ਖੋਜ ਇਤਿਹਾਸ ਨੂੰ ਵੇਖੋ + ਖੋਜ ਇਤਲਾਹਾਂ ਨੂੰ ਸਥਾਨਕ ਤੌਰ ਤੇ ਸਟੋਰ ਕਰੋ + ਵੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦੀ ਸੂਚੀ + ਵੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦੀ ਸੂਚੀ ਰੱਖੋ ਚਲਾਉਣਾ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ - ਵਿਘਨਾਂ (ਜਿਵੇਂ ਕਿ ਫ਼ੋਨ-ਕਾਲਾਂ, ਸੁਨੇਹੇ) ਤੋਂ ਬਾਅਦ ਚਲਾਉਣਾ ਜਾਰੀ ਰੱਖੋ + ਵਿਘਨਾਂ (ਜਿਵੇਂ ਕਿ ਫ਼ੋਨ-ਕਾਲਾਂ) ਤੋਂ ਬਾਅਦ ਚਲਾਉਣਾ ਜਾਰੀ ਰੱਖੋ ਡਾਊਨਲੋਡ - \'ਅੱਗੇ\' ਅਤੇ \'ਸਮਾਨਅੰਤਰ\' ਵੀਡੀਓ ਦਿਖਾਓ - \"Hold to append\" ਸੁਝਾਅ ਦਿਖਾਓ - ਵੀਡੀਓ ਦੇ ਵੇਰਵੇ ਪੰਨੇ \'ਤੇ ਬੈਕਗ੍ਰਾਉਂਡ ਜਾਂ ਪੌਪ-ਅਪ ਬਟਨ ਨੱਪਣ \'ਤੇ ਰਮਜ਼ ਦਿਖਾਓ + \'ਅਗਲੇ\' ਤੇ \'ਸਮਾਨਅੰਤਰ\' ਵੀਡੀਓ ਵਿਖਾਓ + \"ਜੋੜਨ ਲਈ ਬਟਨ ਦਬਾ ਕੇ ਰੱਖੋ\" ਵਿਖਾਓ + ਵੀਡੀਓ ਦੇ ਵੇਰਵੇ ਪੰਨੇ \'ਤੇ ਬੈਕਗ੍ਰਾਉਂਡ ਜਾਂ ਪੌਪ-ਅਪ ਬਟਨ ਨੱਪਣ \'ਤੇ ਸੁਝਾਅ ਵਿਖਾਓ ਅਣ-ਸਹਾਇਕ URL - ਮੂਲ ਦੇਸ਼ Content - ਪਲੇਯਰ + ਮੂਲ ਦੇਸ਼ + ਪਲੇਅਰ ਵਿਵਹਾਰ ਵੀਡੀਓ ਅਤੇ ਆਡੀਓ - ਇਤਿਹਾਸ ਅਤੇ ਕੈਸ਼ + ਇਤਿਹਾਸ ਅਤੇ ਕੈਸ਼-ਭੰਡਾਰ ਦਿੱਖ ਡੀ-ਬੱਗ ਬੈਕਗ੍ਰਾਉਂਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ ਪੌਪ-ਅਪ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ - Content + ਸਮੱਗਰੀ ਉਮਰ-ਮੁਤਾਬਕ-ਪਾਬੰਦੀਸ਼ੁਦਾ ਸਮੱਗਰੀ ਵਿਖਾਓ ਲਾਈਵ ਡਾਊਨਲੋਡਸ @@ -94,80 +94,80 @@ ਸਾਰੇ ਬੰਦ ਕੀਤਾ ਮਿਟਾਓ - ਵਧੀਆ Resolution + ਵਧੀਆ ਰੈਜ਼ੋਲੂਸ਼ਨ ਵਾਪਿਸ ਸਾਰੇ ਚਲਾਓ ਹਮੇਸ਼ਾ ਸਿਰਫ਼ ਇਸ ਬਾਰ ਫਾਈਲ - ਨਿਊ ਪਾਈਪ ਨੋਟ - NewPipe ਬੈਕਗ੍ਰਾਉਂਡ ਅਤੇ ਪੌਪ-ਅਪ ਪਲੇਅਰਾਂ ਲਈ ਸੂਚਨਾਵਾਂ - ਅਣਜਾਣ - ਬੈਕਗਰਾਊਂਡ ਵਿੱਚ ਬਦਲੋ - ਪੌਪ-ਅਪ ਵਿੱਚ ਬਦਲੋ - ਮੁੱਖ ਵਿੱਚ ਬਦਲੋ - Database ਆਯਾਤ ਕਰੋ - Database ਨਿਰਯਾਤ ਕਰੋ - ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਇਤਿਹਾਸ, ਸਬਸਕ੍ਰਿਪਸ਼ਨਸ, ਪਲੇਸੂਚੀ ਅਤੇ (ਆਪਨਸ਼ਨਲੀ) ਸੈਟਿੰਗਾਂ ਨੂੰ ਨਵਿਆਂ ਨਾਲ਼ ਬਦਲ ਦਿੰਦਾ ਹੈ - ਇਤਿਹਾਸ, ਸੁਬਸਕ੍ਰਿਪਸ਼ਨਸ, ਪਲੇ-ਸੂਚੀ ਅਤੇ ਸੈਟਿੰਗਾਂ ਦਰਾਮਦ ਕਰੋ - Watch ਹਿਸਟਰੀ ਮਿਟਾਓ - ਚਲਾਈਆਂ ਗਈਆਂ ਸਟ੍ਰੀਮਾਂ ਅਤੇ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਉਂਦਾ ਹੈ - ਕੀ ਸਾਰੀ watch ਹਿਸਟਰੀ ਮਿਟਾ ਦਿੱਤੀ ਜਾਵੇ \? - ਖੋਜ ਸੂਚੀ ਮਿਟਾਓ + ਨਿਊਪਾਈਪ ਨੋਟੀਫਿਕੇਸ਼ਨ + ਨਿਊਪਾਈਪ ਬੈਕਗ੍ਰਾਉਂਡ ਅਤੇ ਪੌਪ-ਅਪ ਪਲੇਅਰਾਂ ਲਈ ਨੋਟੀਫਿਕੇਸ਼ਨ + [ਅਣਜਾਣ] + ਬੈਕਗਰਾਊਂਡ ਵਿੱਚ ਚਲਾਓ + ਪੌਪ-ਅਪ ਵਿੱਚ ਚਲਾਓ + ਮੇਨ ਤੇ ਚਲਾਓ + ਡਾਟਾਬੇਸ ਆਯਾਤ ਕਰੋ + ਡਾਟਾਬੇਸ ਨਿਰਯਾਤ ਕਰੋ + ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਇਤਿਹਾਸ, ਸਬਸਕ੍ਰਿਪਸ਼ਨਜ਼, ਪਲੇਸੂਚੀ ਅਤੇ (ਆਪਨਸ਼ਨਲੀ) ਸੈਟਿੰਗਾਂ ਨੂੰ ਨਵਿਆਂ ਨਾਲ਼ ਬਦਲ ਦਿੰਦਾ ਹੈ + ਇਤਿਹਾਸ, ਸੁਬਸਕ੍ਰਿਪਸ਼ਨਜ਼, ਪਲੇ-ਸੂਚੀ ਅਤੇ ਸੈਟਿੰਗਾਂ ਦਰਾਮਦ ਕਰੋ + ਦੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦੀ ਸੂਚੀ ਮਿਟਾਓ + ਚਲਾਏ ਗਏ ਵੀਡੀਓਜ਼ ਦੇ ਇਤਿਹਾਸ ਅਤੇ ਪਲੇ-ਸਥਿਤੀਆਂ ਨੂੰ ਮਿਟਾਉਂਦਾ ਹੈ + ਕੀ ਵੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇ\? + ਖੋਜ ਸੂਚੀ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾਓ ਖੋਜ ਸ਼ਬਦਾਂ ਦੀ ਸੂਚੀ ਮਿਟਾਉਂਦਾ ਹੈ ਕੀ ਸਾਰੀ ਖੋਜ ਸੂਚੀ ਮਿਟਾ ਦਿਤੀ ਜਾਵੇ \? - ਖੋਜ ਸੂਚੀ ਮਿਟਾ ਦਿਤੀ ਗਈ ਹੈ. - ERROR - ਨੈੱਟਵਰਕ ERROR - ਸਾਰੇ ਥੰਬਨੇਲ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕੇ - ਵੀਡੀਓ URL ਦਸਤਖਤ ਡੀਕ੍ਰਿਪਟ ਨਹੀਂ ਹੋ ਸਕਿਆ + ਖੋਜ ਸੂਚੀ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾ ਦਿਤਾ ਗਿਆ + ਤਰੁੱਟੀ + ਨੈੱਟਵਰਕ ਤਰੁੱਟੀ + ਸਾਰੇ ਥੰਮਨੇਲ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕੇ + ਵੀਡੀਓ URL ਦਸਤਖਤ ਦੀ ਅਸਪੱਸ਼ਟਤਾ ਦੂਰ ਨਹੀਂ ਹੋ ਸਕੀ ਵੈਬਸਾਈਟ parse ਨਹੀਂ ਹੋ ਸਕੀ - Content ਉਪਲਬਧ ਨਹੀਂ ਹੈ + ਸਮੱਗਰੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ ਡਾਊਨਲੋਡ ਮੀਨੂੰ ਸੈਟ-ਅਪ ਨਹੀਂ ਹੋ ਸਕਿਆ - ਐਪ/UI crashed + ਐਪ/UI ਕਰੈਸ਼ ਹੋ ਗਈ ਇਸ ਸਟ੍ਰੀਮ ਨੂੰ ਚਲਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ - ਅਣਚਾਹਾ ਪਲੇਅਰ ERROR ਆਇਆ ਹੈ - ਪਲੇਅਰ ERROR ਤੋਂ Recover ਹੋ ਰਿਹਾ ਹੈ - External ਪਲੇਅਰ ਇਸ ਕਿਸਮ ਦੇ ਲਿੰਕਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ + ਅਣਚਾਹੀ ਪਲੇਅਰ ਤਰੁੱਟੀ ਆਈ ਹੈ + ਪਲੇਅਰ ਤਰੁੱਟੀ ਤੋਂ ਮੁੜ-ਸੁਰਜੀਤ ਹੋ ਰਿਹਾ ਹੈ + ਬਾਹਰੀ ਪਲੇਅਰ ਇਸ ਕਿਸਮ ਦੇ ਲਿੰਕਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ ਕੋਈ ਵੀ ਵੀਡੀਓ ਸਟ੍ਰੀਮ ਨਹੀਂ ਮਿਲੀ ਕੋਈ ਵੀ ਆਡੀਓ ਸਟ੍ਰੀਮ ਨਹੀਂ ਮਿਲੀ ਅਜਿਹਾ ਕੋਈ ਫੋਲਡਰ ਨਹੀਂ - ਅਜਿਹਾ ਕੋਈ ਫਾਈਲ/Content ਸਰੋਤ ਨਹੀਂ ਹੈ + ਅਜਿਹਾ ਕੋਈ ਫਾਈਲ/ਸਮੱਗਰੀ ਸਰੋਤ ਨਹੀਂ ਹੈ ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਜਾਂ ਇਸ ਨੂੰ ਪੜ੍ਹਨ ਜਾਂ ਲਿਖਣ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ ਫਾਈਲ ਨਾਮ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ - ਇੱਕ ERROR ਆਇਆ ਹੈ: %1$s + ਇੱਕ ਤਰੁੱਟੀ ਆਈ ਹੈ: %1$s ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਕੋਈ ਸਟ੍ਰੀਮ ਉਪਲਬਧ ਨਹੀਂ ਹੈ - ਮੁਆਫ ਕਰਨਾ, ਅਜਿਹਾ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਸੀ. + ਮੁਆਫ ਕਰਨਾ, ਅਜਿਹਾ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਸੀ। ਈ-ਮੇਲ ਦੁਆਰਾ ਇਸ ਤਰੁੱਟੀ ਦੀ ਇਤਲਾਹ ਦਿਓ ਅਫ਼ਸੋਸ ਹੈ, ਕੁਝ ਤਰੁੱਟੀਆਂ ਸਾਹਮਣੇ ਆਈਆਂ ਹਨ। - ਰਿਪੋਰਟ + ਇਤਲਾਹ ਕਰੋ ਜਾਣਕਾਰੀ: ਕੀ ਹੋਇਆ ਹੈ: ਕੀ:\\nRequest:\\nContent ਭਾਸ਼ਾ/ਬੋਲੀ:\\nContent Country:\\nApp ਭਾਸ਼ਾ/ਬੋਲੀ:\\nService:\\nGMT ਸਮਾਂ:\\nPackage:\\nVersion:\\nOS version: ਤੁਹਾਡੀ ਟਿੱਪਣੀ (ਅੰਗਰੇਜ਼ੀ ਵਿਚ): ਵੇਰਵੇ: - ਵਿਡੀਉ ਚਲਾਓ, ਮਿਆਦ: - ਅਪਲੋਡਰ ਦਾ ਅਵਤਾਰ thumbnail - ਪਸੰਦ - ਨਾਪਸੰਦ + ਵੀਡੀਓ ਚਲਾਓ, ਮਿਆਦ: + ਅਪਲੋਡਰ ਦਾ ਅਵਤਾਰ ਥੰਮਨੇਲ + ਪਸੰਦਾਂ + ਨਾਪਸੰਦਾਂ ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ - ਇਥੇ ਦਾ ਸੁੰਨਾਪਨ ਦੂਰ ਕਰਨ ਲਈ ਕੋਈ ਚੈਨਲ ਸਬਸਕ੍ਰਾਇਬ ਕਰੋ - ਕਤਾਰਬੱਧ ਕਰਨ ਲਈ ਖਿੱਚੋ + ਇਥੇ ਦਾ ਸੁੰਨਾਪਨ ਦੂਰ ਕਰਨ ਲਈ ਕੁਝ ਸਰਚ ਕਰੋ ਜਾਂ ਕੋਈ ਚੈਨਲ ਸਬਸਕ੍ਰਾਇਬ ਕਰੋ + ਮੁੜ-ਕ੍ਰਮਬੱਧ ਕਰਨ ਲਈ ਡਰੈਗ ਕਰੋ ਵੀਡੀਓ ਆਡੀਓ ਦੋਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਹਜ਼ਾਰ ਮਿਲੀਅਨ ਬਿਲੀਅਨ - ਕੋਈ ਸਬਸਕ੍ਰਾਇਬਰ ਨਹੀਂ + ਕੋਈ ਸਬਸਕ੍ਰਾਈਬਰ ਨਹੀਂ - %s ਸਬਸਕ੍ਰਾਇਬਰ - %s ਸਬਸਕ੍ਰਾਇਬਰਸ + %s ਸਬਸਕ੍ਰਾਈਬਰ + %s ਸਬਸਕ੍ਰਾਈਬਰਸ - ਕੋਈ views ਨਹੀਂ + ਕੋਈ ਵਿਊਜ਼ ਨਹੀਂ - %s view - %s views + %s ਵਿਊ + %s ਵਿਊਜ਼ ਕੋਈ ਵੀਡੀਓ ਨਹੀਂ @@ -183,98 +183,99 @@ ਨਾਮ ਬਦਲੋ ਠੀਕ ਹੈ ਫਾਈਲ ਦਾ ਨਾਮ - threads - ERROR - NewPipe ਡਾਊਨਲੋਡ ਹੋ ਰਿਹਾ ਹੈ + ਥਰੈੱਡ + ਤਰੁੱਟੀ + ਨਿਊਪਾਈਪ ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ ਵੇਰਵਿਆਂ ਲਈ ਖੋਲੋ ਕ੍ਰਿਪਾ ਕਰਕੇ ਉਡੀਕ ਕਰੋ… ਕਲਿਪ-ਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਹੋ ਗਿਆ ਹੈ - ਬਾਅਦ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਵਿਚੋਂ ਇੱਕ ਡਾਉਨਲੋਡ ਫੋਲਡਰ ਨੂੰ ਚੁਣੋ - ਪੌਪ-ਅਪ ਮੋਡ ਵਿੱਚ ਖੋਲ੍ਹਣ ਵਾਸਤੇ ਇਸ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ - 1 ਆਈਟਮ ਮਿਟਾਈ ਗਈ. + ਬਾਅਦ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਵਿਚੋਂ ਇੱਕ ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਨੂੰ ਚੁਣੋ + ਪੌਪ-ਅਪ ਮੋਡ ਵਿੱਚ ਖੋਲ੍ਹਣ ਵਾਸਤੇ +\nਇਸ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ + 1 ਆਈਟਮ ਮਿਟਾਈ ਗਈ। ReCaptcha ਚੁਣੌਤੀ ReCaptcha ਚੁਣੌਤੀ ਲਈ ਬੇਨਤੀ ਡਾਊਨਲੋਡ ਫਾਈਲ ਨਾਮ ਵਿੱਚ ਪ੍ਰਵਾਨਿਤ ਅੱਖਰ - ਗਲਤ ਅੱਖਰ ਇਸ Value ਨਾਲ ਤਬਦੀਲ ਕੀਤੇ ਜਾਣਗੇ - Replacement ਅੱਖਰ + ਗਲਤ ਅੱਖਰ ਇਸ ਚਿੰਨ ਨਾਲ ਤਬਦੀਲ ਕੀਤੇ ਜਾਣਗੇ + ਵਟਾਂਦਰਾ ਚਿੰਨ ਅੱਖਰ ਅਤੇ ਅੰਕ ਬਹੁਤੇ ਖ਼ਾਸ ਅੱਖਰ ਇਸ ਫਾਈਲ ਨੂੰ ਚਲਾਉਣ ਲਈ ਕੋਈ ਐਪ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ - NewPipe ਬਾਰੇ - ਥਰਡ-ਪਾਰਟੀ ਲਾਇਸੈਂਸ + ਨਿਊਪਾਈਪ ਬਾਰੇ + ਤੀਜੀ ਧਿਰ ਦੇ ਲਾਈਸੈਂਸ © %1$s ਵਲੋਂ %2$s, %3$s ਅਧੀਨ - ਐਪ ਬਾਰੇ - ਲਾਇਸੈਂਸ - ਐਂਡਰਾਇਡ ਤੇ ਮੁਫਤ ਲਾਈਟਵੇਟ ਸਟ੍ਰੀਮਿੰਗ. + ਐਪ ਬਾਰੇ ਤੇ ਆਮ ਸਵਾਲ + ਲਾਈਸੈਂਸ + ਐਂਡਰਾਇਡ ਤੇ ਮੁਫ਼ਤ ਹਲਕੀ-ਫੁਲਕੀ ਸਟ੍ਰੀਮਿੰਗ। ਯੋਗਦਾਨ ਪਾਓ - ਭਾਵੇਂ ਤੁਹਾਡੇ ਕੋਲ ਵਿਚਾਰ ਹਨ; ਅਨੁਵਾਦ, ਡਿਜ਼ਾਈਨ ਬਦਲਾਵ, ਕੋਡ ਦੀ ਸਫਾਈ, ਜਾਂ ਅਸਲ ਭਾਰੀ ਕੋਡ ਬਦਲਾਵ — ਹਰ ਮਦਦ ਦਾ ਸਦਾ ਸਵਾਗਤ ਹੈ. ਜਿੰਨਾ ਇਸ ਨੂੰ ਜ਼ਿਆਦਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਉੱਨਾ ਹੀ ਇਹ ਬਿਹਤਰ ਹੁੰਦਾ ਹੈ! - GitHub ਤੇ ਵੇਖੋ + ਭਾਵੇਂ ਤੁਹਾਡੇ ਕੋਲ ਵਿਚਾਰ ਹਨ; ਅਨੁਵਾਦ, ਡਿਜ਼ਾਈਨ ਬਦਲਾਵ, ਕੋਡ ਦੀ ਸਫਾਈ, ਜਾਂ ਅਸਲ ਭਾਰੀ ਕੋਡ ਬਦਲਾਵ — ਹਰ ਮਦਦ ਦਾ ਸਦਾ ਸਵਾਗਤ ਹੈ। ਜਿੰਨਾ ਇਸ ਨੂੰ ਜ਼ਿਆਦਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਉੱਨਾ ਹੀ ਇਹ ਬਿਹਤਰ ਹੁੰਦਾ ਹੈ! + ਗਿਟਹੱਬ ਤੇ ਵੇਖੋ ਦਾਨ ਕਰੋ - ਨਿਊ-ਪਾਈਪ ਵਲੰਟੀਅਰਾਂ ਦੁਆਰਾ ਵਿਕਸਤ ਕੀਤੀ ਗਈ ਹੈ ਜੋ ਤੁਹਾਡੇ ਲਈ ਬਿਹਤਰ ਵਰਤੋਂਕਾਰ ਤਜਰਬਾ ਲਿਆਉਣ ਲਈ ਸਮਾਂ ਬਿਤਾਉਂਦੇ ਹਨ। ਡਿਵੈਲਪਰਾਂ ਵਾਸਤੇ ਇੱਕ ਕੱਪ ਕਾਫ਼ੀ ਖ਼ਰੀਦ ਦਿਓ ਤਾਂ ਕਿ ਇਸਦਾ ਆਨੰਦ ਲੈਂਦੇ ਹੋਏ ਉਹ ਨਿਊ-ਪਾਈਪ ਨੂੰ ਹੋਰ ਵਧੀਆ ਬਣਾ ਸਕਣ। + ਨਿਊਪਾਈਪ ਵਲੰਟੀਅਰਾਂ ਦੁਆਰਾ ਵਿਕਸਤ ਕੀਤੀ ਗਈ ਹੈ ਜੋ ਤੁਹਾਡੇ ਲਈ ਬਿਹਤਰ ਵਰਤੋਂਕਾਰ ਤਜ਼ਰਬਾ ਲਿਆਉਣ ਲਈ ਸਮਾਂ ਬਿਤਾਉਂਦੇ ਹਨ। ਡਿਵੈਲਪਰਾਂ ਵਾਸਤੇ ਇੱਕ ਕੱਪ ਕਾਫ਼ੀ ਖ਼ਰੀਦ ਦਿਓ ਤਾਂ ਕਿ ਇਸਦਾ ਆਨੰਦ ਲੈਂਦੇ ਹੋਏ ਉਹ ਨਿਊਪਾਈਪ ਨੂੰ ਹੋਰ ਵਧੀਆ ਬਣਾ ਸਕਣ। ਵਾਪਸ ਦਿਓ - ਵੈਬਸਾਈਟ - ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਅਤੇ ਖ਼ਬਰਾਂ ਲਈ NewPipe ਵੈਬਸਾਈਟ ਵੇਖੋ. - NewPipe\'s ਲਾਇਸੈਂਸ - NewPipe ਇੱਕ ਕਾੱਪੀਲਿਫਟ ਮੁਫ਼ਤ ਸਾੱਫਟਵੇਅਰ ਹੈ: ਤੁਸੀਂ ਇਸ ਦੀ ਵਰਤੋਂ, ਅਧਿਐਨ ਅਤੇ ਇਸ ਨੂੰ ਸਾਂਝਾ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਇਸ ਵਿੱਚ ਆਪਣੀ ਮਰਜ਼ੀ ਅਨੁਸਾਰ ਸੁਧਾਰ ਸਕਦੇ ਹੋ. ਖਾਸ ਤੌਰ \'ਤੇ ਤੁਸੀਂ ਇਸ ਨੂੰ GNU ਜਨਰਲ ਪਬਲਿਕ ਲਾਇਸੈਂਸ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦੇ ਅਧੀਨ ਵੰਡ ਸਕਦੇ ਹੋ / ਜਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰ ਸਕਦੇ ਹੋ ਜਿਵੇਂ ਕਿ ਮੁਫਤ ਸਾੱਫਟਵੇਅਰ ਫਾਊਂਡੇਸ਼ਨ ਦੁਆਰਾ ਪ੍ਰਕਾਸ਼ਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਜਾਂ ਤਾਂ ਲਾਇਸੈਂਸ ਦਾ ਵਰਜ਼ਨ 3, ਜਾਂ (ਤੁਹਾਡੇ ਵਿਕਲਪ\' ਤੇ) ਬਾਅਦ ਦਾ ਕੋਈ ਸੰਸਕਰਣ. - ਲਾਇਸੈਂਸ ਪੜ੍ਹੋ - ਹਿਸਟਰੀ - ਹਿਸਟਰੀ - ਕੀ ਤੁਸੀਂ ਇਸ ਚੀਜ਼ ਨੂੰ ਖੋਜ ਸੂਚੀ ਵਿੱਚੋਂ ਮਿਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ\? + ਵੈੱਬਸਾਈਟ + ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਅਤੇ ਖ਼ਬਰਾਂ ਲਈ ਨਿਊਪਾਈਪ ਵੈੱਬਸਾਈਟ ਵੇਖੋ। + ਨਿਊਪਾਈਪ ਲਾਈਸੈਂਸ + ਨਿਊਪਾਈਪ ਇੱਕ ਕਾਪੀਲਿਫਟ ਮੁਫ਼ਤ ਸਾਫਟਵੇਅਰ ਹੈ। ਤੁਸੀਂ ਇਸ ਦੀ ਵਰਤੋਂ, ਇਸ ਦਾ ਅਧਿਐਨ ਅਤੇ ਇਸ ਨੂੰ ਸਾਂਝਾ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਇਸ ਵਿੱਚ ਆਪਣੀ ਮਰਜ਼ੀ ਅਨੁਸਾਰ ਸੁਧਾਰ ਸਕਦੇ ਹੋ। ਖਾਸ ਤੌਰ \'ਤੇ ਤੁਸੀਂ ਇਸ ਨੂੰ GNU ਜਨਰਲ ਪਬਲਿਕ ਲਾਈਸੈਂਸ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦੇ ਅਧੀਨ ਵੰਡ ਸਕਦੇ ਹੋ / ਜਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰ ਸਕਦੇ ਹੋ ਜਿਵੇਂ ਕਿ ਮੁਫਤ ਸਾਫਟਵੇਅਰ ਫਾਊਂਡੇਸ਼ਨ ਦੁਆਰਾ ਪ੍ਰਕਾਸ਼ਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਜਾਂ ਤਾਂ ਲਾਈਸੈਂਸ ਦਾ ਵਰਜ਼ਨ 3, ਜਾਂ (ਤੁਹਾਡੇ ਵਿਕਲਪ \'ਤੇ) ਬਾਅਦ ਦਾ ਕੋਈ ਸੰਸਕਰਣ। + ਲਾਈਸੈਂਸ ਪੜ੍ਹੋ + ਇਤਿਹਾਸ + ਇਤਿਹਾਸ + ਕੀ ਤੁਸੀਂ ਇਸ ਚੀਜ਼ ਨੂੰ ਖੋਜ-ਸੂਚੀ ਦੇ ਇਤਿਹਾਸ ਵਿੱਚੋਂ ਮਿਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ\? ਆਖਰੀ ਚਲਾਈ ਗਈ ਸਭ ਤੋਂ ਜਿਆਦਾ ਚਲਾਈ ਗਈ ਮੁੱਖ ਪੰਨੇ ਦੀ ਸਮੱਗਰੀ - ਖਾਲੀ ਪੇਜ - Kiosk ਪੇਜ - ਚੈਨਲ ਪੇਜ + ਖ਼ਾਲੀ ਪੇਜ + ਕਿਓਸਕ ਪੰਨਾ + ਚੈਨਲ ਪੰਨਾ ਚੈਨਲ ਚੁਣੋ ਅਜੇ ਤੱਕ ਕੋਈ ਚੈਨਲ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨਹੀਂ - ਇੱਕ Kiosk ਚੁਣੋ + ਇੱਕ ਕਿਓਸਕ ਚੁਣੋ ਐਕਸਪੋਰਟ ਕੀਤਾ ਗਿਆ ਇੰਪੋਰਟ ਕੀਤਾ ਗਿਆ ਕੋਈ ਵੈਧ ZIP ਫਾਈਲ ਨਹੀਂ ਹੈ - ਚੇਤਾਵਨੀ: ਸਾਰੀਆਂ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕੀਆਂ. - ਇਹ ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਸੈਟ-ਅਪ ਨੂੰ Override ਕਰ ਦੇਵੇਗਾ. + ਚੇਤਾਵਨੀ: ਸਾਰੀਆਂ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕੀਆਂ। + ਇਹ ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਸੈਟ-ਅਪ ਨੂੰ ਓਵਰ-ਰਾਈਡ ਕਰ ਦੇਵੇਗਾ। ਰੁਝਾਨ ਵਿੱਚ - ਟੌਪ 50 - ਨਵਾਂ ਅਤੇ ਤਾਜ਼ਾ-ਤਰੀਨ + ਸਿਖਰਲੇ 50 + ਨਵੇਂ ਅਤੇ ਤਾਜ਼ਾ-ਤਰੀਨ ਹਟਾਓ ਵੇਰਵੇ ਆਡੀਓ ਸੈਟਿੰਗਾਂ ਕਤਾਰਬੱਧ ਕਰਨ ਵਾਸਤੇ ਦਬਾ ਕੇ ਰੱਖੋ - ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚਲਾਉ - ਤੈਰਦੀ-ਤਸਵੀਰ ਵਿੱਚ ਚਲਾਉਣਾ ਸ਼ੁਰੂ ਕਰੋ - Drawer ਖੋਲੋ - Drawer ਬੰਦ ਕਰੋ - ਤਰਜੀਹੀ \'OPEN\' ਐਕਸ਼ਨ - Content ਖੋਲ੍ਹਣ ਵੇਲੇ Default ਕਾਰਵਾਈ — %s + ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚਲਾਉਣਾ ਸ਼ੁਰੂ ਕਰੋ + ਪੌਪ-ਅਪ ਵਿੱਚ ਚਲਾਉਣਾ ਸ਼ੁਰੂ ਕਰੋ + ਡਰਾਅਰ ਖੋਲੋ + ਡਰਾਅਰ ਬੰਦ ਕਰੋ + ਤਰਜੀਹੀ \'ਖੋਲ੍ਹੋ\' ਐਕਸ਼ਨ + ਸਮੱਗਰੀ ਖੋਲ੍ਹਣ ਸਮੇਂ ਡਿਫ਼ਾਲਟ ਕਾਰਵਾਈ — %s ਵੀਡੀਓ ਪਲੇਅਰ ਬੈਕਗ੍ਰਾਊਂਡ ਪਲੇਅਰ ਪੌਪ-ਅਪ ਪਲੇਅਰ - ਹਮੇਸ਼ਾ ਪੁੱਛੋ + ਹਮੇਸ਼ਾਂ ਪੁੱਛੋ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰ ਰਹੇ ਹਾਂ… - ਬੇਨਤੀ ਕੀਤਾ Content ਲੋਡ ਕੀਤੀ ਜਾ ਰਿਹਾ ਹੈ + ਬੇਨਤੀ ਕੀਤੀ ਸਮੱਗਰੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ ਨਵੀਂ ਪਲੇ-ਲਿਸਟ ਨਾਮ ਬਦਲੋ ਨਾਮ ਪਲੇ-ਸੂਚੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ - ਬਤੌਰ ਪਲੇ-ਸੂਚੀ ਥਮਨੇਲ ਸੈੱਟ ਕਰੋ + ਬਤੌਰ ਪਲੇ-ਸੂਚੀ ਥੰਮਨੇਲ ਸੈੱਟ ਕਰੋ ਬੁੱਕਮਾਰਕ ਪਲੇ-ਲਿਸਟ ਬੁੱਕਮਾਰਕ ਹਟਾਓ - ਇਸ ਪਲੇ-ਲਿਸਟ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ \? + ਇਸ ਪਲੇ-ਲਿਸਟ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ\? ਪਲੇ-ਲਿਸਟ ਬਣਾਈ ਗਈ ਪਲੇ-ਲਿਸਟ ਕੀਤਾ ਗਿਆ - ਪਲੇ-ਲਿਸਟ thumbnail ਬਦਲਿਆ ਗਿਆ. - No captions + ਪਲੇ-ਲਿਸਟ ਥੰਮਨੇਲ ਬਦਲਿਆ ਗਿਆ। + ਕੋਈ ਸਿਰਲੇਖ ਨਹੀਂ ਫਿੱਟ ਭਰੋ ਜ਼ੂਮ - Auto-Generated - captions - ਪਲੇਅਰ caption, text ਸਕੇਲ ਅਤੇ ਬੈਕਗ੍ਰਾਉਂਡ ਸਟਾਈਲ ਨੂੰ ਸੋਧੋ. ਪ੍ਰਭਾਵ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਐਪ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਹੈ. - ਮੈਮੋਰੀ ਲੀਕ monitoring, ਐਪ ਨੂੰ Unresponsive ਬਣਾ ਸਕਦੀ ਹੈ ਜਦੋਂ ਹੀਪ dumping ਹੁੰਦੀ ਹੈ - Out-of-lifecycle ERROR ਰਿਪੋਰਟ ਕਰੋ - ਨਿਪਟਾਰੇ ਦੇ ਬਾਅਦ ਟੁਕੜੇ ਜਾਂ ਗਤੀਵਿਧੀਆਂ ਦੇ lifecycle ਤੋਂ ਬਾਹਰ undeliverable Rx ਅਪਵਾਦਾਂ ਬਾਰੇ ਜ਼ਬਰੀ ਰਿਪੋਰਟ ਕਰਨਾ + ਆਪਣੇ-ਆਪ ਬਣੀ + ਸਿਰਲੇਖ + ਪਲੇਅਰ ਸੁਰਖੀ, text ਸਕੇਲ ਅਤੇ ਬੈਕਗ੍ਰਾਊਂਡ ਸਟਾਈਲ ਨੂੰ ਸੋਧੋ। ਪ੍ਰਭਾਵ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਐਪ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਹੈ + ਮੈਮੋਰੀ ਲੀਕ ਨਿਗਰਾਨੀ, ਐਪ ਨੂੰ ਆਕ੍ਰਿਆਸ਼ੀਲ ਬਣਾ ਸਕਦੀ ਹੈ ਜਦੋਂ ਹੀਪ ਡੰਪਿੰਗ ਹੁੰਦੀ ਹੈ + ਚੱਕਰ ਤੋਂ ਬਾਹਰ ਤਰੁੱਟੀਆਂ ਰਿਪੋਰਟ ਕਰੋ + ਨਿਪਟਾਰੇ ਦੇ ਬਾਅਦ ਫਰੈਗਮੈਂਟ ਜਾਂ ਐਕਟੀਵਿਟੀ ਦੇ ਚੱਕਰ ਤੋਂ ਬਾਹਰ ਨਾ ਪਹੁੰਚਾਉਣ ਯੋਗ ਆਰ-ਐਕਸ ਅਪਵਾਦਾਂ ਬਾਰੇ ਜ਼ਬਰੀ ਰਿਪੋਰਟ ਕਰਨਾ ਇੰਪੋਰਟ ਇੰਪੋਰਟ ਕਰੋ ਐਕਸਪੋਰਟ ਕਰੋ @@ -284,43 +285,47 @@ ਪਿੱਛਲਾ ਐਕਸਪੋਰਟ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਇੰਪੋਰਟ ਨਹੀਂ ਹੋ ਸਕੀਆਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਐਕਸਪੋਰਟ ਨਹੀਂ ਹੋ ਸਕੀਆਂ - ਯੂਟਿਊਬ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਐਕਸਪੋਰਟ ਫਾਈਲ ਡਾਊਨਲੋਡ ਕਰੋ: -\n -\n1. ਇਸ URL ਤੇ ਜਾਓ: %1$s -\n2. ਆਪਣੇ ਖਾਤੇ \'ਚ ਲਾਗ-ਇਨ ਕਰੋ -\n3. ਇੱਕ ਡਾਉਨਲੋਡ ਸ਼ੁਰੂ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ (ਇਹੀ ਐਕਸਪੋਰਟ ਫਾਈਲ ਹੈ) + ਗੂਗਲ ਟੇਕਅਊਟ ਤੋਂ ਯੂਟਿਊਬ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਐਕਸਪੋਰਟ ਫਾਈਲ ਡਾਊਨਲੋਡ ਕਰੋ: +\n +\n1. ਇਸ URL ਤੇ ਜਾਓ: %1$s +\n2. ਮੰਗਣ ਤੇ ਆਪਣੇ ਖਾਤੇ \'ਚ ਲਾਗ-ਇਨ ਕਰੋ +\n3. ਕਲਿੱਕ ਕਰੋ \" All data incuded\" ਤੇ, ਫੇਰ \"Deselect all\" ਤੇ ਫੇਰ ਸਿਰਫ \"subscriprion\" ਚੁਣੋ ਅਤੇ \"OK\" ਕਰੋ +\n4. \"Next step\" ਤੇ ਕਲਿੱਕ ਕਰੋ ਤੇ ਫੇਰ \"create export\" ਤੇ +\n5. ਡਾਊਨਲੋਡ ਬਟਨ ਦਿਖਾਈ ਦੇਣ ਤੇ ਇਸ ਤੇ ਕਲਿੱਕ ਕਰੋ।ਇੱਕ ਡਾਉਨਲੋਡ ਸ਼ੁਰੂ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ (ਇਹੀ ਐਕਸਪੋਰਟ ਫਾਈਲ ਹੈ) +\n6. ਥੱਲੇ ਇੰਪੋਰਟ ਫਾਈਲ ਤੇ ਕਲਿੱਕ ਕਰੋ ਤੇ ਡਾਊਨਲੋਡ ਕੀਤੀ .zip ਫਾਈਲ ਚੁਣੋ +\n7. [ਜੇ .zip ਤੋਂ ਐਕਸਪੋਰਟ ਫੇਲ ਹੋ ਜਾਂਦੀ ਹੈ] ਤਾਂ .csv ਫਾਈਲ ਐਕਸਟਰੈਕਟ ਕਰੋ (ਆਮ ਤੌਰ ਤੇ \"YouTube and YouTube Music/subscriptions/subscriptions.csv\"), ਥੱਲੇ ਦਿੱਤੇ ਇੰਪੋਰਟ ਫਾਈਲ ਤੇ ਕਲਿੱਕ ਕਰਕੇ ਐਕਸਟਰੈਕਟ ਕੀਤੀ csv ਫਾਈਲ ਚੁਣੋ URL ਜਾਂ ਆਪਣੀ ID ਟਾਈਪ ਕਰਕੇ ਸਾਉੰਡ ਕਲਾਉਡ ਪ੍ਰੋਫਾਈਲ ਇੰਪੋਰਟ ਕਰੋ: \n \n1. ਇੱਕ ਵੈਬ-ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ \"ਡੈਸਕਟਾਪ ਮੋਡ\" ਨੂੰ ਚਾਲੂ ਕਰੋ (ਸਾਈਟ ਮੋਬਾਈਲ ਉਪਕਰਣਾਂ ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹੈ) \n2. ਇਸ URL ਤੇ ਜਾਓ: %1$s \n3. ਆਪਣੇ ਖਾਤੇ ਚ ਲੌਗ-ਇਨ ਕਰੋ \n4. ਨਿਰਦੇਸ਼ਤ ਕੀਤੇ ਗਏ ਪ੍ਰੋਫਾਈਲ URL ਨੂੰ ਕਾਪੀ ਕਰੋ. - yourID, Soundcloud.com/yourid - ਯਾਦ ਰੱਖੋ ਕਿ ਇਹ ਕਾਰਜ ਡਾਟਾ consuming ਹੋ ਸਕਦਾ ਹੈ. -\n + ਤੁਹਾਡੀ ਆਈਡੀ, soundcloud.com/ਤੁਹਾਡੀ ਆਈਡੀ + ਯਾਦ ਰੱਖੋ ਕਿ ਇਸ ਕਾਰਜ ਨਾਲ ਡਾਟਾ ਖਪਤ ਹੋ ਸਕਦਾ ਹੈ। +\n \nਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ\? ਪਲੇਅਬੈਕ ਸਪੀਡ ਕੰਟਰੋਲ - tempo - pitch + ਤਾਲ + ਪਿੱਚ ਅਲਹਿਦਾ ਕਰੋ (ਵਿਗਾੜ ਪੈ ਸਕਦਾ ਹੈ) ਕੀ ਤੁਸੀਂ ਸੈਟਿੰਗਾਂ ਨੂੰ ਵੀ ਇੰਪੋਰਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ\? - NewPipe\'s ਗੋਪਨੀਯਤਾ ਨੀਤੀ - NewPipe ਪ੍ਰੋਜੈਕਟ ਤੁਹਾਡੀ ਗੋਪਨੀਯਤਾ ਨੂੰ ਬਹੁਤ ਗੰਭੀਰਤਾ ਨਾਲ ਲੈਂਦਾ ਹੈ. ਇਸ ਲਈ ਐਪ ਤੁਹਾਡੀ ਸਹਿਮਤੀ ਤੋਂ ਬਿਨਾਂ ਕੋਈ ਵੀ ਡਾਟਾ ਇੱਕਠਾ ਨਹੀਂ ਕਰਦਾ. -\nNewPipe ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਵਿਸਥਾਰ ਵਿੱਚ ਦੱਸਦੀ ਹੈ ਕਿ ਜਦੋਂ ਤੁਸੀਂ ਕਰੈਸ਼ ਰਿਪੋਰਟ ਭੇਜਦੇ ਹੋ ਤਾਂ ਕਿਹੜਾ ਡੇਟਾ ਭੇਜਿਆ ਜਾਂ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ. + ਨਿਊਪਾਈਪ ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ + ਨਿਊਪਾਈਪ ਪ੍ਰੋਜੈਕਟ ਤੁਹਾਡੀ ਗੋਪਨੀਯਤਾ ਨੂੰ ਬਹੁਤ ਗੰਭੀਰਤਾ ਨਾਲ ਲੈਂਦਾ ਹੈ। ਇਸ ਲਈ ਐਪ ਤੁਹਾਡੀ ਸਹਿਮਤੀ ਤੋਂ ਬਿਨਾਂ ਕੋਈ ਵੀ ਡਾਟਾ ਇੱਕਠਾ ਨਹੀਂ ਕਰਦਾ। +\nਨਿਊਪਾਈਪ ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਵਿਸਥਾਰ ਵਿੱਚ ਦੱਸਦੀ ਹੈ ਕਿ ਜਦੋਂ ਤੁਸੀਂ ਕਰੈਸ਼ ਰਿਪੋਰਟ ਭੇਜਦੇ ਹੋ ਤਾਂ ਕਿਹੜਾ ਡਾਟਾ ਭੇਜਿਆ ਜਾਂ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਪੜ੍ਹੋ - ਯੂਰਪੀਅਨ ਜਨਰਲ ਡੇਟਾ ਪ੍ਰੋਟੈਕਸ਼ਨ ਰੈਗੂਲੇਸ਼ਨ (ਜੀਡੀਪੀਆਰ) ਦੀ ਪਾਲਣਾ ਕਰਨ ਲਈ, ਅਸੀਂ ਤੁਹਾਡਾ ਧਿਆਨ NewPipe ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਵੱਲ ਖਿੱਚਦੇ ਹਾਂ. ਕਿਰਪਾ ਕਰਕੇ ਇਸਨੂੰ ਧਿਆਨ ਨਾਲ ਪੜ੍ਹੋ. -\nਸਾਨੂੰ BUG ਰਿਪੋਰਟ ਭੇਜਣ ਲਈ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨਾ ਪਵੇਗਾ. + ਯੂਰਪੀਅਨ ਜਨਰਲ ਡੇਟਾ ਪ੍ਰੋਟੈਕਸ਼ਨ ਰੈਗੂਲੇਸ਼ਨ (ਜੀਡੀਪੀਆਰ) ਦੀ ਪਾਲਣਾ ਕਰਨ ਲਈ, ਅਸੀਂ ਤੁਹਾਡਾ ਧਿਆਨ ਨਿਊਪਾਈਪ ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਵੱਲ ਖਿੱਚਦੇ ਹਾਂ। ਕਿਰਪਾ ਕਰਕੇ ਇਸਨੂੰ ਧਿਆਨ ਨਾਲ ਪੜ੍ਹੋ। +\nਸਾਨੂੰ ਨੁਕਸ ਰਿਪੋਰਟ ਭੇਜਣ ਲਈ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨਾ ਹੋਵੇਗਾ। ਸਵੀਕਾਰ ਕਰੋ ਅਸਵੀਕਾਰ ਕੋਈ ਸੀਮਾ ਨਹੀਂ - ਮੋਬਾਈਲ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ Resolution ਨੂੰ ਸੀਮਿਤ ਕਰੋ + ਮੋਬਾਈਲ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਰੈਜ਼ੋਲੂਸ਼ਨ ਨੂੰ ਸੀਮਿਤ ਕਰੋ ਐਪ switch ਕਰਨ ਤੇ minimize ਕਰੋ ਮੁੱਖ ਵੀਡੀਓ ਪਲੇਅਰ ਤੋਂ ਦੂਜੇ ਐਪ \'ਤੇ ਜਾਣ ਵੇਲ਼ੇ ਕਾਰਵਾਈ — %s ਕੋਈ ਨਹੀਂ ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ ਵਿੱਚ Minimize ਕਰੋ ਪੌਪ-ਅਪ ਪਲੇਅਰ ਵਿੱਚ minimize ਕਰੋ ਚੁੱਪ ਦੌਰਾਨ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਕਰੋ - ਸਟੇਪ + ਕਦਮ ਰੀਸੈੱਟ ਚੈਨਲਾਂ ਪਲੇ ਸੂਚੀਆਂ @@ -328,22 +333,22 @@ ਯੂਜ਼ਰਸ ਅਨ-ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ ਟੈਬ ਚੁਣੋ - ਆਵਾਜ਼ gesture ਕੰਟਰੋਲ + ਆਵਾਜ਼ ਸ਼ਵਾਵਾਂ ਕੰਟਰੋਲ ਆਵਾਜ਼ ਕੰਟਰੋਲ ਕਰਨ ਲਈ ਸ਼ਵਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ - ਸਕ੍ਰੀਨ ਲਾਈਟ gesture ਕੰਟਰੋਲ + ਸਕ੍ਰੀਨ ਲਾਈਟ ਸ਼ਵਾਵਾਂ ਕੰਟਰੋਲ ਵੀਡੀਓ ਸਕ੍ਰੀਨ ਦੀ ਚਮਕ ਕੰਟਰੋਲ ਕਰਨ ਲਈ ਸ਼ਵਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ - ਮੂਲ ਭਾਸ਼ਾ Content + ਮੂਲ ਭਾਸ਼ਾ ਸਮੱਗਰੀ ਅਪਡੇਟਾਂ ਫਾਈਲ ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ ਐਪ ਅੱਪਡੇਟ ਨੋਟੀਫਿਕੇਸ਼ਨ - ਨਵੇਂ NewPipe ਸੰਸਕਰਣ ਲਈ ਸੂਚਨਾਵਾਂ + ਨਵੇਂ ਨਿਊਪਾਈਪ ਸੰਸਕਰਣਾਂ ਲਈ ਪ੍ਰਾਪਤ ਸੂਚਨਾਵਾਂ ਬਾਹਰੀ ਸਟੋਰੇਜ ਉਪਲਬਧ ਨਹੀਂ ਹੈ - ਬਾਹਰੀ SD ਕਾਰਡ ਤੇ ਡਾਊਨਲੋਡ ਕਰਨਾ ਸੰਭਵ ਨਹੀਂ ਹੈ. ਕੀ ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਦੀ ਸਥਿਤੀ ਨੂੰ ਰੀਸੈਟ ਕੀਤਾ ਜਾਵੇ \? + ਬਾਹਰੀ SD ਕਾਰਡ ਤੇ ਡਾਊਨਲੋਡ ਕਰਨਾ ਸੰਭਵ ਨਹੀਂ ਹੈ। ਕੀ ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਦੀ ਸਥਿਤੀ ਨੂੰ ਰੀਸੈਟ ਕੀਤਾ ਜਾਵੇ \? ਸਾਂਭੀਆਂ ਟੈਬਾਂ ਨਹੀਂ ਪੜ੍ਹ ਹੋਈਆਂ, ਇਸ ਲਈ ਡਿਫਾਲਟ ਟੈਬਾਂ ਦੀ ਵਰਤੋਂ ਹੋ ਰਹੀ ਹੈ - Default ਮੁੜ-ਪ੍ਰਾਪਤ ਕਰੋ - ਕੀ ਤੁਸੀਂ ਡਿਫਾਲਟ ਮੁੜ-ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ\? - ਸਬਸਕ੍ਰਾਇਬਰਾਂ ਦੀ ਗਿਣਤੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ - ਮੁੱਖ ਪੰਨੇ ਤੇ ਕਿਹੜੇ ਟੈਬ ਦਿਖਾਏ ਜਾਣਗੇ + ਡੀਫ਼ਾਲਟ ਮੁੜ-ਸਥਾਪਿਤ ਕਰੋ + ਕੀ ਤੁਸੀਂ ਡਿਫਾਲਟ ਮੁੜ-ਸਥਾਪਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ\? + ਸਬਸਕ੍ਰਾਈਬਰਾਂ ਦੀ ਗਿਣਤੀ ਅਣ-ਉਪਲਬਧ + ਮੁੱਖ ਪੰਨੇ ਤੇ ਕਿਹੜੇ ਟੈਬ ਵਿਖਾਏ ਜਾਣਗੇ ਅਪਡੇਟਾਂ ਜਦੋਂ ਨਵਾਂ ਸੰਸਕਰਣ ਉਪਲਬਧ ਹੁੰਦਾ ਹੈ ਤਾਂ ਐਪ ਅਪਡੇਟ ਨੂੰ ਪੁੱਛਣ ਲਈ ਇੱਕ ਨੋਟੀਫਿਕੇਸ਼ਨ ਦਿਖਾਓ ਲਿਸਟ view ਮੋਡ @@ -364,11 +369,11 @@ overwrite ਇਸ ਨਾਮ ਦੇ ਨਾਲ ਇੱਕ ਡਾਊਨਲੋਡ ਪਹਿਲਾਂ ਤੋਂ ਜਾਰੀ ਹੈ ERROR ਵਿਖਾਓ - Destination ਫੋਲਡਰ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ + ਮੰਜ਼ਿਲ ਫੋਲਡਰ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਫਾਈਲ ਨਹੀਂ ਬਣਾਈ ਜਾ ਸਕਦੀ ਸੁਰੱਖਿਅਤ ਕੁਨੈਕਸ਼ਨ ਸਥਾਪਤ ਨਹੀਂ ਹੋ ਸਕਿਆ ਸਰਵਰ ਨਹੀਂ ਲੱਭ ਸਕਿਆ - ਸਰਵਰ ਨਾਲ ਜੁੜ ਨਹੀਂ ਸਕਦਾ + ਸਰਵਰ ਨਾਲ ਜੁੜ ਨਹੀਂ ਸਕਿਆ ਸਰਵਰ ਨੇ ਡਾਟਾ ਨਹੀਂ ਭੇਜਿਆ ਸਰਵਰ ਮਲਟੀ-Threaded ਡਾਊਨਲੋਡਸ ਨੂੰ ਸਵੀਕਾਰ ਨਹੀਂ ਕਰਦਾ, ਇਸ ਨਾਲ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ @string/msg_threads = 1 ਨਹੀਂ ਲਭਿਆ @@ -381,8 +386,8 @@ ਇਵੇੰਟਸ ਕਾਨਫਰੰਸਾਂ ਟਿੱਪਣੀਆਂ ਦਿਖਾਓ - ਟਿੱਪਣੀਆਂ ਵਿਖਾਉਣਾ ਰੋਕਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ - ਆਟੋ-ਪਲੇ + ਟਿੱਪਣੀਆਂ ਲੁਕਾਉਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ + ਆਟੋ-ਪਲੇਅ ਕੋਈ ਟਿੱਪਣੀ ਨਹੀਂ ਕੀਤੀ ਗਈ ਟਿੱਪਣੀਆਂ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕੀਆਂ ਬੰਦ ਕਰੋ @@ -391,9 +396,9 @@ ਸੂਚੀਆਂ ਦੀ ਸਥਿਤੀ ਸੂਚੀਆਂ ਵਿੱਚ ਪਲੇਅਬੈਕ ਸਥਿਤੀ ਸੂਚਕ ਦਿਖਾਓ ਡਾਟਾ ਮਿਟਾਓ - Watch ਹਿਸਟਰੀ ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ. - ਪਲੇਬੈਕ ਸਥਿਤੀ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ. - ਫਾਈਲ ਮੂਵ ਕੀਤੀ ਜਾਂ ਮਿਟਾਈ ਗਈ ਹੈ + ਵੇਖੀਆਂ ਸਟ੍ਰੀਮਾਂ ਦੀ ਇਤਿਹਾਸ ਸੂਚੀ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ + ਪਲੇਬੈਕ ਸਥਿਤੀਆਂ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ + ਫਾਈਲ ਤਬਦੀਲ ਕੀਤੀ ਜਾਂ ਮਿਟਾਈ ਗਈ ਇਸ ਨਾਮ ਵਾਲੀ ਇੱਕ ਫਾਈਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ ਇਸ ਨਾਮ ਨਾਲ ਡਾਉਨਲੋਡ ਕੀਤੀ ਫਾਈਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ ਫਾਈਲ Overwrite ਨਹੀਂ ਹੋ ਸਕਦੀ @@ -411,8 +416,8 @@ ਤੁਹਾਨੂੰ ਹਰ ਵਾਰ ਪੁੱਛਿਆ ਜਾਵੇਗਾ ਕਿ ਡਾਊਨਲੋਡ ਨੂੰ ਕਿੱਥੇ ਸਾਂਭਣਾ ਹੈ। \nਜੇ ਤੁਸੀਂ ਡਾਊਨਲੋਡ ਨੂੰ ਕਿਸੇ ਬਾਹਰੀ SD ਕਾਰਡ ਤੇ ਸਾਂਭਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਸਿਸਟਮ ਡਾਊਨਲੋਡ ਫ਼ੋਲਡਰ ਚੋਣਕਾਰ (SAF) ਚਾਲੂ ਕਰੋ ਸਿਸਟਮ ਡਾਊਨਲੋਡ ਫ਼ੋਲਡਰ ਚੋਣਕਾਰ (SAF) ਦੀ ਵਰਤੋਂ ਕਰੋ - \'ਸਟੋਰੇਜ ਐਕਸੈਸ ਫ਼ਰੇਮਵਰਕ\' ਬਾਹਰੀ SD ਕਾਰਡ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। - ਥਮਨੇਲ ਨੂੰ 1:1 ਮਾਪ ਦਾ ਕਰੋ + \'ਸਟੋਰੇਜ ਐਕਸੈਸ ਫ਼ਰੇਮਵਰਕ\' ਬਾਹਰੀ SD ਕਾਰਡ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ + ਥੰਮਨੇਲ ਨੂੰ 1:1 ਮਾਪ ਦਾ ਕਰੋ %s ਲਈ ਨਤੀਜੇ ਵਿਖਾਏ ਜਾ ਰਹੇ ਹਨ ਜਦੋਂ ਉਪਲਬਧ ਹੋਵੇ ਤਾਂ ਖ਼ਾਸ ਫ਼ੀਡ ਤੋਂ ਮੰਗਵਾਓ ਤੇਜ਼ ਫ਼ੀਡ ਮੋਡ ਇਸ ਬਾਰੇ ਕੋਈ ਹੋਰ ਜਾਣਕਾਰੀ ਮੁੱਹਈਆ ਨਹੀਂ ਕਰਾਉਂਦਾ। @@ -428,29 +433,29 @@ ਹਾਲੇ ਕੋਈ ਵੀ ਪਲੇ-ਸੂਚੀ ਬੁੱਕਮਾਰਕ ਨਹੀਂ ਕੀਤੀ ਹੋਈ ਡਿਫ਼ਾਲਟ ਕਿਓਸਕ ਹੈਸ਼ ਦਾ ਲੇਖਾ-ਜੋਖਾ ਹੋ ਰਿਹਾ ਹੈ - ਟੌਗਲ ਸੇਵਾ, ਮੌਜੂਦਾ ਚੋਣ: - ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਜਾਂਚ ਲਓ ਕਿ ਤੁਹਾਡੇ ਵਾਲ਼ੇ ਕ੍ਰੈਸ਼ ਦੀ ਗੱਲ ਕਰਦਾ ਕੋਈ ਮਸਲਾ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਤਾਂ ਨਹੀਂ। ਇੱਕੋ ਮਸਲੇ ਦੀਆਂ ਦੋ ਜਾਂ ਵੱਧ ਨਕਲਾਂ ਬਣਾ ਕੇ ਤੁਸੀਂ ਸਾਡੇ ਤੋਂ ਉਹ ਵਕਤ ਖੋਹ ਲੈਂਦੇ ਹੋ ਜੋ ਅਸੀਂ ਅਸਲੀ ਮਸਲੇ ਦੇ ਹੱਲ ਲਈ ਲਾਉਣਾ ਸੀ। + ਸੇਵਾ ਟੌਗਲ ਕਰੋ, ਮੌਜੂਦਾ ਚੋਣ: + ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਜਾਂਚ ਲਓ ਕਿ ਤੁਹਾਡੇ ਵਾਲ੍ਹੇ ਕ੍ਰੈਸ਼ ਦੀ ਗੱਲ ਕਰਦਾ ਕੋਈ ਮਸਲਾ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਤਾਂ ਨਹੀਂ। ਇੱਕੋ ਮਸਲੇ ਦੀਆਂ ਦੋ ਜਾਂ ਵੱਧ ਨਕਲਾਂ ਬਣਾ ਕੇ ਤੁਸੀਂ ਸਾਡੇ ਤੋਂ ਉਹ ਵਕਤ ਖੋਹ ਲੈਂਦੇ ਹੋ ਜੋ ਅਸੀਂ ਅਸਲੀ ਮਸਲੇ ਦੇ ਹੱਲ ਲਈ ਲਾਉਣਾ ਸੀ। ਫ਼ਾਰਮੈਟਡ ਰਿਪੋਰਟ ਨਕਲ ਕਰੋ - reCAPTCHA ਹੱਲ ਕਰਦੇ ਵੇਲ਼ੇ ਨਿਊ-ਪਾਈਪ ਵਿੱਚ ਜਮ੍ਹਾਂ ਹੋਣ ਵਾਲ਼ੀਆਂ ਕੁਕੀਜ਼ ਸਾਫ਼ ਕਰੋ + reCAPTCHA ਹੱਲ ਕਰਦੇ ਵੇਲ਼ੇ ਨਿਊਪਾਈਪ ਵਿੱਚ ਜਮ੍ਹਾਂ ਹੋਣ ਵਾਲ਼ੀਆਂ ਕੁਕੀਜ਼ ਸਾਫ਼ ਕਰੋ reCAPTCHA ਦੀਆਂ ਕੁਕੀਜ਼ ਸਾਫ਼ ਹੋ ਗਈਆਂ ਹਨ reCAPTCHA ਦੀਆਂ ਕੁਕੀਜ਼ ਸਾਫ਼ ਕਰੋ ਵੀਡਿਓ ਹੈਸ਼ਿੰਗ ਦੀ ਕਾਰਵਾਈ ਦੀ ਮੌਜੂਦਾ ਹਾਲਤ ਦੀਆਂ ਇਤਲਾਹਾਂ ਇਹ ਵੀਡੀਓ ਉਮਰ-ਹੱਦ ਮੁਤਾਬਕ ਪਾਬੰਦੀਸ਼ੁਦਾ ਹੈ। \nਯੂਟਿਊਬ ਦੀਆਂ ਉਮਰ-ਹੱਦ ਪਾਬੰਦੀਸ਼ੁਦਾ ਵੀਡੀਓਜ਼ ਬਾਰੇ ਨੀਤੀਆਂ ਦੇ ਕਾਰਨ ਨਿਊ-ਪਾਈਪ ਇਸਦੀਆਂ ਵੀਡੀਓ ਸਟ੍ਰੀਮ ਤੱਕ ਨਹੀਂ ਪਹੁੰਚ ਸਕਦੀ ਅਤੇ ਇਸੇ ਕਰਕੇ ਇਸਨੂੰ ਚਲਾ ਵੀ ਨਹੀਂ ਸਕਦੀ। - ਇਤਲਾਹਾਂ ਵਿੱਚ ਵੀਡਿਓ ਥਮਨੇਲ ਦੇ ਪੈਮਾਨੇ ਨੂੰ 16:9 ਤੋਂ ਘਟਾ ਕੇ 1:1 ਕਰੋ (ਤਸਵੀਰ ਵਿਗੜੀ ਹੋਈ ਦਿਸ ਸਕਦੀ ਹੈ) + ਇਤਲਾਹਾਂ ਵਿੱਚ ਵੀਡਿਓ ਥੰਮਨੇਲ ਦੇ ਪੈਮਾਨੇ ਨੂੰ 16:9 ਤੋਂ ਘਟਾ ਕੇ 1:1 ਕਰੋ (ਤਸਵੀਰ ਵਿਗੜੀ ਹੋਈ ਦਿਸ ਸਕਦੀ ਹੈ) ਇਸ ਵਿੱਚ ਖੋਲ੍ਹੋ ਵੈਬਸਾਈਟ ਖੋਲ੍ਹੋ ਅੰਦਰੂਨੀ ਨਿੱਜੀ (ਪ੍ਰਾਈਵੇਟ) - ਅਨ-ਸੂਚੀਬੱਧ + ਗੈਰ-ਸੂਚੀਬੱਧ ਜਨਤਕ - ਥਮਨੇਲ URL + ਥੰਮਨੇਲ URL ਮੇਜ਼ਬਾਨ - ਸਪੋਰਟ + ਸਹਾਇਤਾ ਭਾਸ਼ਾ/ਬੋਲੀ ਉਮਰ ਹੱਦ ਪਰਦੇਦਾਰੀ - ਲਾਇਸੰਸ + ਲਾਈਸੈਂਸ ਟੈਗ ਵਰਗ ਵੇਰਵੇ \'ਚੋਂ ਲਿਖਤ ਚੁਣਨਾ ਬੰਦ ਕਰੋ @@ -540,17 +545,17 @@ ਅਵਾਜ਼ ਬੰਦ ਕਰੋ ਕਤਾਰਬੱਧ ਹੋ ਗਿਆ ਕਤਾਰਬੱਧ ਕਰੋ - ਚੈਨਲ ਵੇਰਵਾ ਵਿਖਾਓ + ਚੈਨਲ ਵੇਰਵੇ ਵਿਖਾਓ ਕਤਾਰ ਚਲਾਓ - ਸਭ ਤੋਂ ਵੱਧ ਪਸੰਦ ਕੀਤਾ ਹੋਇਆ - ਹਾਲ ਹੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਹੋਇਆ - ਲੋਕਲ - ਭਾਸ਼ਾ, ਐਪ ਨੂੰ ਦੋਬਾਰਾ ਚਲਾਉਣ \'ਤੇ ਬਦਲੇਗੀ। + ਸਭ ਤੋਂ ਵੱਧ ਪਸੰਦ + ਹਾਲ ਹੀ ਵਿੱਚ ਸ਼ਾਮਿਲ + ਸਥਾਨਕ + ਭਾਸ਼ਾ ਐਪ ਨੂੰ ਦੋਬਾਰਾ ਚਲਾਉਣ \'ਤੇ ਬਦਲੇਗੀ ਪਲੇ-ਸੂਚੀ ਚੁਣੋ ਹੋ ਗਿਆ ਹੱਲ ਕਰੋ ਹੱਲ ਹੋਣ \'ਤੇ \"ਹੋ ਗਿਆ\" ਨੱਪੋ - ਹਾਲੇ ਕੋਈ ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਹੋਇਆ, ਹੁਣੇ ਡਿਫ਼ਾਲਟ ਡਾਊਨਲੋਡ ਫ਼ੋਲਡਰ ਚੁਣੋ + ਹਾਲੇ ਕੋਈ ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਹੋਇਆ, ਹੁਣੇ ਡਿਫ਼ਾਲਟ ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਚੁਣੋ ਅਣਗਿਣਤ ਵੀਡੀਓਜ਼ 100+ ਵੀਡੀਓਜ਼ @@ -558,22 +563,22 @@ %s ਸਰੋਤੇ - %s ਬੰਦਾ ਵੇਖ ਰਿਹਾ ਹੈ + %s ਜਣਾ ਵੇਖ ਰਿਹਾ ਹੈ %s ਲੋਕ ਵੇਖ ਰਹੇ ਹਨ - ਕੋਈ ਨਹੀਂ ਸੁਣ ਰਿਹਾ - ਕੋਈ ਨਹੀਂ ਵੇਖ ਰਿਹਾ + ਕੋਈ ਸਰੋਤਾ ਨਹੀਂ ਸੁਣ ਰਿਹਾ + ਕੋਈ ਦਰਸ਼ਕ ਨਹੀਂ ਵੇਖ ਰਿਹਾ ਵੇਰਵਾ ਸਬੰਧਤ ਨਗ ਟਿੱਪਣੀਆਂ - GutHub \'ਤੇ ਜਾ ਕੇ ਇਤਲਾਹ ਦਿਓ + ਗਿਟਹੱਬ \'ਤੇ ਜਾ ਕੇ ਇਤਲਾਹ ਦਿਓ ਦੂਜੀਆਂ ਐਪਾਂ ਦੇ ਉੱਤੇ ਵਿਖਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ ਮਦਦ ਸਾਰੀਆਂ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਉਣੀਆਂ ਹਨ\? ਸਾਰੀਆਂ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਉਂਦਾ ਹੈ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਓ - ਵਿਡੀਉ ਹੈਸ਼ ਇਤਲਾਹ - ਐਲਬਮਾ + ਵੀਡੀਉ ਹੈਸ਼ ਇਤਲਾਹ + ਐਲਬਮਾਂ ਕਲਾਕਾਰ ਗੀਤ ਵਿਡੀਉ @@ -589,38 +594,134 @@ ਸਥਿਤੀ URL ਦਾਖ਼ਲ ਕਰੋ ਸਥਿਤੀਆਂ ਜੋੜੋ ਤੁਹਾਡੀਆਂ ਪਸੰਦੀਦਾ ਸਥਿਤੀਆਂ %s \'ਤੇ ਲੱਭੋ - ਆਪਣੀ ਪਸੰਦੀਦਾ ਪੀਰਟਿਊਬ ਸਥਿਤੀਆਂ ਚੁਣੋ - ਪੀਰਟਿਊਬ ਸਥਿਤੀਆਂ + ਆਪਣੀ ਪਸੰਦੀਦਾ ਪੀਅਰਟਿਊਬ ਸਥਿਤੀਆਂ ਚੁਣੋ + ਪੀਅਰਟਿਊਬ ਸਥਿਤੀਆਂ URL ਪਛਾਣ ਨਹੀਂ ਹੋਇਆ। ਕਿਸੇ ਹੋਰ ਐਪ ਨਾਲ਼ ਖੋਲ੍ਹਣਾ ਹੈ\? - ਆਪ-ਮੁਖ਼ਤਾਰ ਕਤਾਰ ਕਰਦੇ - ਸਟ੍ਰੀਮ ਦੇ ਕਰਤਾ, ਸਮੱਗਰੀ ਜਾਂ ਖੋਜ ਬੇਨਤੀ ਵਾਲੇ ਵਾਧੂ ਜਾਣਕਾਰੀ ਬਕਸਿਆਂ ਵਾਲ਼ੀ ਮੈਟਾ ਜਾਣਕਾਰੀ ਲੁਕਾਉਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰ ਦਿਓ। + ਆਪ-ਮੁਖ਼ਤਾਰ ਕਤਾਰ ਕਰੋ + ਸਟ੍ਰੀਮ ਦੇ ਕਰਤਾ, ਸਮੱਗਰੀ ਜਾਂ ਖੋਜ ਬੇਨਤੀ ਵਾਲੇ ਵਾਧੂ ਜਾਣਕਾਰੀ ਬਕਸਿਆਂ ਵਾਲ਼ੀ ਮੈਟਾ ਜਾਣਕਾਰੀ ਲੁਕਾਉਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰ ਦਿਓ ਮੈਟਾ ਜਾਣਕਾਰੀ ਦਿਖਾਓ - ਵਿਡੀਉ ਵੇਰਵਾ ਅਤੇ ਵਾਧੂ ਜਾਣਕਾਰੀ ਲੁਕਾਉਣ ਲਈ ਇਸ ਇਸਨੂੰ ਬੰਦ ਕਰ ਦਿਓ + ਵੀਡੀਉ ਵੇਰਵਾ ਅਤੇ ਵਾਧੂ ਜਾਣਕਾਰੀ ਲੁਕਾਉਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ ਵੇਰਵਾ ਦਿਖਾਓ ਸਰਗਰਮ ਪਲੇਅਰ ਕਤਾਰ ਬਦਲ ਜਾਵੇਗੀ ਪਲੇਅਰ ਬਦਲਣ ਨਾਲ ਤੁਹਾਡੀ ਕਤਾਰ ਬਦਲ ਸਕਦੀ ਹੈ ਕਤਾਰ ਨੂੰ ਖ਼ਾਲੀ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤਸਦੀਕ ਕਰਨ ਲਈ ਪੁੱਛੋ ਅੱਗੇ ਲੰਘਾਉਣ/ਪਿੱਛੇ ਕਰਨ ਦੀ ਸਮਾਂ ਮਿਆਦ ਰਾਤ ਵਾਲੀ ਥੀਮ - ਐਂਡਰਾਇਡ ਨੂੰ ਥਮਨੇਲ ਦੇ ਮੁੱਖ ਰੰਗ ਮੁਤਾਬਕ ਇਲਤਾਹ ਦਾ ਰੰਗ ਬਦਲਣ ਦਿਓ (ਧਿਆਨ ਦਿਓ ਕਿ ਇਹ ਹਰੇਕ ਡਿਵਾਈਸ \'ਤੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ) + ਐਂਡਰਾਇਡ ਨੂੰ ਥੰਮਨੇਲ ਦੇ ਮੁੱਖ ਰੰਗ ਮੁਤਾਬਕ ਇਲਤਾਹ ਦਾ ਰੰਗ ਬਦਲਣ ਦਿਓ (ਧਿਆਨ ਦਿਓ ਕਿ ਇਹ ਹਰੇਕ ਡਿਵਾਈਸ \'ਤੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ) ਰੰਗਦਾਰ ਇਤਲਾਹਾਂ ਕੁਝ ਵੀ ਨਹੀਂ ਬਫ਼ਰਿੰਗ - ਫੈਂਟਣਾ + ਸ਼ਫਲ ਦੁਹਰਾਓ - ਹੇਠਾਂ ਹਰੇਕ ਇਤਲਾਹ ਕਾਰਵਾਈ ਤੇ ਨੱਪਦਿਆਂ ਇਹਨਾਂ ਨੂੰ ਬਦਲੋ। ਇਹਨਾਂ ਦੇ ਸੱਜੇ ਪਾਸੇ ਬਣੇ ਚੈੱਕਬਾਕਸ ਵਰਤਦਿਆਂ ਇਹਨਾਂ ਵਿਚੋਂ ਵੱਧ-ਤੋਂ-ਵੱਧ ਤਿੰਨ ਕਾਰਵਾਈਆਂ ਨੂੰ ਤੁਸੀਂ ਪਚੀੜੀਆਂ ਇਤਲਾਹਾਂ ਵਿੱਚ ਵਿਖਾਉਣ ਲਈ ਚੁਣ ਸਕਦੇ ਹੋ। + ਹੇਠਾਂ ਹਰੇਕ ਇਤਲਾਹ ਕਾਰਵਾਈ ਤੇ ਨੱਪਦਿਆਂ ਇਹਨਾਂ ਨੂੰ ਬਦਲੋ। ਇਹਨਾਂ ਦੇ ਸੱਜੇ ਪਾਸੇ ਬਣੇ ਚੈੱਕਬਾਕਸ ਵਰਤਦਿਆਂ ਇਹਨਾਂ ਵਿਚੋਂ ਵੱਧ-ਤੋਂ-ਵੱਧ ਤਿੰਨ ਕਾਰਵਾਈਆਂ ਨੂੰ ਤੁਸੀਂ ਪਚੀੜੀਆਂ ਇਤਲਾਹਾਂ ਵਿੱਚ ਵਿਖਾਉਣ ਲਈ ਚੁਣ ਸਕਦੇ ਹੋ ਤੁਸੀਂ ਵੱਧ-ਤੋਂ-ਵੱਧ ਤਿੰਨ ਕਾਰਵਾਈਆਂ ਨੂੰ ਪਚੀੜੀਆਂ ਇਤਲਾਹਾਂ ਵਿੱਚ ਵਿਖਾਉਣ ਲਈ ਚੁਣ ਸਕਦੇ ਹੋ! ਪੰਜਵਾਂ ਕਾਰਵਾਈ ਬਟਨ ਚੌਥਾ ਕਾਰਵਾਈ ਬਟਨ ਤੀਜਾ ਕਾਰਵਾਈ ਬਟਨ ਦੂਜਾ ਕਾਰਵਾਈ ਬਟਨ ਪਹਿਲਾ ਕਾਰਵਾਈ ਬਟਨ - ਨਹੀਂ ਵੇਖੋ - ਰਾਲੂ + ਨਾਂ ਵਿਖਾਓ + ਚਾਲੂ ਕਰੋ , ਡਾਉਨਲੋਡ ਕੀਤਾ %s ਡਾਉਨਲੋਡ ਕੀਤੇ - ਬੰਦ ਕਰਨ + ਬੰਦ ਕਰੋ + ਕਤਾਰ ਵਿੱਚ ਅੱਗੇ ਸ਼ਾਮਿਲ ਕਰੋ + ਪਲੇਅਰ ਨੋਟੀਫਿਕੇਸ਼ਨ + ਮੋਜੂਦਾ ਚੱਲ ਰਹੀ ਸਟ੍ਰੀਮ ਦੀ ਨੋਟੀਫਿਕੇਸ਼ਨ ਸੰਰਚਨਾ ਕਰੋ + ਨੋਟੀਫਿਕੇਸ਼ਨ + ਨਵੀਂਆਂ ਸਟ੍ਰੀਮਾਂ + ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਦੁਆਰਾ ਨਵੀਂ ਸਟ੍ਰੀਮ ਦੇ ਨੋਟੀਫਿਕੇਸ਼ਨ + ਨਿਊਪਾਈਪ ਖਾਮੀ ਤੋਂ ਪ੍ਰਭਾਵਤ ਹੋਈ ਹੈ, ਇੱਥੇ ਨੱਪ ਕੇ ਰਿਪੋਰਟ ਕਰੋ + ਇੱਕ ਖਾਮੀ ਪ੍ਰਭਾਵੀ ਹੋਈ ਹੈ, ਨੋਟੀਫੀਕੇਸ਼ਨ ਵੇਖੋ + ਆਈਟਮਾਂ ਨੂੰ ਇੱਕ ਪਾਸੇ ਖਿੱਚ ਕੇ ਹਟਾਓ + ਦ੍ਰਿਸ਼ ਸੂਚਕ ਵਿਖਾਓ + ਵਿਖਾਊ ਪਿਕਾਸੋ ਦੇ ਰੰਗਦਾਰ ਰੀਬਨ ਦ੍ਰਿਸ਼ਾਂ ਦੇ ਉੱਪਰ ਉਹਨਾਂ ਦੀ ਸਰੋਤ-ਪਛਾਣ ਅਨੁਸਾਰ: ਨੈੱਟਵਰਕ ਲਈ ਲਾਲ, ਡਿਸਕ ਲਈ ਨੀਲਾ ਤੇ ਮੈਮਰੀ ਲਈ ਹਰਾ + ਨਵੀਂ ਸਟ੍ਰੀਮ ਦੇ ਨੋਟੀਫਿਕੇਸ਼ਨ + ਪਿੰਨ ਕੀਤੀ ਟਿੱਪਣੀ + ਅੱਪਡੇਟ ਦੀ ਉਪਲੱਬਧਤਾ ਪਰਖੀ ਜਾ ਰਹੀ… + ਵੇਖਿਆ ਜਾ ਚੁੱਕਿਆ ਚਿੰਨਤ ਕਰੋ + ਸੀਕਬਾਰ ਥਮਨੇਲ ਦੀ ਝਲਕ + ਸਮਾਂ-ਅਵਧੀ ਜਦ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਫੀਡ ਦੁਬਾਰਾ ਅੱਪਡੇਟ ਕੀਤੀ ਜਾ ਸਕੇ — %s + ਰਚਨਾਕਾਰ ਨੇ ਦਿਲੋਂ ਪਸੰਦ ਕੀਤਾ + ਲੋਡ ਅੰਤਰਾਲ ਆਕਾਰ ਬਦਲੋ (ਮੌਜੂਦਾ %s ਤੇ)। ਛੋਟੀ ਸੰਖਿਆ ਵੀਡੀਓ ਜਲਦੀ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਮੱਦਦ ਦੇ ਸਕਦੀ ਹੈ। ਬਦਲਾਅ ਪਲੇਅਰ ਦੁਬਾਰਾ ਚਲਾਉਣ ਤੇ ਹੀ ਹੋਣਗੇ + ਖੋਜ ਦੇ ਸਥਾਨਕ ਸੁਝਾਅ + ਖੋਜ ਦੇ ਰਿਮੋਟ ਸੁਝਾਅ + ਮੁੱਖ ਪਲੇਅਰ ਪੂਰੀ ਸਕਰੀਨ ਵਿੱਚ ਸ਼ੁਰੂ ਕਰੋ + ਵੇਖ ਚੁੱਕੀਆਂ ਆਈਟਮਾਂ ਵਿਖਾਓ + ਪਲੇਅਬੈਕ ਲੋਡ ਦਾ ਅੰਤਰਾਲ ਆਕਾਰ + + %s ਨਵੀਂ ਸਟਰੀਮ + %s ਨਵੀਆਂ ਸਟਰੀਮਾਂ + + ਨਵੀਂਆ ਫੀਡ ਇਕਾਈਆਂ + ਸੂਚਨਾ ਪ੍ਰਾਪਤ ਕਰੋ + ਬਾਹਰੀ ਪਲੇਅਰਾਂ ਲਈ ਕੁਆਲਿਟੀ ਚੁਣੋ + ਤਰੁੱਟੀ ਰਿਪੋਰਟ ਨੋਟੀਫਿਕੇਸ਼ਨ + ਖ਼ਾਮੀਆਂ ਰਿਪੋਰਟ ਕਰਨ ਲਈ ਨੋਟੀਫਿਕੇਸ਼ਨ + ਟਿੱਪਣੀਆਂ ਬੰਦ ਕੀਤੀਆਂ ਹੋਈਆਂ ਹਨ + ਲੀਕ-ਕੈਨਰੀ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ + ਤਰੁੱਟੀ ਤੇ ਸਨੈਕਬਾਰ ਵਿਖਾਓ + ਕੁਝ ਸੇਵਾਵਾਂ ਵਿੱਚ ਹੀ ਉਪਲੱਬਧ ਇਹ ਤਰੀਕਾ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਫੀਡ ਵਿੱਚ ਤੇਜ ਜਾਣਕਾਰੀ ਮੁਹੱਈਆ ਕਰਵਾਉਂਦਾ ਹੈ, ਪਰ ਕੁਝ ਗਿਣਤੀ ਦੀਆਂ ਹੀ ਆਈਟਮ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦਾ ਹੈ ਉਹ ਵੀ ਅਕਸਰ ਬਿਨਾਂ ਪੂਰੀ ਜਾਣਕਾਰੀ( ਜਿਵੇਂ ਅਵਧੀ, ਸਟਰੀਮ ਦੀ ਕਿਸਮ, ਕੋਈ ਸਟਰੀਮ ਲਾਈਵ ਹੈ, ਨਹੀਂ ਦੱਸਦਾ) + ਇਹ ਸਾਊਂਡਕਲਾਊਡ ਗੋ-ਪਲੱਸ ਟਰੈਕ ਹੈ, ਤੁਹਾਡੇ ਦੇਸ਼ ਵਿੱਚ ਇਹ ਸਟ੍ਰੀਮ ਜਾਂ ਡਾਊਨਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। + ਵੇਖ ਚੁੱਕੀਆਂ ਆਈਟਮਾਂ ਲੁਕਾਓ + ਅਗਿਆਤ ਫਾਰਮੈਟ + ਅਗਿਆਤ ਕੁਆਲਿਟੀ + ਭਵਿੱਖ-ਪ੍ਰਕਾਸ਼ਤ ਆਈਟਮ ਵਿਖਾਓ + ਭਵਿੱਖ-ਪ੍ਰਕਾਸ਼ਤ ਆਈਟਮ ਲੁਕਾਓ + ਆਮ ਸਵਾਲ + ਵੈੱਬਸਾਈਟ \'ਤੇ ਵੇਖੋ + ਸਟਰੀਮ ਲੋਡ ਹੋ ਰਹੀ ਹੈ… + ਕਾਰਵਾਈ ਵਿੱਚ... ਕੁਝ ਸਮਾਂ ਲੱਗ ਰਿਹਾ ਹੈ + \"ਪਲੇਅਰ ਕਰੈਸ਼ ਕਰੋ\" ਵਿਖਾਉ + ਵਰਤਦੇ ਸਮੇਂ ਪਲੇਅਰ ਕਰੈਸ਼ ਦਾ ਵਿਕਲਪ ਵਿਖਾਉਂਦਾ ਹੈ + ਨਵੀਆਂ ਸਟ੍ਰੀਮਾਂ ਦੀ ਜਾਂਚ ਚਲਾਓ + ਤਰੁੱਟੀ ਨੋਟੀਫਿਕੇਸ਼ਨ ਬਣਾਓ + ਪ੍ਰਤੀਸ਼ਤ + ਸੈਮੀਟੋਨ + ਸਬਸਕ੍ਰਾਈਬ ਕੀਤੇ ਚੈਨਲ ਉੱਪਰ ਨਵੀਂ ਸਟ੍ਰੀਮ ਉੱਪਲਬਧ ਹੋਣ ਤੇ ਨੋਟੀਫਿਕੇਸ਼ਨ ਰਾਹੀਂ ਸੂਚਿਤ ਕਰੋ + ਜਾਂਚ ਅਵਧੀ + ਕੋਈ ਵੀ ਨੈੱਟਵਰਕ + ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ + ਘੱਟ ਗੁਣਵੱਤਾ (ਛੋਟਾ ਆਕਾਰ) + ਡਿਸਕ ਤੋਂ ਸਾਰੀਆਂ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਹਟਾਓ\? + + %1$s ਡਾਊਨਲੋਡ ਡਿਲੀਟ ਕੀਤਾ + %1$s ਡਾਊਨਲੋਡ ਡਿਲੀਟ ਕੀਤੇ + + ਚੈਨਲ ਦਾ ਅਵਤਾਰ ਥੰਮਨੇਲ + ਇਸ ਕਾਰਜ ਲਈ ਕੋਈ ਢੁਕਵਾਂ ਫਾਈਲ ਮੈਨੇਜਰ ਨਹੀਂ ਮਿਲਿਆ। +\nਕ੍ਰਿਪਾ ਕਰਕੇ ਸਟੋਰੇਜ ਐਕਸਿਸ ਫਰੇਮਵਰਕ SAF ਅਨੁਕੂਲ ਫਾਈਲ ਮੈਨੇਜਰ ਇੰਨਸਟਾਲ ਕਰੋ + ਟੈਬਲੇਟ ਮੋਡ + ਨੋਟੀਫਿਕੇਸ਼ਨ ਬੰਦ ਕੀਤੇ ਹੋਏ ਹਨ + ਸਭ ਨੂੰ ਟੌਗਲ ਕਰੋ + ਚੁਣੀ ਸਟਰੀਮ ਬਾਹਰੀ ਪਲੇਅਰਾਂ ਲਈ ਸਹਿਯੋਗੀ ਨਹੀਂ ਹੈ + ਜਿਹੜੀਆਂ ਸਟਰੀਮਾਂ ਨੂੰ ਹਾਲੇ ਐਪ ਡਾਊਨਲੋਡ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ ਉਹ ਛੁਪਾ ਦਿੱਤੀਆਂ ਹਨ + ਕੋਈ ਆਡੀਓ ਸਟਰੀਮ ਬਾਹਰੀ ਪਲੇਅਰਾਂ ਲਈ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ + ਲੜੀਬੱਧ ਕਰੋ + ਪਲੇਅਰ ਕਰੈਸ਼ ਕਰੋ + ਵੀਡੀਓ ਮਿੰਨੀ ਪਲੇਅਰ ਚਲਾਉਣ ਦੀ ਵਜਾਏ ਪੂਰੇ ਸਕਰੀਨ ਵਿੱਚ ਚਲਾਉਂਦਾ ਹੈ। ਜੇ ਆਟੋ-ਰੋਟੇਸ਼ਨ ਲਾਕ ਹੈ ਮੇਨ-ਪਲੇਅਰ ਤੋਂ ਬਾਹਰ ਆਕੇ ਤੇ ਮਿੰਨੀ-ਪਲੇਅਰ ਤੱਕ ਰਸਾਈ ਹਾਸਿਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ + ਅਗਰ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਸਬੰਧੀ ਮੁਸ਼ਕਿਲਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਇਹਨਾਂ ਆਮ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਜਾਣਨਾ ਨਾ ਭੁੱਲੋ! + ਕਤਾਰ ਵਿੱਚ ਅੱਗੇ ਲਗਾਓ + ਨੈੱਟਵਰਕ ਦੀ ਕਿਸਮ + ਨਵੇਂ ਸੰਸਕਰਣਾਂ ਲਈ ਹੱਥੀਂ ਜਾਂਚ ਕਰੋ + ਵਧੀਆ ਗੁਣਵੱਤਾ (ਵੱਡਾ ਆਕਾਰ) + ਇਸ ਕਾਰਜ ਲਈ ਕੋਈ ਢੁਕਵਾਂ ਫਾਈਲ ਮੈਨੇਜਰ ਨਹੀਂ ਮਿਲਿਆ। +\nਕ੍ਰਿਪਾ ਕਰਕੇ ਫਾਈਲ ਮੈਨੇਜਰ ਇੰਨਸਟਾਲ ਕਰੋ ਜਾਂ ਡਾਊਨਲੋਡ ਸੈਟਿੰਗ ਵਿੱਚ \'%s\' ਅਸਮਰੱਥ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ + ਤੁਸੀਂ ਇਸ ਚੈਨਲ ਨੂੰ ਸਬਸਕ੍ਰਾਈਬ ਕਰ ਲਿਆ ਹੈ + ਕੋਈ ਵੀਡੀਓ ਸਟਰੀਮ ਬਾਹਰੀ ਪਲੇਅਰਾਂ ਲਈ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ + ਐਕਸੋਪਲੇਅਰ ਡਿਫਾਲਟ + ਕੀ ਤੁਹਾਨੂੰ ਲੱਗਦਾ ਹੈ ਫੀਡ ਹੌਲੀ ਲੋਡ ਹੋ ਰਹੀ ਹੈ\? ਅਜਿਹਾ ਹੈ ਤਾਂ ਤੇਜ਼ ਫੀਡ ਕ੍ਰਿਆਸ਼ੀਲ ਕਰਕੇ ਵੇਖੋ (ਤੁਸੀਂ ਇਸਨੂੰ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਜਾ ਕੇ ਜਾਂ ਹੇਠਲਾ ਬਟਨ ਦੱਬ ਕੇ ਕਰ ਸਕਦੇ ਹੋ ) +\n +\nਨਿਊਪਾਈਪ ਫੀਡ ਲੋਡ ਕਰਨ ਲਈ ਦੋ ਤਰਾਂ ਦੀਆਂ ਵਿਧੀਆਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦੀ ਹੈ: +\n• ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਚੈਨਲ ਤੋਂ ਪੂਰੀ ਜਾਣਕਾਰੀ ਲੈਂਦੀ ਹੈ ਜੋ ਹੌਲ੍ਹੀ ਮਿਲਦੀ ਹੈ। +\n• ਸਮਰਪਿਤ ਸੇਵਾ ਅੰਤਮ ਬਿੰਦੂ ਤੋਂ, ਜੋ ਕਿ ਤੇਜ਼ ਮਿਲਦੀ ਹੈ ਪਰ ਆਮਤੌਰ ਤੇ ਅਧੂਰੀ/ਅਣਸਟੀਕ ਹੁੰਦੀ ਹੈ। +\n +\nਇਨਾਂ ਦੋਹਾਂ ਵਿੱਚ ਫਰਕ ਇਹ ਹੁੰਦਾ ਹੈ ਕਿ ਤੇਜ਼ ਤਰੀਕਾ ਆਮਤੌਰ ਤੇ ਕੁਝ ਜਾਣਕਾਰੀ ਨਹੀਂ ਦੇ ਪਾਉਂਦਾ ਜਿਵੇਂ ਕਿ ਨਗਾਂ ਦੀ ਅਵਧੀ ਜਾਂ ਕਿਸਮ(ਕਿ ਵੀਡੀਓ ਲਾਈਵ ਹਨ ਜਾਂ ਆਮ) ਤੇ ਘੱਟ ਨਗ ਦਿਖ ਸਕਦੇ ਹਨ। +\n +\nਯੂਟਿਊਬ ਇੱਕ ਅਜਿਹੀ ਸੇਵਾ ਹੈ ਜਿਹੜੀ RSS ਫੀਡ ਜ਼ਰੀਏ ਇਹ ਤੇਜ਼ ਤਰੀਕਾ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ। +\n +\nਤੁਹਾਡੀ ਚੋਣ ਇਸ ਗੱਲ ਤੇ ਮੁਨੱਸਰ ਕਰਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਗਤੀ ਤੇ ਸਟੀਕਤਾ ਵਿੱਚੋਂ ਕਿਸ ਨੂੰ ਪ੍ਰਾਥਮਿਕਤਾ ਦਿੰਦੇ ਹੋ। \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 9e5475ef1..ddde09333 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -146,16 +146,19 @@ Nenhum inscrito %s inscrito + %s inscritos %s inscritos Sem visualizações %s visualização + %s visualizações %s visualizações Nenhum vídeo %s vídeo + %s vídeos %s vídeos Player @@ -425,11 +428,13 @@ Ninguém está vendo %s assistindo + %s assistindo %s estão vendo Ninguém está ouvindo %s ouvinte + %s ouvintes %s ouvintes O idioma será alterado após reiniciar o app @@ -459,6 +464,7 @@ Vídeos %d segundo + %d segundos %d segundos Devido a limitações do ExoPlayer, a duração do avanço foi definida para %d segundos @@ -467,14 +473,17 @@ Ajuda %d minuto + %d minutos %d minutos %d hora + %d horas %d horas %d dia + %d dias %d dias Grupo de canais @@ -486,6 +495,7 @@ Nenhuma inscrição selecionada %d selecionada + %d selecionadas %d selecionadas Nome do grupo está vazio @@ -649,10 +659,12 @@ Exibir fitas coloridas no topo das imagens indicando sua fonte: vermelho para rede, azul para disco e verde para memória %1$s download apagado + %1$s downloads apagados %1$s downloads apagados Download concluído + %s downloads concluídos %s downloads concluídos Exibir indicadores com imagem @@ -701,6 +713,7 @@ Carregando detalhes da transmissão… %s nova transmissão + %s novas transmissões %s novas transmissões Executar verificação de novas transmissões diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index e43eb0a73..3d22a074f 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -736,4 +736,5 @@ Perguntas frequentes Ver no site Se está a ter problemas a usar a aplicação, veja estas respostas para perguntas mais comuns! + Ordenação \ No newline at end of file diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index c5567b3f2..5e147dc13 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -153,7 +153,7 @@ Despre NewPipe Licențe terță-parte © %1$s de %2$s sub %3$s - Despre + Despre & FAQ Licențe Un player de streaming „uşor” liber, pentru Android. Vedeți pe GitHub @@ -733,4 +733,8 @@ Afișați elementele din viitor Ascunde elementele vizionate Ascunde elementele din viitor + Vezi pe website + Dacă întâmpinați probleme cu utilizarea aplicației, nu uitați să consultați aceste răspunsuri la întrebări frecvente! + Întrebări puse frecvent + Sortează \ No newline at end of file diff --git a/app/src/main/res/values-sat/strings.xml b/app/src/main/res/values-sat/strings.xml index a5c59c700..836ab01c3 100644 --- a/app/src/main/res/values-sat/strings.xml +++ b/app/src/main/res/values-sat/strings.xml @@ -64,4 +64,9 @@ ᱥᱟᱰᱮ ᱧᱮᱞ ᱠᱟᱱ ᱞᱮᱠᱷᱟ ᱪᱤᱱᱦᱟᱹ ᱠᱟᱜ ᱢᱮ ᱯᱞᱮᱭᱚᱨ ᱠᱨᱟᱥ ᱠᱟᱜ ᱢᱮ + ᱛᱷᱤᱢ + ᱟᱨᱥᱟᱞ + ᱧᱩᱛ + ᱧᱩᱛ ᱛᱷᱤᱢ + ᱦᱮᱱᱫᱮ \ No newline at end of file diff --git a/app/src/main/res/values-scn/strings.xml b/app/src/main/res/values-scn/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-scn/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 1f13a4601..3d28686ba 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -157,7 +157,7 @@ Om NewPipe Tredjepartslicenser © %1$s av %2$s under %3$s - Om + Om & FAQ Licenser Öppen och enkel Android-app för mediastreaming. Visa på GitHub @@ -720,4 +720,8 @@ Den valda videoströmmen stöds inte av externa spelare Göm framtida objekt Göm sedda objekt + Om du har problem med att använda appen, kolla in dessa svar på vanligt ställda frågor! + Vanligt ställda frågor + Visa på webbplats + Sortera \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 4efbb9d38..eb7c157b0 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -292,7 +292,7 @@ Ayır (bozulmaya neden olabilir) İndirilebilecek akış yok Yeğlenen \'aç\' eylemi - İçerik açılırken öntanımlı eylem — %s + Paylaşma ekranında tanımlı eylem — %s Alt yazılar Oynatıcı alt yazı metin ölçeğini ve arka plan biçimini değiştirin. Etkili olması için uygulamayı yeniden başlatma gerektirir Bu dosyayı oynatmak için herhangi bir uygulama yüklü değil diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 0c2b7c726..40eb323c1 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -67,7 +67,7 @@ Nội dung không khả dụng Không thể thiết lập menu tải về Ứng dụng / Giao diện người dùng bị lỗi - :( Lmao, app đã xảy ra lỗi. Hãy lướt xuống dưới để xem lỗi. + Hmm, app đã xảy ra lỗi, lướt xuống để xem lỗi. Báo lỗi qua email Xin lỗi, đã xảy ra sự cố. Báo cáo @@ -76,7 +76,7 @@ Loại lỗi:\\nYêu cầu:\\nNgôn ngữ của nội dung:\\nVùng miền (quốc gia) của nội dung:\\nNgôn ngữ của ứng dụng:\\nDịch vụ:\\nThời gian GMT:\\nTên gói:\\nPhiên bản:\\nPhiên bản hệ điều hành: Nhận xét của bạn (bằng tiếng Anh): Chi tiết: - Xem video, thời lượng: + Video xem, thời lượng: Hình thu nhỏ của avatar người tải lên Lượt thích Lượt không thích @@ -106,12 +106,12 @@ Giới thiệu về NewPipe Giấy phép của bên thứ ba © %1$s bởi %2$s dưới %3$s - Thông tin + Thông tin & Các câu hỏi Giấy phép - Trình phát video nhẹ và mã nguồn mở cho Android. + Trình phát video YT nhẹ, mã nguồn mở và không quảng cáo cho Android. Xem trên GitHub Giấy phép của NewPipe - Sự đóng góp của bạn luôn được hoan nghênh – kể cả khi bạn dịch, thay đổi giao diện, dọn code hay thay đổi những thứ khác, sự giúp đỡ của bạn vẫn đáng được trân trọng. Bạn càng làm nhiều, ứng dụng này sẽ càng tốt hơn bao giờ hết (Miễn đừng dịch vớ vẩn là được, nhé) ! + Sự đóng góp của bạn luôn được hoan nghênh – kể cả khi bạn dịch, thay đổi giao diện, dọn code, thêm tính năng hay thay đổi những thứ khác, sự giúp đỡ của bạn vẫn đáng được trân trọng. Bạn càng làm nhiều, ứng dụng này sẽ càng tốt hơn bao giờ hết ! Đọc giấy phép Đóng góp Ngôn ngữ nội dung ưu tiên @@ -191,7 +191,7 @@ Tên tệp không được để trống Đã xảy ra lỗi: %1$s Không có luồng nào để tải về - Không có gì cả + Không có gì cả :P Kéo để sắp xếp lại Không có người đăng ký @@ -244,7 +244,7 @@ Cảnh báo: Không thể nhập tất cả các tệp. Thao tác này sẽ ghi đè cài đặt hiện tại của bạn. Bạn cũng muốn nhập cài đặt? - Thịnh hành :D + Thịnh hành Mới và đang hot Loại bỏ Chi tiết @@ -439,7 +439,7 @@ \nBạn có chắc không\? Video sẽ không thể hồi phục được! Xóa video đã xem\? Xóa video đã xem - Mặt định hệ thống + Mặc định hệ thống Ngôn ngữ ứng dụng \'Storage Access Framework\' cho phép tải về thẻ SD Sử dụng trình chọn thư mục của hệ thống (SAF) @@ -668,8 +668,8 @@ Không tìm thấy ứng dụng quản lý tệp phù hợp nào để thực hiện hành động. \nVui lòng cài đặt ứng dụng quản lý tệp tương thích với Storage Access Framework. Không tìm thấy ứng dụng quản lý tệp phù hợp nào để thực hiện hành động. -\nVui lòng cài đặt ứng dụng quản lý tệp hoặc tắt \'%s\' trong cài đặt tải xuống. - Thay đổi kích thước khoảng thời gian tải (tầm khoảng %s). Để ở giá trị thấp hơn có thể sẽ tăng tốc độ tải video hơn ban đầu. Khởi động lại trình phát để áp dụng thay đổi. +\nVui lòng cài đặt ứng dụng quản lý tệp hoặc tắt \'%s\' trong cài đặt tải xuống + Thay đổi kích thước khoảng thời gian tải (tầm khoảng %s). Để ở giá trị thấp hơn có thể sẽ tăng tốc độ tải video hơn ban đầu. Khởi động lại trình phát để áp dụng thay đổi LeakCanary không khả dụng ExoPlayer mặc định Bình luận được ghim @@ -677,7 +677,7 @@ Thiết lập thông báo hiện đang phát Thông báo Luồng truyền mới - Thông báo về luồng truyền mới đối với mục đăng ký + Thông báo về video mới đối với mục đăng ký %s luồng truyền mới @@ -705,4 +705,10 @@ Độ phân giải không xác định Kích thước khoảng thời gian tải Hiện video đề xuất + Ẩn video đề xuất + Thể loại + Câu hỏi thường gặp + Xem trên website + Nếu bạn gặp rắc rối khi sử dụng ứng dụng , hãy chắc chắn rằng bạn đã tìm kiếm các câu hỏi thường thấy ! + Ẩn các video đã xem \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 3a0595c8d..0863e5dab 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -108,10 +108,10 @@ 關於 NewPipe 第三方版權協議 © %1$s %2$s 版權所有,根據 %3$s 嘅條款授權 - 關於 + 跋記 版權協議 喺 Android 上盡享自由輕便串流。 - 檢視我們的 GitHub + 去 GitHub 睇下 NewPipe 嘅授權協議 無論您對翻譯、設計改動、打掃程式碼,抑或開山劈石編寫程式碼有咩偈仔,都無任歡迎您幫手。聚沙成塔,眾志成城! 閱讀版權協議 @@ -707,4 +707,7 @@ \n所以就睇您點揀:想快定要準。 收埋睇過嘅項目 未夠鐘上畫嘅項目就收埋 + 去網站睇下 + 排序 + 常見問題 \ No newline at end of file diff --git a/fastlane/metadata/android/ar/changelogs/71.txt b/fastlane/metadata/android/ar/changelogs/71.txt index 4e01ba42e..6c02247bb 100644 --- a/fastlane/metadata/android/ar/changelogs/71.txt +++ b/fastlane/metadata/android/ar/changelogs/71.txt @@ -1,9 +1,10 @@ -تحسينات -* إضافة إشعار تحديث التطبيق لبناء جيثب (#1608 بواسطة krtkush)تحسينات مختلفة على برنامج التنزيل (# 1944 بواسطة kapodamy): -إضافة الرموز البيضاء المفقودة واستخدام طريقة hardcored لتغيير ألوان الرمز -تحقق مما إذا كان المكرر قد تمت تهيئته (إصلاحات 2031) -السماح بإعادة المحاولة مع ظهور خطأ "فشلت المعالجة اللاحقة" في muxer الجديد -MPEG-4 muxer الجديد الذي يعمل على تثبيت تدفقات الفيديو والصوت غير المتزامنة (2039) +### تحسينات +* إضافة إشعار تحديث التطبيق لبناء GitHub (#1608 بواسطة krtkush) +* تحسينات مختلفة على برنامج التنزيل (# 1944 بواسطة kapodamy): + * إضافة الرموز البيضاء المفقودة واستخدام طريقة hardcored لتغيير ألوان الرمز + * تحقق مما إذا كان المكرر قد تمت تهيئته (إصلاحات #2031) + * السماح بإعادة المحاولة مع ظهور خطأ "فشلت المعالجة اللاحقة" في muxer الجديد + * MPEG-4 muxer الجديد الذي يعمل على تثبيت تدفقات الفيديو والصوت غير المتزامنة (#2039) -مثبت -توقف البث المباشر على YouTube عن التشغيل بعد وقت قصير (# 1996 بواسطةyausername) +### ثابت +* توقف البث المباشر على YouTube عن التشغيل بعد وقت قصير (#1996 by @yausername) diff --git a/fastlane/metadata/android/ast/full_description.txt b/fastlane/metadata/android/ast/full_description.txt new file mode 100644 index 000000000..cfe4f2e8d --- /dev/null +++ b/fastlane/metadata/android/ast/full_description.txt @@ -0,0 +1 @@ +NewPipe ye una aplicación llibre y gratuita que nun usa nin les biblioteques del framework de Google nin l'API de YouTube, namás analiza'l sitiu web pa recoyer la información que precisa. Poro, esta aplicación pue usase en preseos que nun tengan los servicios de Google instalaos. Tampoco ye necesaria una cuenta pa usar NewPipe. diff --git a/fastlane/metadata/android/ast/short_description.txt b/fastlane/metadata/android/ast/short_description.txt new file mode 100644 index 000000000..59864955a --- /dev/null +++ b/fastlane/metadata/android/ast/short_description.txt @@ -0,0 +1 @@ +Un frontal de YouTube llixeru y llibre p'Android. diff --git a/fastlane/metadata/android/az/changelogs/991.txt b/fastlane/metadata/android/az/changelogs/991.txt new file mode 100644 index 000000000..b7772db71 --- /dev/null +++ b/fastlane/metadata/android/az/changelogs/991.txt @@ -0,0 +1,13 @@ +Yeni +• Xəta panelində "Brauzerdə aç" düyməsini əlavə et +• Kanal qruplarını siyahı kimi göstərmək üçün seçim əlavə et +• [YouTube] Vaxt möhürü URL-ni paylaşmaq üçün yayım seqmentlərinə uzun kliklə +• Mini oynadıcıya oynatma növbəsi düyməsini əlavə et + +Təkmilləşdirildi +• İslandiya lokalizasiyası əlavə edildi və bir çox digər tərcümələr yeniləndi +• Bir çox daxili təkmilləşdirmələr + +Düzəldildi +• Çoxsaylı qəzalar düzəldilib +• [YouTube] Bəzi ölkələrdə yükləmə kanallarını, qeyri-müəyyən axın və müvəqqəti oynatma problemlərini həll et diff --git a/fastlane/metadata/android/bg/changelogs/63.txt b/fastlane/metadata/android/bg/changelogs/63.txt new file mode 100644 index 000000000..be8865e6d --- /dev/null +++ b/fastlane/metadata/android/bg/changelogs/63.txt @@ -0,0 +1,8 @@ +### Подобрения +- Импорт/ Експорт на настройки #1333 +- Редуциране на надхвърляне (подобрение на производителността) #1371 +- Малки подобрения в кода #1375 +- Добавяне на всичко за GDPR #1420 + +### Поправени +- Изтегляния: Поправен срив при зареждане на неприключени изтегляния от .giga файлове #1407 diff --git a/fastlane/metadata/android/bg/short_description.txt b/fastlane/metadata/android/bg/short_description.txt new file mode 100644 index 000000000..bcbbc16cf --- /dev/null +++ b/fastlane/metadata/android/bg/short_description.txt @@ -0,0 +1 @@ +Безплатен и лек YouTube клиент за Android. diff --git a/fastlane/metadata/android/hu/changelogs/989.txt b/fastlane/metadata/android/hu/changelogs/989.txt new file mode 100644 index 000000000..2e6a51450 --- /dev/null +++ b/fastlane/metadata/android/hu/changelogs/989.txt @@ -0,0 +1,3 @@ +• [YouTube] A videók végtelenségig tartó betöltésének javítása +• [YouTube] Egyes videóknál előforduló visszafogás javítása +• Frissítés a jsoup programkönyvtár 1.15.3-as verziójára, amely biztonsági javítást tartalmaz diff --git a/fastlane/metadata/android/hu/changelogs/990.txt b/fastlane/metadata/android/hu/changelogs/990.txt new file mode 100644 index 000000000..91ab517e3 --- /dev/null +++ b/fastlane/metadata/android/hu/changelogs/990.txt @@ -0,0 +1,15 @@ +Ez a kiadás dobja az Android 4.4 KitKat támogatását, mostantól legalább Android 5 Lollipop szükséges. + +Újdonságok +• Letöltés a hosszú érintéses menüből +• Jövőbeli videók elrejtése +• Helyi lejátszási listák megosztása + +Fejlesztések +• A lejátszó kódjának refaktorálása: kevesebb RAM használat, kevesebb hiba +• A bélyegképek skálázási módjának fejlesztése +• Helykitöltő képek vektorosítása + +Javítások +• Különböző lejátszóértesítési problémák javítása +• A teljes képernyős megjelenítés javítása diff --git a/fastlane/metadata/android/it/changelogs/65.txt b/fastlane/metadata/android/it/changelogs/65.txt new file mode 100644 index 000000000..e1e3994a7 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/65.txt @@ -0,0 +1,26 @@ +### Miglioramenti + +- Disattiva l'animazione dell'icona burgermenu #1486 +- annulla l'eliminazione dei download #1472 +- Opzione di download nel menu di condivisione #1498 +- Aggiunta l'opzione di condivisione al menu a lungo tap #1454 +- Riduci a icona il giocatore principale all'uscita #1354 +- Aggiornamento della versione della libreria e correzione del backup del database n. 1510 +- Aggiornamento ExoPlayer 2.8.2 n. 1392 + - Rielaborata la finestra di dialogo di controllo della velocità di riproduzione per supportare diverse dimensioni del passo per un cambio di velocità più rapido. + - Aggiunto un interruttore per l'avanzamento rapido durante i silenzi nel controllo della velocità di riproduzione. Questo dovrebbe essere utile per gli audiolibri e alcuni generi musicali e può portare un'esperienza davvero senza interruzioni (e può interrompere una canzone con molti silenzi =\\). + - Rifattorizzazione della risoluzione della sorgente multimediale per consentire il passaggio di metadati insieme ai media all'interno del lettore, anziché farlo manualmente. Ora abbiamo un'unica fonte di metadati ed è direttamente disponibile all'avvio della riproduzione. + - Risolto il problema con i metadati della playlist remota che non si aggiornavano quando sono disponibili nuovi metadati quando viene aperto il frammento della playlist. + - Varie correzioni dell'interfaccia utente: n. 1383, controlli di notifica del giocatore in background ora sempre bianchi, più facile da spegnere il lettore popup tramite lancio +- Usa il nuovo estrattore con architettura refactored per il multiservizio + +### Correzioni + +- Correzione n. 1440 Layout di informazioni video interrotto n. 1491 +- Visualizza la correzione della cronologia n. 1497 + - #1495, aggiornando i metadati (miniatura, titolo e conteggio video) non appena l'utente accede alla playlist. + - #1475, registrando una vista nel database quando l'utente avvia un video su un lettore esterno su un frammento di dettaglio. +- Risolto il timeout della schermata in caso di modalità popup. #1463 (Risolto #640) +- Correzione del lettore video principale n. 1509 + - [#1412] Risolto il problema con la modalità di ripetizione che causava NPE al giocatore quando veniva ricevuto un nuovo intento mentre l'attività del giocatore era in background. + - Risolto il problema con la riduzione a icona del giocatore in popup che non distruggeva il giocatore quando l'autorizzazione per il popup non è concessa. diff --git a/fastlane/metadata/android/it/changelogs/66.txt b/fastlane/metadata/android/it/changelogs/66.txt new file mode 100644 index 000000000..fc6407e20 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/66.txt @@ -0,0 +1,33 @@ +# Registro delle modifiche della v0.13.7 + +### Fisso +- Risolti i problemi del filtro di ordinamento della v0.13.6 + +# Registro delle modifiche della v0.13.6 + +### Miglioramenti + +- Disattiva l'animazione dell'icona burgermenu #1486 +- annulla l'eliminazione dei download #1472 +- Opzione di download nel menu di condivisione #1498 +- Aggiunta l'opzione di condivisione al menu a lungo tap #1454 +- Riduci a icona il giocatore principale all'uscita #1354 +- Aggiornamento della versione della libreria e correzione del backup del database n. 1510 +- Aggiornamento ExoPlayer 2.8.2 n. 1392 + - Rielaborata la finestra di dialogo di controllo della velocità di riproduzione per supportare diverse dimensioni del passo per un cambio di velocità più rapido. + - Aggiunto un interruttore per l'avanzamento rapido durante i silenzi nel controllo della velocità di riproduzione. Questo dovrebbe essere utile per gli audiolibri e alcuni generi musicali e può portare un'esperienza davvero senza interruzioni (e può interrompere una canzone con molti silenzi =\\). + - Rifattorizzazione della risoluzione della sorgente multimediale per consentire il passaggio di metadati insieme ai media all'interno del lettore, anziché farlo manualmente. Ora abbiamo un'unica fonte di metadati ed è direttamente disponibile all'avvio della riproduzione. + - Risolto il problema con i metadati della playlist remota che non si aggiornavano quando sono disponibili nuovi metadati quando viene aperto il frammento della playlist. + - Varie correzioni dell'interfaccia utente: n. 1383, controlli di notifica del giocatore in background ora sempre bianchi, più facile da spegnere il lettore popup tramite lancio +- Usa il nuovo estrattore con architettura refactored per il multiservizio + +### Correzioni + +- Correzione n. 1440 Layout di informazioni video interrotto n. 1491 +- Visualizza la correzione della cronologia n. 1497 + - #1495, aggiornando i metadati (miniatura, titolo e conteggio video) non appena l'utente accede alla playlist. + - #1475, registrando una vista nel database quando l'utente avvia un video su un lettore esterno su un frammento di dettaglio. +- Risolto il timeout della schermata in caso di modalità popup. #1463 (Risolto #640) +- Correzione del lettore video principale n. 1509 + - [#1412] Risolto il problema con la modalità di ripetizione che causava NPE al giocatore quando veniva ricevuto un nuovo intento mentre l'attività del giocatore era in background. + - Risolto il problema con la riduzione a icona del giocatore in popup che non distruggeva il giocatore quando l'autorizzazione per il popup non è concessa. diff --git a/fastlane/metadata/android/it/changelogs/68.txt b/fastlane/metadata/android/it/changelogs/68.txt new file mode 100644 index 000000000..5190eecf3 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/68.txt @@ -0,0 +1,31 @@ +# modifiche della v0.14.1 + +### Fisso +- Risolto il problema con la decrittografia dell'URL del video n. 1659 +- Corretto il collegamento alla descrizione che non estrae bene #1657 + +# modifiche della v0.14.0 + +### Nuovo +- Nuovo design del cassetto #1461 +- Nuova prima pagina personalizzabile #1461 + +### Miglioramenti +- Controlli dei gesti rielaborati #1604 +- Nuovo modo per chiudere il popup player #1597 + +### Fisso +- Risolto l'errore quando il conteggio delle iscrizioni non è disponibile. Chiude #1649. + - Mostra "Conteggio iscritti non disponibile" in questi casi +- Risolto NPE quando una playlist di YouTube è vuota +- Soluzione rapida per i chioschi in SoundCloud +- Refactor e correzione di bug #1623 + - Risolto il risultato della ricerca ciclica n. 1562 + - Risolto il problema con la barra di ricerca non disposta staticamente + - Risolto il problema con i video YT Premium non bloccati correttamente + - Risolto il problema con i video che a volte non venivano caricati (a causa dell'analisi DASH) + - Correggi i collegamenti nella descrizione del video + - Mostra avviso quando qualcuno tenta di scaricare su sdcard esterna + - non correggi il rapporto sui trigger di eccezione mostrati + - miniatura non mostrata nel lettore in background per Android 8.1 [vedi qui](https://github.com/TeamNewPipe/NewPipe/issues/943) +- Risolto il problema con la registrazione del ricevitore di trasmissione. Chiude #1641. diff --git a/fastlane/metadata/android/it/changelogs/69.txt b/fastlane/metadata/android/it/changelogs/69.txt new file mode 100644 index 000000000..2a2cd133b --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/69.txt @@ -0,0 +1,19 @@ +### Nuovo +- Tocca a lungo elimina e condividi gli abbonamenti #1516 +- Interfaccia utente tablet e layout elenco griglia #1617 + +### Miglioramenti +- memorizza e ricarica l'ultima proporzione utilizzata #1748 +- Abilita il layout lineare nell'attività Download con i nomi video completi #1771 +- Elimina e condividi gli abbonamenti direttamente dalla scheda abbonamenti n. 1516 +- L'accodamento ora attiva la riproduzione del video se la coda di riproduzione è già terminata #1783 +- Impostazioni separate per i gesti di volume e luminosità #1644 +- Aggiungi il supporto per la localizzazione #1792 + +### Correzioni +- Risolto il problema con l'analisi del tempo per . formato, quindi NewPipe può essere utilizzato in Finlandia +- Risolto il conteggio degli abbonamenti +- Aggiungi l'autorizzazione al servizio in primo piano per i dispositivi API 28+ #1830 + +### Bug noti +- Lo stato di riproduzione non può essere salvato su Android P diff --git a/fastlane/metadata/android/it/changelogs/70.txt b/fastlane/metadata/android/it/changelogs/70.txt new file mode 100644 index 000000000..c07eb6bed --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/70.txt @@ -0,0 +1,25 @@ +ATTENZIONE: Questa versione probabilmente è un bugfest, proprio come l'ultima. Tuttavia, a causa dell'arresto completo dalla 17. una versione non funzionante è meglio di nessuna versione. Destra? ¯\_(ツ)_/¯ + +### Miglioramenti +* i file scaricati possono ora essere aperti con un clic #1879 +* drop supporto per Android 4.1 - 4.3 #1884 +* rimuovi il vecchio giocatore #1884 +* rimuovi gli stream dalla coda di riproduzione corrente facendoli scorrere verso destra #1915 +* rimuove il flusso in coda automaticamente quando un nuovo flusso viene accodato manualmente #1878 +* Post-elaborazione per i download e implementazione delle funzionalità mancanti #1759 di @kapodamy + * Infrastruttura di post-elaborazione + * Corretta gestione degli errori "infrastruttura" (per downloader) + * Coda invece di download multipli + * Sposta i download serializzati in sospeso (file `.giga`) nei dati dell'app + * Implementare il numero massimo di tentativi di download + * Sospensione corretta del download multi-thread + * Interrompi i download quando passi alla rete mobile (non funziona mai, vedi 2° punto) + * Salva il conteggio dei thread per i prossimi download + * Risolte molte incoerenze + +### Fisso +* Risolto l'arresto anomalo con la risoluzione predefinita impostata sulla risoluzione dei dati mobili migliore e limitata #1835 +* arresto anomalo del lettore pop-up risolto #1874 +* NPE quando si tenta di aprire il giocatore in background #1901 +* Risolto il problema con l'inserimento di nuovi flussi quando l'accodamento automatico è abilitato #1878 +* Risolto il problema del decypering shuttown diff --git a/fastlane/metadata/android/it/changelogs/71.txt b/fastlane/metadata/android/it/changelogs/71.txt new file mode 100644 index 000000000..8adf4d31f --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/71.txt @@ -0,0 +1,10 @@ +### Miglioramenti +* Aggiungi la notifica di aggiornamento dell'app per la build di GitHub (#1608 di @krtkush) +* Vari miglioramenti al downloader (#1944 di @kapodamy): + * aggiungi icone bianche mancanti e usa il modo hardcore per cambiare i colori delle icone + * controlla se l'iteratore è inizializzato (correzioni #2031) + * consente di riprovare i download con l'errore "post-elaborazione non riuscita" nel nuovo muxer + * nuovo muxer MPEG-4 che corregge flussi video e audio non sincroni (#2039) + +### Fisso +* I live streaming di YouTube smettono di essere riprodotti dopo poco tempo (#1996 di @yausername) diff --git a/fastlane/metadata/android/it/changelogs/740.txt b/fastlane/metadata/android/it/changelogs/740.txt new file mode 100644 index 000000000..297ff9a3c --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/740.txt @@ -0,0 +1,23 @@ +

Miglioramenti

+
    +
  • rendi cliccabili i link nei commenti, aumenta la dimensione del testo
  • +
  • cerca facendo clic sui collegamenti timestamp nei commenti
  • +
  • mostra la scheda preferita in base allo stato selezionato di recente
  • +
  • aggiungi playlist alla coda facendo clic a lungo su 'Sfondo' nella finestra playlist
  • +
  • cerca il testo condiviso quando non è un URL
  • +
  • aggiungi il pulsante "condividi all'ora corrente" al video player principale
  • +
  • aggiungi il pulsante di chiusura al lettore principale quando la coda video è terminata
  • +
  • aggiungi "Riproduci direttamente in background" al menu a pressione lunga per gli elementi dell'elenco video
  • +
  • migliora le traduzioni in inglese per i comandi di riproduzione/accodamento
  • +
  • piccoli miglioramenti delle prestazioni
  • +
  • rimuove i file inutilizzati
  • +
  • aggiorna ExoPlayer a 2.9.6
  • +
  • aggiungi supporto per collegamenti Invidious
  • +
+

Risolto

+
    +
  • corretto lo scorrimento con commenti e relativi flussi disabilitati
  • +
  • risolto il problema con CheckForNewAppVersionTask in esecuzione quando non avrebbe dovuto't
  • +
  • corretta l'importazione dell'abbonamento YouTube: ignora quelli con URL non valido e mantieni quelli con titolo vuoto
  • +
  • correggi l'URL YouTube non valido: il nome del tag della firma non è sempre "firma" che impedisce il caricamento degli stream
  • +
diff --git a/fastlane/metadata/android/it/changelogs/750.txt b/fastlane/metadata/android/it/changelogs/750.txt new file mode 100644 index 000000000..4fd420c34 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/750.txt @@ -0,0 +1,22 @@ +Nuovo +Riprendi la riproduzione #2288 +• Riprendi gli stream dal punto in cui ti sei fermato l'ultima volta +Miglioramenti del downloader #2149 +• Utilizzare Storage Access Framework per archiviare i download su schede SD esterne +• Nuovo mixer mp4 +• Modificare facoltativamente la directory di download prima di avviare un download +• Rispettare le reti a consumo + + +Migliorato +• Rimosse le stringhe gema #2295 +• Gestire le modifiche alla rotazione (automatica) durante il ciclo di vita dell'attività #2444 +• Rendi coerenti i menu a lunga pressione #2368 + +Fisso +• Risolto il problema con il nome della traccia dei sottotitoli selezionata che non veniva mostrato #2394 +• Non arrestarsi in modo anomalo quando il controllo dell'aggiornamento dell'app non riesce (versione GitHub) #2423 +• Risolti i download bloccati al 99,9% #2440 +• Aggiorna i metadati della coda di riproduzione #2453 +• [SoundCloud] Risolto crash durante il caricamento delle playlist TeamNewPipe/NewPipeExtractor#170 +• [YouTube] La durata fissa non può essere modificata TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/it/changelogs/760.txt b/fastlane/metadata/android/it/changelogs/760.txt new file mode 100644 index 000000000..354ebdd86 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/760.txt @@ -0,0 +1,43 @@ +Modifiche in 0.17.1 + +Nuovo +• Localizzazione tailandese + + +Migliorato +• Aggiungi di nuovo l'azione inizia a giocare qui nei menu a lunga pressione per le playlist #2518 +• Aggiungi un'opzione per SAF/selettore file legacy #2521 + +Fisso +• Risolto il problema con i pulsanti che scomparivano nella visualizzazione dei download quando si cambia app #2487 +• La posizione di riproduzione fissa viene memorizzata anche se la cronologia di visualizzazione è disabilitata +• Risolto il problema con le prestazioni ridotte causate dalla posizione di riproduzione nelle visualizzazioni elenco #2517 +• [Estrattore] Correzione di ReCaptchaActivity n. 2527, TeamNewPipe/NewPipeExtractor n. 186 +• [Extractor] [YouTube] Risolto l'errore di ricerca casuale quando le playlist sono nei risultati TeamNewPipe/NewPipeExtractor#185 + + + +Modifiche in 0.17.0 + +Nuovo +Riprendi la riproduzione #2288 +• Riprendi gli stream dal punto in cui ti sei fermato l'ultima volta +Miglioramenti del downloader #2149 +• Utilizzare Storage Access Framework per archiviare i download su schede SD esterne +• Nuovo mixer mp4 +• Modificare facoltativamente la directory di download prima di avviare un download +• Rispettare le reti a consumo + + +Migliorato +• Rimosse le stringhe gema #2295 +• Gestire le modifiche alla rotazione (automatica) durante il ciclo di vita dell'attività #2444 +• Rendi coerenti i menu a lunga pressione #2368 + +Fisso +• Risolto il problema con il nome della traccia dei sottotitoli selezionata che non veniva mostrato #2394 +• Non arrestarsi in modo anomalo quando il controllo dell'aggiornamento dell'app non riesce (versione GitHub) #2423 +• Risolti i download bloccati al 99,9% #2440 +• Aggiorna i metadati della coda di riproduzione #2453 +• [SoundCloud] Risolto crash durante il caricamento delle playlist TeamNewPipe/NewPipeExtractor#170 +• [YouTube] La durata fissa non può essere modificata TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/it/changelogs/780.txt b/fastlane/metadata/android/it/changelogs/780.txt new file mode 100644 index 000000000..e5bbd9227 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/780.txt @@ -0,0 +1,12 @@ +Modifiche in 0.17.3 + +Migliorato +• Aggiunta l'opzione per cancellare gli stati di riproduzione #2550 +• Mostra le directory nascoste nel selettore di file #2591 +• Supporta gli URL delle istanze `invidio.us` da aprire con NewPipe #2488 +• Aggiunta del supporto per gli URL di `music.youtube.com` TeamNewPipe/NewPipeExtractor#194 + +Fisso +• [YouTube] Risolto 'java.lang.IllegalArgumentException #192 +• [YouTube] Risolto il problema con i live streaming che non funzionavano TeamNewPipe/NewPipeExtractor#195 +• Risolto problema di prestazioni in Android Pie durante il download di uno stream #2592 diff --git a/fastlane/metadata/android/it/changelogs/790.txt b/fastlane/metadata/android/it/changelogs/790.txt new file mode 100644 index 000000000..7ad4734bb --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/790.txt @@ -0,0 +1,14 @@ +Migliorato +• Aggiungi più titoli per migliorare l'accessibilità per i non vedenti #2655 +• Rendi la lingua dell'impostazione della cartella di download più coerente e meno ambigua #2637 + +Fisso +• Verificare se l'ultimo byte nel blocco è stato scaricato #2646 +• Corretto lo scorrimento nel frammento di dettaglio video #2672 +• Rimuovere le animazioni della casella di cancellazione della doppia ricerca in un #2695 +• [SoundCloud] Correzione dell'estrazione client_id #2745 + +Sviluppo +• Aggiungere le dipendenze mancanti ereditate da NewPipeExtractor in NewPipe #2535 +• Migra ad AndroidX #2685 +• Aggiorna a ExoPlayer 2.10.6 #2697, #2736 diff --git a/fastlane/metadata/android/it/changelogs/800.txt b/fastlane/metadata/android/it/changelogs/800.txt new file mode 100644 index 000000000..6715362b6 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/800.txt @@ -0,0 +1,27 @@ +Nuovo +• Supporto PeerTube senza P2P (#2201) [Beta]: + ◦ Guarda e scarica video da istanze PeerTube + ◦ Aggiungi istanze nelle impostazioni per accedere al mondo PeerTube completo + ◦ Potrebbero esserci problemi con gli handshake SSL su Android 4.4 e 7.1 quando si accede a determinate istanze con conseguente errore di rete. + +• Downloader (#2679): + ◦ Calcola l'ETA di download + ◦ Scarica opus (file webm) come ogg + ◦ Recupera i link di download scaduti per riprendere i download dopo una lunga pausa + +Migliorato +• Rendi il KioskFragment consapevole delle modifiche nel Paese dei contenuti preferito e migliora le prestazioni di tutte le schede principali #2742 +• Utilizzare le nuove implementazioni di localizzazione e downloader dall'estrattore #2713 +• Rendi traducibile la stringa "Chiosco predefinito". +• Barra di navigazione nera per il tema nero #2569 + +Fisso +• Risolto un bug che non poteva spostare il popup player se veniva posizionato un altro dito mentre si spostava il popup player #2772 +• Consenti alle playlist manca un caricatore e correggi gli arresti anomali relativi a questo problema #2724, TeamNewPipe/NewPipeExtractor#219 +• Abilitazione di TLS1.1/1.2 su dispositivi Android 4.4 (API 19/KitKat) per correggere l'handshake TLS con MediaCCC e alcune istanze PeerTube #2792 +• [SoundCloud] Risolto il problema con l'estrazione di client_id TeamNewPipe/NewPipeExtractor#217 +• [SoundCloud] Correzione dell'estrazione del flusso audio + +Sviluppo +• Aggiorna ExoPlayer a 2.10.8 #2791, #2816 +• Aggiorna Gradle a 3.5.1 e aggiungi il supporto Kotlin #2714 diff --git a/fastlane/metadata/android/it/changelogs/810.txt b/fastlane/metadata/android/it/changelogs/810.txt new file mode 100644 index 000000000..26e2b9a43 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/810.txt @@ -0,0 +1,19 @@ +Nuovo +• Mostra la miniatura del video sulla schermata di blocco durante la riproduzione in background + +Migliorato +• Aggiungi playlist locale alla coda premendo a lungo sul pulsante in background/popup +• Rendere scorrevoli le schede della pagina principale e nasconderle quando è presente una sola scheda +• Limita la quantità di aggiornamenti delle miniature delle notifiche nel lettore in background +• Aggiungi miniature fittizie per playlist locali vuote +• Usa l'estensione del file *.opus invece di *.webm e mostra "opus" nell'etichetta del formato invece di "WebM Opus" nel menu a discesa del download +• Pulsante Aggiungi per eliminare i file scaricati o la cronologia dei download in "Download" +• [YouTube] Aggiungi supporto ai link del canale /c/shortened_url + +Fisso +• Risolti diversi problemi durante la condivisione di un video su NewPipe e il download diretto dei suoi flussi +• Risolto il problema con l'accesso del giocatore dal suo thread di creazione +• Corretto il paging dei risultati di ricerca +• [YouTube] Risolto il problema con l'attivazione di NPE che causava NPE +• [YouTube] Risolto il problema con la visualizzazione dei commenti all'apertura di un URL invidio.us +• [SoundCloud] Client_id aggiornato diff --git a/fastlane/metadata/android/it/changelogs/820.txt b/fastlane/metadata/android/it/changelogs/820.txt new file mode 100644 index 000000000..d3f08ee24 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/820.txt @@ -0,0 +1 @@ +Risolto il problema con l'espressione regolare del nome della funzione di decrittografia che rendeva YouTube inutilizzabile. diff --git a/fastlane/metadata/android/it/changelogs/840.txt b/fastlane/metadata/android/it/changelogs/840.txt new file mode 100644 index 000000000..db5c6618d --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/840.txt @@ -0,0 +1,22 @@ +Nuovo +• Aggiunto selettore della lingua per cambiare la lingua dell'app +• Aggiunto il pulsante Invia a Kodi al menu pieghevole del giocatore +• Aggiunta la possibilità di copiare i commenti premendo a lungo + +Migliorato +• Correggi l'attività di ReCaptcha e salva correttamente i cookie ottenuti +• Rimosso il menu a punti a favore del cassetto e nascondi il pulsante della cronologia quando la cronologia delle visualizzazioni non è abilitata nelle impostazioni +• Richiedi l'autorizzazione per la visualizzazione su altre app nelle impostazioni correttamente su Android 6 e versioni successive +• Rinominare la playlist locale facendo clic a lungo in BookmarkFragment +• Vari miglioramenti a PeerTube +• Migliorate diverse stringhe di origine in inglese + +Fisso +• Risolto il problema con il riavvio del lettore anche se è stato messo in pausa quando l'opzione "riduci a icona al passaggio dell'app" è abilitata e NewPipe è ridotto a icona +• Correzione del valore di luminosità iniziale per i gesti +• Risolti i download di sottotitoli .srt contenenti non tutte le interruzioni di riga +• Risolto il problema con il download su scheda SD non riuscito perché alcuni dispositivi Android 5 non sono compatibili con CTF +• Risolto il problema con il download su Android KitKat +• Risolto il problema con il file video .mp4 danneggiato riconosciuto come file audio +• Risolti più problemi di localizzazione, inclusi codici di lingua cinese errati +• [YouTube] I timestamp nella descrizione sono nuovamente selezionabili diff --git a/fastlane/metadata/android/it/changelogs/900.txt b/fastlane/metadata/android/it/changelogs/900.txt new file mode 100644 index 000000000..48e72a75f --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/900.txt @@ -0,0 +1,14 @@ +Nuovo +• Gruppi di abbonamento e feed ordinati +• Pulsante muto nei giocatori + +Migliorato +• Consenti l'apertura di collegamenti music.youtube.com e media.ccc.de in NewPipe +• Riposizionare due impostazioni da Aspetto a Contenuto +• Nascondi le opzioni di ricerca di 5, 15, 25 secondi se è abilitata la ricerca inesatta + +Fisso +• alcuni video WebM non sono ricercabili +• backup del database su Android P +• crash durante la condivisione di un file scaricato +• tonnellate di problemi di estrazione di YouTube e altro ... diff --git a/fastlane/metadata/android/it/changelogs/920.txt b/fastlane/metadata/android/it/changelogs/920.txt new file mode 100644 index 000000000..79e9141d3 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/920.txt @@ -0,0 +1,9 @@ +Migliorato + +• Aggiunta la data di caricamento e il conteggio delle visualizzazioni sugli elementi della griglia di flusso +• Miglioramenti al layout dell'intestazione del cassetto + +Fisso + +• Risolto il problema con il pulsante muto che causava arresti anomali su API 19 +• Risolto il problema con il download di video lunghi 1080p 60fps diff --git a/fastlane/metadata/android/it/changelogs/930.txt b/fastlane/metadata/android/it/changelogs/930.txt new file mode 100644 index 000000000..ba0b9e341 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/930.txt @@ -0,0 +1,19 @@ +Nuovo +• Cerca su YouTube Music +• Supporto Android TV di base + +Migliorato +• Aggiunta la possibilità di rimuovere tutti i video guardati da una playlist locale +• Mostra il messaggio quando il contenuto non è ancora supportato invece di andare in crash +• Migliorato il ridimensionamento del lettore popup con i gesti di pizzico +• Accodare gli stream premendo a lungo sullo sfondo e sui pulsanti popup nel canale +• Gestione delle dimensioni migliorata del titolo dell'intestazione del cassetto + +Fisso +• Risolto il problema con l'impostazione del contenuto con limiti di età non funzionante +• Risolti alcuni tipi di reCAPTCHA +• Risolto crash durante l'apertura dei segnalibri mentre la playlist è `null` +• Risolto il problema con il rilevamento delle eccezioni relative alla rete +• Corretta la visibilità del pulsante di ordinamento dei gruppi nel frammento delle iscrizioni + +e altro ancora diff --git a/fastlane/metadata/android/it/changelogs/951.txt b/fastlane/metadata/android/it/changelogs/951.txt new file mode 100644 index 000000000..94745a41a --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/951.txt @@ -0,0 +1,17 @@ +Nuovo +• Aggiungi la ricerca per la selezione delle iscrizioni nella finestra di dialogo del gruppo di feed +• Aggiungi un filtro alla finestra di dialogo del gruppo di feed per mostrare solo le iscrizioni non raggruppate +• Aggiungi la scheda playlist alla pagina principale +• Avanti/indietro veloce nella coda del lettore in background/pop-up +• Mostra suggerimento di ricerca: intendevi e mostra il risultato per + +Migliorato +• Eliminare la scrittura dei metadati dell'applicazione in file confusi +• Non rimuovere i flussi non riusciti dalla coda +• Aggiorna il colore della barra di stato in modo che corrisponda al colore della barra degli strumenti + +Fisso +• Risolto il problema con la desincronizzazione audio/video causata da errori cumulativi in virgola mobile +• [PeerTube] Gestisce i commenti eliminati + +e altro ancora diff --git a/fastlane/metadata/android/it/changelogs/957.txt b/fastlane/metadata/android/it/changelogs/957.txt new file mode 100644 index 000000000..e7d01f17f --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/957.txt @@ -0,0 +1,10 @@ +• Unificare le azioni di accodamento specifiche in una +• Gesto con due dita per chiudere il lettore +• Consenti cancellazione dei cookie reCAPTCHA +• Opzione per non colorare la notifica +• Migliora il modo in cui i dettagli del video vengono aperti per correggere il buffering infinito, il comportamento buggy durante la condivisione su NewPipe e altre incoerenze +• Velocizza i video di YouTube e correggi quelli soggetti a limiti di età +• Risolto crash durante l'avanzamento/riavvolgimento veloce +• Non riordinare gli elenchi trascinando le miniature +• Ricorda sempre le proprietà dei popup +• Aggiungi la lingua Santali diff --git a/fastlane/metadata/android/it/changelogs/965.txt b/fastlane/metadata/android/it/changelogs/965.txt new file mode 100644 index 000000000..13d7ac792 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/965.txt @@ -0,0 +1,6 @@ +Risolto crash che si verificava durante il riordino dei gruppi di canali. +Risolto il problema con la ricezione di più video di YouTube da canali e playlist. +Risolto il problema con la ricezione di commenti su YouTube. +Aggiunto supporto per i sottopercorsi /watch/, /v/ e /w/ negli URL di YouTube. +Risolto il problema con l'estrazione dell'ID client SoundCloud e del contenuto con restrizioni geografiche. +Aggiunta la localizzazione del curdo settentrionale. diff --git a/fastlane/metadata/android/it/changelogs/966.txt b/fastlane/metadata/android/it/changelogs/966.txt new file mode 100644 index 000000000..5c0dd1ed8 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/966.txt @@ -0,0 +1,14 @@ +Nuovo: +• Aggiungi un nuovo servizio: Bandcamp + +Migliorato: +• Aggiungi un'opzione per fare in modo che l'app segua il tema del dispositivo +• Prevenire alcuni arresti anomali mostrando un pannello di errore migliorato +• Mostra ulteriori informazioni sul motivo per cui il contenuto non è disponibile +• Il pulsante dello spazio hardware attiva la riproduzione/pausa +• Mostra il brindisi "Download iniziato". + +Fisso: +• Correzione di miniature molto piccole nei dettagli del video durante la riproduzione in background +• Risolto il problema con il titolo vuoto nel lettore ridotto a icona +• Risolto il problema con l'ultima modalità di ridimensionamento che non veniva ripristinata correttamente diff --git a/fastlane/metadata/android/it/changelogs/967.txt b/fastlane/metadata/android/it/changelogs/967.txt new file mode 100644 index 000000000..93171c089 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/967.txt @@ -0,0 +1 @@ +Risolto il problema con YouTube che non funzionava correttamente nell'UE. Ciò è stato causato da un nuovo sistema di cookie e consenso alla privacy che richiede a NewPipe di impostare un cookie di CONSENSO. diff --git a/fastlane/metadata/android/it/changelogs/968.txt b/fastlane/metadata/android/it/changelogs/968.txt new file mode 100644 index 000000000..f4378e4ed --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/968.txt @@ -0,0 +1,7 @@ +Aggiunta l'opzione dei dettagli del canale al menu a pressione prolungata. +Aggiunta la funzionalità per rinominare il nome della playlist dall'interfaccia della playlist. +Consenti all'utente di mettere in pausa durante il buffering di un video. +Lucidato il tema bianco. +Corretti i caratteri sovrapposti quando si utilizza una dimensione del carattere più grande. +Risolto nessun video sui dispositivi Formuler e Zephier. +Risolti vari arresti anomali. diff --git a/fastlane/metadata/android/it/changelogs/969.txt b/fastlane/metadata/android/it/changelogs/969.txt new file mode 100644 index 000000000..b4518df7b --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/969.txt @@ -0,0 +1,8 @@ +• Consenti installazione su memoria esterna +• [Bandcamp] Aggiunto supporto per la visualizzazione dei primi tre commenti su uno stream +• Mostra l'avviso "download iniziato" solo all'avvio del download +• Non impostare il cookie reCaptcha quando non ci sono cookie memorizzati +• [Player] Migliora le prestazioni della cache +• [Giocatore] Risolto il problema con il giocatore che non giocava automaticamente +• Ignora le precedenti Snackbar quando si eliminano i download +• Risolto il problema con il tentativo di eliminare l'oggetto non nell'elenco diff --git a/fastlane/metadata/android/it/changelogs/970.txt b/fastlane/metadata/android/it/changelogs/970.txt new file mode 100644 index 000000000..118eee6f2 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/970.txt @@ -0,0 +1,11 @@ +Nuovo +• Mostra i metadati del contenuto (tag, categorie, licenza, ...) sotto la descrizione +• Aggiunta l'opzione "Mostra dettagli canale" nelle playlist remote (non locali). +• Aggiunta l'opzione "Apri nel browser" al menu a pressione prolungata + +Fisso +• Risolto crash di rotazione nella pagina dei dettagli del video +• Risolto il problema con il pulsante "Gioca con Kodi" nel lettore che richiedeva sempre di installare Kore +• Correzione e miglioramento dell'impostazione dei percorsi di importazione ed esportazione +• [YouTube] Risolto commento come il conteggio +E altro ancora diff --git a/fastlane/metadata/android/it/changelogs/971.txt b/fastlane/metadata/android/it/changelogs/971.txt new file mode 100644 index 000000000..3e2eadea6 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/971.txt @@ -0,0 +1,3 @@ +Correzione rapida +• Aumenta il buffer per la riproduzione dopo il rebuffer +• Risolto crash su tablet e TV quando si fa clic sull'icona della coda di riproduzione nel lettore diff --git a/fastlane/metadata/android/it/changelogs/972.txt b/fastlane/metadata/android/it/changelogs/972.txt new file mode 100644 index 000000000..88a132c6b --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/972.txt @@ -0,0 +1,14 @@ +Nuovo +Riconosci timestamp e hashtag nella descrizione +Aggiunta l'impostazione manuale della modalità tablet +Aggiunta la possibilità di nascondere gli elementi riprodotti in un feed + +Migliorato +Supporta correttamente lo Storage Access Framework +Migliore gestione degli errori dei canali non disponibili e terminati +Il foglio di condivisione Android per gli utenti Android 10+ ora mostra il titolo del contenuto. +Aggiornate le istanze Invidious e supportano i collegamenti Piped. + +Fisso +[YouTube] Contenuti soggetti a limiti di età +Prevenire la finestra trapelata Eccezione all'apertura della finestra di dialogo di scelta diff --git a/fastlane/metadata/android/it/changelogs/973.txt b/fastlane/metadata/android/it/changelogs/973.txt new file mode 100644 index 000000000..3caa1864f --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/973.txt @@ -0,0 +1,4 @@ +Correzione rapida +• Risolto il problema con le miniature e i titoli tagliati nel layout della griglia, a causa di un calcolo errato di quanti video possono stare in una riga +• Risolto il problema con la finestra di dialogo di download che scompariva senza fare nulla se aperta dal menu di condivisione +• Aggiornare una libreria relativa all'apertura di attività esterne come il selettore di file di Storage Access Framework diff --git a/fastlane/metadata/android/it/changelogs/974.txt b/fastlane/metadata/android/it/changelogs/974.txt new file mode 100644 index 000000000..0aeabf3b9 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/974.txt @@ -0,0 +1,5 @@ +Correzione rapida +• Risolvi i problemi di buffering causati dalla limitazione di YouTube +• Risolto il problema con l'estrazione dei commenti di YouTube e gli arresti anomali con i commenti disabilitati +• Correggi la ricerca di musica su YouTube +• Correggi i live streaming di PeerTube diff --git a/fastlane/metadata/android/it/changelogs/975.txt b/fastlane/metadata/android/it/changelogs/975.txt new file mode 100644 index 000000000..64b3337ef --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/975.txt @@ -0,0 +1,17 @@ +Nuovo +• Mostra un'anteprima in miniatura durante la ricerca +• Rileva commenti disabilitati +• Consenti di contrassegnare un elemento del feed come guardato +• Mostra cuori di commento + +Migliorato +• Migliora il layout dei metadati e dei tag +• Applicare il colore del servizio ai componenti dell'interfaccia utente + +Fisso +• Risolto il problema con la miniatura nel mini player +• Risolto il problema del buffering infinito sugli elementi della coda duplicati +• Alcuni giocatori correzioni come rotazione e chiusura più veloce +• Risolto il problema con ReCAPTCHA che rimaneva caricato in background +• Disattiva i clic durante l'aggiornamento del feed +• Risolti alcuni arresti anomali del downloader diff --git a/fastlane/metadata/android/it/changelogs/976.txt b/fastlane/metadata/android/it/changelogs/976.txt new file mode 100644 index 000000000..3b8023932 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/976.txt @@ -0,0 +1,10 @@ +• Aggiunta l'opzione per aprire direttamente il giocatore a schermo intero +• Consenti di scegliere quali tipi di suggerimenti di ricerca mostrare +• Tema scuro ora più scuro + aggiunta schermata iniziale scura +• Selettore file migliorato per eliminare i file indesiderati +• Risolto il problema con l'importazione degli abbonamenti YouTube +• La riproduzione di uno streaming richiede di toccare nuovamente il pulsante di riproduzione +• Risolto il problema con la chiusura della sessione audio +• [Android TV] Risolti i salti lunghi della barra di ricerca quando si utilizza un DPad + +Per vedere ulteriori modifiche, visualizza il registro delle modifiche (e il post del blog) dalla scheda Collegamenti in basso. diff --git a/fastlane/metadata/android/it/changelogs/977.txt b/fastlane/metadata/android/it/changelogs/977.txt new file mode 100644 index 000000000..723ca1ee7 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/977.txt @@ -0,0 +1,10 @@ +• Aggiunto un pulsante "play next" al menu a pressione prolungata +• Aggiunto il prefisso del percorso dei cortometraggi di YouTube al filtro dell'intento +• Importazione impostazioni fisse +• Scambia la posizione della barra di ricerca con i pulsanti del giocatore nella schermata della coda +• Varie correzioni relative a MediasessionManager +• Risolto il problema con la barra di ricerca non completata dopo la fine del video +• Tunneling multimediale disabilitato su RealtekATV +• Area cliccabile dei pulsanti del giocatore ridotta a icona espansa + +Per vedere ulteriori modifiche, visualizza il registro delle modifiche (e il post del blog) dalla scheda Collegamenti in basso. diff --git a/fastlane/metadata/android/it/changelogs/978.txt b/fastlane/metadata/android/it/changelogs/978.txt new file mode 100644 index 000000000..e68ee2cb6 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/978.txt @@ -0,0 +1 @@ +Risolto il problema con l'esecuzione del controllo per una nuova versione di NewPipe. Questo controllo è stato eseguito troppo presto a volte e quindi ha portato a un arresto anomalo dell'app. Dovrebbe essere risolto ora. diff --git a/fastlane/metadata/android/it/changelogs/979.txt b/fastlane/metadata/android/it/changelogs/979.txt new file mode 100644 index 000000000..602f0d8e4 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/979.txt @@ -0,0 +1,2 @@ +- Risolto il problema con la ripresa della riproduzione +- Miglioramenti per garantire che il servizio che determina se NewPipe deve verificare la presenza di una nuova versione controlli non sia avviato in background diff --git a/fastlane/metadata/android/it/changelogs/980.txt b/fastlane/metadata/android/it/changelogs/980.txt new file mode 100644 index 000000000..df5ef1eb6 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/980.txt @@ -0,0 +1,13 @@ +Nuovo +• Aggiunta l'opzione "Aggiungi alla playlist" per condividere il menu +• Aggiunto supporto per collegamenti brevi y2u.be e PeerTube + +Migliorato +• Resi più compatti i controlli della velocità di riproduzione +• Feed mette in evidenza nuovi elementi ora +• L'opzione "Mostra elementi osservati" nel feed è ora salvata + +Fisso +• Risolto il problema con l'estrazione di Mi piace e Non mi piace di YouTube +• Risolto il problema con la riproduzione automatica dopo il ritorno dallo sfondo +E altro ancora diff --git a/fastlane/metadata/android/it/changelogs/981.txt b/fastlane/metadata/android/it/changelogs/981.txt new file mode 100644 index 000000000..a436d5fb8 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/981.txt @@ -0,0 +1,2 @@ +Rimosso il supporto MediaParser per correggere la mancata ripresa della riproduzione dopo il buffering su Android 11+. +Tunneling multimediale disabilitato su Philips QM16XE per risolvere i problemi di riproduzione. diff --git a/fastlane/metadata/android/it/changelogs/982.txt b/fastlane/metadata/android/it/changelogs/982.txt new file mode 100644 index 000000000..41b634ed2 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/982.txt @@ -0,0 +1 @@ +Risolto il problema con YouTube che non riproduceva alcun flusso. diff --git a/fastlane/metadata/android/it/changelogs/983.txt b/fastlane/metadata/android/it/changelogs/983.txt new file mode 100644 index 000000000..b749ebe90 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/983.txt @@ -0,0 +1,9 @@ +Aggiungi nuova interfaccia utente e comportamento del doppio tocco per cercare +Rendi le impostazioni ricercabili +Evidenzia i commenti bloccati in quanto tali +Aggiungi il supporto open-with-app per l'istanza PeerTube di FSFE +Aggiungi notifiche di errore +Risolto il problema con la riproduzione del primo elemento della coda al cambio del giocatore +Attendi più tempo durante il buffering durante i live streaming prima di fallire +Correggi l'ordine dei risultati della ricerca locale +Correggi i campi degli oggetti vuoti nella coda di gioco diff --git a/fastlane/metadata/android/it/changelogs/986.txt b/fastlane/metadata/android/it/changelogs/986.txt new file mode 100644 index 000000000..9267bd0a2 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/986.txt @@ -0,0 +1,16 @@ +Nuovo +• Notifiche per nuovi flussi +• Passaggio senza interruzioni tra i lettori video e in background +• Modificare l'intonazione per semitoni +• Aggiungi la coda del giocatore principale a una playlist + +Migliorato +• Ricorda la dimensione del passo di velocità/passo +• Mitiga il lungo buffering iniziale nel video player +• Migliora l'interfaccia utente del lettore per Android TV +• Conferma prima di eliminare tutti i file scaricati + +Fisso +• Risolto il problema con il pulsante multimediale che non nascondeva i controlli del lettore +• Correzione del ripristino della riproduzione al cambio del tipo di lettore +• Risolto il problema con la rotazione della finestra di dialogo della playlist diff --git a/fastlane/metadata/android/it/changelogs/991.txt b/fastlane/metadata/android/it/changelogs/991.txt new file mode 100644 index 000000000..b527fbd2d --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/991.txt @@ -0,0 +1,13 @@ +Nuovo +• Aggiungi il pulsante "Apri nel browser" nel pannello degli errori +• Aggiunta opzione per visualizzare i gruppi di canali come elenco +• [YouTube] Fare clic a lungo sui segmenti di streaming per condividere l'URL del timestamp +• Aggiungi il pulsante della coda di riproduzione al mini player + +Migliorato +• Aggiunta della localizzazione islandese e aggiornamento di molte altre traduzioni +• Molti miglioramenti interni + +Fisso +• Correggere più arresti anomali +• [YouTube] Risolti i problemi di caricamento dei canali, feed non dedicati e soluzioni alternative di riproduzione in alcuni paesi diff --git a/fastlane/metadata/android/pa/short_description.txt b/fastlane/metadata/android/pa/short_description.txt index e63e05f28..071b1fb98 100644 --- a/fastlane/metadata/android/pa/short_description.txt +++ b/fastlane/metadata/android/pa/short_description.txt @@ -1 +1 @@ -ਯੂਟਿਊਬ ਵਾਸਤੇ ਇੱਕ ਅਜ਼ਾਦ ਅਤੇ ਹਲਕੀ-ਫੁਲਕੀ ਐਪ +ਯੂਟਿਊਬ ਵਾਸਤੇ ਇੱਕ ਅਜ਼ਾਦ ਅਤੇ ਹਲਕੀ-ਫੁਲਕੀ ਐਪ। diff --git a/fastlane/metadata/android/pl/changelogs/991.txt b/fastlane/metadata/android/pl/changelogs/991.txt new file mode 100644 index 000000000..ac9c1aeba --- /dev/null +++ b/fastlane/metadata/android/pl/changelogs/991.txt @@ -0,0 +1,13 @@ +Nowe +• Przycisk „Otwórz w przeglądarce” w panelu błędów +• Opcja wyświetlania grup kanałów jako listy +• [YouTube] Długie naciśnięcie segmentu strumienia, aby udostępnić URL ze znacznikiem czasu +• Przycisk kolejki odtwarzania dla miniodtwarzacza + +Ulepszone +• Dodano islandzkie tłumaczenie i zaktualizowano wiele innych +• Wiele wewnętrznych ulepszeń + +Naprawione +• Wiele awarii +• [YouTube] Problemy z ładowaniem kanałów, niededykowanymi kanałami i obejściem odtwarzania w niektórych krajach diff --git a/fastlane/metadata/android/pt/changelogs/991.txt b/fastlane/metadata/android/pt/changelogs/991.txt new file mode 100644 index 000000000..2331d0c35 --- /dev/null +++ b/fastlane/metadata/android/pt/changelogs/991.txt @@ -0,0 +1,13 @@ +Novo +•Botão "Abrir no navegador" no painel de erros +•Opção para mostrar grupos de canais como lista +•[YouTube] Clique longo nos segmentos de transmissão para partilhar o URL com a data/hora +•Botão de fila de reprodução no mini reprodutor + +Melhorado +•Nova localização em islandês e outras traduções atualizadas +•Muitas melhorias internas + +Corrigido +•Várias falhas +•[YouTube] Correção no carregamento de canais, feeds não dedicados e solução alternativa de problemas de reprodução em alguns países diff --git a/fastlane/metadata/android/sk/changelogs/991.txt b/fastlane/metadata/android/sk/changelogs/991.txt new file mode 100644 index 000000000..b5a66910c --- /dev/null +++ b/fastlane/metadata/android/sk/changelogs/991.txt @@ -0,0 +1,13 @@ +Novinky +• Pridané tlačidlo „Otvoriť v prehliadači“ na paneli chýb +• Pridaná možnosť na zobrazenia skupiny odberov ako jeden zoznam +• [YouTube] Pre zdieľanie konkrétneho času videa ako URL podržte prst na segmente streamu +• Pridané tlačidlo play queue do mini prehrávača + +Vylepšenia +• Bola pridaná islandská lokalizácia a boli doplené preklady ostatných jazykov +• Veľa drobných vylepšení + +Opravy +• Boli opravené viaceré problémy spôsobujúce zlyhanie aplikácie +• [YouTube] Boli opravené problémy s načítavaním kanálov, nevyhradených informačných kanálov a prehrávaním v niektorých krajinách diff --git a/fastlane/metadata/android/uk/changelogs/991.txt b/fastlane/metadata/android/uk/changelogs/991.txt new file mode 100644 index 000000000..0809955f4 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/991.txt @@ -0,0 +1,13 @@ +Нове +- Додана кнопка «Відкрити у браузері» на панелі помилок +- Додана можливість показувати групи каналів списком +- [YouTube] Затисніть сегмент трансляції, щоб поділитися URL-адресою мітки часу +- Додана кнопка черги відтворення в мініпрогравач + +Поліпшено +- Додано ісландську мову й оновлено інші переклади +- Багато внутрішніх поліпшень + +Виправлено +- Виправлено численні збої +- [YouTube] Усунено проблеми завантаження каналів, не виділеною стрічкою й обхідними шляхами відтворення в деяких країнах diff --git a/fastlane/metadata/android/zh-Hant/changelogs/991.txt b/fastlane/metadata/android/zh-Hant/changelogs/991.txt new file mode 100644 index 000000000..76e94f6b2 --- /dev/null +++ b/fastlane/metadata/android/zh-Hant/changelogs/991.txt @@ -0,0 +1,13 @@ +新增 +• 錯誤面板中「以瀏覽器開啟」按鈕 +• 頻道群組以清單顯示選項 +• [YouTube] 長按串流片段以分享時間戳記 URL +• 迷你播放器的「新增至播放佇列」按鈕 + +改進 +• 新增冰島文語系並更新許多其他翻譯 +• 許多內部改進 + +修正 +• 修正多項閃退 +• [YouTube] 修正頻道載入、非專屬摘要並應對部分國家播放問題 diff --git a/fastlane/metadata/android/zh_Hant_HK/changelogs/991.txt b/fastlane/metadata/android/zh_Hant_HK/changelogs/991.txt new file mode 100644 index 000000000..e025512a5 --- /dev/null +++ b/fastlane/metadata/android/zh_Hant_HK/changelogs/991.txt @@ -0,0 +1,13 @@ +新嘢 +• 加埋「喺瀏覽器開啟」個掣落問題版面 +• 頻道成軍有得揀一行行列陣 +• [YouTube] 撳實串流片段去分享時間點 URL +• 袖珍播放器加埋排隊播個掣 + +進步 +• 新加冰島文翻譯,更新唔少其他文 +• 內部祁宴氛:圍內吶喊返嚟喇 + +執漏 +• 整返好若干彈 app 問題 +• [YouTube] 修正頻道載入同埋非特設摘要,應對部份國家播放問題 From ef35b36ebac12850f3c2da43a4c73da9142a24f3 Mon Sep 17 00:00:00 2001 From: dhruvpatidar359 Date: Sun, 11 Sep 2022 23:04:26 +0530 Subject: [PATCH 005/147] Remove the redundant/overlapping toast "Copied to clipboard" for Android 13+ Signed-off-by: dhruv Co-authored-by: Tobi Co-authored-by: AudricV <74829229+AudricV@users.noreply.github.com> --- .../newpipe/util/external_communication/ShareUtils.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java index debeb902c..9829ddd2e 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java @@ -314,7 +314,10 @@ public final class ShareUtils { } clipboardManager.setPrimaryClip(ClipData.newPlainText(null, text)); - Toast.makeText(context, R.string.msg_copied, Toast.LENGTH_SHORT).show(); + if (Build.VERSION.SDK_INT < 33) { + // Android 13 has its own "copied to clipboard" dialog + Toast.makeText(context, R.string.msg_copied, Toast.LENGTH_SHORT).show(); + } } /** From 7b7ab3f4199ed649914b80234c8adfc97212bd1e Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Tue, 8 Nov 2022 20:40:09 +0100 Subject: [PATCH 006/147] Remove Utility.copyToClipboard and use ShareUtils.copyToClipboard instead This method is not needed anymore, as ShareUtils.copyToClipboard does almost the same thing (no label is set on the ClipData used to copy text, contrary to what Utility did, but using "text" as a ClipData label doesn't seem useful). It was used in MissionAdapter.handlePopupItem to copy the SHA1 or the MD5 of a file. --- .../us/shandian/giga/ui/adapter/MissionAdapter.java | 2 +- app/src/main/java/us/shandian/giga/util/Utility.java | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index 808928370..26eb2f3b0 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -693,7 +693,7 @@ public class MissionAdapter extends Adapter implements Handler.Callb .subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { - Utility.copyToClipboard(mContext, result); + ShareUtils.copyToClipboard(mContext, result); notificationManager.cancel(HASH_NOTIFICATION_ID); }) ); diff --git a/app/src/main/java/us/shandian/giga/util/Utility.java b/app/src/main/java/us/shandian/giga/util/Utility.java index 4cd424ab9..f34d070dc 100644 --- a/app/src/main/java/us/shandian/giga/util/Utility.java +++ b/app/src/main/java/us/shandian/giga/util/Utility.java @@ -192,18 +192,6 @@ public class Utility { } } - public static void copyToClipboard(Context context, String str) { - ClipboardManager cm = ContextCompat.getSystemService(context, ClipboardManager.class); - - if (cm == null) { - Toast.makeText(context, R.string.permission_denied, Toast.LENGTH_LONG).show(); - return; - } - - cm.setPrimaryClip(ClipData.newPlainText("text", str)); - Toast.makeText(context, R.string.msg_copied, Toast.LENGTH_SHORT).show(); - } - public static String checksum(final StoredFileHelper source, final int algorithmId) throws IOException { ByteString byteString; From 6d812b86aaf755c3c459b99354822091f45303ff Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Mon, 22 Aug 2022 08:20:16 +0530 Subject: [PATCH 007/147] Use Locale.forLanguageTag(). --- .../org/schabi/newpipe/util/Localization.java | 60 ++++++------------- 1 file changed, 17 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/Localization.java b/app/src/main/java/org/schabi/newpipe/util/Localization.java index e20955a76..68497e998 100644 --- a/app/src/main/java/org/schabi/newpipe/util/Localization.java +++ b/app/src/main/java/org/schabi/newpipe/util/Localization.java @@ -76,16 +76,8 @@ public final class Localization { public static org.schabi.newpipe.extractor.localization.Localization getPreferredLocalization( final Context context) { - final String contentLanguage = PreferenceManager - .getDefaultSharedPreferences(context) - .getString(context.getString(R.string.content_language_key), - context.getString(R.string.default_localization_key)); - if (contentLanguage.equals(context.getString(R.string.default_localization_key))) { - return org.schabi.newpipe.extractor.localization.Localization - .fromLocale(Locale.getDefault()); - } return org.schabi.newpipe.extractor.localization.Localization - .fromLocalizationCode(contentLanguage); + .fromLocale(getPreferredLocale(context)); } public static ContentCountry getPreferredContentCountry(final Context context) { @@ -98,23 +90,24 @@ public final class Localization { return new ContentCountry(contentCountry); } - public static Locale getPreferredLocale(final Context context) { + private static Locale getLocaleFromPrefs(final Context context, @StringRes final int prefKey) { final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); + final String defaultKey = context.getString(R.string.default_localization_key); + final String languageCode = sp.getString(context.getString(prefKey), defaultKey); - final String languageCode = sp.getString(context.getString(R.string.content_language_key), - context.getString(R.string.default_localization_key)); - - try { - if (languageCode.length() == 2) { - return new Locale(languageCode); - } else if (languageCode.contains("_")) { - final String country = languageCode.substring(languageCode.indexOf("_")); - return new Locale(languageCode.substring(0, 2), country); - } - } catch (final Exception ignored) { + if (languageCode.equals(defaultKey)) { + return Locale.getDefault(); + } else { + return Locale.forLanguageTag(languageCode); } + } - return Locale.getDefault(); + public static Locale getPreferredLocale(final Context context) { + return getLocaleFromPrefs(context, R.string.content_language_key); + } + + public static Locale getAppLocale(final Context context) { + return getLocaleFromPrefs(context, R.string.app_language_key); } public static String localizeNumber(final Context context, final long number) { @@ -314,34 +307,15 @@ public final class Localization { return prettyTime.formatUnrounded(offsetDateTime); } - private static void changeAppLanguage(final Locale loc, final Resources res) { + private static void changeAppLanguage(final Resources res, final Locale loc) { final DisplayMetrics dm = res.getDisplayMetrics(); final Configuration conf = res.getConfiguration(); conf.setLocale(loc); res.updateConfiguration(conf, dm); } - public static Locale getAppLocale(final Context context) { - final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - String lang = prefs.getString(context.getString(R.string.app_language_key), "en"); - final Locale loc; - if (lang.equals(context.getString(R.string.default_localization_key))) { - loc = Locale.getDefault(); - } else if (lang.matches(".*-.*")) { - //to differentiate different versions of the language - //for example, pt (portuguese in Portugal) and pt-br (portuguese in Brazil) - final String[] localisation = lang.split("-"); - lang = localisation[0]; - final String country = localisation[1]; - loc = new Locale(lang, country); - } else { - loc = new Locale(lang); - } - return loc; - } - public static void assureCorrectAppLanguage(final Context c) { - changeAppLanguage(getAppLocale(c), c.getResources()); + changeAppLanguage(c.getResources(), getAppLocale(c)); } private static double round(final double value, final int places) { From 5c1af6d29608ee28146dd991ab70c06d1f38fcd8 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Wed, 9 Nov 2022 08:53:53 +0530 Subject: [PATCH 008/147] Group private Localization methods together. --- .../org/schabi/newpipe/util/Localization.java | 70 +++++++++---------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/Localization.java b/app/src/main/java/org/schabi/newpipe/util/Localization.java index 68497e998..916b902f0 100644 --- a/app/src/main/java/org/schabi/newpipe/util/Localization.java +++ b/app/src/main/java/org/schabi/newpipe/util/Localization.java @@ -56,7 +56,6 @@ import java.util.stream.Collectors; */ public final class Localization { - public static final String DOT_SEPARATOR = " • "; private static PrettyTime prettyTime; @@ -90,18 +89,6 @@ public final class Localization { return new ContentCountry(contentCountry); } - private static Locale getLocaleFromPrefs(final Context context, @StringRes final int prefKey) { - final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); - final String defaultKey = context.getString(R.string.default_localization_key); - final String languageCode = sp.getString(context.getString(prefKey), defaultKey); - - if (languageCode.equals(defaultKey)) { - return Locale.getDefault(); - } else { - return Locale.forLanguageTag(languageCode); - } - } - public static Locale getPreferredLocale(final Context context) { return getLocaleFromPrefs(context, R.string.content_language_key); } @@ -176,13 +163,13 @@ public final class Localization { final double value = (double) count; if (count >= 1000000000) { - return localizeNumber(context, round(value / 1000000000, 1)) + return localizeNumber(context, round(value / 1000000000)) + context.getString(R.string.short_billion); } else if (count >= 1000000) { - return localizeNumber(context, round(value / 1000000, 1)) + return localizeNumber(context, round(value / 1000000)) + context.getString(R.string.short_million); } else if (count >= 1000) { - return localizeNumber(context, round(value / 1000, 1)) + return localizeNumber(context, round(value / 1000)) + context.getString(R.string.short_thousand); } else { return localizeNumber(context, value); @@ -219,21 +206,6 @@ public final class Localization { deletedCount, shortCount(context, deletedCount)); } - private static String getQuantity(final Context context, @PluralsRes final int pluralId, - @StringRes final int zeroCaseStringId, final long count, - final String formattedCount) { - if (count == 0) { - return context.getString(zeroCaseStringId); - } - - // As we use the already formatted count - // is not the responsibility of this method handle long numbers - // (it probably will fall in the "other" category, - // or some language have some specific rule... then we have to change it) - final int safeCount = (int) MathUtils.clamp(count, Integer.MIN_VALUE, Integer.MAX_VALUE); - return context.getResources().getQuantityString(pluralId, safeCount, formattedCount); - } - public static String getDurationString(final long duration) { final String output; @@ -307,18 +279,42 @@ public final class Localization { return prettyTime.formatUnrounded(offsetDateTime); } - private static void changeAppLanguage(final Resources res, final Locale loc) { + public static void assureCorrectAppLanguage(final Context c) { + final Resources res = c.getResources(); final DisplayMetrics dm = res.getDisplayMetrics(); final Configuration conf = res.getConfiguration(); - conf.setLocale(loc); + conf.setLocale(getAppLocale(c)); res.updateConfiguration(conf, dm); } - public static void assureCorrectAppLanguage(final Context c) { - changeAppLanguage(c.getResources(), getAppLocale(c)); + private static Locale getLocaleFromPrefs(final Context context, @StringRes final int prefKey) { + final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); + final String defaultKey = context.getString(R.string.default_localization_key); + final String languageCode = sp.getString(context.getString(prefKey), defaultKey); + + if (languageCode.equals(defaultKey)) { + return Locale.getDefault(); + } else { + return Locale.forLanguageTag(languageCode); + } } - private static double round(final double value, final int places) { - return new BigDecimal(value).setScale(places, RoundingMode.HALF_UP).doubleValue(); + private static double round(final double value) { + return new BigDecimal(value).setScale(1, RoundingMode.HALF_UP).doubleValue(); + } + + private static String getQuantity(final Context context, @PluralsRes final int pluralId, + @StringRes final int zeroCaseStringId, final long count, + final String formattedCount) { + if (count == 0) { + return context.getString(zeroCaseStringId); + } + + // As we use the already formatted count + // is not the responsibility of this method handle long numbers + // (it probably will fall in the "other" category, + // or some language have some specific rule... then we have to change it) + final int safeCount = (int) MathUtils.clamp(count, Integer.MIN_VALUE, Integer.MAX_VALUE); + return context.getResources().getQuantityString(pluralId, safeCount, formattedCount); } } From feb03f7e30ad1e5efecf0a1555df574673c693a3 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Mon, 15 Aug 2022 21:01:12 +0530 Subject: [PATCH 009/147] Use Math.floorDiv(). --- .../schabi/newpipe/fragments/list/BaseListFragment.java | 3 +-- .../org/schabi/newpipe/local/BaseLocalListFragment.java | 3 +-- .../main/java/org/schabi/newpipe/streams/WebMWriter.java | 2 +- app/src/main/java/us/shandian/giga/util/Utility.java | 8 ++++---- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java index 633ba5d78..1212cf4ad 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java @@ -215,8 +215,7 @@ public abstract class BaseListFragment extends BaseStateFragment final Resources resources = activity.getResources(); int width = resources.getDimensionPixelSize(R.dimen.video_item_grid_thumbnail_image_width); width += (24 * resources.getDisplayMetrics().density); - final int spanCount = (int) Math.floor(resources.getDisplayMetrics().widthPixels - / (double) width); + final int spanCount = Math.floorDiv(resources.getDisplayMetrics().widthPixels, width); final GridLayoutManager lm = new GridLayoutManager(activity, spanCount); lm.setSpanSizeLookup(infoListAdapter.getSpanSizeLookup(spanCount)); return lm; diff --git a/app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java b/app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java index 8790c3059..7474537fa 100644 --- a/app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java @@ -104,8 +104,7 @@ public abstract class BaseLocalListFragment extends BaseStateFragment final Resources resources = activity.getResources(); int width = resources.getDimensionPixelSize(R.dimen.video_item_grid_thumbnail_image_width); width += (24 * resources.getDisplayMetrics().density); - final int spanCount = (int) Math.floor(resources.getDisplayMetrics().widthPixels - / (double) width); + final int spanCount = Math.floorDiv(resources.getDisplayMetrics().widthPixels, width); final GridLayoutManager lm = new GridLayoutManager(activity, spanCount); lm.setSpanSizeLookup(itemListAdapter.getSpanSizeLookup(spanCount)); return lm; diff --git a/app/src/main/java/org/schabi/newpipe/streams/WebMWriter.java b/app/src/main/java/org/schabi/newpipe/streams/WebMWriter.java index 2b69f23ac..530959d96 100644 --- a/app/src/main/java/org/schabi/newpipe/streams/WebMWriter.java +++ b/app/src/main/java/org/schabi/newpipe/streams/WebMWriter.java @@ -652,7 +652,7 @@ public class WebMWriter implements Closeable { final int offset = withLength ? 1 : 0; final byte[] buffer = new byte[offset + length]; - final long marker = (long) Math.floor((length - 1f) / 8f); + final long marker = Math.floorDiv(length - 1, 8); int shift = 0; for (int i = length - 1; i >= 0; i--, shift += 8) { diff --git a/app/src/main/java/us/shandian/giga/util/Utility.java b/app/src/main/java/us/shandian/giga/util/Utility.java index 4cd424ab9..3c86682d0 100644 --- a/app/src/main/java/us/shandian/giga/util/Utility.java +++ b/app/src/main/java/us/shandian/giga/util/Utility.java @@ -248,10 +248,10 @@ public class Utility { return number < 10 ? ("0" + number) : String.valueOf(number); } - public static String stringifySeconds(double seconds) { - int h = (int) Math.floor(seconds / 3600); - int m = (int) Math.floor((seconds - (h * 3600)) / 60); - int s = (int) (seconds - (h * 3600) - (m * 60)); + public static String stringifySeconds(final long seconds) { + final int h = (int) Math.floorDiv(seconds, 3600); + final int m = (int) Math.floorDiv(seconds - (h * 3600L), 60); + final int s = (int) (seconds - (h * 3600) - (m * 60)); String str = ""; From ff774a18700337d31071cfe307f11ecff233e5e1 Mon Sep 17 00:00:00 2001 From: Hanif Shersy Date: Sun, 1 May 2022 02:06:43 +1000 Subject: [PATCH 010/147] Fix persistent hover overlay when mouse connected --- .../fragments/detail/VideoDetailFragment.java | 38 ++++++++++----- .../org/schabi/newpipe/util/DeviceUtils.java | 48 +++++++++++++++++++ 2 files changed, 73 insertions(+), 13 deletions(-) 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 bf84c7325..6ee02a7d5 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 @@ -639,19 +639,7 @@ public final class VideoDetailFragment ? View.VISIBLE : View.GONE ); - - if (DeviceUtils.isTv(getContext())) { - // remove ripple effects from detail controls - final int transparent = ContextCompat.getColor(requireContext(), - R.color.transparent_background_color); - binding.detailControlsPlaylistAppend.setBackgroundColor(transparent); - binding.detailControlsBackground.setBackgroundColor(transparent); - binding.detailControlsPopup.setBackgroundColor(transparent); - binding.detailControlsDownload.setBackgroundColor(transparent); - binding.detailControlsShare.setBackgroundColor(transparent); - binding.detailControlsOpenInBrowser.setBackgroundColor(transparent); - binding.detailControlsPlayWithKodi.setBackgroundColor(transparent); - } + accommodateForTvAndDesktopMode(); } @Override @@ -2106,6 +2094,30 @@ public final class VideoDetailFragment } } + /** + * Make changes to the UI to accommodate for better usability on bigger screens such as TVs + * or in Android's desktop mode (DeX etc.) + */ + private void accommodateForTvAndDesktopMode() { + if (DeviceUtils.isTv(getContext())) { + // remove ripple effects from detail controls + final int transparent = ContextCompat.getColor(requireContext(), + R.color.transparent_background_color); + binding.detailControlsPlaylistAppend.setBackgroundColor(transparent); + binding.detailControlsBackground.setBackgroundColor(transparent); + binding.detailControlsPopup.setBackgroundColor(transparent); + binding.detailControlsDownload.setBackgroundColor(transparent); + binding.detailControlsShare.setBackgroundColor(transparent); + binding.detailControlsOpenInBrowser.setBackgroundColor(transparent); + binding.detailControlsPlayWithKodi.setBackgroundColor(transparent); + } + if (DeviceUtils.isDesktopMode(getContext())) { + // Remove the "hover" overlay (since it is visible on all mouse events and interferes + // with the video content being played) + binding.detailThumbnailRootLayout.setForeground(null); + } + } + private void checkLandscape() { if ((!player.isPlaying() && player.getPlayQueue() != playQueue) || player.getPlayQueue() == null) { diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index 3c20dc04b..d42926788 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -1,5 +1,6 @@ package org.schabi.newpipe.util; +import android.annotation.SuppressLint; import android.app.UiModeManager; import android.content.Context; import android.content.pm.PackageManager; @@ -22,6 +23,9 @@ import androidx.preference.PreferenceManager; import org.schabi.newpipe.App; import org.schabi.newpipe.R; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + public final class DeviceUtils { private static final String AMAZON_FEATURE_FIRE_TV = "amazon.hardware.fire_tv"; @@ -84,6 +88,50 @@ public final class DeviceUtils { return DeviceUtils.isTV; } + public static boolean isDesktopMode(final Context context) { + final boolean isDesktopMode = ContextCompat.getSystemService(context, UiModeManager.class) + .getCurrentModeType() == Configuration.UI_MODE_TYPE_DESK; + + // DeX check for standalone and multi-window mode + boolean isDeXMode = false; + try { + final Configuration config = context.getResources().getConfiguration(); + final Class configClass = config.getClass(); + final int semDesktopModeEnabledConst = + configClass.getField("SEM_DESKTOP_MODE_ENABLED").getInt(configClass); + final int currentMode = + configClass.getField("semDesktopModeEnabled").getInt(config); + if (semDesktopModeEnabledConst == currentMode) { + isDeXMode = true; + } + } catch (final NoSuchFieldException | IllegalAccessException e) { + // empty + } + @SuppressLint("WrongConstant") final Object desktopModeManager = context + .getApplicationContext() + .getSystemService("desktopmode"); + if (desktopModeManager != null) { + try { + final Method getDesktopModeStateMethod = desktopModeManager.getClass() + .getDeclaredMethod("getDesktopModeState"); + final Object desktopModeState = getDesktopModeStateMethod + .invoke(desktopModeManager); + final Class desktopModeStateClass = desktopModeState.getClass(); + final Method getEnabledMethod = desktopModeStateClass + .getDeclaredMethod("getEnabled"); + final int enabled = (int) getEnabledMethod.invoke(desktopModeState); + final boolean isEnabled = enabled == desktopModeStateClass + .getDeclaredField("ENABLED").getInt(desktopModeStateClass); + + isDeXMode = isEnabled; + } catch (NoSuchFieldException | NoSuchMethodException + | IllegalAccessException | InvocationTargetException e) { + // Device does not support DeX 3.0 + } + } + return isDesktopMode || isDeXMode; + } + public static boolean isTablet(@NonNull final Context context) { final String tabletModeSetting = PreferenceManager.getDefaultSharedPreferences(context) .getString(context.getString(R.string.tablet_mode_key), ""); From cfda073aa572a06a0c2914caf12551d5e0c663e2 Mon Sep 17 00:00:00 2001 From: Hanif Shersy Date: Mon, 2 May 2022 12:23:29 +1000 Subject: [PATCH 011/147] Fix DeX mode check --- .../main/java/org/schabi/newpipe/util/DeviceUtils.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index d42926788..102541d64 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -120,10 +120,10 @@ public final class DeviceUtils { final Method getEnabledMethod = desktopModeStateClass .getDeclaredMethod("getEnabled"); final int enabled = (int) getEnabledMethod.invoke(desktopModeState); - final boolean isEnabled = enabled == desktopModeStateClass - .getDeclaredField("ENABLED").getInt(desktopModeStateClass); - - isDeXMode = isEnabled; + if (enabled == desktopModeStateClass + .getDeclaredField("ENABLED").getInt(desktopModeStateClass)) { + isDeXMode = true; + } } catch (NoSuchFieldException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { // Device does not support DeX 3.0 From 5e2ef7ff0d3c95df191e857ab329c67b8a77f9db Mon Sep 17 00:00:00 2001 From: Hanif Shersy Date: Tue, 3 May 2022 09:49:11 +1000 Subject: [PATCH 012/147] Address review comments --- .../java/org/schabi/newpipe/util/DeviceUtils.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index 102541d64..c4d3a7bbf 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -89,11 +89,11 @@ public final class DeviceUtils { } public static boolean isDesktopMode(final Context context) { - final boolean isDesktopMode = ContextCompat.getSystemService(context, UiModeManager.class) - .getCurrentModeType() == Configuration.UI_MODE_TYPE_DESK; - + if (ContextCompat.getSystemService(context, UiModeManager.class) + .getCurrentModeType() == Configuration.UI_MODE_TYPE_DESK) { + return true; + } // DeX check for standalone and multi-window mode - boolean isDeXMode = false; try { final Configuration config = context.getResources().getConfiguration(); final Class configClass = config.getClass(); @@ -102,7 +102,7 @@ public final class DeviceUtils { final int currentMode = configClass.getField("semDesktopModeEnabled").getInt(config); if (semDesktopModeEnabledConst == currentMode) { - isDeXMode = true; + return true; } } catch (final NoSuchFieldException | IllegalAccessException e) { // empty @@ -122,14 +122,14 @@ public final class DeviceUtils { final int enabled = (int) getEnabledMethod.invoke(desktopModeState); if (enabled == desktopModeStateClass .getDeclaredField("ENABLED").getInt(desktopModeStateClass)) { - isDeXMode = true; + return true; } } catch (NoSuchFieldException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { // Device does not support DeX 3.0 } } - return isDesktopMode || isDeXMode; + return false; } public static boolean isTablet(@NonNull final Context context) { From a1773d166fcd7c71c03e0a59390246d2509a01c3 Mon Sep 17 00:00:00 2001 From: Hanif Shersy Date: Tue, 3 May 2022 17:46:34 +1000 Subject: [PATCH 013/147] Fix JSDoc checkstyle warning --- .../schabi/newpipe/fragments/detail/VideoDetailFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6ee02a7d5..c42db8b32 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 @@ -2096,7 +2096,7 @@ public final class VideoDetailFragment /** * Make changes to the UI to accommodate for better usability on bigger screens such as TVs - * or in Android's desktop mode (DeX etc.) + * or in Android's desktop mode (DeX etc). */ private void accommodateForTvAndDesktopMode() { if (DeviceUtils.isTv(getContext())) { From 88eed6cc2323a5170a2f57b921392087e269551d Mon Sep 17 00:00:00 2001 From: Hanif Shersy Date: Wed, 4 May 2022 18:39:08 +1000 Subject: [PATCH 014/147] Add JSDoc comment and a performance note for `isDesktopMode` --- .../java/org/schabi/newpipe/util/DeviceUtils.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index c4d3a7bbf..081a205ea 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -88,12 +88,19 @@ public final class DeviceUtils { return DeviceUtils.isTV; } + /** + * Checks if the device is in desktop or DeX mode. This function should only + * be invoked once on view load as it is using reflection for the DeX checks. + * @param context the context to use for services and config. + * @return true if the Android device is in desktop mode or using DeX. + */ public static boolean isDesktopMode(final Context context) { if (ContextCompat.getSystemService(context, UiModeManager.class) .getCurrentModeType() == Configuration.UI_MODE_TYPE_DESK) { return true; } - // DeX check for standalone and multi-window mode + // DeX check for standalone and multi-window mode, from: + // https://developer.samsung.com/samsung-dex/modify-optimizing.html try { final Configuration config = context.getResources().getConfiguration(); final Class configClass = config.getClass(); @@ -119,8 +126,8 @@ public final class DeviceUtils { final Class desktopModeStateClass = desktopModeState.getClass(); final Method getEnabledMethod = desktopModeStateClass .getDeclaredMethod("getEnabled"); - final int enabled = (int) getEnabledMethod.invoke(desktopModeState); - if (enabled == desktopModeStateClass + final int enabledStatus = (int) getEnabledMethod.invoke(desktopModeState); + if (enabledStatus == desktopModeStateClass .getDeclaredField("ENABLED").getInt(desktopModeStateClass)) { return true; } From 9e5c68c575bff4d0a0014d0a06b517b0d95213cf Mon Sep 17 00:00:00 2001 From: cybersphinx Date: Mon, 11 Jul 2022 22:48:30 +0200 Subject: [PATCH 015/147] Add check for input devices with cursor. --- .../org/schabi/newpipe/util/DeviceUtils.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index 081a205ea..6ead63df5 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -6,10 +6,12 @@ import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Point; +import android.hardware.input.InputManager; import android.os.BatteryManager; import android.os.Build; import android.provider.Settings; import android.util.TypedValue; +import android.view.InputDevice; import android.view.KeyEvent; import android.view.WindowInsets; import android.view.WindowManager; @@ -26,6 +28,8 @@ import org.schabi.newpipe.R; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import static android.content.Context.INPUT_SERVICE; + public final class DeviceUtils { private static final String AMAZON_FEATURE_FIRE_TV = "amazon.hardware.fire_tv"; @@ -95,6 +99,25 @@ public final class DeviceUtils { * @return true if the Android device is in desktop mode or using DeX. */ public static boolean isDesktopMode(final Context context) { + // Adapted from https://stackoverflow.com/a/64615568 + // to check for all devices that have an active cursor + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + final InputManager im = (InputManager) context.getSystemService(INPUT_SERVICE); + for (final int id : im.getInputDeviceIds()) { + final InputDevice inputDevice = im.getInputDevice(id); + if ( + inputDevice.supportsSource(InputDevice.SOURCE_BLUETOOTH_STYLUS) + || inputDevice.supportsSource(InputDevice.SOURCE_MOUSE) + || inputDevice.supportsSource(InputDevice.SOURCE_STYLUS) + || inputDevice.supportsSource(InputDevice.SOURCE_TOUCHPAD) + || inputDevice.supportsSource(InputDevice.SOURCE_TRACKBALL) + ) { + return true; + } + } + return false; + } + if (ContextCompat.getSystemService(context, UiModeManager.class) .getCurrentModeType() == Configuration.UI_MODE_TYPE_DESK) { return true; From d2b6bda7a2e0a6064cad66594658f9c49dfc4e58 Mon Sep 17 00:00:00 2001 From: cybersphinx Date: Sat, 16 Jul 2022 12:45:56 +0200 Subject: [PATCH 016/147] Remove errant return. --- app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index 6ead63df5..36ba33633 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -115,7 +115,6 @@ public final class DeviceUtils { return true; } } - return false; } if (ContextCompat.getSystemService(context, UiModeManager.class) From c38f1505620170545799d0f55db84e99e6896090 Mon Sep 17 00:00:00 2001 From: cybersphinx Date: Sat, 16 Jul 2022 20:56:24 +0200 Subject: [PATCH 017/147] Remove now obsolete API check. --- .../org/schabi/newpipe/util/DeviceUtils.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index 36ba33633..d96721b0d 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -100,20 +100,18 @@ public final class DeviceUtils { */ public static boolean isDesktopMode(final Context context) { // Adapted from https://stackoverflow.com/a/64615568 - // to check for all devices that have an active cursor - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - final InputManager im = (InputManager) context.getSystemService(INPUT_SERVICE); - for (final int id : im.getInputDeviceIds()) { - final InputDevice inputDevice = im.getInputDevice(id); - if ( - inputDevice.supportsSource(InputDevice.SOURCE_BLUETOOTH_STYLUS) - || inputDevice.supportsSource(InputDevice.SOURCE_MOUSE) - || inputDevice.supportsSource(InputDevice.SOURCE_STYLUS) - || inputDevice.supportsSource(InputDevice.SOURCE_TOUCHPAD) - || inputDevice.supportsSource(InputDevice.SOURCE_TRACKBALL) - ) { - return true; - } + // to check for all input devices that have an active cursor + final InputManager im = (InputManager) context.getSystemService(INPUT_SERVICE); + for (final int id : im.getInputDeviceIds()) { + final InputDevice inputDevice = im.getInputDevice(id); + if ( + inputDevice.supportsSource(InputDevice.SOURCE_BLUETOOTH_STYLUS) + || inputDevice.supportsSource(InputDevice.SOURCE_MOUSE) + || inputDevice.supportsSource(InputDevice.SOURCE_STYLUS) + || inputDevice.supportsSource(InputDevice.SOURCE_TOUCHPAD) + || inputDevice.supportsSource(InputDevice.SOURCE_TRACKBALL) + ) { + return true; } } From abf1cc536dc41523ebb4a42c31e99d8cb9562870 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Wed, 9 Nov 2022 16:22:21 +0100 Subject: [PATCH 018/147] Improve code of DeviceUtils.isDesktopMode - Avoid NullPointerException crashes if there is no UiModeManager or desktop system service mode - Use final for every exception - Suppress missing fields warnings - Add missing NonNull annotation --- .../org/schabi/newpipe/util/DeviceUtils.java | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index d96721b0d..46ab6da51 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -25,7 +25,6 @@ import androidx.preference.PreferenceManager; import org.schabi.newpipe.App; import org.schabi.newpipe.R; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import static android.content.Context.INPUT_SERVICE; @@ -98,27 +97,29 @@ public final class DeviceUtils { * @param context the context to use for services and config. * @return true if the Android device is in desktop mode or using DeX. */ - public static boolean isDesktopMode(final Context context) { + @SuppressWarnings("JavaReflectionMemberAccess") + public static boolean isDesktopMode(@NonNull final Context context) { // Adapted from https://stackoverflow.com/a/64615568 // to check for all input devices that have an active cursor final InputManager im = (InputManager) context.getSystemService(INPUT_SERVICE); for (final int id : im.getInputDeviceIds()) { final InputDevice inputDevice = im.getInputDevice(id); - if ( - inputDevice.supportsSource(InputDevice.SOURCE_BLUETOOTH_STYLUS) - || inputDevice.supportsSource(InputDevice.SOURCE_MOUSE) - || inputDevice.supportsSource(InputDevice.SOURCE_STYLUS) - || inputDevice.supportsSource(InputDevice.SOURCE_TOUCHPAD) - || inputDevice.supportsSource(InputDevice.SOURCE_TRACKBALL) - ) { + if (inputDevice.supportsSource(InputDevice.SOURCE_BLUETOOTH_STYLUS) + || inputDevice.supportsSource(InputDevice.SOURCE_MOUSE) + || inputDevice.supportsSource(InputDevice.SOURCE_STYLUS) + || inputDevice.supportsSource(InputDevice.SOURCE_TOUCHPAD) + || inputDevice.supportsSource(InputDevice.SOURCE_TRACKBALL)) { return true; } } - if (ContextCompat.getSystemService(context, UiModeManager.class) - .getCurrentModeType() == Configuration.UI_MODE_TYPE_DESK) { + final UiModeManager uiModeManager = + ContextCompat.getSystemService(context, UiModeManager.class); + if (uiModeManager != null + && uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_DESK) { return true; } + // DeX check for standalone and multi-window mode, from: // https://developer.samsung.com/samsung-dex/modify-optimizing.html try { @@ -131,12 +132,14 @@ public final class DeviceUtils { if (semDesktopModeEnabledConst == currentMode) { return true; } - } catch (final NoSuchFieldException | IllegalAccessException e) { - // empty + } catch (final NoSuchFieldException | IllegalAccessException ignored) { + // Device doesn't seem to support DeX } + @SuppressLint("WrongConstant") final Object desktopModeManager = context .getApplicationContext() .getSystemService("desktopmode"); + if (desktopModeManager != null) { try { final Method getDesktopModeStateMethod = desktopModeManager.getClass() @@ -151,11 +154,12 @@ public final class DeviceUtils { .getDeclaredField("ENABLED").getInt(desktopModeStateClass)) { return true; } - } catch (NoSuchFieldException | NoSuchMethodException - | IllegalAccessException | InvocationTargetException e) { - // Device does not support DeX 3.0 + } catch (final Exception ignored) { + // Device does not support DeX 3.0 or something went wrong when trying to determine + // if it supports this feature } } + return false; } From 16732905bfaffe89c29ea98910bef83a410dc377 Mon Sep 17 00:00:00 2001 From: ShareASmile Date: Tue, 8 Nov 2022 16:20:10 +0000 Subject: [PATCH 019/147] Translated using Weblate (Punjabi) Currently translated at 100.0% (646 of 646 strings) --- app/src/main/res/values-pa/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index f73e1b824..883bb7dfa 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -19,7 +19,7 @@ ਕੁਝ ਰੈਜ਼ੋਲੂਸ਼ਨਾਂ \'ਤੇ ਆਵਾਜ਼ ਨੂੰ ਹਟਾ ਦਿੰਦਾ ਹੈ ਬਾਹਰੀ ਆਡੀਓ ਪਲੇਅਰ ਵਰਤੋ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ - ਸਬਸਕ੍ਰਾਈਬ ਹੋ ਗਿਆ + ਸਬਸਕ੍ਰਾਈਬ ਹੈ ਚੈਨਲ ਅਨ-ਸਬਸਕ੍ਰਾਈਬ ਹੋ ਗਿਆ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਬਦਲਣ ਵਿੱਚ ਨਾਕਾਮੀ ਜਾਣਕਾਰੀ ਵਿਖਾਓ @@ -185,7 +185,7 @@ ਫਾਈਲ ਦਾ ਨਾਮ ਥਰੈੱਡ ਤਰੁੱਟੀ - ਨਿਊਪਾਈਪ ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ + ਨਿਊਪਾਈਪ ਡਾਊਨਲੋਡ ਕਰ ਰਹੀ ਹੈ ਵੇਰਵਿਆਂ ਲਈ ਖੋਲੋ ਕ੍ਰਿਪਾ ਕਰਕੇ ਉਡੀਕ ਕਰੋ… ਕਲਿਪ-ਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਹੋ ਗਿਆ ਹੈ From 5804483c89ddf5ebc83ca5b8aabb6774b6d4cb7a Mon Sep 17 00:00:00 2001 From: Fjuro Date: Tue, 8 Nov 2022 14:41:22 +0000 Subject: [PATCH 020/147] Translated using Weblate (Czech) Currently translated at 100.0% (72 of 72 strings) Translation: NewPipe/Metadata Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/ --- fastlane/metadata/android/cs/changelogs/991.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 fastlane/metadata/android/cs/changelogs/991.txt diff --git a/fastlane/metadata/android/cs/changelogs/991.txt b/fastlane/metadata/android/cs/changelogs/991.txt new file mode 100644 index 000000000..c27e46cb6 --- /dev/null +++ b/fastlane/metadata/android/cs/changelogs/991.txt @@ -0,0 +1,13 @@ +Nové +• Přidáno tlačítko „Otevřít v prohlížeči“ do panelu chyb +• Přidána možnost zobrazit skupiny kanálů jako seznam +• [YouTube] Dlouhým klepnutím na segmenty streamu lze sdílet URL časového razítka +• Přidání tlačítka fronty přehrávání do minipřehrávače + +Vylepšeno +• Přidána islandská lokalizace a aktualizovány další překlady +• Mnoho interních vylepšení + +Opraveno +• Oprava několika pádů +• [YouTube] Oprava načítání kanálů, nevyhrazeného kanálu a řešení problémů s přehráváním v některých zemích From 289f9105d9ac6a47b99f394bf7635fe207674324 Mon Sep 17 00:00:00 2001 From: pjammo Date: Tue, 8 Nov 2022 08:24:11 +0000 Subject: [PATCH 021/147] Translated using Weblate (Italian) Currently translated at 100.0% (72 of 72 strings) Translation: NewPipe/Metadata Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/ --- fastlane/metadata/android/it/changelogs/740.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/it/changelogs/740.txt b/fastlane/metadata/android/it/changelogs/740.txt index 297ff9a3c..785280b90 100644 --- a/fastlane/metadata/android/it/changelogs/740.txt +++ b/fastlane/metadata/android/it/changelogs/740.txt @@ -1,4 +1,4 @@ -

Miglioramenti

+
  • Miglioramenti

    • rendi cliccabili i link nei commenti, aumenta la dimensione del testo
    • cerca facendo clic sui collegamenti timestamp nei commenti
    • From a4e883c119997b1577547a281f5350d97f0ec73f Mon Sep 17 00:00:00 2001 From: "Coool (github.com/Coool)" Date: Tue, 8 Nov 2022 21:39:37 +0000 Subject: [PATCH 022/147] Translated using Weblate (Latvian) Currently translated at 4.1% (3 of 72 strings) Translation: NewPipe/Metadata Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/lv/ --- fastlane/metadata/android/lv/changelogs/63.txt | 2 +- fastlane/metadata/android/lv/changelogs/64.txt | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/fastlane/metadata/android/lv/changelogs/63.txt b/fastlane/metadata/android/lv/changelogs/63.txt index 1d2f9d38f..f014fac4a 100644 --- a/fastlane/metadata/android/lv/changelogs/63.txt +++ b/fastlane/metadata/android/lv/changelogs/63.txt @@ -5,4 +5,4 @@ - Pievienot visu par GDPR #1420 ### Salabots -- Lejupielādētājs: Salabot avāriju, ielādējot nepabeigtas lejupielādes no .giga failiem #1407 +- Lejupielādētājs: Salabota aplikācijas nobrukšana, ielādējot nepabeigtas lejupielādes no .giga failiem #1407 diff --git a/fastlane/metadata/android/lv/changelogs/64.txt b/fastlane/metadata/android/lv/changelogs/64.txt index b8d58e4c8..9fd77b641 100644 --- a/fastlane/metadata/android/lv/changelogs/64.txt +++ b/fastlane/metadata/android/lv/changelogs/64.txt @@ -1,8 +1,8 @@ ### Uzlabojumi - Pievienota iespēja ierobežot video kvalitāti, ja tiek lietoti mobilie dati. #1339 -- Atcerēties spilgtumu visu sesiju #1442 -- Uzlabot lejupielāžu ātrumu vājākiem procesoriem #1431 -- +- Iegaumē spilgtuma iestatījumu visu sesijas laiku #1442 +- Uzlabots lejupielāžu ātrums uz vājākiem procesoriem #1431 +- pievienots (working) mēdiju sesijas atbalsts #1433 ### Salabots -- Salabot avāriju, kas notiek, kad atver lejupielādes () #1441 +- Salabota aplikācijas nobrukšana, kad atver lejupielādes (labojums pieejams relīzes laidienos) #1441 From 747df59741376179a1d4857d86b51d7072d81b17 Mon Sep 17 00:00:00 2001 From: "Coool (github.com/Coool)" Date: Tue, 8 Nov 2022 22:00:06 +0000 Subject: [PATCH 023/147] Translated using Weblate (Latvian) Currently translated at 92.5% (598 of 646 strings) --- app/src/main/res/values-lv/strings.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index ba8d49e57..7f0396455 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -684,4 +684,17 @@ Avarēt atskaņotāju Pielāgojiet pašlaik atskaņotās plūsmas notifikāciju Atskaņotāja notifikācija + Jaunās tiešraides + Radās kļūda, detalizētāku informāciju skatiet paziņojumā + + %s jauna tiešraide + %s jauna tiešraide + %s jaunas tiešraides + + Paziņojumi par jaunām tiešraidēm abonementos + Bieži uzdotie jautājumi + Paziņojumi, lai ziņotu par kļūdām + Kļūdas ziņojuma paziņojums + Atskaņošanas ielādēšanas intervāla lielums + NewPipe radās kļūdu, pieskarieties, lai ziņotu \ No newline at end of file From 048b0972de545f1ceb5e3b89a36f1a8b05a4db83 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sat, 5 Nov 2022 23:44:35 +0100 Subject: [PATCH 024/147] Set compileSdk and targetSdk to 33 (Android 13) android:exported in now required in the manifest on all activities/services/receivers/providers. It was set to true for those that need to interact with outside apps or the OS, while others have exported=false. This also required updating LeakCanary to the latest version as the older version being used was not using android:exported in AndroidManifest.xml. --- app/build.gradle | 6 +- app/src/main/AndroidManifest.xml | 67 ++++++++++++------- .../gesture/PopupPlayerGestureListener.kt | 6 +- 3 files changed, 50 insertions(+), 29 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 206c830e7..2dfbeb55f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,14 +8,14 @@ plugins { } android { - compileSdk 32 + compileSdk 33 namespace 'org.schabi.newpipe' defaultConfig { applicationId "org.schabi.newpipe" resValue "string", "app_name", "NewPipe" minSdk 21 - targetSdk 29 + targetSdk 33 versionCode 991 versionName "0.24.1" @@ -107,7 +107,7 @@ ext { groupieVersion = '2.10.1' markwonVersion = '4.6.2' - leakCanaryVersion = '2.5' + leakCanaryVersion = '2.9.1' stethoVersion = '1.6.0' mockitoVersion = '4.0.0' assertJVersion = '3.23.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index be14274aa..7a0eacdf6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,11 +24,12 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:logo="@mipmap/ic_launcher" - android:theme="@style/OpeningTheme" android:resizeableActivity="true" + android:theme="@style/OpeningTheme" tools:ignore="AllowBackup"> @@ -39,7 +40,9 @@ - + @@ -47,7 +50,7 @@ @@ -56,15 +59,18 @@ @@ -73,6 +79,7 @@ @@ -85,13 +92,18 @@ - + + @@ -99,6 +111,7 @@ @@ -109,6 +122,7 @@ @@ -354,30 +369,30 @@ - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + @@ -386,11 +401,17 @@ android:exported="false" /> - + - + - + diff --git a/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt b/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt index 666ea6a46..a540c0ab0 100644 --- a/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt +++ b/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt @@ -160,15 +160,15 @@ class PopupPlayerGestureListener( } } - override fun onLongPress(e: MotionEvent?) { + override fun onLongPress(e: MotionEvent) { playerUi.updateScreenSize() playerUi.checkPopupPositionBounds() playerUi.changePopupSize(playerUi.screenWidth) } override fun onFling( - e1: MotionEvent?, - e2: MotionEvent?, + e1: MotionEvent, + e2: MotionEvent, velocityX: Float, velocityY: Float ): Boolean { From 8db90ba449f4ca178518ca1e1504c9c58ec98d13 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Mon, 22 Aug 2022 09:25:08 +0530 Subject: [PATCH 025/147] Use SparseArrayCompat for thumbnails. --- .../fragments/list/search/SearchFragment.java | 14 +-- .../SeekbarPreviewThumbnailHolder.java | 97 +++++++------------ .../giga/service/DownloadManagerService.java | 31 +++--- 3 files changed, 57 insertions(+), 85 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java index 5175e0096..26a283229 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java @@ -33,6 +33,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.TooltipCompat; +import androidx.collection.SparseArrayCompat; import androidx.core.text.HtmlCompat; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.ItemTouchHelper; @@ -70,9 +71,7 @@ import org.schabi.newpipe.util.ServiceHelper; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Queue; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -141,7 +140,7 @@ public class SearchFragment extends BaseListFragment menuItemToFilterName = null; + private final SparseArrayCompat menuItemToFilterName = new SparseArrayCompat<>(); private StreamingService service; private Page nextPage; private boolean showLocalSuggestions = true; @@ -426,8 +425,6 @@ public class SearchFragment extends BaseListFragment(); - int itemId = 0; boolean isFirstItem = true; final Context c = getContext(); @@ -468,11 +465,8 @@ public class SearchFragment extends BaseListFragment cf = new ArrayList<>(1); - cf.add(menuItemToFilterName.get(item.getItemId())); - changeContentFilter(item, cf); - } + final var filter = Collections.singletonList(menuItemToFilterName.get(item.getItemId())); + changeContentFilter(item, filter); return true; } diff --git a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHolder.java b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHolder.java index 08c6366c8..50ffa2f2a 100644 --- a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHolder.java +++ b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHolder.java @@ -1,6 +1,7 @@ package org.schabi.newpipe.player.seekbarpreview; import static org.schabi.newpipe.player.seekbarpreview.SeekbarPreviewThumbnailHelper.SeekbarPreviewThumbnailType; +import static org.schabi.newpipe.player.seekbarpreview.SeekbarPreviewThumbnailHelper.getSeekbarPreviewThumbnailType; import android.content.Context; import android.graphics.Bitmap; @@ -8,6 +9,7 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.collection.SparseArrayCompat; import com.google.common.base.Stopwatch; @@ -15,12 +17,9 @@ import org.schabi.newpipe.extractor.stream.Frameset; import org.schabi.newpipe.util.PicassoHelper; import java.util.Comparator; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.function.Supplier; @@ -34,18 +33,15 @@ public class SeekbarPreviewThumbnailHolder { // Key = Position of the picture in milliseconds // Supplier = Supplies the bitmap for that position - private final Map> seekbarPreviewData = new ConcurrentHashMap<>(); + private final SparseArrayCompat> seekbarPreviewData = + new SparseArrayCompat<>(); // This ensures that if the reset is still undergoing // and another reset starts, only the last reset is processed private UUID currentUpdateRequestIdentifier = UUID.randomUUID(); - public synchronized void resetFrom( - @NonNull final Context context, - final List framesets) { - - final int seekbarPreviewType = - SeekbarPreviewThumbnailHelper.getSeekbarPreviewThumbnailType(context); + public void resetFrom(@NonNull final Context context, final List framesets) { + final int seekbarPreviewType = getSeekbarPreviewThumbnailType(context); final UUID updateRequestIdentifier = UUID.randomUUID(); this.currentUpdateRequestIdentifier = updateRequestIdentifier; @@ -63,13 +59,12 @@ public class SeekbarPreviewThumbnailHolder { executorService.shutdown(); } - private void resetFromAsync( - final int seekbarPreviewType, - final List framesets, - final UUID updateRequestIdentifier) { - + private void resetFromAsync(final int seekbarPreviewType, final List framesets, + final UUID updateRequestIdentifier) { Log.d(TAG, "Clearing seekbarPreviewData"); - seekbarPreviewData.clear(); + synchronized (seekbarPreviewData) { + seekbarPreviewData.clear(); + } if (seekbarPreviewType == SeekbarPreviewThumbnailType.NONE) { Log.d(TAG, "Not processing seekbarPreviewData due to settings"); @@ -94,10 +89,8 @@ public class SeekbarPreviewThumbnailHolder { generateDataFrom(frameset, updateRequestIdentifier); } - private Frameset getFrameSetForType( - final List framesets, - final int seekbarPreviewType) { - + private Frameset getFrameSetForType(final List framesets, + final int seekbarPreviewType) { if (seekbarPreviewType == SeekbarPreviewThumbnailType.HIGH_QUALITY) { Log.d(TAG, "Strategy for seekbarPreviewData: high quality"); return framesets.stream() @@ -111,17 +104,14 @@ public class SeekbarPreviewThumbnailHolder { } } - private void generateDataFrom( - final Frameset frameset, - final UUID updateRequestIdentifier) { - + private void generateDataFrom(final Frameset frameset, final UUID updateRequestIdentifier) { Log.d(TAG, "Starting generation of seekbarPreviewData"); final Stopwatch sw = Log.isLoggable(TAG, Log.DEBUG) ? Stopwatch.createStarted() : null; int currentPosMs = 0; int pos = 1; - final int frameCountPerUrl = frameset.getFramesPerPageX() * frameset.getFramesPerPageY(); + final int urlFrameCount = frameset.getFramesPerPageX() * frameset.getFramesPerPageY(); // Process each url in the frameset for (final String url : frameset.getUrls()) { @@ -130,11 +120,11 @@ public class SeekbarPreviewThumbnailHolder { // The data is not added directly to "seekbarPreviewData" due to // concurrency and checks for "updateRequestIdentifier" - final Map> generatedDataForUrl = new HashMap<>(); + final var generatedDataForUrl = new SparseArrayCompat>(urlFrameCount); // The bitmap consists of several images, which we process here // foreach frame in the returned bitmap - for (int i = 0; i < frameCountPerUrl; i++) { + for (int i = 0; i < urlFrameCount; i++) { // Frames outside the video length are skipped if (pos > frameset.getTotalCount()) { break; @@ -161,7 +151,9 @@ public class SeekbarPreviewThumbnailHolder { // Check if we are still the latest request // If not abort method execution if (isRequestIdentifierCurrent(updateRequestIdentifier)) { - seekbarPreviewData.putAll(generatedDataForUrl); + synchronized (seekbarPreviewData) { + seekbarPreviewData.putAll(generatedDataForUrl); + } } else { Log.d(TAG, "Aborted of generation of seekbarPreviewData"); break; @@ -169,7 +161,7 @@ public class SeekbarPreviewThumbnailHolder { } if (sw != null) { - Log.d(TAG, "Generation of seekbarPreviewData took " + sw.stop().toString()); + Log.d(TAG, "Generation of seekbarPreviewData took " + sw.stop()); } } @@ -189,17 +181,14 @@ public class SeekbarPreviewThumbnailHolder { final Bitmap bitmap = PicassoHelper.loadSeekbarThumbnailPreview(url).get(); if (sw != null) { - Log.d(TAG, - "Download of bitmap for seekbarPreview from '" + url - + "' took " + sw.stop().toString()); + Log.d(TAG, "Download of bitmap for seekbarPreview from '" + url + "' took " + + sw.stop()); } return bitmap; } catch (final Exception ex) { - Log.w(TAG, - "Failed to get bitmap for seekbarPreview from url='" + url - + "' in time", - ex); + Log.w(TAG, "Failed to get bitmap for seekbarPreview from url='" + url + + "' in time", ex); return null; } } @@ -208,32 +197,20 @@ public class SeekbarPreviewThumbnailHolder { return this.currentUpdateRequestIdentifier.equals(requestIdentifier); } - public Optional getBitmapAt(final int positionInMs) { - // Check if the BitmapData is empty - if (seekbarPreviewData.isEmpty()) { - return Optional.empty(); + // Get the frame supplier closest to the requested position + Supplier closestFrame = () -> null; + synchronized (seekbarPreviewData) { + int min = Integer.MAX_VALUE; + for (int i = 0; i < seekbarPreviewData.size(); i++) { + final int pos = Math.abs(seekbarPreviewData.keyAt(i) - positionInMs); + if (pos < min) { + closestFrame = seekbarPreviewData.valueAt(i); + min = pos; + } + } } - // Get the closest frame to the requested position - final int closestIndexPosition = - seekbarPreviewData.keySet().stream() - .min(Comparator.comparingInt(i -> Math.abs(i - positionInMs))) - .orElse(-1); - - // this should never happen, because - // it indicates that "seekbarPreviewData" is empty which was already checked - if (closestIndexPosition == -1) { - return Optional.empty(); - } - - try { - // Get the bitmap for the position (executes the supplier) - return Optional.ofNullable(seekbarPreviewData.get(closestIndexPosition).get()); - } catch (final Exception ex) { - // If there is an error, log it and return Optional.empty - Log.w(TAG, "Unable to get seekbar preview", ex); - return Optional.empty(); - } + return Optional.ofNullable(closestFrame.get()); } } diff --git a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java index 25ec87f80..dc56ee205 100755 --- a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java +++ b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java @@ -1,5 +1,8 @@ package us.shandian.giga.service; +import static org.schabi.newpipe.BuildConfig.APPLICATION_ID; +import static org.schabi.newpipe.BuildConfig.DEBUG; + import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -22,12 +25,12 @@ import android.os.IBinder; import android.os.Message; import android.os.Parcelable; import android.util.Log; -import android.util.SparseArray; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; +import androidx.collection.SparseArrayCompat; import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationCompat.Builder; import androidx.core.app.ServiceCompat; @@ -37,24 +40,21 @@ import androidx.preference.PreferenceManager; import org.schabi.newpipe.R; import org.schabi.newpipe.download.DownloadActivity; import org.schabi.newpipe.player.helper.LockManager; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; - -import us.shandian.giga.get.DownloadMission; -import us.shandian.giga.get.MissionRecoveryInfo; import org.schabi.newpipe.streams.io.StoredDirectoryHelper; import org.schabi.newpipe.streams.io.StoredFileHelper; import org.schabi.newpipe.util.Localization; import org.schabi.newpipe.util.PendingIntentCompat; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import us.shandian.giga.get.DownloadMission; +import us.shandian.giga.get.MissionRecoveryInfo; import us.shandian.giga.postprocessing.Postprocessing; import us.shandian.giga.service.DownloadManager.NetworkState; -import static org.schabi.newpipe.BuildConfig.APPLICATION_ID; -import static org.schabi.newpipe.BuildConfig.DEBUG; - public class DownloadManagerService extends Service { private static final String TAG = "DownloadManagerService"; @@ -95,7 +95,7 @@ public class DownloadManagerService extends Service { private Builder downloadDoneNotification = null; private StringBuilder downloadDoneList = null; - private final ArrayList mEchoObservers = new ArrayList<>(1); + private final List mEchoObservers = new ArrayList<>(1); private ConnectivityManager mConnectivityManager; private ConnectivityManager.NetworkCallback mNetworkStateListenerL = null; @@ -108,7 +108,8 @@ public class DownloadManagerService extends Service { private int downloadFailedNotificationID = DOWNLOADS_NOTIFICATION_ID + 1; private Builder downloadFailedNotification = null; - private final SparseArray mFailedDownloads = new SparseArray<>(5); + private final SparseArrayCompat mFailedDownloads = + new SparseArrayCompat<>(5); private Bitmap icLauncher; private Bitmap icDownloadDone; @@ -277,7 +278,7 @@ public class DownloadManagerService extends Service { } if (msg.what != MESSAGE_ERROR) - mFailedDownloads.delete(mFailedDownloads.indexOfValue(mission)); + mFailedDownloads.remove(mFailedDownloads.indexOfValue(mission)); for (Callback observer : mEchoObservers) observer.handleMessage(msg); @@ -461,7 +462,7 @@ public class DownloadManagerService extends Service { } public void notifyFailedDownload(DownloadMission mission) { - if (!mDownloadNotificationEnable || mFailedDownloads.indexOfValue(mission) >= 0) return; + if (!mDownloadNotificationEnable || mFailedDownloads.containsValue(mission)) return; int id = downloadFailedNotificationID++; mFailedDownloads.put(id, mission); From d6617007d4ec48f900bf37b4e9797330f5cdb38e Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Tue, 22 Nov 2022 18:31:58 +0530 Subject: [PATCH 026/147] Use SparseArrayCompat instead of SparseArray in StreamItemAdapter. Make additional small improvements as well. --- .../newpipe/util/StreamItemAdapterTest.kt | 18 ++---- .../newpipe/download/DownloadDialog.java | 12 ++-- .../newpipe/util/StreamItemAdapter.java | 57 +++++++------------ 3 files changed, 31 insertions(+), 56 deletions(-) diff --git a/app/src/androidTest/java/org/schabi/newpipe/util/StreamItemAdapterTest.kt b/app/src/androidTest/java/org/schabi/newpipe/util/StreamItemAdapterTest.kt index 016feb576..0fe251c16 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/util/StreamItemAdapterTest.kt +++ b/app/src/androidTest/java/org/schabi/newpipe/util/StreamItemAdapterTest.kt @@ -1,12 +1,12 @@ package org.schabi.newpipe.util import android.content.Context -import android.util.SparseArray import android.view.View import android.view.View.GONE import android.view.View.INVISIBLE import android.view.View.VISIBLE import android.widget.Spinner +import androidx.collection.SparseArrayCompat import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.MediumTest @@ -39,9 +39,7 @@ class StreamItemAdapterTest { @Test fun videoStreams_noSecondaryStream() { val adapter = StreamItemAdapter( - context, - getVideoStreams(true, true, true, true), - null + getVideoStreams(true, true, true, true) ) spinner.adapter = adapter @@ -54,7 +52,6 @@ class StreamItemAdapterTest { @Test fun videoStreams_hasSecondaryStream() { val adapter = StreamItemAdapter( - context, getVideoStreams(false, true, false, true), getAudioStreams(false, true, false, true) ) @@ -69,7 +66,6 @@ class StreamItemAdapterTest { @Test fun videoStreams_Mixed() { val adapter = StreamItemAdapter( - context, getVideoStreams(true, true, true, true, true, false, true, true), getAudioStreams(false, true, false, false, false, true, true, true) ) @@ -88,7 +84,6 @@ class StreamItemAdapterTest { @Test fun subtitleStreams_noIcon() { val adapter = StreamItemAdapter( - context, StreamItemAdapter.StreamSizeWrapper( (0 until 5).map { SubtitlesStream.Builder() @@ -99,8 +94,7 @@ class StreamItemAdapterTest { .build() }, context - ), - null + ) ) spinner.adapter = adapter for (i in 0 until spinner.count) { @@ -111,7 +105,6 @@ class StreamItemAdapterTest { @Test fun audioStreams_noIcon() { val adapter = StreamItemAdapter( - context, StreamItemAdapter.StreamSizeWrapper( (0 until 5).map { AudioStream.Builder() @@ -122,8 +115,7 @@ class StreamItemAdapterTest { .build() }, context - ), - null + ) ) spinner.adapter = adapter for (i in 0 until spinner.count) { @@ -200,7 +192,7 @@ class StreamItemAdapterTest { * Helper function that builds a secondary stream list. */ private fun getSecondaryStreamsFromList(streams: List) = - SparseArray?>(streams.size).apply { + SparseArrayCompat?>(streams.size).apply { streams.forEachIndexed { index, stream -> val secondaryStreamHelper: SecondaryStreamHelper? = stream?.let { SecondaryStreamHelper( diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index 2975fe43a..3f3384b8e 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -17,7 +17,6 @@ import android.os.Bundle; import android.os.Environment; import android.os.IBinder; import android.util.Log; -import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -36,6 +35,7 @@ import androidx.annotation.StringRes; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.view.menu.ActionMenuItemView; import androidx.appcompat.widget.Toolbar; +import androidx.collection.SparseArrayCompat; import androidx.documentfile.provider.DocumentFile; import androidx.fragment.app.DialogFragment; import androidx.preference.PreferenceManager; @@ -211,8 +211,7 @@ public class DownloadDialog extends DialogFragment setStyle(STYLE_NO_TITLE, ThemeHelper.getDialogTheme(context)); Icepick.restoreInstanceState(this, savedInstanceState); - final SparseArray> secondaryStreams = - new SparseArray<>(4); + final var secondaryStreams = new SparseArrayCompat>(4); final List videoStreams = wrappedVideoStreams.getStreamsList(); for (int i = 0; i < videoStreams.size(); i++) { @@ -236,10 +235,9 @@ public class DownloadDialog extends DialogFragment } } - this.videoStreamsAdapter = new StreamItemAdapter<>(context, wrappedVideoStreams, - secondaryStreams); - this.audioStreamsAdapter = new StreamItemAdapter<>(context, wrappedAudioStreams); - this.subtitleStreamsAdapter = new StreamItemAdapter<>(context, wrappedSubtitleStreams); + this.videoStreamsAdapter = new StreamItemAdapter<>(wrappedVideoStreams, secondaryStreams); + this.audioStreamsAdapter = new StreamItemAdapter<>(wrappedAudioStreams); + this.subtitleStreamsAdapter = new StreamItemAdapter<>(wrappedSubtitleStreams); final Intent intent = new Intent(context, DownloadManagerService.class); context.startService(intent); diff --git a/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java b/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java index 4b5e675c9..74de45720 100644 --- a/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java +++ b/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java @@ -1,7 +1,6 @@ package org.schabi.newpipe.util; import android.content.Context; -import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -11,6 +10,8 @@ import android.widget.Spinner; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.collection.SparseArrayCompat; import org.schabi.newpipe.DownloaderImpl; import org.schabi.newpipe.R; @@ -39,10 +40,10 @@ import us.shandian.giga.util.Utility; * @param the secondary stream type's class extending {@link Stream} */ public class StreamItemAdapter extends BaseAdapter { - private final Context context; - + @NonNull private final StreamSizeWrapper streamsWrapper; - private final SparseArray> secondaryStreams; + @NonNull + private final SparseArrayCompat> secondaryStreams; /** * Indicates that at least one of the primary streams is an instance of {@link VideoStream}, @@ -51,9 +52,10 @@ public class StreamItemAdapter extends BaseA */ private final boolean hasAnyVideoOnlyStreamWithNoSecondaryStream; - public StreamItemAdapter(final Context context, final StreamSizeWrapper streamsWrapper, - final SparseArray> secondaryStreams) { - this.context = context; + public StreamItemAdapter( + @NonNull final StreamSizeWrapper streamsWrapper, + @NonNull final SparseArrayCompat> secondaryStreams + ) { this.streamsWrapper = streamsWrapper; this.secondaryStreams = secondaryStreams; @@ -61,15 +63,15 @@ public class StreamItemAdapter extends BaseA checkHasAnyVideoOnlyStreamWithNoSecondaryStream(); } - public StreamItemAdapter(final Context context, final StreamSizeWrapper streamsWrapper) { - this(context, streamsWrapper, null); + public StreamItemAdapter(final StreamSizeWrapper streamsWrapper) { + this(streamsWrapper, new SparseArrayCompat<>(0)); } public List getAll() { return streamsWrapper.getStreamsList(); } - public SparseArray> getAllSecondary() { + public SparseArrayCompat> getAllSecondary() { return secondaryStreams; } @@ -106,6 +108,7 @@ public class StreamItemAdapter extends BaseA final View view, final ViewGroup parent, final boolean isDropdownItem) { + final var context = parent.getContext(); View convertView = view; if (convertView == null) { convertView = LayoutInflater.from(context).inflate( @@ -129,7 +132,7 @@ public class StreamItemAdapter extends BaseA if (hasAnyVideoOnlyStreamWithNoSecondaryStream) { if (videoStream.isVideoOnly()) { - woSoundIconVisibility = hasSecondaryStream(position) + woSoundIconVisibility = secondaryStreams.get(position) != null // It has a secondary stream associated with it, so check if it's a // dropdown view so it doesn't look out of place (missing margin) // compared to those that don't. @@ -163,8 +166,7 @@ public class StreamItemAdapter extends BaseA } if (streamsWrapper.getSizeInBytes(position) > 0) { - final SecondaryStreamHelper secondary = secondaryStreams == null ? null - : secondaryStreams.get(position); + final var secondary = secondaryStreams.get(position); if (secondary != null) { final long size = secondary.getSizeInBytes() + streamsWrapper.getSizeInBytes(position); @@ -196,14 +198,6 @@ public class StreamItemAdapter extends BaseA return convertView; } - /** - * @param position which primary stream to check. - * @return whether the primary stream at position has a secondary stream associated with it. - */ - private boolean hasSecondaryStream(final int position) { - return secondaryStreams != null && secondaryStreams.get(position) != null; - } - /** * @return if there are any video-only streams with no secondary stream associated with them. * @see #hasAnyVideoOnlyStreamWithNoSecondaryStream @@ -213,7 +207,7 @@ public class StreamItemAdapter extends BaseA final T stream = streamsWrapper.getStreamsList().get(i); if (stream instanceof VideoStream) { final boolean videoOnly = ((VideoStream) stream).isVideoOnly(); - if (videoOnly && !hasSecondaryStream(i)) { + if (videoOnly && secondaryStreams.get(i) == null) { return true; } } @@ -228,16 +222,15 @@ public class StreamItemAdapter extends BaseA * @param the stream type's class extending {@link Stream} */ public static class StreamSizeWrapper implements Serializable { - private static final StreamSizeWrapper EMPTY = new StreamSizeWrapper<>( - Collections.emptyList(), null); + private static final StreamSizeWrapper EMPTY = + new StreamSizeWrapper<>(Collections.emptyList(), null); private final List streamsList; private final long[] streamSizes; private final String unknownSize; - public StreamSizeWrapper(final List sL, final Context context) { - this.streamsList = sL != null - ? sL - : Collections.emptyList(); + public StreamSizeWrapper(@NonNull final List streamList, + @Nullable final Context context) { + this.streamsList = streamList; this.streamSizes = new long[streamsList.size()]; this.unknownSize = context == null ? "--.-" : context.getString(R.string.unknown_content); @@ -297,10 +290,6 @@ public class StreamItemAdapter extends BaseA return formatSize(getSizeInBytes(streamIndex)); } - public String getFormattedSize(final T stream) { - return formatSize(getSizeInBytes(stream)); - } - private String formatSize(final long size) { if (size > -1) { return Utility.formatBytes(size); @@ -308,10 +297,6 @@ public class StreamItemAdapter extends BaseA return unknownSize; } - public void setSize(final int streamIndex, final long sizeInBytes) { - streamSizes[streamIndex] = sizeInBytes; - } - public void setSize(final T stream, final long sizeInBytes) { streamSizes[streamsList.indexOf(stream)] = sizeInBytes; } From e5af1c93aeadda204862e4643b7d10037c02d90a Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Sat, 26 Nov 2022 15:35:13 +0100 Subject: [PATCH 027/147] Seeking no longer pauses the played video --- .../main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index 1709755f2..9fb4552b2 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -602,9 +602,6 @@ public abstract class VideoPlayerUi extends PlayerUi } player.saveWasPlaying(); - if (player.isPlaying()) { - player.getExoPlayer().pause(); - } showControls(0); animate(binding.currentDisplaySeek, true, DEFAULT_CONTROLS_DURATION, From 44bc6bf06902b8f11632dc1e9844994d4dca3bc2 Mon Sep 17 00:00:00 2001 From: yashpalgoyal1304 Date: Sat, 26 Nov 2022 23:29:11 +0530 Subject: [PATCH 028/147] Set image-minimizer to specify image width ... Fix https://github.com/TeamNewPipe/NewPipe/issues/9469 for portrait like orientations --- .github/workflows/image-minimizer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-minimizer.js b/.github/workflows/image-minimizer.js index 80cc5294c..93ec7a170 100644 --- a/.github/workflows/image-minimizer.js +++ b/.github/workflows/image-minimizer.js @@ -86,7 +86,7 @@ module.exports = async ({github, context}) => { if (shouldModify) { wasMatchModified = true; console.log(`Modifying match '${match}'`); - return `${g1}`; + return `${g1}`; } console.log(`Match '${match}' is ok/will not be modified`); From 225f69b75b2c45729b0346a9d1cb3b6e8e8c9265 Mon Sep 17 00:00:00 2001 From: yashpalgoyal1304 Date: Sun, 27 Nov 2022 01:56:53 +0530 Subject: [PATCH 029/147] Fix value of width --- .github/workflows/image-minimizer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-minimizer.js b/.github/workflows/image-minimizer.js index 93ec7a170..fa9706faa 100644 --- a/.github/workflows/image-minimizer.js +++ b/.github/workflows/image-minimizer.js @@ -86,7 +86,7 @@ module.exports = async ({github, context}) => { if (shouldModify) { wasMatchModified = true; console.log(`Modifying match '${match}'`); - return `${g1}`; + return `${g1}`; } console.log(`Match '${match}' is ok/will not be modified`); From 7c1d06e02383d8ed400b5be09130de5983255975 Mon Sep 17 00:00:00 2001 From: yashpalgoyal1304 Date: Sun, 27 Nov 2022 02:06:01 +0530 Subject: [PATCH 030/147] Resolve scoping issue to get values of probeResult --- .github/workflows/image-minimizer.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/image-minimizer.js b/.github/workflows/image-minimizer.js index fa9706faa..f4f132a72 100644 --- a/.github/workflows/image-minimizer.js +++ b/.github/workflows/image-minimizer.js @@ -55,6 +55,7 @@ module.exports = async ({github, context}) => { return match; } + let probeAspectRatio = 0; let shouldModify = false; try { console.log(`Probing ${g2}`); @@ -76,7 +77,8 @@ module.exports = async ({github, context}) => { } console.log(`Probing resulted in ${probeResult.width}x${probeResult.height}px`); - shouldModify = probeResult.height > IMG_MAX_HEIGHT_PX && (probeResult.width / probeResult.height) < MIN_ASPECT_RATIO; + probeAspectRatio = probeResult.width / probeResult.height; + shouldModify = probeResult.height > IMG_MAX_HEIGHT_PX && probeAspectRatio < MIN_ASPECT_RATIO; } catch(e) { console.log('Probing failed:', e); // Immediately abort @@ -86,7 +88,7 @@ module.exports = async ({github, context}) => { if (shouldModify) { wasMatchModified = true; console.log(`Modifying match '${match}'`); - return `${g1}`; + return `${g1}`; } console.log(`Match '${match}' is ok/will not be modified`); From e9ef9451e59290f13f68bcfa493226f30cc024e3 Mon Sep 17 00:00:00 2001 From: yashpalgoyal1304 Date: Sun, 27 Nov 2022 03:22:37 +0530 Subject: [PATCH 031/147] Minimize not-so-long images too --- .github/workflows/image-minimizer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-minimizer.js b/.github/workflows/image-minimizer.js index f4f132a72..df1a30f9b 100644 --- a/.github/workflows/image-minimizer.js +++ b/.github/workflows/image-minimizer.js @@ -88,7 +88,7 @@ module.exports = async ({github, context}) => { if (shouldModify) { wasMatchModified = true; console.log(`Modifying match '${match}'`); - return `${g1}`; + return `${g1}`; } console.log(`Match '${match}' is ok/will not be modified`); From f2e3020f9d812e89d9b714a7f4725b560c08c56e Mon Sep 17 00:00:00 2001 From: evermind Date: Mon, 28 Nov 2022 13:33:50 +0100 Subject: [PATCH 032/147] checkstyle: declare org.jetbrains and javax.annotation Nullable's and NotNull/Nonnull as illegal imports --- checkstyle/checkstyle.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/checkstyle/checkstyle.xml b/checkstyle/checkstyle.xml index ce378a65f..3214a2b0b 100644 --- a/checkstyle/checkstyle.xml +++ b/checkstyle/checkstyle.xml @@ -95,7 +95,9 @@ - + + + From bce77aaec7a88032d38b62b7cd380f9d3efea430 Mon Sep 17 00:00:00 2001 From: Stypox Date: Mon, 28 Nov 2022 14:28:08 +0100 Subject: [PATCH 033/147] Block rxjava3 nullable/nonnull imports in checkstyle --- checkstyle/checkstyle.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/checkstyle/checkstyle.xml b/checkstyle/checkstyle.xml index 3214a2b0b..e8c9d94ca 100644 --- a/checkstyle/checkstyle.xml +++ b/checkstyle/checkstyle.xml @@ -96,7 +96,13 @@ - + From f07886fc5e5ef6068f70f2e1083a7ed8a269e96a Mon Sep 17 00:00:00 2001 From: Stypox Date: Mon, 28 Nov 2022 18:23:47 +0100 Subject: [PATCH 034/147] Add notifications permission --- app/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7a0eacdf6..7aa1a2939 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ + Date: Mon, 28 Nov 2022 18:49:11 +0100 Subject: [PATCH 035/147] Request permission to send notifications --- .../java/org/schabi/newpipe/MainActivity.java | 12 +++++++++--- .../schabi/newpipe/util/PermissionHelper.java | 16 ++++++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index d4b2305c7..a703b9e80 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -157,9 +157,12 @@ public class MainActivity extends AppCompatActivity { } openMiniPlayerUponPlayerStarted(); - // Schedule worker for checking for new streams and creating corresponding notifications - // if this is enabled by the user. - NotificationWorker.initialize(this); + if (PermissionHelper.checkPostNotificationsPermission(this, + PermissionHelper.POST_NOTIFICATIONS_REQUEST_CODE)) { + // Schedule worker for checking for new streams and creating corresponding notifications + // if this is enabled by the user. + NotificationWorker.initialize(this); + } } @Override @@ -599,6 +602,9 @@ public class MainActivity extends AppCompatActivity { ((VideoDetailFragment) fragment).openDownloadDialog(); } break; + case PermissionHelper.POST_NOTIFICATIONS_REQUEST_CODE: + NotificationWorker.initialize(this); + break; } } diff --git a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java index f3151ec8b..f47494770 100644 --- a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java @@ -21,6 +21,7 @@ import org.schabi.newpipe.R; import org.schabi.newpipe.settings.NewPipeSettings; public final class PermissionHelper { + public static final int POST_NOTIFICATIONS_REQUEST_CODE = 779; public static final int DOWNLOAD_DIALOG_REQUEST_CODE = 778; public static final int DOWNLOADS_REQUEST_CODE = 777; @@ -71,8 +72,7 @@ public final class PermissionHelper { // No explanation needed, we can request the permission. ActivityCompat.requestPermissions(activity, - new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, - requestCode); + new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestCode); // PERMISSION_WRITE_STORAGE is an // app-defined int constant. The callback method gets the @@ -83,6 +83,18 @@ public final class PermissionHelper { return true; } + public static boolean checkPostNotificationsPermission(final Activity activity, + final int requestCode) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU + && ContextCompat.checkSelfPermission(activity, + Manifest.permission.POST_NOTIFICATIONS) + != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(activity, + new String[] {Manifest.permission.POST_NOTIFICATIONS}, requestCode); + return false; + } + return true; + } /** * In order to be able to draw over other apps, From 2bf58abb89ea5c80dedce678fa8417f2a3301201 Mon Sep 17 00:00:00 2001 From: Stypox Date: Tue, 29 Nov 2022 12:04:18 +0100 Subject: [PATCH 036/147] Make miniplayer close button area larger --- .../fragment_video_detail.xml | 31 ++++++++++--------- .../main/res/layout/fragment_video_detail.xml | 30 +++++++++--------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/app/src/main/res/layout-large-land/fragment_video_detail.xml b/app/src/main/res/layout-large-land/fragment_video_detail.xml index a29fa8c78..c7b77ee9a 100644 --- a/app/src/main/res/layout-large-land/fragment_video_detail.xml +++ b/app/src/main/res/layout-large-land/fragment_video_detail.xml @@ -603,19 +603,19 @@ android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" - app:layout_behavior="@string/appbar_scrolling_view_behavior" - android:paddingBottom="48dp"/> + android:paddingBottom="48dp" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + app:tabIconTint="?attr/colorAccent" + app:tabIndicatorGravity="top" /> @@ -627,6 +627,7 @@ android:layout_weight="3" /> + @@ -713,22 +714,22 @@ android:layout_width="40dp" android:layout_height="match_parent" android:background="?attr/selectableItemBackground" - android:padding="10dp" - android:scaleType="center" + android:contentDescription="@string/pause" android:focusable="true" android:focusedByDefault="true" - android:src="@drawable/ic_play_arrow" - tools:ignore="ContentDescription,RtlHardcoded" /> + android:scaleType="center" + android:src="@drawable/ic_play_arrow" /> + tools:ignore="RtlSymmetry" /> diff --git a/app/src/main/res/layout/fragment_video_detail.xml b/app/src/main/res/layout/fragment_video_detail.xml index be3504878..b407c5ca7 100644 --- a/app/src/main/res/layout/fragment_video_detail.xml +++ b/app/src/main/res/layout/fragment_video_detail.xml @@ -41,9 +41,9 @@ android:id="@+id/detail_thumbnail_image_view" android:layout_width="match_parent" android:layout_height="wrap_content" - android:minHeight="200dp" android:background="?windowBackground" android:contentDescription="@string/detail_thumbnail_view_description" + android:minHeight="200dp" android:scaleType="fitCenter" tools:ignore="RtlHardcoded" tools:layout_height="200dp" @@ -586,19 +586,19 @@ android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" - app:layout_behavior="@string/appbar_scrolling_view_behavior" - android:paddingBottom="48dp"/> + android:paddingBottom="48dp" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + app:tabIconTint="?attr/colorAccent" + app:tabIndicatorGravity="top" /> @@ -668,8 +668,6 @@ android:layout_height="60dp" android:layout_alignParentEnd="true" android:gravity="center_vertical" - android:paddingLeft="@dimen/video_item_search_padding" - android:paddingRight="@dimen/video_item_search_padding" android:theme="@style/ContrastTintTheme" tools:ignore="RtlHardcoded"> @@ -678,7 +676,7 @@ android:layout_width="40dp" android:layout_height="match_parent" android:background="?attr/selectableItemBackground" - android:padding="10dp" + android:contentDescription="@string/title_activity_play_queue" android:scaleType="center" android:src="@drawable/ic_list" tools:ignore="ContentDescription,RtlHardcoded" /> @@ -688,22 +686,22 @@ android:layout_width="40dp" android:layout_height="match_parent" android:background="?attr/selectableItemBackground" - android:padding="10dp" - android:scaleType="center" + android:contentDescription="@string/pause" android:focusable="true" android:focusedByDefault="true" - android:src="@drawable/ic_play_arrow" - tools:ignore="ContentDescription,RtlHardcoded" /> + android:scaleType="center" + android:src="@drawable/ic_play_arrow" /> + tools:ignore="RtlSymmetry" /> From b0516fbf1d84f55e683051a994bf06bc83d0d1e8 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 24 Jul 2022 09:11:59 +0530 Subject: [PATCH 037/147] Use BitmapCompat.createScaledBitmap(). --- .../seekbarpreview/SeekbarPreviewThumbnailHelper.java | 5 +++-- .../java/org/schabi/newpipe/player/ui/VideoPlayerUi.java | 4 +++- .../main/java/org/schabi/newpipe/util/PicassoHelper.java | 9 ++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java index 43d89055c..9eea89e78 100644 --- a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java +++ b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java @@ -8,6 +8,7 @@ import android.widget.ImageView; import androidx.annotation.IntDef; import androidx.annotation.NonNull; +import androidx.core.graphics.BitmapCompat; import androidx.core.math.MathUtils; import androidx.preference.PreferenceManager; @@ -91,8 +92,8 @@ public final class SeekbarPreviewThumbnailHelper { final float scaleFactor = (float) newWidth / srcWidth; final int newHeight = (int) (srcBitmap.getHeight() * scaleFactor); - currentSeekbarPreviewThumbnail.setImageBitmap( - Bitmap.createScaledBitmap(srcBitmap, newWidth, newHeight, true)); + currentSeekbarPreviewThumbnail.setImageBitmap(BitmapCompat.createScaledBitmap(srcBitmap, + newWidth, newHeight, null, true)); } catch (final Exception ex) { Log.e(TAG, "Failed to resize and set seekbar preview thumbnail", ex); currentSeekbarPreviewThumbnail.setVisibility(View.GONE); diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index 1709755f2..6eb97b8fa 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -42,6 +42,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.content.res.AppCompatResources; import androidx.appcompat.view.ContextThemeWrapper; import androidx.appcompat.widget.PopupMenu; +import androidx.core.graphics.BitmapCompat; import androidx.core.graphics.Insets; import androidx.core.math.MathUtils; import androidx.core.view.ViewCompat; @@ -455,10 +456,11 @@ public abstract class VideoPlayerUi extends PlayerUi } final float endScreenHeight = calculateMaxEndScreenThumbnailHeight(thumbnail); - final Bitmap endScreenBitmap = Bitmap.createScaledBitmap( + final Bitmap endScreenBitmap = BitmapCompat.createScaledBitmap( thumbnail, (int) (thumbnail.getWidth() / (thumbnail.getHeight() / endScreenHeight)), (int) endScreenHeight, + null, true); if (DEBUG) { diff --git a/app/src/main/java/org/schabi/newpipe/util/PicassoHelper.java b/app/src/main/java/org/schabi/newpipe/util/PicassoHelper.java index 2e781631e..ece0c7e87 100644 --- a/app/src/main/java/org/schabi/newpipe/util/PicassoHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/PicassoHelper.java @@ -9,6 +9,7 @@ import android.graphics.Bitmap; import android.util.Log; import androidx.annotation.Nullable; +import androidx.core.graphics.BitmapCompat; import com.squareup.picasso.Cache; import com.squareup.picasso.LruCache; @@ -139,21 +140,23 @@ public final class PicassoHelper { .getDimension(R.dimen.player_notification_thumbnail_width), source.getWidth()); - final Bitmap result = Bitmap.createScaledBitmap( + final Bitmap result = BitmapCompat.createScaledBitmap( source, (int) notificationThumbnailWidth, (int) (source.getHeight() / (source.getWidth() / notificationThumbnailWidth)), + null, true); - if (result == source) { + if (result == source || !result.isMutable()) { // create a new mutable bitmap to prevent strange crashes on some // devices (see #4638) - final Bitmap copied = Bitmap.createScaledBitmap( + final Bitmap copied = BitmapCompat.createScaledBitmap( source, (int) notificationThumbnailWidth - 1, (int) (source.getHeight() / (source.getWidth() / (notificationThumbnailWidth - 1))), + null, true); source.recycle(); return copied; From 8282b8a6c06a09d23a91d3879e7161a7bf67b1f3 Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Tue, 29 Nov 2022 11:20:31 -0500 Subject: [PATCH 038/147] Update Sonarqube to 3.5 --- .github/workflows/ci.yml | 2 +- app/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d9342e72a..5d12c5a7c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -126,4 +126,4 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: ./gradlew build sonarqube --info + run: ./gradlew build sonar --info diff --git a/app/build.gradle b/app/build.gradle index 206c830e7..72a03e063 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,7 @@ plugins { id "kotlin-kapt" id "kotlin-parcelize" id "checkstyle" - id "org.sonarqube" version "3.3" + id "org.sonarqube" version "3.5.0.2730" } android { @@ -169,7 +169,7 @@ afterEvaluate { preDebugBuild.dependsOn runCheckstyle, runKtlint } -sonarqube { +sonar { properties { property "sonar.projectKey", "TeamNewPipe_NewPipe" property "sonar.organization", "teamnewpipe" From a2f2d562f6a2d4e9382e5b212c1232db6df195cd Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Thu, 1 Dec 2022 13:01:58 +0100 Subject: [PATCH 039/147] Disabling night theme selection if auto theme is not used --- .../settings/AppearanceSettingsFragment.java | 14 ++++++-------- app/src/main/res/values/strings.xml | 1 + 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java index 550d64d06..72ce0f201 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java @@ -44,7 +44,12 @@ public class AppearanceSettingsFragment extends BasePreferenceFragment { return false; }); } else { - removePreference(nightThemeKey); + // disable the night theme selection + final Preference preference = findPreference(nightThemeKey); + if (preference != null) { + preference.setEnabled(false); + preference.setSummary(getString(R.string.night_theme_available)); + } } } @@ -61,13 +66,6 @@ public class AppearanceSettingsFragment extends BasePreferenceFragment { return super.onPreferenceTreeClick(preference); } - private void removePreference(final String preferenceKey) { - final Preference preference = findPreference(preferenceKey); - if (preference != null) { - getPreferenceScreen().removePreference(preference); - } - } - private void applyThemeChange(final String beginningThemeKey, final String themeKey, final Object newValue) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3fa37155a..68f5f67a4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -714,6 +714,7 @@ Automatic (device theme) Select your favorite night theme — %s You can select your favorite night theme below + This option is only available if Automatic (Device Theme) is selected for Theme Download has started You can now select text inside the description. Note that the page may flicker and links may not be clickable while in selection mode. Enable selecting text in the description From 074a8ff46a4011e12d1c1394c424590b44a3bced Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Fri, 2 Dec 2022 13:52:30 -0500 Subject: [PATCH 040/147] Update Desugaring to 1.1.8 --- app/build.gradle | 4 ++-- build.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 206c830e7..b5b6ba0bd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -179,7 +179,7 @@ sonarqube { dependencies { /** Desugaring **/ - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.6' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.8' /** NewPipe libraries **/ // You can use a local version by uncommenting a few lines in settings.gradle @@ -259,7 +259,7 @@ dependencies { implementation "io.noties.markwon:linkify:${markwonVersion}" // Crash reporting - implementation "ch.acra:acra-core:5.9.3" + implementation "ch.acra:acra-core:5.9.7" // Properly restarting implementation 'com.jakewharton:process-phoenix:2.1.2' diff --git a/build.gradle b/build.gradle index a0c1fdf27..d2f1dc4c5 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.3.0' + classpath 'com.android.tools.build:gradle:7.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong From 8fc5fa979db75bff71f4cd3d0f32e6289afe283a Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Sat, 3 Dec 2022 09:52:04 +0100 Subject: [PATCH 041/147] Added menu with tappable list items --- .../playlist/model/PlaylistEntity.java | 1 + .../local/bookmark/BookmarkFragment.java | 33 +++++++++++++++++++ .../local/playlist/LocalPlaylistFragment.java | 5 ++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java b/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java index 71abf2732..37e79f060 100644 --- a/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java +++ b/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java @@ -15,6 +15,7 @@ public class PlaylistEntity { public static final String PLAYLIST_ID = "uid"; public static final String PLAYLIST_NAME = "name"; public static final String PLAYLIST_THUMBNAIL_URL = "thumbnail_url"; + //TODO: add field @PrimaryKey(autoGenerate = true) @ColumnInfo(name = PLAYLIST_ID) diff --git a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java index be7414542..2170f7d97 100644 --- a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java @@ -1,5 +1,6 @@ package org.schabi.newpipe.local.bookmark; +import android.content.DialogInterface; import android.os.Bundle; import android.os.Parcelable; import android.text.InputType; @@ -23,6 +24,7 @@ import org.schabi.newpipe.database.playlist.PlaylistLocalItem; import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry; import org.schabi.newpipe.database.playlist.model.PlaylistRemoteEntity; import org.schabi.newpipe.databinding.DialogEditTextBinding; +import org.schabi.newpipe.databinding.DialogTitleBinding; import org.schabi.newpipe.error.ErrorInfo; import org.schabi.newpipe.error.UserAction; import org.schabi.newpipe.local.BaseLocalListFragment; @@ -256,6 +258,37 @@ public final class BookmarkFragment extends BaseLocalListFragment { + switch (index) { + case 0: showRenameDialog(selectedItem); + break; + case 1: + break; + case 2: + break; + } + }; + + //TODO add rename dialog + + final AlertDialog.Builder builder = new AlertDialog.Builder(activity); + + builder.setItems(items, action) + .create() + .show(); + } + + private void showRenameDialog(final PlaylistMetadataEntry selectedItem) { final DialogEditTextBinding dialogBinding = DialogEditTextBinding.inflate(getLayoutInflater()); dialogBinding.dialogEditText.setHint(R.string.name); diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index d98ce4121..66e7cbf8f 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -406,6 +406,7 @@ public class LocalPlaylistFragment extends BaseLocalListFragment notWatchedItems = new ArrayList<>(); boolean thumbnailVideoRemoved = false; + //TODO: add blocker here if (removePartiallyWatched) { for (final var playlistItem : playlist) { @@ -590,6 +591,8 @@ public class LocalPlaylistFragment extends BaseLocalListFragment Date: Sun, 4 Dec 2022 00:15:40 +0100 Subject: [PATCH 042/147] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Hindi) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Korean) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (French) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Norwegian Nynorsk) Currently translated at 9.1% (59 of 646 strings) Translated using Weblate (Punjabi (Pakistan)) Currently translated at 19.6% (127 of 646 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 99.0% (640 of 646 strings) Translated using Weblate (Arabic (Libya)) Currently translated at 5.5% (4 of 72 strings) Translated using Weblate (Hindi) Currently translated at 18.0% (13 of 72 strings) Translated using Weblate (Hungarian) Currently translated at 11.1% (8 of 72 strings) Translated using Weblate (Portuguese) Currently translated at 69.4% (50 of 72 strings) Translated using Weblate (Filipino) Currently translated at 5.5% (4 of 72 strings) Translated using Weblate (Filipino) Currently translated at 35.9% (232 of 646 strings) Translated using Weblate (Catalan) Currently translated at 95.9% (620 of 646 strings) Translated using Weblate (Hindi) Currently translated at 78.7% (509 of 646 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Portuguese (Portugal)) Currently translated at 69.4% (50 of 72 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Odia) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Persian) Currently translated at 61.1% (44 of 72 strings) Translated using Weblate (Russian) Currently translated at 41.6% (30 of 72 strings) Translated using Weblate (Persian) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Norwegian Nynorsk) Currently translated at 6.1% (40 of 646 strings) Translated using Weblate (Odia) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Odia) Currently translated at 2.7% (2 of 72 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (French) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Odia) Currently translated at 30.1% (195 of 646 strings) Translated using Weblate (Russian) Currently translated at 41.6% (30 of 72 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 92.2% (596 of 646 strings) Translated using Weblate (Hindi) Currently translated at 69.6% (450 of 646 strings) Added translation using Weblate (Norwegian Nynorsk) Translated using Weblate (Georgian) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Icelandic) Currently translated at 99.0% (640 of 646 strings) Translated using Weblate (Punjabi) Currently translated at 6.9% (5 of 72 strings) Translated using Weblate (German) Currently translated at 62.5% (45 of 72 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (646 of 646 strings) Translated using Weblate (Georgian) Currently translated at 20.1% (130 of 646 strings) Translated using Weblate (Georgian) Currently translated at 98.6% (71 of 72 strings) Added translation using Weblate (Georgian) Co-authored-by: AudricV Co-authored-by: Boros Zsombor Co-authored-by: Cyndaquissshhh Co-authored-by: Emin Tufan Çetin Co-authored-by: GET100PERCENT Co-authored-by: Gediminas Murauskas Co-authored-by: Hoseok Seo Co-authored-by: Hosted Weblate Co-authored-by: Ihor Hordiichuk Co-authored-by: JY3 Co-authored-by: L-M-H Co-authored-by: M. Ll Co-authored-by: M4SK Co-authored-by: Nahla Hamdi Co-authored-by: Net Co-authored-by: Nikoloz Co-authored-by: Pedro Henrique Vilela do Nascimento Co-authored-by: Platon Terekhov Co-authored-by: Ray Co-authored-by: ShareASmile Co-authored-by: Trendyne Co-authored-by: VfBFan Co-authored-by: Weblate Co-authored-by: bgo-eiu Co-authored-by: gallegonovato Co-authored-by: qqqq1 Co-authored-by: ssantos Co-authored-by: tryvseu Co-authored-by: Артём Нефедов Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar_LY/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fa/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fil/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hu/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ka/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/or/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_PT/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ru/ Translation: NewPipe/Metadata --- app/src/main/res/values-az/strings.xml | 238 +++--- app/src/main/res/values-ca/strings.xml | 44 +- app/src/main/res/values-fa/strings.xml | 8 +- app/src/main/res/values-fil/strings.xml | 30 +- app/src/main/res/values-fr/strings.xml | 26 +- app/src/main/res/values-hi/strings.xml | 290 +++++-- app/src/main/res/values-is/strings.xml | 6 +- app/src/main/res/values-ka/strings.xml | 725 ++++++++++++++++++ app/src/main/res/values-ko/strings.xml | 2 +- app/src/main/res/values-lt/strings.xml | 6 +- app/src/main/res/values-nb-rNO/strings.xml | 76 +- app/src/main/res/values-nn/strings.xml | 66 ++ app/src/main/res/values-or/strings.xml | 682 +++++++++++++++- app/src/main/res/values-pa-rPK/strings.xml | 7 + app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 6 +- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rHK/strings.xml | 3 +- .../android/ar_LY/short_description.txt | 2 +- .../metadata/android/de/changelogs/730.txt | 2 +- .../metadata/android/de/changelogs/910.txt | 2 +- .../metadata/android/es/changelogs/991.txt | 13 + .../metadata/android/fa/changelogs/870.txt | 2 + .../metadata/android/fa/changelogs/910.txt | 1 + .../metadata/android/fil/changelogs/63.txt | 14 +- .../metadata/android/hi/changelogs/953.txt | 1 + .../metadata/android/hi/changelogs/954.txt | 8 + .../metadata/android/hi/changelogs/955.txt | 6 +- .../metadata/android/hi/changelogs/956.txt | 1 + .../metadata/android/hi/changelogs/957.txt | 10 + .../metadata/android/hi/changelogs/958.txt | 15 + .../metadata/android/hi/changelogs/959.txt | 5 + .../metadata/android/hi/changelogs/960.txt | 4 + .../metadata/android/hi/changelogs/961.txt | 12 + .../metadata/android/hi/changelogs/962.txt | 2 + .../metadata/android/hu/changelogs/991.txt | 13 + .../metadata/android/ka/changelogs/63.txt | 8 + .../metadata/android/ka/changelogs/64.txt | 8 + .../metadata/android/ka/changelogs/65.txt | 26 + .../metadata/android/ka/changelogs/66.txt | 33 + .../metadata/android/ka/changelogs/68.txt | 31 + .../metadata/android/ka/changelogs/69.txt | 19 + .../metadata/android/ka/changelogs/70.txt | 25 + .../metadata/android/ka/changelogs/71.txt | 10 + .../metadata/android/ka/changelogs/730.txt | 2 + .../metadata/android/ka/changelogs/740.txt | 23 + .../metadata/android/ka/changelogs/750.txt | 22 + .../metadata/android/ka/changelogs/760.txt | 43 ++ .../metadata/android/ka/changelogs/770.txt | 4 + .../metadata/android/ka/changelogs/780.txt | 12 + .../metadata/android/ka/changelogs/790.txt | 14 + .../metadata/android/ka/changelogs/800.txt | 27 + .../metadata/android/ka/changelogs/810.txt | 19 + .../metadata/android/ka/changelogs/820.txt | 1 + .../metadata/android/ka/changelogs/830.txt | 1 + .../metadata/android/ka/changelogs/840.txt | 22 + .../metadata/android/ka/changelogs/850.txt | 1 + .../metadata/android/ka/changelogs/860.txt | 7 + .../metadata/android/ka/changelogs/870.txt | 2 + .../metadata/android/ka/changelogs/900.txt | 14 + .../metadata/android/ka/changelogs/910.txt | 1 + .../metadata/android/ka/changelogs/920.txt | 9 + .../metadata/android/ka/changelogs/930.txt | 19 + .../metadata/android/ka/changelogs/940.txt | 16 + .../metadata/android/ka/changelogs/950.txt | 4 + .../metadata/android/ka/changelogs/951.txt | 17 + .../metadata/android/ka/changelogs/952.txt | 7 + .../metadata/android/ka/changelogs/953.txt | 1 + .../metadata/android/ka/changelogs/954.txt | 9 + .../metadata/android/ka/changelogs/955.txt | 3 + .../metadata/android/ka/changelogs/956.txt | 1 + .../metadata/android/ka/changelogs/957.txt | 10 + .../metadata/android/ka/changelogs/958.txt | 15 + .../metadata/android/ka/changelogs/959.txt | 3 + .../metadata/android/ka/changelogs/960.txt | 4 + .../metadata/android/ka/changelogs/961.txt | 12 + .../metadata/android/ka/changelogs/962.txt | 2 + .../metadata/android/ka/changelogs/963.txt | 1 + .../metadata/android/ka/changelogs/964.txt | 8 + .../metadata/android/ka/changelogs/965.txt | 6 + .../metadata/android/ka/changelogs/966.txt | 14 + .../metadata/android/ka/changelogs/967.txt | 1 + .../metadata/android/ka/changelogs/968.txt | 7 + .../metadata/android/ka/changelogs/969.txt | 8 + .../metadata/android/ka/changelogs/970.txt | 11 + .../metadata/android/ka/changelogs/971.txt | 3 + .../metadata/android/ka/changelogs/972.txt | 14 + .../metadata/android/ka/changelogs/973.txt | 4 + .../metadata/android/ka/changelogs/974.txt | 5 + .../metadata/android/ka/changelogs/975.txt | 17 + .../metadata/android/ka/changelogs/976.txt | 10 + .../metadata/android/ka/changelogs/977.txt | 10 + .../metadata/android/ka/changelogs/978.txt | 1 + .../metadata/android/ka/changelogs/979.txt | 2 + .../metadata/android/ka/changelogs/980.txt | 13 + .../metadata/android/ka/changelogs/981.txt | 2 + .../metadata/android/ka/changelogs/982.txt | 1 + .../metadata/android/ka/changelogs/983.txt | 9 + .../metadata/android/ka/changelogs/984.txt | 7 + .../metadata/android/ka/changelogs/985.txt | 1 + .../metadata/android/ka/changelogs/986.txt | 16 + .../metadata/android/ka/changelogs/987.txt | 12 + .../metadata/android/ka/changelogs/988.txt | 2 + .../metadata/android/ka/changelogs/989.txt | 3 + .../metadata/android/ka/changelogs/990.txt | 15 + .../metadata/android/ka/changelogs/991.txt | 13 + .../metadata/android/ka/full_description.txt | 1 + .../metadata/android/ka/short_description.txt | 1 + .../metadata/android/or/full_description.txt | 1 + .../metadata/android/pa/changelogs/991.txt | 13 + .../metadata/android/pt-PT/changelogs/990.txt | 14 + .../metadata/android/pt-PT/changelogs/991.txt | 13 + .../metadata/android/pt/changelogs/65.txt | 2 +- .../metadata/android/pt/changelogs/951.txt | 2 + .../metadata/android/ru/changelogs/730.txt | 2 + .../metadata/android/ru/changelogs/740.txt | 23 + .../metadata/android/ru/changelogs/750.txt | 22 + .../metadata/android/ru/changelogs/780.txt | 2 +- .../metadata/android/ru/changelogs/820.txt | 1 + .../metadata/android/ru/changelogs/830.txt | 1 + .../metadata/android/ru/changelogs/850.txt | 1 + .../metadata/android/ru/changelogs/910.txt | 1 + .../metadata/android/ru/changelogs/963.txt | 1 + 123 files changed, 2882 insertions(+), 274 deletions(-) create mode 100644 app/src/main/res/values-ka/strings.xml create mode 100644 app/src/main/res/values-nn/strings.xml create mode 100644 fastlane/metadata/android/es/changelogs/991.txt create mode 100644 fastlane/metadata/android/fa/changelogs/870.txt create mode 100644 fastlane/metadata/android/fa/changelogs/910.txt create mode 100644 fastlane/metadata/android/hi/changelogs/953.txt create mode 100644 fastlane/metadata/android/hi/changelogs/954.txt create mode 100644 fastlane/metadata/android/hi/changelogs/956.txt create mode 100644 fastlane/metadata/android/hi/changelogs/957.txt create mode 100644 fastlane/metadata/android/hi/changelogs/958.txt create mode 100644 fastlane/metadata/android/hi/changelogs/959.txt create mode 100644 fastlane/metadata/android/hi/changelogs/960.txt create mode 100644 fastlane/metadata/android/hi/changelogs/961.txt create mode 100644 fastlane/metadata/android/hi/changelogs/962.txt create mode 100644 fastlane/metadata/android/hu/changelogs/991.txt create mode 100644 fastlane/metadata/android/ka/changelogs/63.txt create mode 100644 fastlane/metadata/android/ka/changelogs/64.txt create mode 100644 fastlane/metadata/android/ka/changelogs/65.txt create mode 100644 fastlane/metadata/android/ka/changelogs/66.txt create mode 100644 fastlane/metadata/android/ka/changelogs/68.txt create mode 100644 fastlane/metadata/android/ka/changelogs/69.txt create mode 100644 fastlane/metadata/android/ka/changelogs/70.txt create mode 100644 fastlane/metadata/android/ka/changelogs/71.txt create mode 100644 fastlane/metadata/android/ka/changelogs/730.txt create mode 100644 fastlane/metadata/android/ka/changelogs/740.txt create mode 100644 fastlane/metadata/android/ka/changelogs/750.txt create mode 100644 fastlane/metadata/android/ka/changelogs/760.txt create mode 100644 fastlane/metadata/android/ka/changelogs/770.txt create mode 100644 fastlane/metadata/android/ka/changelogs/780.txt create mode 100644 fastlane/metadata/android/ka/changelogs/790.txt create mode 100644 fastlane/metadata/android/ka/changelogs/800.txt create mode 100644 fastlane/metadata/android/ka/changelogs/810.txt create mode 100644 fastlane/metadata/android/ka/changelogs/820.txt create mode 100644 fastlane/metadata/android/ka/changelogs/830.txt create mode 100644 fastlane/metadata/android/ka/changelogs/840.txt create mode 100644 fastlane/metadata/android/ka/changelogs/850.txt create mode 100644 fastlane/metadata/android/ka/changelogs/860.txt create mode 100644 fastlane/metadata/android/ka/changelogs/870.txt create mode 100644 fastlane/metadata/android/ka/changelogs/900.txt create mode 100644 fastlane/metadata/android/ka/changelogs/910.txt create mode 100644 fastlane/metadata/android/ka/changelogs/920.txt create mode 100644 fastlane/metadata/android/ka/changelogs/930.txt create mode 100644 fastlane/metadata/android/ka/changelogs/940.txt create mode 100644 fastlane/metadata/android/ka/changelogs/950.txt create mode 100644 fastlane/metadata/android/ka/changelogs/951.txt create mode 100644 fastlane/metadata/android/ka/changelogs/952.txt create mode 100644 fastlane/metadata/android/ka/changelogs/953.txt create mode 100644 fastlane/metadata/android/ka/changelogs/954.txt create mode 100644 fastlane/metadata/android/ka/changelogs/955.txt create mode 100644 fastlane/metadata/android/ka/changelogs/956.txt create mode 100644 fastlane/metadata/android/ka/changelogs/957.txt create mode 100644 fastlane/metadata/android/ka/changelogs/958.txt create mode 100644 fastlane/metadata/android/ka/changelogs/959.txt create mode 100644 fastlane/metadata/android/ka/changelogs/960.txt create mode 100644 fastlane/metadata/android/ka/changelogs/961.txt create mode 100644 fastlane/metadata/android/ka/changelogs/962.txt create mode 100644 fastlane/metadata/android/ka/changelogs/963.txt create mode 100644 fastlane/metadata/android/ka/changelogs/964.txt create mode 100644 fastlane/metadata/android/ka/changelogs/965.txt create mode 100644 fastlane/metadata/android/ka/changelogs/966.txt create mode 100644 fastlane/metadata/android/ka/changelogs/967.txt create mode 100644 fastlane/metadata/android/ka/changelogs/968.txt create mode 100644 fastlane/metadata/android/ka/changelogs/969.txt create mode 100644 fastlane/metadata/android/ka/changelogs/970.txt create mode 100644 fastlane/metadata/android/ka/changelogs/971.txt create mode 100644 fastlane/metadata/android/ka/changelogs/972.txt create mode 100644 fastlane/metadata/android/ka/changelogs/973.txt create mode 100644 fastlane/metadata/android/ka/changelogs/974.txt create mode 100644 fastlane/metadata/android/ka/changelogs/975.txt create mode 100644 fastlane/metadata/android/ka/changelogs/976.txt create mode 100644 fastlane/metadata/android/ka/changelogs/977.txt create mode 100644 fastlane/metadata/android/ka/changelogs/978.txt create mode 100644 fastlane/metadata/android/ka/changelogs/979.txt create mode 100644 fastlane/metadata/android/ka/changelogs/980.txt create mode 100644 fastlane/metadata/android/ka/changelogs/981.txt create mode 100644 fastlane/metadata/android/ka/changelogs/982.txt create mode 100644 fastlane/metadata/android/ka/changelogs/983.txt create mode 100644 fastlane/metadata/android/ka/changelogs/984.txt create mode 100644 fastlane/metadata/android/ka/changelogs/985.txt create mode 100644 fastlane/metadata/android/ka/changelogs/986.txt create mode 100644 fastlane/metadata/android/ka/changelogs/987.txt create mode 100644 fastlane/metadata/android/ka/changelogs/988.txt create mode 100644 fastlane/metadata/android/ka/changelogs/989.txt create mode 100644 fastlane/metadata/android/ka/changelogs/990.txt create mode 100644 fastlane/metadata/android/ka/changelogs/991.txt create mode 100644 fastlane/metadata/android/ka/full_description.txt create mode 100644 fastlane/metadata/android/ka/short_description.txt create mode 100644 fastlane/metadata/android/or/full_description.txt create mode 100644 fastlane/metadata/android/pa/changelogs/991.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/990.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/991.txt create mode 100644 fastlane/metadata/android/ru/changelogs/730.txt create mode 100644 fastlane/metadata/android/ru/changelogs/740.txt create mode 100644 fastlane/metadata/android/ru/changelogs/750.txt create mode 100644 fastlane/metadata/android/ru/changelogs/820.txt create mode 100644 fastlane/metadata/android/ru/changelogs/830.txt create mode 100644 fastlane/metadata/android/ru/changelogs/850.txt create mode 100644 fastlane/metadata/android/ru/changelogs/910.txt create mode 100644 fastlane/metadata/android/ru/changelogs/963.txt diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index c13cef94c..2d6f4e9c6 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -10,7 +10,7 @@ Paylaş Endir Yayım faylını endir - Axtar + Axtarış Tənzimləmələr Bunu nəzərdə tuturdunuz: \"%1$s\"\? ilə paylaş @@ -24,7 +24,7 @@ Abunəliklər Əlfəcinlənmiş Pleylistlər Yeniliklər - Arxa Fon + Fon Video endirmə qovluğu Endirilmiş video fayllar burada saxlanılır Video faylları üçün endirmə qovluğunu seç @@ -47,23 +47,23 @@ Abunəlikdən çıxın Ani pəncərə rejimində aç Avtomatik oynatma - Endirin - Fasilələrdən sonra (məsələn, telefon zəngləri) oynatmağa davam etdirin + Endir + Fasilələrdən sonra (məsələn, telefon zəngləri) oynatmağa davam etdir Oynatmanı davam etdir Baxılmış videoların saxlanılması - Məlumat təmizləmə - Siyahılarda oynatma mövqelərini göstərin + Məlumat təmizlə + Siyahılarda oynatma mövqelərini göstər Siyahılardakı mövqelər - Son oynatma mövqeyinə qaytarın + Son oynatma mövqeyinə qaytar Oynatmanı davam etdir Baxış tarixçəsi - Axtarış sorğularını yerli olaraq saxlayın + Axtarış sorğularını yerli olaraq saxla Axtarış tarixçəsi - Axtarış edərkən göstəriləcək təklifləri seçin + Axtarış edərkən göstəriləcək təklifləri seç Axtarış təklifləri - Oynadıcının parlaqlığını nizamlamaq üçün jestlərdən istifadə edin + Oynadıcının parlaqlığını nizamlamaq üçün jestlərdən istifadə et Parlaqlığı jestlə nizamlama - Oynadıcının səsini nizamlamaq üçün jestlərdən istifadə edin + Oynadıcının səsini nizamlamaq üçün jestlərdən istifadə et Səsi jestlə nizamla Avto-növbələmə Növbəti Yayımı Avto-növbələmə @@ -76,7 +76,7 @@ Aktiv oynadıcının növbəsi dəyişdiriləcək Bir oynadıcıdan digərinə keçid növbənizi dəyişdirə bilər Növbəni təmizləməzdən əvvəl təsdiq üçün soruş - Sürətli qeyri-dəqiq axtarışdan istifadə edin + Sürətli qeyri-dəqiq axtarışdan istifadə et Qeyri-dəqiq axtarış oynadıcıya azaldılmış dəqiqliklə mövqeləri daha sürətli axtarmağa imkan verir. 5, 15 və ya 25 saniyəlik axtarış bununla işləmir Sürətli irəli/geri çəkmə axtarış müddəti Heç nə @@ -98,8 +98,8 @@ Nəticələr göstərilir: %s Kanallar %s tərəfindən - YouTube\'un \"Məhdud Rejimi\"ni açın - Yaş həddi səbəbiylə (məsələn, 18+) uşaqlar üçün uyğun olmayan məzmunu göstərin + YouTube\'un \"Məhdud Rejimi\"ni aç + Yaş həddi səbəbiylə (məsələn, 18+) uşaqlar üçün uyğun olmayan məzmunu göstər Yaş məhdudiyyətli məzmunu göstər Məzmun Ani pəncərədə oynadılır @@ -118,28 +118,28 @@ \"Növbəyə əlavə etmək üçün basılı saxla\" ipucusun göstər \"Növbəti\" və \"Bənzər\" videoları göstər Tarixçəni, abunəlikləri, pleylistləri və tənzimləmələri ixrac edin - Cari tarixçənizi, abunəliklərinizi, pleylistlərinizi və (istəyə görə) tənzimləmələrinizi etibarsız edir + Cari tarixçənizi, abunəliklərinizi, pleylistlərinizi və (könüllü) tənzimləmələrinizi etibarsız edir reCAPTCHA kukiləri təmizləndi - reCAPTCHA kukilərini təmizləyin - Məlumat bazasını ixrac edin - Məlumat bazasını idxal edin + reCAPTCHA kukilərini təmizlə + Məlumat bazasını ixrac et + Məlumat bazasını idxal et Əsas Görünüşə Keçid Ani Pəncərəyə Keçid - Arxa Fona Keçid + Fona Keçid [Naməlum] Yeni \"NewPipe\" versiyası üçün bildirişlər Tətbiq yeniləmə bildirişi NewPipe oynadıcısı üçün bildirişlər Hamısı Xəta hesabatı - Endirmələr - Endirmələr + Endirilənlər + Endirilənlər Canlı Bu video yaş məhdudiyyətlidir. \n \nOnu görmək istəyirsinizsə, tənzimləmələrdə \"%1$s\" seçimini aktivləşdirin. YouTube potensial yetkin məzmunu gizlədən \"Məhdud Rejim\" təmin edir - \"PeerTube\" serverləri + \"PeerTube\" nümunələri Miniatürləri yüklə Siz yığcam bildirişdə göstərilməsi üçün ən çoxu üç fəaliyyət seçə bilərsiniz! Həmişə yenilə @@ -166,7 +166,7 @@ Fayl silindi Geri qaytar Ən yaxşı keyfiyyət - Təmizləyin + Təmizlə Qeyri-aktivdir Sənətkarlar Albomlar @@ -184,8 +184,8 @@ Axtarış tarixçəsini silin Oynatma mövqeləri silindi Bütün oynatma mövqeləri silinsin\? - Bütün oynatma mövqelərini siləcək - Oynatma mövqelərini silin + Bütün oynatma mövqelərini silir + Oynatma mövqelərini sil Baxış tarixçəsi silindi Bütün baxış tarixçəsi silinsin\? Baxış tarixçəsini təmizlə @@ -193,11 +193,11 @@ %s tərəfindən yaradıldı Yaxınlaşdır Doldur - Dart + Uyğunlaşdır Altyazı Yoxdur - Silin + Sil Hələ ki, kanal abunəliyi yoxdur - Kanal seçin + Kanal seç Kanal Səhifəsi Defolt Köşk Köşk Səhifəsi @@ -210,7 +210,7 @@ Limitsiz 1 element silindi. Server əlavə edin - Sevimli \"PeerTube\" serverlərinizi seçin + Sevimli \"PeerTube\" nümunələrinizi seçin Endirilmiş faylları silin Endirmə tarixçənizi təmizləmək və ya endirilmiş bütün faylları silmək istəyirsiniz\? Endirmə tarixçəsini təmizlə @@ -282,7 +282,7 @@ Açıqlama Burada kriketlərdən başqa heç nə yoxdur Nəticə yoxdur - İlkin tənzimləmələri qaytarın + İlkin tənzimləmələri qaytar Fayl köçürüldü və ya silindi Oynadıcı xətası bərpa edilir Bərpa olunmayan oynatma xətası baş verdi @@ -290,48 +290,48 @@ Bu video yaş məhdudiyyətlidir. \nYaş məhdudiyyəti olan videolarla bağlı yeni YouTube siyasətlərinə görə, NewPipe bu cür video yayımlara daxil ola və oynada bilməz. Səs yayımı tapılmadı - Digər tətbiqlərin üzərində göstərməyə icazə verin + Digər tətbiqlərin üzərində göstərməyə icazə ver İlkin tənzimləmələri qaytarmaq istəyirsiniz\? Miniatürlərin yüklənməsini, dataya qənaət etmək və yaddaşdan istifadəni azaltmaq üçün söndürün. Dəyişikliklər həm yaddaşdaxili, həm də diskdə olan təsvir keşini təmizləyir Növbətini sıraya salın - Yenidən Cəhd Edin - Cari oynatma yayımı bildirişini konfiqurasiya edin + Yenidən Cəhd Et + Cari oynatma yayımı bildirişini konfiqurasiya et Bildirişlər Video fayl xülasəsi bildirişi Abunəliklər üçün yeni yayımlar haqqında bildirişlər Xəta hesabatları üçün bildirişlər Fayl adı boş ola bilməz Yadda saxlanmış tabları oxumaq mümkün olmadı, buna görə defolt tablardan istifadə edin - NewPipe xəta ilə qarşılaşdı, bildirmək üçün toxunun + NewPipe xəta ilə qarşılaşdı, bildirmək üçün toxun Bağışlayın, belə olmamalı idi. Bu xətanı e-poçt vasitəsilə bildirin - GitHub\'da Hesabat Verin + GitHub\'da Hesabat Ver Zəhmət olmasa, xətanızı müzakirə edən məsələnin mövcud olub-olmadığını yoxlayın. Dublikat biletləri yaradarkən, bizdən faktiki səhvi düzəltməyə sərf edəcəyimiz vaxt alırsınız. - Hesabat Bildirin + Hesabat Bildir Məlumat: Nə baş verdi: Yükləyənin avatar miniatürü - Bəyəni - Bəyənməmə - Yenidən sıralamaq üçün sürüşdürün - m - M - M - Xidməti dəyişin,hazırda seçilmiş: + Bəyən + Bəyənmə + Yenidən sıralamaq üçün sürüşdür + min + Mln + Mlrd + Xidməti dəyiş, hazırda seçilmiş: Abunəçi yoxdur Baxış yoxdur Heç kim izləmir Heç kim dinləmir Video yoxdur Şərhlər qeyri-aktivdir - Başladın + Başlat Dayandır Təsdiqləmə İmtina Xəta - Detallar üçün toxunun + Detallar üçün toxun Zəhmət olmasa, gözləyin… - Hələ endirmə qovluğu təyin edilməyib, indi defolt endirmə qovluğunu seçin + Hələ endirmə qovluğu təyin edilməyib, indi defolt endirmə qovluğunu seç reCAPTCHA çağırışı reCAPTCHA sorğusu göndərildi Bitdi @@ -340,21 +340,21 @@ Ən xüsusi simvollar Üçüncü Tərəf Lisenziyaları Haqqında & T-TSS - Töhfə Verin + Töhfə Ver Fikirlərinizin olub-olmaması, tərcümə, dizayn dəyişiklikləri, kodun təmizlənməsi və ya real ağırlıqlı kod dəyişiklikləri və.s kömək həmişə xoşdur. Nə qədər çox edilsə, bir o qədər yaxşı olar! - İanə Edin + İanə Et Veb sayt Əlavə məlumat və xəbərlər üçün NewPipe Veb saytına daxil olun. NewPipe\'ın Məxfilik Siyasəti NewPipe layihəsi məxfiliyinizə çox ciddi yanaşır. Buna görə də, tətbiq sizin razılığınız olmadan heç bir məlumat toplamır. \nNewPipe\'ın məxfilik siyasəti qəza hesabatı göndərdiyiniz zaman hansı məlumatların göndərildiyini və saxlanıldığını ətraflı izah edir. - Məxfilik siyasətini oxuyun + Məxfilik siyasətini oxu NewPipe\'ın Lisenziyası Tarixçə Bu elementi axtarış tarixçəsindən silmək istəyirsiniz\? Son Oynadılan Ən Çox Oynadılan - Köşk seçin + Köşk seç İdxal edildi Etibarlı ZIP faylı yoxdur Xəbərdarlıq: Bütün faylları idxal etmək mümkün olmadı. @@ -367,15 +367,15 @@ Konfranslar Oynatma növbəsi Detallar - Kanal təfərrüatlarını göstərin - Ani pəncərədə oynatmağa başlayın + Kanal təfərrüatlarını göstər + Ani pəncərədə oynatmağa başla \"Açıq\" fəaliyyətə üstünlük verilir - Arxa Fon oynadıcı - Həmişə soruşun + Fon oynadıcı + Həmişə soruş Tələb olunan məzmun yüklənir Yeni Pleylist - Adını dəyişdirin - Pleylistə əlavə edin + Adını dəyişdir + Pleylistə əlavə et Emal edilir... Bir az vaxt ala bilər Səsi aç Pleylisti Əlfəcinlə @@ -388,10 +388,10 @@ Altyazılar LeakCanary yoxdur Yaddaş sızmasının monitorinqi yığın boşaltma zamanı tətbiqin cavab verməməsinə səbəb ola bilər - Yaddaş sızmalarını göstərin - Utilizasiyadan sonra fraqment və ya fəaliyyətin yaşam dövründən kənarda çatdırıla bilməyən Rx istisnaları barədə hesabat verməyə məcbur edin + Yaddaş sızmalarını göstər + Utilizasiyadan sonra fraqment və ya fəaliyyətin yaşam dövründən kənarda çatdırıla bilməyən Rx istisnaları barədə hesabat verməyə məcbur et Xidmətlərdən alınmış orijinal mətnlər yayım elementlərində görünəcək - Yeni yayımları yoxlayın + Yeni yayımları yoxla URL və ya ID\'nizi daxil etməklə SoundCloud profilini idxal edin: \n \n1. Veb-brauzerdə \"iş masası rejimini\" aktiv edin (sayt mobil cihazlar üçün mövcud deyil) @@ -402,18 +402,18 @@ Unutmayın ki, bu əməliyyat şəbəkəyə ağır yük ola bilər. \n \nDavam etmək istəyirsiniz\? - Sükut zamanı sürətlə irəlilə + Səssizlik zamanı sürətlə irəli Yeni yayım bildirişləri Abunəliklərdən yeni yayımlar haqqında bildiriş göndər Yoxlama tezliyi Tələb olunan şəbəkə bağlantısı İstənilən şəbəkə - Tətbiq keçidində kiçildin - Arxa Fon oynadıcısına kiçildin - Ani-pəncərə oynadıcısına kiçildin - Oynatmağa avtomatik başlayın — %s - Aşağı keyfiyyətli (daha kiçik) - Göstərməyin + Tətbiq keçidində kiçilt + Fon oynadıcısına kiçilt + Ani-pəncərə oynadıcısına kiçilt + Oynatmanı avtomatik başlat — %s + Aşağı keyfiyyət (daha kiçik) + Göstərmə Endirmə uğursuz oldu Server çox iş parçalı endirmələri qəbul etmir, @string/msg_threads = 1 ilə yenidən cəhd edin Bütün endirilmiş fayllar diskdən silinsin\? @@ -427,7 +427,7 @@ Bu məzmun hələ NewPipe tərəfindən dəstəklənmir. \n \nÜmid edirik ki, gələcək versiyada dəstəklənəcək. - Həm kilid ekranı fonu, həm də bildirişlər üçün miniatürdən istifadə edin + Həm kilid ekranı fonu, həm də bildirişlər üçün miniatürdən istifadə et Ən Yeni Bu məzmun ölkənizdə mövcud deyil. Bu məzmun yalnız ödəniş etmiş istifadəçilər üçün əlçatandır, ona görə də NewPipe tərəfindən yayımlana və ya endirilə bilməz. @@ -435,18 +435,18 @@ Sevimli gecə mövzunuzu seçin — %s Sabitlənmiş şərh Bildirişlər deaktiv edilib - Bildiriş alın + Bildiriş al Artıq bu kanala abunə oldunuz , - Hamısını dəyişdirin + Hamısını dəyişdir Fayl adı - Həll edin + Həll et Abunəlikləri ixrac etmək mümkün olmadı %s izləyici %s izləyici - Yeni versiyaları əlinizlə yoxlayın + Yeni versiyaları əl ilə yoxla %s dinləyici %s dinləyici @@ -455,7 +455,7 @@ %s video %s video - Yeniləmələri yoxlayın + Yeniləmələri yoxla Axtarış çubuğunun miniatür önizləməsi Əməliyyat sistem tərəfindən ləğv edildi Avto @@ -467,37 +467,37 @@ Kanalın avatar miniatürü Sevdiyiniz gecə mövzusunu aşağıda seçə bilərsiniz Android\'in bildiriş rəngini miniatürdəki əsas rəngə uyğun fərdiləşdirməsini təmin et (qeyd edək ki, bu, bütün cihazlarda mövcud deyil) - GitHub\'da Baxın - İanə Edin + GitHub\'da Bax + İanə Et NewPipe, sizə ən yaxşı istifadəçi təcrübəsini göstərmək üçün boş vaxtlarını sərf edən könüllülər tərəfindən hazırlanmışdır. Tərtibatçılara bir fincan qəhvə içərkən NewPipe-ı daha da yaxşılaşdırmağa ianə etməklə kömək edin. Ən çox bəyənildi Növbəyə salındı Məzmunu açarkən defolt hərəkət — %s Ad - Pleylist miniatürü kimi təyin edin + Pleylist miniatürü kimi təyin et Yalnız Wi-Fi\'da Heç vaxt Siyahı görünüş rejimi Siyahı - Tor - Yüksək keyfiyyətli (daha böyük) - Gözlənilir - növbədə - son proseslər tətbiq olunur + Şəbəkə + Yüksək keyfiyyət (daha böyük) + Gözlənilən + növbədədir + sonrakı emal olunur Yeniləmələr yoxlanılır… NewPipe yeniləməsi mövcuddur! Lisenziya Müəllifin hesabı bağlanıb. \nNewPipe gələcəkdə bu axını yükləyə bilməyəcək. \nBu kanala abunəlikdən çıxmaq istəyirsiniz\? - Baxılmış elementləri göstərin + Baxılan elementləri göstər Seçilmiş Çəkməcəni Bağla Video oynadıcı Video fayl xülasəsi prosesi üçün bildirişlər - Miniatürü 1:1 aspekt nisbətinə kəsin - Yükləmə intervalının həcmini dəyişdirin (hazırda %s). Daha aşağı dəyər ilkin video yükləməni sürətləndirə bilər. Dəyişikliklər oynadıcının yenidən başladılmasını tələb edir + Miniatürü 1:1 görünüş nisbətinə kəs + Yükləmə intervalının həcmini dəyişdir (hazırda %s). Daha aşağı dəyər ilkin video yükləməni sürətləndirə bilər. Dəyişikliklər oynadıcının yenidən başladılmasını tələb edir Yayım yaradıcısı, məzmunu və ya axtarış sorğusu haqqında əlavə məlumat olan üst məlumat qutularını gizlətmək üçün söndürün Əlaqədar yayımı əlavə etməklə (təkrarlanmayan) sonlanacaq oynatma sırasını davam etdir Kənar axtarış təklifləri @@ -506,16 +506,16 @@ 100+ video ∞ video Şərhlər yoxdur - Həll edildikdə \"Bitdi\" düyməsini basın - Pleylist seçin + Həll edildikdə \"Bitdi\" düyməsini bas + Pleylist seç Şərhləri yükləmək mümkün olmadı Trenddə olan Səs Tənzimləmələri Məlumat əldə edilir… - Elementlərdə orijinal əvvəlki vaxtı göstərin - Yaşam dövrəsi xaricindəki xətaları bildirin - Şəkil göstəricilərini göstərin - Şəkillərin üzərində mənbəsini göstərən Pikasso rəngli lentləri göstərin: şəbəkə üçün qırmızı, disk üçün mavi və yaddaş üçün yaşıl + Elementlərdə orijinal əvvəlki vaxtı göstər + Yaşam dövrəsi xaricindəki xətaları bildir + Şəkil göstəricilərini göstər + Şəkillərin üzərində mənbəsini göstərən Picasso rəngli lentləri göstər: şəbəkə üçün qırmızı, disk üçün mavi və yaddaş üçün yaşıl Bəzi endirmələri dayandırmaq mümkün olmasa da, mobil dataya keçərkən faydalıdır Bağla Fayl silindiyi üçün irəliləyiş itirildi @@ -526,10 +526,10 @@ Hesab ləğv edildi %s bu səbəbi təmin edir: Endirmə başladı - Açıqlamadakı mətni seçməyi deaktiv edin + Açıqlamadakı mətni seçməyi deaktiv et Kateqoriya Daxili - Açıqlamadakı mətni seçməyi aktivləşdirin + Açıqlamadakı mətni seçməyi aktivləşdir Etiketlər Planşet rejimi Bağla @@ -544,7 +544,7 @@ %s yeni yayım %s yeni yayım - Sıfırlayın + Sıfırla Faiz Yarımton @@ -552,9 +552,9 @@ %s endirmələr tamamlandı Defolt ExoPlayer - Mövcud olduqda xüsusi axından alın + Mövcud olduqda xüsusi axından al Baxılmış videolar silinsin\? - İzlənilmişi silin + İzləniləni sil Sistem qovluğu seçicisini (SAF) istifadə edin Bağlantı fasiləsi Cihazda yer qalmayıb @@ -567,12 +567,12 @@ Bu adla bir endirmə davam edir faylın üzərinə yazıla bilməz Bu adda endirilmiş fayl artıq mövcuddur - Üzərinə yazın - Növbəyə qoyun + Üzərinə yaz + Növbəyə qoy bərpa olunur dayandırıldı Bitdi - Endirmək üçün toxunun + Endirmək üçün toxun Heç biri Əsas video oynadıcıdan digər tətbiqə keçid zamanı hərəkət — %s İmtina @@ -586,8 +586,8 @@ Səsi bağla Ani pəncərə oynadıcı Çəkməcəni Aç - Növbəyə saxlamaq üçün basılı tutun - Silin + Növbələşdirmək üçün basılı tut + Sil Android\'də pulsuz yüngül yayımlayıcı. © %1$s, %2$s tərəfindən %3$s altında Bu faylı oynatmaq üçün heç bir tətbiq quraşdırılmayıb @@ -597,7 +597,7 @@ Buferə kopyalandı Parçalar Adını dəyişdir - Yaradın + Yarat %s abunəçi %s abunəçi @@ -606,33 +606,33 @@ Təfərrüatlar: Nə:\\nTələb:\\nMəzmun Dili:\\nMəzmun Ölkəsi:\\nTətbiq Dili:\\nXidmət:\\nGMT Saatı:\\nPaket:\\nVersiya:\\nƏS versiyası: Bağışlayın, nəsə xəta baş verdi. - Formatlanmış hesabatı kopyalayın + Formatlanmış hesabatı kopyala Server URL\'sini daxil edin Serveri doğrulamaq mümkün olmadı - %s-də bəyəndiyiniz serverləri tapın - Video \"Təfsilatlar:\"səhifəsində arxa fon və ya ani pəncərə düyməsini basarkən ipucu göstər + %s-də bəyəndiyiniz nümunələri tapın + Video \"Təfsilatlar:\"səhifəsində fon və ya ani pəncərə düyməsini basarkən ipucu göstər Oynadıcı altyazı miqyasını və arxa fon üslublarını dəyişdirin. Effektiv olması üçün tətbiqin yenidən başladılması tələb olunur Xəta baş verdi: %1$s Fayl mövcud deyil, yaxud oxumaq və ya yazmaq icazəsi yoxdur Veb saytı təhlil etmək alınmadı Səs ucalığı Radio - \"Oynadıcını çökdür\" Göstərin - Oynadıcıdan istifadə edərkən çökdürmə seçimini göstərin + \"Oynadıcını çökdür\" Göstər + Oynadıcıdan istifadə edərkən çökdürmə seçimini göstər Xəta balonu göstər - Xəta bildirişi yaradın + Xəta bildirişi yarat Burdan idxal edin Bura ixrac edin - Faylı idxal edin + Faylı idxal et Abunəlikləri idxal etmək mümkün olmadı Avropa Ümumi Məlumat Mühafizəsi Qaydasına (GDPR) riayət etmək üçün diqqətinizi NewPipe\'ın məxfilik siyasətinə cəlb edirik. Zəhmət olmasa, diqqətlə oxuyun. Xəta hesabatını bizə göndərmək üçün onu qəbul etməlisiniz. Bu adda fayl artıq mövcuddur Bu adla gözlənilən bir endirmə var Təyinat qovluğu yaradıla bilməz - Bənzərsiz ad yaradın + Bənzərsiz ad yarat Bölmələr Cihazınızdakı heç bir tətbiq bunu aça bilməz - Miniatürü göstərin + Miniatürü göstər Bu, ən azı sizin ölkənizdə olan SoundCloud Go+ trekidir, ona görə də NewPipe tərəfindən yayımlamaq və ya endirmək mümkün deyil. Bu məzmun şəxsidir, ona görə də NewPipe tərəfindən yayımlamaq və ya endirmək mümkün deyil. Dəstək @@ -657,8 +657,8 @@ Endirmək üçün heç bir yayım yoxdur Xəta baş verdi, bildirişə baxın Şərhiniz (İngilis dilində): - Videonu oynadın, müddət: - Zəhmət olmasa, daha sonra tənzimləmələrdə endirmə qovluğunu təyin edin + Video oynat, müddət: + Zəhmət olmasa, daha sonra tənzimləmələrdə endirmə qovluğunu təyin et NewPipe Endirilir Hash hesablanır Fayl adlarında icazə verilən simvollar @@ -666,15 +666,15 @@ Lisenziyalar NewPipe müəllif hüquqlu sərbəst tətbiqdir: Siz onu istədiyiniz zaman istifadə edə, öyrənə, paylaşa və təkmilləşdirə bilərsiniz. Xüsusilə, siz Lisenziyanın 3-cü versiyası və ya (seçiminizə görə) hər hansı sonrakı versiyada Azad Proqram Təminatı Fondu tərəfindən dərc edilən GNU Ümumi İctimai Lisenziyanın şərtlərinə uyğun olaraq onu yenidən paylaya və/yaxud dəyişdirə bilərsiniz. İxrac edildi - Elementləri silmək üçün sürüşdürün + Elementləri silmək üçün sürüşdür Hələ,əlfəcinlənmiş pleylistlər yoxdur Bu, cari quraşdırmanızı ləğv edəcək. Növbəyə qoy Qara ekranla qarşılaşsanız və ya videonu oynatdıqda səs qırılarsa, media tunelini deaktiv edin Növbəti sıraya salındı - Arxa fonda oynatmağa başlayın + Fonda oynatmağa başla Yayım təfərrüatları yüklənir… - Media tunelini deaktiv edin + Media tunelini deaktiv et Tətbiq çökdü YouTube abunəliklərini Google takeout\'dan \nidxal edin: @@ -683,7 +683,7 @@ \n2. Soruşulduqda daxil olun \n3.\"Bütün Məlumatlar Daxildir\",sonra \"Heçbirini Seçmə\", yalnız \"abunəliklər\"i seçin və \"Oldu\" kliklə \n4. \"Növbəti addım\"üzərinə klikləyin, sonra isə \"İxrac Yarat\" üzərinə klikləyin -\n5. Görünəndən sonra \"Endirin\"düyməsini basın +\n5. Görünəndən sonra \"Endir\"düyməsini basın \n6. Aşağıdakı FAYLI İDXAL ET düyməsinə klikləyin və endirilmiş .zip faylını seçin \n7. [Əgər .zip faylı idxalı uğursuz olsa] .csv faylını çıxarın(adətən\"YouTubevəYouTubeMusic/subscriptions/subscriptions.csv\" altında),aşağıda İDXAL EDİLƏN FAYL-ı klikləyin və çıxarılmış csv faylını seçin Oynatma Sürəti Nizamlamaları @@ -695,7 +695,7 @@ %1$s endirmə silindi Dayandır - Nümunə seçin + Nümunə seç Sürətli axın rejimi bu barədə əlavə məlumat vermir. ExoPlayer məhdudiyyətlərinə görə axtarış müddəti %d saniyəyə təyin edildi Bəzi xidmətlərdə mövcuddur, adətən daha sürətli olur, lakin məhdud sayda elementləri və çox vaxt natamam məlumatı qaytara bilər (məsələn, müddət, element növü, canlı status yoxdur) @@ -718,10 +718,10 @@ Naməlum keyfiyyət Oynatma yükləmə intervalı həcmi Gələcək elementləri göstər - Baxılan elementləri gizlədin + Baxılan elementləri gizlət Gələcək elementləri gizlət - Tətbiqdən istifadə etməkdə çətinlik çəkirsinizsə, ümumi suallara bu cavabların yoxlanıldığına əmin ol! + Tətbiqdən istifadə etməkdə çətinlik çəkirsinizsə, ümumi suallara bu cavabların yoxlanıldığına əmin olun! Tez-tez soruşulan suallar - Veb Saytında baxın + Veb Saytında bax Çeşidlə \ No newline at end of file diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 099203790..34fe35f11 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -33,7 +33,7 @@ Depuració Contingut Mostra el contingut restringit a menors - Directe + En directe Baixades Baixades Tot @@ -93,7 +93,7 @@ S\'està exportant… Importa un fitxer Publicat el %1$s - No s\'ha trobat cap reproductor de fluxos. Instal·lar el VLC\? + No s\'ha trobat cap reproductor en temps real. Voleu instal·lar el VLC\? No s\'ha trobat cap reproductor de fluxos (podeu instal·lar el VLC per reproduir-ho). Obre en mode emergent Baixa el fitxer de vídeo @@ -109,7 +109,7 @@ Els fitxers de vídeo baixats es desen aquí Trieu la carpeta de baixades per als fitxers de vídeo Els fitxers d\'àudio baixats es desen aquí - Trieu la carpeta de baixades per als fitxers d\'àudio + Trieu la carpeta de baixada per als fitxers d\'àudio Resolució per defecte del mode emergent Mostra resolucions superiors Només alguns dispositius poden reproduir vídeos en 2K/4K @@ -120,7 +120,7 @@ Reproductor emergent intel·ligent Recorda la darrera mida i posició del reproductor emergent Cerca ràpida poc precisa - "La cerca poc precisa permet que el reproductor cerqui una posició més ràpidament amb menys precisió. Cerques de 5, 15 o 25 segons no funcionaran" + La cerca poc precisa permet que el reproductor cerqui una posició més ràpidament amb menys precisió. Cerques de 5, 15 o 25 segons no funcionaran Carrega les miniatures S\'ha eliminat la memòria cau d\'imatges Elimina les metadades de la memòria cau @@ -129,7 +129,7 @@ Suggeriments de cerca Mostra suggeriments durant la cerca Historial de cerca - Reprèn la reproducció després d\'una interrupció (per exemple, una trucada) + Reprèn la reproducció després d\'una interrupció (exemple: una trucada) Mostra el vídeo següent i similars País per defecte dels continguts Llengua per defecte dels continguts @@ -153,7 +153,7 @@ El fitxer no existeix o bé no teniu permisos de lectura/escriptura El nom del fitxer no pot estar en blanc S\'ha produït un error: %1$s - Informa d\'aquest error per correu electrònic + Informeu de l\'error per correu electrònic S\'han produït alguns errors. Informe Informació: @@ -299,7 +299,7 @@ No hi ha vídeos que es puguin baixar Subtítols Modifica la mida i el fons dels subtítols. Cal reiniciar l\'aplicació per aplicar els canvis - No s\'ha trobat cap aplicació que pugui reproduir aquest fitxer + No s\'ha trobat cap aplicació instal·lada que pugui reproduir aquest fitxer Neteja l\'historial de reproduccions Neteja l\'historial dels vídeos reproduïts i les posicions de reproducció Voleu suprimir tot l\'historial de reproduccions\? @@ -315,7 +315,7 @@ El projecte NewPipe es pren molt seriosament la vostra privadesa. Per aquesta raó, l\'aplicació no emmagatzema cap dada sense el vostre consentiment. \nLa política de privadesa del NewPipe descriu detalladament quines dades s\'envien i s\'emmagatzemen quan envieu un informe d\'error. Llegiu la política de privadesa - Per complir amb el Reglament General de Protecció de Dades europeu (GDPR), us demanem que pareu atenció a la política de privadesa del NewPipe. Llegiu-la detingudament. + Per complir amb el Reglament General de Protecció de Dades Europeu (GDPR), us demanem que pareu atenció a la política de privadesa del NewPipe. Llegiu-la detingudament. \nSi voleu informar d\'un error, l\'haureu d\'acceptar. Accepta Rebutja @@ -359,7 +359,7 @@ Atura Esdeveniments Notificacions de noves versions del NewPipe - El nombre de subscriptors no està disponible + Nombre de subscriptors no disponible Quines pestanyes es mostren a la pàgina principal Conferències Mode de vista de llista @@ -381,7 +381,7 @@ Sobreescriu No s\'ha trobat Mostra els comentaris - Desactiveu-ho amagar els comentaris + Desactiveu-ho per no mostrar comentaris Reproducció automàtica Cap comentari No s\'han pogut carregar els comentaris @@ -438,9 +438,9 @@ Desactivar Silenci Silenciar Prem «Fet» quan estigui resolt - ∞ vídeos + Vídeos ∞ 100+ vídeos - Permeteu dibuixar a sobre d\'altres aplicacions + Concedeix permisos per a poder reproduir els continguts a sobre d\'altres aplicacions Ajuda Artistes Àlbums @@ -683,4 +683,24 @@ Mostra una opció de fallada quan s\'utilitza el reproductor Mostra les cintes de color Picasso a la part superior de les imatges que indiquen la seva font: vermell per a la xarxa, blau per al disc i verd per a la memòria El LeakCanary no està disponible + Comprovant freqüència + Es necesita una conexió a Internet + Qualsevol xarxa + , + Notificació del reproductor + Notificacions + Si tens problemes utilitzant la aplicació, comprova las preguntes freqüents! + Ejecutar comprovació per nous streams + Cargant detalls del stream… + Notificacions estan desactivades + Percent + Preguntes freqüents + Veure a la pàgina web + Borrar tots el fitxers descargats al disc\? + Ser notificat + Ara estás subscrit a aquest canal + Selecciona la qualitat per reproductors externs + Format desconegut + Cualitat desconeguda + Ordenar \ No newline at end of file diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 1703784fd..5c153fe3e 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -178,7 +178,7 @@ مهم‌ترین نویسه‌های خاص کاره‌ای برای پخش این پرونده نصب نشده است درباره نیوپایپ - درباره + درباره و سوالات‌متداول پروانه‌ها پخش‌کننده آزاد سبُک برای اندروید. مشارکت @@ -287,7 +287,7 @@ کنترل روشنایی اشاره ای از اشارات برای کنترل روشنایی استفاده شود بازگردانی - چه:\\nدرخواست:\\nزبان محتوا:\\nکشور محتوا:\\nزبان کاره:\\nخدمت:\\nزمان GMT\\nبسته:T:\\nنگارش:\\nنگارش س.ع: + چی:\\nدرخواست:\\nزبان محتوا:\\nکشور محتوا:\\nزبان اپ:\\nخدمت:\\nزمان GMT\\nپکیج:T:\\nنسخه:\\nنسخه‌اندروید: چالش ری‌کپچا نیاز به چالش ری‌کپچا است این اجازه برای گشودن در حالت @@ -720,4 +720,8 @@ نمایش موارد آینده نهفتن موارد آینده نهفتن موارد دیده شده + سوالات متداول + اگر حین استفاده از اپ مشکلی دارید، حتما پاسخ‌ها به سوالات متداول را بررسی کنید! + نمایش در وبسایت + ترتیب \ No newline at end of file diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml index 758e522cd..ff9b00420 100644 --- a/app/src/main/res/values-fil/strings.xml +++ b/app/src/main/res/values-fil/strings.xml @@ -12,34 +12,34 @@ I-download I-download ang stream file Maghanap - Pagsasaayos + Mga Setting \"%1$s\" ba ang tinutukoy mo\? Ibahagi sa Gumamit ng ibang video player Natatanggal ang tunog sa ilang mga resolusyon Gumamit ng ibang audio player - Mag-subscribe - Naka-subscribe - Mag-unsubscribe - Na-unsubscribe na sa channel - Di mabago ang subscription - Di ma-update ang subscription - Ipakita ang info - Mga subscription - Naka-bookmark na playlist + Sumubaybay + Sinusubaybayan + Ihinto ang pagsubaybay + Hininto ang pagsubaybay sa channel + Hindi mabago ang pagsubaybay + Hindi ma-update ang pagsubaybay + Ipakita ang impormasyon + Mga Pagsubaybay + Mga naka-bookmark na playlist Pumili ng Tab Anong Bago - Likuran - Naka-lutang - Idagdag sa - Download folder ng mga video + Background + Palutangin + Idagdag Sa + Folder ng mga na-download na video Pumili ng download folder para sa mga video file Ilalagay rito ang mga na-download na audio file Pumili ng download folder para sa mga audio file Maliwanag I-play gamit Kodi Madilim - Ilalagay rito ang mga na-download na video file + Dito inilalagay ang mga na-download na video file Download folder ng mga audio Ipinapakita ang mga resulta para sa: %s Buksan gamit ang diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index af65a481c..3830e440b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -178,13 +178,13 @@ Retirer Détails Paramètres audios - Afficher l’astuce « Maintenir pour ajouter » + Afficher l\'astuce « Maintenir pour ajouter à la file » Affiche l’astuce lors de l’appui des boutons « Arrière-plan » ou « Flottant » sur la page de détails d’une vidéo [Inconnu] Récupération depuis l’erreur du lecteur Kiosque Sélectionner un kiosque - Maintenir pour mettre en liste de lecture + Maintenir pour ajouter à la file Démarrer la lecture en arrière-plan Démarrer la lecture dans une fenêtre flottante Donner @@ -257,8 +257,8 @@ Le nom du fichier ne peut pas être vide Une erreur est survenue : %1$s Télécharger le flux - Ajouter automatiquement le flux suivant à la liste de lecture - Continue la liste de lecture (non répétitive) en ajoutant un flux lié + Ajout automatique du flux suivant à la file + Continue la file de lecture (non répétitive) en ajoutant un flux lié Débogage Remplir Générés automatiquement @@ -385,7 +385,7 @@ Utile lors du basculement aux données mobiles, bien que certains téléchargements ne peuvent pas être suspendus Mode de vue en liste post-traitement - Mettre en file d\'attente + Ajouter à la file Action refusée par le système Le post-traitement a échoué Nombre d’essais maximum @@ -553,15 +553,15 @@ Signaler sur GitHub Copier le rapport formaté Affichage des résultats pour : %s - Basculer d’un lecteur à un autre peut remplacer votre liste de lecture + Basculer d’un lecteur à un autre peut remplacer votre file de lecture Jamais Uniquement en Wi-Fi Démarrer la lecture automatiquement — %s Liste de lecture Impossible de reconnaitre l’URL fournie. Voulez-vous l’ouvrir avec une autre application \? - Lire automatiquement - La liste de lecture du lecteur actif sera remplacée - Confirmer avant de supprimer une liste de lecture + Ajout automatique à la file + La file de lecture du lecteur actif sera remplacée + Confirmer avant de supprimer une file de lecture Rien Chargement Lire aléatoirement @@ -576,8 +576,8 @@ Recadrer la miniature de la vidéo affichée dans la notification du format 16:9 au format 1:1 Recadrer la miniature au format 1:1 Afficher les fuites de mémoire - Ajouté à la file d’attente - Ajouter à la file d’attente + Ajouté à la file + Ajouter à la file Effacer les cookies que NewPipe garde lorsque vous résolvez un reCAPTCHA Les cookies reCAPTCHA ont été effacés Effacer les cookies reCAPTCHA @@ -675,8 +675,8 @@ Balayez un élément pour le supprimer Ne pas lancer les vidéos dans le mini lecteur mais directement en plein écran si la rotation automatique est verrouillée. Vous pouvez toujours accéder au mini-lecteur en quittant le mode plein écran Lancer le lecteur principal en plein écran - Lire consécutivement - Flux placé à la suite + Placer en suivant dans la file + Placé en suivant dans la file Traitement en cours… Veuillez patienter Vérifier manuellement de nouvelles versions Vérification des mises à jour… diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index a99795401..9231057c4 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -21,13 +21,13 @@ देखे हुए विडियोज का इतिहास डाउनलोड करे वीडियो और ऑडियो - History and cache + इतिहास और कैश बैकग्राउंड में चल रहा है कोई दर्शक नहीं कोई वीडियो नहीं है न्यूपाइप के बारे में जाने तृतीय-पक्ष लाइसेंस - इसके बारे में + ऐप के बारे में और सामान्य प्रश्न लाइसेंस GitHub में देखें न्यूपाइप का लाइसेंस @@ -68,11 +68,11 @@ विडियो पॉपअप का आकर और उसकी स्थति को याद रखे विडियो पॉपअप की अंतिम स्थिति और आकर को याद रखे खोज में सुझाव - खोज के दौरान सुझाव दिखाये + खोज के दौरान दिखाये जाने वाले सुझाव चुने खोज का इतिहास खोज के डेटा को सिर्फ डिवाइस मेमोरी में रखे देखे गए विडियोज की सूची रखे - वीडियो + प्लेबैक फिर से शुरू करें रूकावटे खत्म होने के बाद विडियो प्ले करे (जैसे - फ़ोन कॉल) \'अगला\' और \'समान\' वीडियो दिखाए \"कतार में जोड़ने के लिए स्पर्श बनाये रखें\" दिखाए @@ -112,10 +112,10 @@ खेद है की, ऐसा होना नहीं चाहिए था. त्रुटी की रिपोर्ट को ईमेल से भेजे माफ़ करे , कुछ त्रुटियाँ हो रही है - रिपोर्ट + रिपोर्ट करें जानकारी: क्या हुआ: - क्या:\\nमांग:\\nविषयवस्तु की भाषा:\\nसेवा:\\nजीएमटी समय:\\nपैकेज:\\nसंस्करण:\\nOS संस्करण: + क्या:\\nअनुरोध:\\nसामग्री भाषा:\\nसामग्री देश:\\nऐप भाषा:\\nसेवा:\\nजीएमटी समय:\\nपैकेज:\\nसंस्करण:\\nOS संस्करण: आपकी टिप्पणी: विवरण: वीडियो चलाये, समय : @@ -156,7 +156,8 @@ कृपया प्रतीक्षा करें… क्लिपबोर्ड पर कॉपी हो गया है कृपया बाद में सेटिंग्स में डाउनलोड स्थान चुने - पॉपअप के तरीके में खोलने के लिए अनुमति की जरुरत है + पॉपअप के तरीके में खोलने के लिए +\nइस अनुमति की जरुरत है reCAPTCHA चुनौती reCAPTCHA चुनौती का अनुरोध किया डाउनलोड @@ -166,7 +167,7 @@ वर्ण और अंक विशेष वर्ण %2$s के द्वारा © %1$s जो %3$s के अधीन आते है - एंड्राइड के लिए हल्का और मुफ्त स्ट्रीमिंग एप्लिकेशन| + एंड्राइड के लिए हल्का और मुफ्त स्ट्रीमिंग एप्लिकेशन। अगर आपके पास कोई सुझाव हो जैसे -अनुवाद , डिजाईन में बदलाव ,code को साफ़ रखना , या फिर code में जायदा बदलाव लाना हो तो - साहयता के लिए आपका स्वागत है . जितना ज्यादा होगा उतना बेहतर होगा ! क्या आप इसको खोज इतिहास के मिटाना चाहते है ? मुख्य पेज की विषयवस्तु @@ -177,7 +178,7 @@ अभी तक किसी भी चैनल के सदस्य नहीं है kiosk को चुने टॉप 50 - नया और गरम + नया और प्रचलित निकाले विवरण जोड़ने के लिए पकड़ें रहे @@ -188,7 +189,7 @@ जानकारी दिखाएं बुकमार्क किये गए प्लेलिस्टस इसमें जोड़ें - डिफ़ॉल्ट देश का विषय + डिफ़ॉल्ट देश का विषय हमेशा के लिए सिर्फ एक बार के लिए बैकग्राउंड में स्विच करें @@ -196,8 +197,8 @@ मुख्य पर स्विच करें डेटाबेस आयात करें डेटाबेस निर्यात करें - आपके वर्तमान इतिहास और सब्सक्रिप्शन को अधिभावी करेगा - इतिहास, सब्सक्रिप्शन और प्लेलिस्ट निर्यात करें + आपके वर्तमान इतिहास, सब्सक्रिप्शनस, प्लेलिस्ट और (वैकल्पिक रूप से) सेटिंग्स को अधिभावी करेगा + इतिहास, सब्सक्रिप्शन, प्लेलिस्ट और सेटिंग निर्यात करें एक्सटर्नल प्लेयर इन प्रकार के लिंक सपोर्ट नहीं करता कोई वीडियो स्ट्रीम नहीं मिला कोई ऑडियो स्ट्रीम नहीं मिली @@ -206,7 +207,7 @@ ख़ारिज करें नाम बदलें दान करें - NewPipe स्वयंसेवकों द्वारा विकसित किया जाता है जो आपको अच्छा अनुभव देने के लिए अपना खाली समय व्यतीत करते हैं। स्वयंसेवको को मदद भेजे, ताकि वह NewPipe को और अच्छा बना सके। + न्यूपाइप स्वयंसेवकों द्वारा विकसित किया जाता है जो आपको अच्छा अनुभव देने के लिए अपना खाली समय व्यतीत करते हैं। स्वयंसेवको को मदद भेजे, ताकि वह न्यूपाइप को और अच्छा बना सके। वापस दे वेबसाइट अधिक जानकारी और खबरों के लिए न्यूपाइप की वेबसाइट पर जाएं। @@ -229,7 +230,7 @@ नाम बदलें नाम प्लेलिस्ट में जोड़ें - प्लेलिस्ट थंबनेल के रूप में सेट करें + प्लेलिस्ट थंमनेल के रूप में सेट करें प्लेलिस्ट बुकमार्क करें बुकमार्क हटायें प्लेलिस्ट को हटाना चाहते हैं\? @@ -246,8 +247,8 @@ Out-of-Lifecycle त्रुटियों की रिपोर्ट करें थंबनेल लोड करें तेज और अनिश्चित तलाश का प्रयोग करें - अनिश्चित खोज के कारण वीडियो प्लेयर कम सटीकता से लेकिन तेजी से वीडियो पोजीशन्स की तलाश कर सकता है। ५, १५, या २५ सेकंड की तलाश में यह काम नहीं करता। - थंबनेल लोड करने, डेटा और मेमोरी उपयोग को रोकने के लिए बंद करें। इन-मेमोरी और ऑन-डिस्क छवि कैश दोनों को बदलता है| + अनिश्चित खोज से प्लेयर में कम सटीकता से लेकिन तेजी से वीडियो पोजीशन्स की तलाश कर सकता हैं। 5,15 या 25 सेकंड की तलाश में यह काम नहीं करता + थंमनेल लोड करने, डेटा और मेमोरी उपयोग को रोकने के लिए बंद करें। इन-मेमोरी और ऑन-डिस्क छवि कैश दोनों को बदलता है चित्र कैश मिटाया गया कैश मेटाडेटा मिटाएं कैश किए गए सभी वेबपेज का डेटा हटाएं @@ -262,11 +263,11 @@ देखे हुए वीडियो की सूची साफ करें चलाये गए स्ट्रीम के इतिहास और प्लेबैक स्थानों को साफ करता है देखे गए सभी का इतिहास साफ करें\? - देखे हुए का इतिहास साफ कर दिया गया। + देखा हुआ इतिहास साफ कर दिया गया ढूंढने के इतिहास को साफ करें ढूंढे गए शब्दो का इतिहास साफ करता है पूरे खोज इतिहास को मिटा दे \? - ढूंढने के इतिहास को साफ कर दिया। + खोज के इतिहास को साफ कर दिया एसी कोई भी फ़ोल्डर मौजूद नहीं है अमान्य फाइल/विषय - वस्तु का स्रोत फ़ाइल मौजूद नहीं है या उसे पढ़ने या लिखने की पर्याप्त अनुमति नही़ं है @@ -283,7 +284,7 @@ पसंदीदा \'खोलने\' कि प्रक्रिया सामग्री खोलते समय डिफ़ॉल्ट कारवाही — %s अनुशीर्षक - प्लेयर अनुशीर्षक के शब्दों का परिमाण और पृष्ठभूमि शैलियो को बदले। लागू करने के लिए ऐप को पुनः प्रारम्भ करना जरूरी है। + प्लेयर अनुशीर्षक के शब्दों का परिमाण और पृष्ठभूमि शैलियों को बदले। लागू करने के लिए ऐप को पुनः प्रारम्भ करना जरूरी है आयात से आयात करे पर निर्यात करे @@ -293,11 +294,15 @@ पहले वाला निर्यात सब्सक्रिप्शन आयात नही कर सके सब्सक्रिप्शन निर्यात नही कर सके - निर्यात की गई फाइल को डाउनलोड करके यूट्यूब सब्सक्रिप्शन को आयात करे: + गूगल टेकआउट से यूट्यूब सदस्यता आयात करें: \n -\n1. इस URL पर जाए: %1$s -\n2. जब कहा जाए, लॉगिन करे -\n3. एक डाउनलोड शुरू होना चाहिए (यही निर्यात की गई फाइल है) +\n1. इस URL पर जाएं:%1$s +\n2. पूछे जाने पर लॉग इन करें +\n3. \"सभी डेटा शामिल करें\" पर क्लिक करें, फिर \"सभी को अचयनित करें\" पर, फिर केवल \"सदस्यताएँ\" चुनें और \"ओके\" पर क्लिक करें +\n4. \"अगला चरण\" पर क्लिक करें और फिर \"निर्यात बनाएं\" +\n5. प्रकट होने के बाद \"डाउनलोड\" बटन पर क्लिक करें +\n6. नीचे आयात फ़ाइल पर क्लिक करें और डाउनलोड की गई .zip फ़ाइल चुनें +\n7. [यदि .zip आयात विफल हो जाता है] .csv फ़ाइल निकालें (आमतौर पर \"YouTube और YouTube Music/subscriptions/subscriptions.csv\" के अंतर्गत), नीचे आयात फ़ाइल पर क्लिक करें और निकाली गई csv फ़ाइल चुनें आपका आई डी, soundcloud.com/(आपका आई डी) ध्यान रखे, यह तरीका नेटवर्क साधनो के लिए मंहगा हो सकता है। \n @@ -322,23 +327,23 @@ सदस्यता हटाए टैब चुने ध्वनि नियंत्रण इशारा - कतार + कतारबद्ध करें वीडियो प्लेयर की ध्वनि नियंत्रित करने के लिए इशारो का इस्तेमाल करे रोशनी स्तर नियंत्रण के इशारे वीडियो चालक की चमक को नियंत्रित करने के लिए इशारो का इस्तेमाल करें अपडेट फाइल मिटा दी गयी - अप्प अपडेट अधिसूचना + ऐप अपडेट अधिसूचना नए NewPipe अपडेट की सूचनापत्र एक्सटर्नल स्टोरेज अनुपलब्ध SD कार्ड पर डाउनलोड करना संभव नहीं।डाउनलोड स्थान पुनः चुने\? सामान्य चुनाव पर लौटें क्या आप सामान्य चुनाव पर लौटना चाहते है\? - अभिदाता संख्या अनुपलब्ध + सब्सक्राइबर स॔ख्या अनुपलब्ध मुख्य पृष्ठ पर कौन से टैब दिखाए जाते हैं अपडेट सूची - NewPipe अपडेट उपलब्ध! + न्यूपाइप अपडेट उपलब्ध! डाउनलोड करने के लिए टैप करें समाप्त अपूर्ण @@ -376,7 +381,7 @@ सूचियों में स्थान प्लेबैक पोजिशन के निशान सूचियों में दिखाए डाटा मिटायें - प्लेबैक स्थान मिटा दिए गए| + प्लेबैक स्थान मिटा दिए गए फाइल की जगह बदली गयी या फिर फाइल मिटा दी गयी इस नाम की कोई फ़ाइल पहले से मौजूद है इस नाम की एक डाउनलोड की गई फ़ाइल पहले से मौजूद है @@ -386,23 +391,25 @@ डिवाइस पर जगह समाप्त प्रगति खो गई, क्योंकि फ़ाइल मिटा दी गई थी कनेक्शन का समय समाप्त - क्या आपको यकीन है\? + क्या आप अपना डाउनलोड इतिहास मिटाना चाहते हैं या सभी डाउनलोड की गई फ़ाइलों को हटाना चाहते हैं\? डाउनलोड कतार सीमित करें एक ही समय में एक डाउनलोड चलेगा डाउनलोड प्रारंभ करें डाउनलोड रोकें डोलोड कहाँ करने के लिए पूछे - आपको हर डाउनलोड का स्थान पूछा जाएगा - SAF का उपयोग करें + आपको हर डाउनलोड का स्थान पूछा जाएगा +\nयदि आप बाहरी एसडी कार्ड में डाउनलोड करना चाहते हैं तो सिस्टम फोल्डर पिकर (SAF) को सक्षम करें + सिस्टम फोल्डर पिकर (एसएएफ) का प्रयोग करें प्लेबैक स्थानों को मिटाये सारे प्लेबैक स्थानों को मिटाये सारे प्लेबैक स्थानों को मिटाये\? फ्रेगमेंट या एक्टिविटी लाइफसाइकिल के बाद Rx सन्देश ना पहुँचाया जा सके तोह ज़रूर कोशिश करे SoundCloud प्रोफाइल निर्यात करने के लिए आईडी या युआरएल दीजिये: -\n१ अपने वेब ब्राउज़र मैं \"डेस्कटॉप मोड\" चालू करे (वेबसाइट मोबाइल उपकरणों के लिए उपलब्ध नहीं है) -\n२ इस युआरएल को खोले: %1$s -\n३ लोग इन करे -\n४ आप जिस प्रोफाइल युआरएल पे भेजे जाते है उसे कॉपी करे| +\n +\n1. अपने वेब ब्राउज़र मैं \"डेस्कटॉप मोड\" चालू करे (वेबसाइट मोबाइल उपकरणों के लिए उपलब्ध नहीं है) +\n2. इस युआरएल को खोले: %1$s +\n3. लोग इन करे +\n4. आप जिस प्रोफाइल युआरएल पे भेजे जाते है उसे कॉपी करे। यूरोप के जनरल डाटा प्रोटेक्शन रेगुलेशन (जी डी पी आर) का पालन करने के लिए, हम आपका ध्यान न्यूपाइप की नयी प्राइवेसी पालिसी पी डालना चाहते है।इसे बारीकी से पढ़िए। \nआपको अगर हमें किसी मुसीबत का सन्देश भेजना हो तो इसे स्वीकार करे। सामान्य टैब्स का इस्तेमाल, सहेजे टैब्स को पढ़ने में रूकावट @@ -412,8 +419,7 @@ ऑटो मुसीबत दिखाए सर्वर मल्टी थ्रेडेड डाउनलोड स्वीकार नहीं करता, पुनः कोशिश करे @string/msg_threads = 1 के साथ - स्टोरेज एक्सेस फ्रेमवर्क (एस ऐ ऍफ़) आपको एस डी कार्ड पर डाउनलोड करने देता है -\nसुचना - कुछ उपकरणों पर ये नहीं चलता + स्टोरेज एक्सेस फ्रेमवर्क (एस ऐ ऍफ़) आपको एस डी कार्ड पर डाउनलोड करने देता है सेवा चुने, वर्तमान चुनाव : सामान्य कीओस्क कोई नहीं देख रहा है @@ -426,7 +432,7 @@ %s श्रोता %s श्रोता - ऐप के पुनः आरंभ होने के बाद भाषा बदल जाएगी। + ऐप के पुनः आरंभ होने के बाद भाषा बदल जाएगी तेज मोड सक्षम करें तेज मोड अक्षम करें क्या आपको लगता है कि फीड लोडिंग बहुत धीमी है\? यदि ऐसा है, तो तेज़ लोडिंग को सक्षम करने का प्रयास करें (आप इसे सेटिंग्स में या नीचे दिए गए बटन को दबाकर बदल सकते हैं)। @@ -443,7 +449,7 @@ यह सामग्री फिलहाल NewPipe सपोर्ट नहीं करता है। \n \nइसे आशा से भविष्य के संस्करणों में सपोर्ट किया जायेगा। - चैनल का avatar थंबनेल + चैनल का अवतार थंबनेल %s के द्वारा %s के द्वारा बनाया गया प्लेलिस्ट पृष्ठ @@ -481,51 +487,51 @@ तृतीय एक्शन बटन द्वितीय एक्शन बटन प्रथम एक्शन बटन - नोटिफिकेशन में दिखाए गए वीडियो थंबनेल को 16: 9 के बजाय 1: 1 के अनुपात में दिखाए (इस कारण कुछ परेशानियां हो सकती हैं) - थंबनेल को 1:1 के अनुपात मैं दिखाएं + नोटिफिकेशन में दिखाए गए वीडियो थंमनेल को 16: 9 के बजाय 1: 1 के अनुपात में दिखाए + थंमनेल को 1:1 के अनुपात में दिखाएं - %dघंटा - %dघंटे + %d घंटा + %d घंटे - %dसेकंड - Seconds + %d सेकेड + %d सेकंड्स देखे गए वीडियो हटायें\? देखे गए को हटा दें सिस्टम डिफ़ॉल्ट - ऐप भाषा + ऐप की भाषा डाउनलोड की गई फ़ाइलें हटाएं डाउनलोड इतिहास हटायें केवल वाईफाई पर स्वचालित रूप से प्लेबैक शुरू करें —%s मेमरी लीक दर्शाएँ - अन्म्यूट - म्यूट - सबसे ज्यादा पसंद + मौन हटायें + मौन + सबसे पसंद किए गए हाल ही में जोड़ा - लोकल - कोई प्लेलिस्ट का बुक्मार्क्स नहीं है - एक प्लेलिस्ट का चयन करें - ∞ विडीओ - १००+ विडीओ + स्थानीय + अभी कोई प्लेलिस्ट का बुक्मार्क नहीं है + प्लेलिस्ट का चयन करें + ∞ विडीओज़ + 100+ विडीओज़ विवरण संबंधित स्ट्रीमस टिप्पणियाँ - कृपया जांचें लें कि क्या आपके क्रैश पर चर्चा करने वाला मुद्दा पहले से मौजूद है। डुप्लिकेट टिकट बनाते समय, आप हमसे समय लेते हैं जो हम वास्तविक बग को ठीक करने के साथ खर्च कर सकते हैं। + कृपया जांचें लें कि क्या आपके क्रैश पर चर्चा करने वाला मुद्दा पहले से मौजूद है। डुप्लिकेट टिकट बनाते समय, आप हमसे समय लेते हैं जो हम वास्तविक बग को ठीक करने के लिए खर्च कर सकते हैं। गिटहब पर रिपोर्ट करें अन्य ऐप्स पर प्रदर्शित करने की अनुमति दें विडीओ हैशिंग की प्रगति की सूचना वीडियो हैश अधिसूचना - स्ट्रीम निर्माता, स्ट्रीम विषय सूची या खोज अनुरोध के बारे में अतिरिक्त जानकारी के साथ मेटा जानकारी बक्से को छिपाने के लिए बंद करें. + स्ट्रीम निर्माता, स्ट्रीम सामग्री या खोज अनुरोध के बारे में अतिरिक्त जानकारी के साथ मेटा जानकारी बक्से को छिपाने के लिए बंद करें Meta जानकारी दिखाएँ वीडियो का विवरण और अतिरिक्त जानकारी छिपाने के लिए इसे बंद करें विवरण दिखाएं सक्रिय चालक की क़तार बदल दी जाएगी एक चालक से दूसरे चालक में जाने से आपकी कतार बदल सकती है इसमें खोलें - थंबनेल दिखाएं - लॉक स्क्रीन और नोटिफिकेशन दोनों के लिए थंबनेल का इस्तेमाल करे + थंमनेल दिखाएं + लॉक स्क्रीन और नोटिफिकेशन दोनों के लिए थंमनेल का इस्तेमाल करे पाठ आपके डिवाइस का कोई भी ऐप इसे नहीं खोल सकता है यह सामग्री आपके देश में उपलब्ध नहीं है। @@ -547,17 +553,175 @@ स्वरूपित रिपोर्ट कॉपी करें कुकी साफ़ करें जिसे न्यूपाइप आपके द्वारा रीकैप्चा हल करने पर संग्रहीत करता है उदाहरण पहले से मौजूद है - उदाहरण मान्य नहीं किया जा सका - उदाहरण URL दर्ज करें + इंसटैंस मान्य नहीं किया जा सका + इंसटैंस यूआरएल दर्ज करें उदाहरण जोड़ें - %s . पर अपनी पसंद के उदाहरण ढूँढ़ें - अपने पसंदीदा PeerTube उदाहरण चुनें + %s पर अपनी पसंद के इंसटैंस ढूँढ़ें + अपने पसंदीदा पीयर ट्यूब इंसटैंस चुनें मुख्य प्लेयर को पूर्ण स्क्रीन में शुरू करें - मिनी प्लेयर में वीडियो शुरू न करें, लेकिन ऑटो रोटेशन लॉक होने पर सीधे फुल स्क्रीन मोड पर जाएं। आप अब भी फ़ुलस्क्रीन से बाहर निकलकर मिनी प्लेयर तक पहुंच सकते हैं। + मिनी प्लेयर में वीडियो शुरू न करें, लेकिन ऑटो रोटेशन लॉक होने पर सीधे फुल स्क्रीन मोड पर जाएं। आप अब भी फ़ुलस्क्रीन से बाहर निकलकर मिनी प्लेयर तक पहुंच सकते हैं टिप्पणियाँ करना बंद है देखा हुआ चिह्नित करें चालक सूचनापत्र सूचनापत्र चालक असफल हुआ स्थानीय खोज सुझाव + सार्वजनिक + अभी चल रही स्ट्रीम अधिसूचना को कॉन्फ़िगर करें + नई स्ट्रीमें + सब्सक्रिप्शनस के नई स्ट्रीमों के बारे में अधिसूचनाएं + त्रुटि रिपोर्ट अधिसूचना + त्रुटियों की रिपोर्ट करने के लिए अधिसूचनाएं + न्यूपाइप को एक त्रुटि का सामना करना पड़ा, रिपोर्ट करने के लिए टैप करें + हल करें + कतारबद्ध करें + प्ले कतार + कतार में आगे जोड़ा गया + कतारबद्ध हुआ + स्ट्रीम विवरण लोड हो रहे हैं… + प्रोसेस हो रहा है… कुछ समय लग सकता है + छवि संकेतक दिखाएं + प्लेयर का उपयोग करते समय क्रैश विकल्प दिखाता है + नई स्ट्रीमों के लिए जांच चलाएं + एक त्रुटि स्नैकबार दिखाएं + सब्सक्रिप्शनस से नई स्ट्रीमों के बारे में सूचित करें + जाँच करने की आवृत्ति + नेटवर्क कनेक्शन आवश्यक + नई स्ट्रीम अधिसूचनाएं + कोई भी नेटवर्क + अपडेट के लिए जाँच करें + निम्न गुणवत्ता (छोटा) + सीकबार थंबनेल पूर्वावलोकन + उच्च गुणवत्ता (बड़ा) + अपडेट्स के लिए जांच हो रही है… + ठीक हो रहा है + डिस्क से सभी डाउनलोड की गई फ़ाइलें मिटाएं\? + एंड्रॉइड 10 से शुरू होकर केवल \'स्टोरेज एक्सेस फ्रेमवर्क\' समर्थित है + एक इंस्टेंस चुनें + हां, और आंशिक रूप से देखे गए वीडियो भी + फीड लोड हो रही है… + फ़ीड अपडेट चरणसीमा + फ़ीड लोड करने में गड़बड़ी + \'%s\' के लिए फ़ीड लोड नहीं कर सका। + रीसैंट + विवरण में पाठ का चयन सक्षम करें + गोपनीयता + अब आप विवरण के अंदर पाठ का चयन कर सकते हैं। ध्यान दें कि पृष्ठ झिलमिला सकता है और चयन मोड में लिंक क्लिक करने योग्य नहीं हो सकते हैं। + आयु सीमा + सहायता + होसट + अधिसूचनाएं अक्षम हैं + गैर-सूचीबद्ध + संयुक्त टॉगल करें + सूचना पायें + , + नए संस्करणों के लिए मैन्युअल रूप से जांचें + एकसोप्लेयर की कमी के कारण खोज की अवधि %d सेकंड पर सेट की गई + खाता समाप्त किया गया + स्ट्रीम जो अभी तक डाउनलोडर द्वारा समर्थित नहीं हैं, नहीं दिखाई जाती हैं + बाहरी प्लेयरस के लिए क्वालिटी का चयन करें + अज्ञात प्रारूप + अज्ञात क्वालिटी + ऐप को क्रैश करें + श्रेणी + आपसे पूछा जाएगा कि प्रत्येक डाउनलोड को कहां सहेजना है + देखे गए आइटम दिखाएं + थंमनेल यूआरएल + ऑफ़ + हमेशा अपडेट करें + विवरण में पाठ का चयन अक्षम करें + मत दिखाओ + दूरस्थ खोज सुझाव + + %s नई स्ट्रीम + %s नई स्ट्रीमें + + प्रतिशत + सैमीटोन + + डाउनलोड समाप्त + %s डाउनलोड समाप्त + + + %d दिन + %d दिन + + + %d चयनित + %d चयनित + + एक्सोप्लेयर डिफ़ॉल्ट + प्लेबैक लोड अंतराल आकार + समूह का नाम नहीं + सब्सक्रिप्शनस चुनें + क्या आप इस समूह को हटाना चाहते हैं\? + नया + फ़ीड + भविष्य की आइटम दिखाएं + नई फ़ीड आइटम + फ़ीड संसाधित हो रही है … + वेबसाइट खोलें + उपलब्ध होने पर समर्पित फ़ीड से प्राप्त करें + भाषा + आन + स्वतः बने (कोई अपलोडर नहीं मिला) + चैनल समूह + देखे गए आइटम छुपाएं + भविष्य की आइटम छुपाएं + बार बार पूछे जाने वाले प्रश्न + वेबसाइट पर देखें + आइटम हटाने के लिए स्वाइप करें + मीडिया टनलिंग अक्षम करें + \"क्रैश द प्लेयर\" दिखाएं + लोड नहीं हुआ: %d + %s इसका कारण प्रदान करता है: + टैग + लाइसेंस + यदि आपको ऐप का उपयोग करने में परेशानी हो रही है, तो सामान्य प्रश्नों के इन उत्तरों को देखना सुनिश्चित करें! + कतार में आगे जोड़ें + लोड अंतराल आकार बदलें (वर्तमान में %s)। एक कम मान आरंभिक वीडियो लोडिंग को गति दे सकता है। परिवर्तन के लिए प्लेयर को पुनः आरंभ करने की आवश्यकता होती है + लीककैनरी उपलब्ध नहीं है + एक त्रुटी हुई है, अधिसूचना देखें + यदि आप काली स्क्रीन या वीडियो प्लेबैक खड़खड़ाते हुए चलने का अनुभव करते हैं तो मीडिया टनलिंग को अक्षम करें + छवियों के शीर्ष पर पिकासो रंगीन रिबन दिखाएँ जो उनके स्रोत को दर्शाता है: नेटवर्क के लिए लाल, डिस्क के लिए नीला और मेमोरी के लिए हरा + गड़बड़ी की सूचना बनाएं + इस डाउनलोड को पुनर्प्राप्त नहीं किया जा सकता + अभी तक कोई डाउनलोड फ़ोल्डर सेट नहीं किया गया है, अब डिफ़ॉल्ट डाउनलोड फ़ोल्डर चुनें + हल होने पर \"संपन्न\" दबाएं + चैनल विवरण दिखाएं + आइटम्स का असल अपलोड समय दिखाएं + सेवाओं से मूल पाठ स्ट्रीम आइटम में दिखाई देंगे + प्लेलिस्ट में जोड़े गए पहले और बाद में देखे गए वीडियो हटा दिए जाएंगे। +\nक्या आपको यकीन है\? इसे असंपादित नहीं किया जा सकेगा! + + %d मिनट + %d मिनट + + अंतिम अपडेट फ़ीड: %s + कोई सदस्यता चयनित नहीं है + केवल असमूहीकृत सब्सक्रिप्शनस दिखाएं + फ़ास्ट फ़ीड मोड इस पर अधिक जानकारी प्रदान नहीं करता है। + अपडेट अंतराल जब सब्सक्रिप्शन फ़ीड दोबारा अपडेट किये जा सकें — %s + लेखक का खाता समाप्त कर दिया गया है। +\nन्यूपाइप भविष्य में इस फीड को लोड नहीं कर पाएगा। +\nक्या आप इस चैनल की सदस्यता समाप्त करना चाहते हैं\? + चयनित स्ट्रीम बाहरी प्लेयरस द्वारा समर्थित नहीं है + इस क्रिया के लिए कोई उपयुक्त फ़ाइल प्रबंधक नहीं मिला। +\nकृपया स्टोरेज एक्सेस फ्रेमवर्क संगत फ़ाइल प्रबंधक स्थापित करें + निजी + आंतरिक + पिन की हुई टिप्पणी + निर्माता द्वारा दिया दिल + टैबलेट मोड + आपने इस चैनल को अब सब्सक्राइब किया है + बाहरी प्लेयरस के लिए कोई विडियो स्ट्रीम उपलब्ध नहीं है + बाहरी प्लेयरस के लिए कोई ऑडियो स्ट्रीम उपलब्ध नहीं है + कुछ सेवाओं में उपलब्ध, यह आमतौर पर बहुत तेज होता है लेकिन सीमित मात्रा में आइटम और अक्सर अधूरी जानकारी (जैसे कोई अवधि नहीं, आइटम प्रकार, कोई लाइव स्थिति नहीं) लौटा सकता है + इस क्रिया के लिए कोई उपयुक्त फ़ाइल प्रबंधक नहीं मिला। +\nकृपया फ़ाइल प्रबंधक स्थापित करें या डाउनलोड सेटिंग में \'%s\' को अक्षम करने का प्रयास करें + + %1$s डाउनलोड हटाए गए + %1$s डाउनलोड हटाए गए + + क्रमबद्ध करें \ No newline at end of file diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index c57f46444..2b400ba7f 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -53,7 +53,7 @@ Tilkynningar fyrir nýjar útgáfur NewPipe Hreinsa vefkökur sem NewPipe geymir þegar þú leysir reCAPTCHA NewPipe rakst á villu, pikkaðu til að tilkynna - Um + Um okkur og algengar spurningar Gerast áskrifandi Aðeins sum tæki geta spilað 2K/4K myndbönd Spila með Kodi @@ -717,4 +717,8 @@ Engir hljóðstraumar eru í boði fyrir ytri spilara Veldu gæði fyrir ytri spilara Sýna framtíðaratriði + Ef þú átt í vandræðum með að nota forritið vertu viss um að skoða þessi svör við algengum spurningum! + Algengar spurningar + Skoða á vefsíðu + Raða \ No newline at end of file diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml new file mode 100644 index 000000000..70199667c --- /dev/null +++ b/app/src/main/res/values-ka/strings.xml @@ -0,0 +1,725 @@ + + + ნაკადის პლეერი ვერ მოიძებნა (მის დასაკრავად შეგიძლიათ დააინსტალიროთ VLC). + "ნაკადის მოთამაშე ვერ მოიძებნა. დააინსტალირე VLC\?" + გაუქმება + გააზიარეთ როგორც + გამოიყენეთ გარე ვიდეო დამკვრელი + მონიშნული დასაკრავი სიები + ინფორმაციის ჩვენება + აირჩიეთ ჩანართი + აირჩიეთ ჩამოტვირთვის საქაღალდე ვიდეო ფაილებისთვის + გადმოწერილი აუდიო ფაილები ინახება აქ + დაკვრა Kodi-სთან + აირჩიეთ ჩამოტვირთვის საქაღალდე აუდიო ფაილებისთვის + ნაგულისხმევი რეზოლუცია + ამომხტარი ფანჯრის ნაგულისხმევი რეზოლუცია + მხოლოდ ზოგიერთ მოწყობილობას შეუძლია 2K/4K ვიდეოების დაკვრა + დაარტყა დამკვრელი + ესკიზის ჩამოჭრა ასპექტის თანაფარდობაზე 1:1 + თქვენ შეგიძლიათ აირჩიოთ მაქსიმუმ სამი მოქმედება კომპაქტურ შეტყობინებაში საჩვენებლად! + "შეცვალეთ თითოეული შეტყობინებების მოქმედება ქვემოთ მასზე შეხებით. აირჩიეთ მაქსიმუმ სამი მათგანი, რომლებიც ნაჩვენები იქნება კომპაქტურ შეტყობინებაში მარჯვნივ მდებარე ველების გამოყენებით" + დისტანციური ძიების შეთავაზებები + გამორთეთ ვიდეოს აღწერილობისა და დამატებითი ინფორმაციის დასამალად + თემა + გამოიყენეთ სწრაფი არაზუსტი ძებნა + გამორთეთ მეტა-ინფორმაციის ყუთების დასამალად ნაკადის შემქმნელის, სტრიმინგის კონტენტის ან ძიების მოთხოვნის შესახებ დამატებითი ინფორმაციით + ვიდეოს ნაგულისხმევი ფორმატი + არაფერი + შეფერილობის შეტყობინება + გახსოვდეთ ამომხტარი ფანჯრის ბოლო ზომა და პოზიცია + მიეცით Android-ს შეტყობინებების ფერის მორგება მინიატურაში მთავარი ფერის მიხედვით (გაითვალისწინეთ, რომ ეს არ არის ხელმისაწვდომი ყველა მოწყობილობაზე) + პოზიციები სიებში + გააგრძელეთ დაკვრა + გააგრძელეთ დაკვრა შეფერხებების შემდეგ (მაგ. სატელეფონო ზარები + დაიწყეთ მთავარი მოთამაშე სრულ ეკრანზე + "URL-ის ამოცნობა ვერ მოხერხდა. სხვა აპით გახსნა\?" + ნაგულისხმევი აუდიო ფორმატი + აირჩიეთ თქვენი საყვარელი PeerTube ეგზემპლარები + დაკვრის დატვირთვის ინტერვალის ზომა + "შეცვალეთ დატვირთვის ინტერვალის ზომა (ამჟამად %s). დაბალმა მნიშვნელობამ შეიძლება დააჩქაროს საწყისი ვიდეოს ჩატვირთვა. ცვლილებები მოითხოვს მოთამაშის გადატვირთვას" + მოითხოვეთ დადასტურება რიგის გასუფთავებამდე + "არაზუსტი ძიება საშუალებას აძლევს მოთამაშეს უფრო სწრაფად მოიძიოს პოზიციები შემცირებული სიზუსტით. 5, 15 ან 25 წამის ძიება ამით არ მუშაობს" + სწრაფი წინსვლა/-გადახვევა ძიების ხანგრძლივობა + ერთი მოთამაშიდან მეორეზე გადართვამ შესაძლოა შეცვალოს თქვენი რიგი + გამორთეთ ესკიზების ჩატვირთვის თავიდან ასაცილებლად, მონაცემთა დაზოგვისა და მეხსიერების გამოყენების თავიდან ასაცილებლად. იცვლება როგორც მეხსიერებაში, ასევე დისკზე გამოსახულების ქეშის გასუფთავება + ძიების შეთავაზებები + წაშალეთ ყველა ქეშირებული ვებგვერდის მონაცემები + გამოიყენეთ ჟესტები მოთამაშის ხმის გასაკონტროლებლად + შემდეგი ნაკადის ავტომატური შეყვანა + გააგრძელეთ დაკვრის რიგის (არაგანმეორებადი) დასრულება შესაბამისი ნაკადის დამატებით + მეტამონაცემების ქეში წაშლილია + ავტომატური რიგი + ძიების ისტორია + მონაცემების გასუფთავება + აირჩიეთ შემოთავაზებების ჩვენება ძიებისას + ადგილობრივი ძიების წინადადებები + დაკვრის პოზიციის ინდიკატორების ჩვენება სიებში + ჩამოტვირთვა + თვალყური ადევნეთ ნანახ ვიდეოებს + არ დაიწყოთ ვიდეოები მინი პლეერში, არამედ პირდაპირ გადადით სრულეკრანიან რეჟიმში, თუ ავტომატური როტაცია დაბლოკილია. თქვენ კვლავ შეგიძლიათ მინი პლეერზე წვდომა სრულეკრანიდან გასვლით + დასაწყებად შეეხეთ გამადიდებელ შუშას. + გამოქვეყნდა%1$s + დაინსტალირება + კარგი + გახსენით ბრაუზერში + მონიშნეთ ნანახად + გახსენით popup რეჟიმში + გახსნა როგორც + გაზიარება + გადმოწერა + ნაკადის ფაილი ჩამოტვირთვა + ძიება + პარამეტრები + „%1$s“-ს გულისხმობდი\? + შედეგების ჩვენება: %s + შლის აუდიოს ზოგიერთი რეზოლუციით + გამოიყენეთ გარე აუდიო დამკვრელი + გამოწერა + გამოწერილი + გამოწერის გაუქმება + არხის გამოწერის გაუქმება + გამოწერის შეცვლა ვერ მოხერხდა + გამოწერის განახლება ვერ მოხერხდა + გამოწერები + ფონი + ამომხტარი ფანჯარა + დამატება: + ვიდეოს ჩამოტვირთვის საქაღალდე + გადმოწერილი ვიდეო ფაილები ინახება აქ + აუდიოს ჩამოტვირთვის საქაღალდე + უფრო მაღალი რეზოლუციის ჩვენება + დააინსტალიროთ დაკარგული Kore აპი\? + აჩვენეთ \"დაუკარი კოდით\" ვარიანტი + აჩვენეთ ვიდეოს დაკვრის ვარიანტი Kodi მედია ცენტრის საშუალებით + შეტყობინებაში ნაჩვენები ვიდეოს ესკიზის ამოჭრა 16:9-დან 1:1-მდე ასპექტის თანაფარდობით + პირველი მოქმედების ღილაკი + მეორე მოქმედების ღილაკი + მოქმედების მესამე ღილაკი + მოქმედების მეოთხე ღილაკი + მეხუთე მოქმედების ღილაკი + გაიმეორეთ + არევა + Ბუფერიზაცია + აუდიო + ღამის თემა + ღია + მუქი + შავი + დამახსოვრება ამომხტარი ფანჯრის თვისებები + აქტიური მოთამაშის რიგი შეიცვლება + ჩატვირთეთ ესკიზები + კომენტარების ჩვენება + გამორთეთ კომენტარების დასამალად + \"შემდეგი\" და \"მსგავსი\" ვიდეოების ჩვენება + აღწერილობის ჩვენება + მეტა ინფორმაციის ჩვენება + სურათის ქეში წაშლილია + წაშალეთ ქეშირებული მეტამონაცემები + ხმის ჟესტების კონტროლი + სიკაშკაშის ჟესტების კონტროლი + გამოიყენეთ ჟესტები მოთამაშის სიკაშკაშის გასაკონტროლებლად + შეინახეთ საძიებო მოთხოვნები ადგილობრივად + ნახვის ისტორია + განაახლეთ დაკვრა + აღადგინეთ დაკვრის ბოლო პოზიცია + Ავტომატური ჩართვა + აჩვენეთ წვერი \"შეაჩერე რიგში\". + რჩევის ჩვენება ფონზე ან ამომხტარ ღილაკზე დაჭერისას ვიდეოში \"დეტალები:\" + URL მხარდაუჭერელია + ნაგულისხმევი კონტენტის ქვეყანა + ნაგულისხმევი შინაარსის ენა + PeerTube-ის შემთხვევები + იპოვეთ თქვენთვის სასურველი შემთხვევები %s-ზე + მაგალითის დამატება + შეიყვანეთ მაგალითის URL + მხარდაჭერილია მხოლოდ HTTPS URL-ები + დამკვრელი + Მოქმედება + ვიდეო და აუდიო + ისტორია და ქეში + გარეგნობა + გამართვა + განახლებები + დამკვრელის შეტყობინება + მიმდინარე დამკვრელი ნაკადის შეტყობინების კონფიგურაცია + ვუკრავ ფონზე + ვუკრავ ამომხტარი ფანჯარაში + კონტენტი + ასაკით შეზღუდული კონტენტის ჩვენება + ბავშვებისთვის შესაძლოა შეუფერებელი კონტენტის ჩვენება, რადგან მას აქვს ასაკობრივი ზღვარი (როგორიცაა 18+) + YouTube გთავაზობთ „შეზღუდულ რეჟიმს“, რომელიც მალავს პოტენციურად ზრდასრულთა კონტენტს + ჩამოტვირთვები + ჩამოტვირთვები + შეცდომის საჩივარი + ყველა + არხები + დასაკრავი სიები + ვიდეოები + ტრეკები + მომხმარებლები + დღესასწაულები + სიმღერები + ალბუმები + მოღერლები + გათიშულია + გაწმენდა + საუკეთესო რეზოლუცია + გაუქმება + ყველას დაკვრა + ყოველთვის + მხოლოდ ერთხელ + ფაილი + შეტყობინებები + NewPipe შეტყობინება + შეტყობინებები NewPipe-ის დამკვრელისთვის + აპლიკაციის განახლების შეტყობინება + შეტყობინებები NewPipe-ის ახალი ვერსიებისთვის + ვიდეო ჰეშის შეტყობინება + შეტყობინებები ვიდეოების ჰეშირების პროგრესის შესახებ + ახალი ნაკადები + შეცდომის შესახებ შეტყობინება + შეტყობინებები შეცდომების გასასაჩივრებლად + [უცნობი] + ფონზე გადართვა + გადართვა ამომხტარ ფანჯარაზე + მთავარზე გადართვა + მონაცემთა ბაზის იმპორტი + მონაცემთა ბაზის ექსპორტი + reCAPTCHA ქუქიების გასუფთავება + reCAPTCHA ქუქი-ფაილები გასუფთავდა + ექსპორტის ისტორია, გამოწერები, დასაკრავი სიები და პარამეტრები + ნახვის ისტორიის გასუფთავება + წაშალოთ ნახვის მთელი ისტორია\? + ნახვის ისტორია წაშლილია + წაშალეთ დაკვრის პოზიციები + წაშლის დაკვრის ყველა პოზიციას + წაშალოთ დაკვრის ყველა პოზიცია\? + დაკვრის პოზიციები წაშლილია + წაშლის საძიებო საკვანძო სიტყვების ისტორიას + წაშალოთ მთელი ძიების ისტორია\? + დახმარება + გარე მეხსიერება მიუწვდომელია + Ქსელის შეცდომა + ყველა ესკიზის ჩატვირთვა ვერ მოხერხდა + ვიდეოს URL-ის ხელმოწერის დებფუსირება ვერ მოხერხდა + ვებსაიტის გარჩევა ვერ მოხერხდა + კონტენტი მიუწვდომელია + ჩამოტვირთვის მენიუს დაყენება ვერ მოხერხდა + აპი/UI გათიშულია + ამ ნაკადის დაკვრა ვერ მოხერხდა + მოხდა დამკვრელის გამოუსწორებელი შეცდომა + დამკვრელის შეცდომის აღდგენა + ვიდეო ნაკადები ვერ მოიძებნა + აუდიო ნაკადები ვერ მოიძებნა + ფაილი გადატანილია ან წაშლილია + ასეთი საქაღალდე არ არის + ასეთი ფაილის/შიგთავსის წყარო არ არის + ფაილის სახელი არ შეიძლება იყოს ცარიელი + მოხდა შეცდომა: %1$s + ჩამოსატვირთად ხელმისაწვდომი ნაკადები არ არის + ნაგულისხმევი პარამეტრების აღდგენა + გსურთ ნაგულისხმევი პარამეტრების აღდგენა\? + მიეცით სხვა აპებზე ჩვენების ნებართვა + NewPipe-ს შეექმნა შეცდომა, შეეხეთ შეტყობინებისთვის + მოხდა შეცდომა, იხილეთ შეტყობინება + უკაცრავად, ეს არ უნდა მომხდარიყო. + შეატყობინეთ ამ შეცდომის შესახებ ელფოსტით + დააკოპირეთ ფორმატირებული ანგარიში + მოხსენება GitHub-ზე + Ბოდიში, რაღაც არ არის რიგზე. + მოხსენება + ინფორმაცია: + Რა მოხდა: + თქვენი კომენტარი (ინგლისურად): + დეტალები: + ვიდეოს დაკვრა, ხანგრძლივობა: + მოსწონს + დაწუნებები + კომენტარები + დაკავშირებული ნივთები + აღწერა + არანაირი შედეგი + აქ არაფერია კრიკეტების გარდა + გადაიტანეთ ხელახლა შეკვეთისთვის + ვიდეო + აუდიო + ხელახლა სცადეთ + ათასი + მლნ + ბლნ + სერვისის გადართვა, ამჟამად არჩეულია: + გამოწერები არ არის + + %s გამომწერი + %s გამომწერები + + გამომწერების რაოდენობა მიუწვდომელია + ნახვები არ არის + + %s ნახვა + %s ნახვები + + არავინ უყურებს + + %s უყურებს + %s უყურებენ + + არავინ უსმენს + + %s მსმენელი + %s მსმენელები + + ვიდეოები არ არის + 100+ ვიდეოები + ∞ ვიდეოები + + %s ვიდეო + %s ვიდეოები + + კომენტარი არ არის + + %s ახალი ნაკადი + %s ახალი ნაკადები + + დაწყება + პაუზა + გადარქმევა + ფაილის სახელი + ძაფები + შეცდომა + NewPipe-ის ჩამოტვირთვა + შეეხეთ დეტალებისთვის + ჰეშის გაანგარიშება + გთხოვთ მოიცადოთ… + კოპირებულია ბუფერში + ეს ნებართვა საჭიროა ამომხტარი ფანჯრის რეჟიმში გასახსნელად + 1 ელემენტი წაიშალა. + reCAPTCHA გამოწვევა + როდესაც მოგვარდება, დააჭირეთ შესრულებულია + მოთხოვნილია reCAPTCHA გამოწვევა + ამოხსნა + შესრულებულია + შემცვლელი პერსონაჟი + ასოები და ციფრები + NewPipe-ის შესახებ + ლიცენზიები + უფასო მსუბუქი ნაკადი Android-ზე. + წვლილი შეიტანეთ + გაქვთ თუ არა იდეები; თარგმანი, დიზაინის ცვლილებები, კოდის გაწმენდა ან კოდის რეალური მძიმე ცვლილებები — დახმარება ყოველთვის მისასალმებელია. რაც მეტი კეთდება მით უკეთესი! + ნახვა GitHub-ზე + შემოწირულობა + დაბრუნება + საიტი + ეწვიეთ NewPipe ვებსაიტს დამატებითი ინფორმაციისა და სიახლეებისთვის. + NewPipe-ის კონფიდენციალურობის პოლიტიკა + "NewPipe პროექტი თქვენს კონფიდენციალურობას ძალიან სერიოზულად ეკიდება. ამიტომ, აპლიკაცია არ აგროვებს მონაცემებს თქვენი თანხმობის გარეშე. +\n NewPipe-ის კონფიდენციალურობის პოლიტიკა დეტალურად განმარტავს, თუ რა მონაცემები იგზავნება და ინახება ავარიის ანგარიშის გაგზავნისას." + წაიკითხეთ კონფიდენციალურობის პოლიტიკა + NewPipe-ის ლიცენზია + წაიკითხეთ ლიცენზია + Ხშირად დასმული შეკითხვები + თუ აპლიკაციის გამოყენება გიჭირთ, დარწმუნდით, რომ შეამოწმეთ ეს პასუხები საერთო კითხვებზე! + ნახვა საიტზე + ისტორია + ისტორია + გსურთ წაშალოთ ეს ელემენტი ძიების ისტორიიდან\? + ბოლოს დაუკრა + უმეტესად დაკვრილი + მთავარი გვერდის შინაარსი + რა ჩანართებია ნაჩვენები მთავარ გვერდზე + გადაფურცლეთ ელემენტები მათი ამოსაშლელად + არხის გვერდი + არხის გამოწერები ჯერ არ არის + აირჩიეთ დასაკრავი სია + დასაკრავი სიის სანიშნეები ჯერ არ არის + აირჩიეთ კიოსკი + ექსპორტირებულია + იმპორტირებულია + არ არის სწორი ZIP ფაილი + გაფრთხილება: ყველა ფაილის იმპორტი ვერ მოხერხდა. + ეს უგულებელყოფს თქვენს მიმდინარე პარამეტრს. + კომენტარების ჩატვირთვა ვერ მოხერხდა + ენა შეიცვლება აპის გადატვირთვის შემდეგ + ტრენდული + ტოპ 50 + ახალი და ცხელი + ყველაზე მეტად მოწონებული + კონფერენციები + რიგის დაკვრა + ამოღება + დეტალები + აუდიო პარამეტრები + გააჩერეთ რიგში + არხის დეტალების ჩვენება + რიგი + რიგში ჩადებული + რიგი შემდეგი + დაიწყეთ დაკვრა ფონზე + ნაკადის დეტალების ჩატვირთვა… + გახსენით უჯრა + დახურეთ უჯრა + სასურველი \"ღია\" მოქმედება + ნაგულისხმევი მოქმედება შინაარსის გახსნისას — %s + ვიდეო დამკვრელი + ფონური დამკვრელი + ამომხტარი დამკვრელი + ყოველთვის იკითხე + მოთხოვნილი კონტენტის ჩატვირთვა + გადარქმევა + სახელი + დასაკრავ სიაში დამატება + დადუმება + დადუმების მოხსნა + დასაკრავი სიის მინიატურად დაყენება + სანიშნე დასაკრავი სია + ამოიღეთ სანიშნე + დასაკრავი სია შეიქმნა + დასაკრავი სიაში + დასაკრავი სიის ესკიზი შეიცვალა. + ავტომატურად გენერირებული (ამტვირთავი ვერ მოიძებნა) + სუბიტრები არ არის + Ჯდება + შეავსეთ + მასშტაბირება + ავტომატურად გენერირებული + სუბტიტრები + შეცვალეთ დამკვრელის სუბტიტრების ტექსტის მასშტაბი და ფონის სტილი. ძალაში შესვლისთვის საჭიროა აპის გადატვირთვა + LeakCanary არ არის ხელმისაწვდომი + მეხსიერების გაჟონვის მონიტორინგმა შესაძლოა გამოიწვიოს აპი უპასუხოდ გროვის გადაყრის დროს + ორიგინალური დროის ჩვენება ერთეულებზე + ორიგინალური ტექსტები სერვისებიდან ხილული იქნება ნაკადის ერთეულებში + მედია გვირაბის გათიშვა + გამორთეთ მედია გვირაბი, თუ ვიდეოს დაკვრისას შავი ეკრანი ან ჭუჭყი გაქვთ + გამოსახულების ინდიკატორების ჩვენება + აჩვენე \"დამკვრელის დამსხვრევა\" + აჩვენებს ავარიის ვარიანტს დამკვრელის გამოყენებისას + გაუშვით შემოწმება ახალი ნაკადებისთვის + აპლიკაციის დაშლა + შეცდომის ზოლის ჩვენება + შექმენით შეცდომის შეტყობინება + იმპორტი + იმპორტი დან + ექსპორტი + მიმდინარეობს იმპორტი… + მიმდინარეობს ექსპორტი… + ფაილის იმპორტი + წინა ექსპორტი + გამოწერების ექსპორტი ვერ მოხერხდა + SoundCloud პროფილის იმპორტი URL-ის ან თქვენი ID-ის აკრეფით: +\n +\n 1. ჩართეთ \"დესკტოპის რეჟიმი\" ვებ-ბრაუზერში (საიტი მიუწვდომელია მობილური მოწყობილობებისთვის) +\n 2. გადადით ამ URL-ზე: %1$s +\n 3. შედით სისტემაში მოთხოვნისას +\n 4. დააკოპირეთ პროფილის URL, რომელზეც გადამისამართდით. + თქვენი ID, soundcloud.com/yourid + გაითვალისწინეთ, რომ ეს ოპერაცია შეიძლება იყოს ქსელის ძვირი. +\n +\n Გინდა გააგრძელო\? + დაკვრის სიჩქარის კონტროლი + ტემპი + ამოღება (შეიძლება გამოიწვიოს დამახინჯება) + დუმილის დროს სწრაფი წინსვლა + ნაბიჯი + გადატვირთვა + პროცენტი + ნახევარტონი + მიღება + უარყოფა + არანაირი ლიმიტი + შეზღუდეთ გარჩევადობა მობილური ინტერნეტის გამოყენებისას + შემატყობინეთ ახალი ნაკადების შესახებ გამოწერებიდან + სიხშირის შემოწმება + ნებისმიერი ქსელი + განახლებები + მაჩვენე შეტყობინება აპის განახლების მოთხოვნით, როდესაც ხელმისაწვდომი იქნება ახალი ვერსია + Შეამოწმოთ განახლებები + ხელით შეამოწმეთ ახალი ვერსიები + მინიმიზაცია აპის გადამრთველზე + მოქმედება სხვა აპზე გადასვლისას მთავარი ვიდეო დამკვრელიდან — %s + არცერთი + მინიმიზაცია ფონურ დამკვრელამდე + მინიმიზაცია ამომხტარ დამკვრელიდან + დაკვრის ავტომატურად დაწყება — %s + არასოდეს + სიის ნახვის რეჟიმი + სია + მაღალი ხარისხის (უფრო დიდი) + არ მაჩვენო + შეეხეთ ჩამოსატვირთად + დასრულდა + მომლოდინე + დაპაუზდა + რიგში დადგა + შემდგომი დამუშავება + ჩამოტვირთვა ვერ მოხერხდა + + ჩამოტვირთვა დასრულდა%s + %s ჩამოტვირთვები დასრულდა + + ფაილის გადაწერა შეუძლებელია + მიმდინარეობს ჩამოტვირთვა ამ სახელით + ამ სახელით მომლოდინე ჩამოტვირთვაა + შეცდომის ჩვენება + ფაილის შექმნა შეუძლებელია + დანიშნულების საქაღალდის შექმნა შეუძლებელია + სერვერი ვერ ვიპოვე + სერვერთან დაკავშირება შეუძლებელია + სერვერი არ აგზავნის მონაცემებს + სერვერი არ იღებს მრავალ ნაკადის ჩამოტვირთვებს, ხელახლა სცადეთ @string/msg_threads = 1 + არ მოიძებნა + შემდგომი დამუშავება ვერ მოხერხდა + მოწყობილობაზე არ არის დარჩენილი თავისუფალი ადგილი + Კავშირის დრო ამოიწურა + ამ ჩამოტვირთვის აღდგენა შეუძლებელია + გადმოწერილი ფაილების წაშლა + წაშალოთ ყველა გადმოწერილი ფაილი დისკიდან\? + + წაიშალა %1$s ჩამოტვირთვა + წაიშალა %1$s ჩამოტვირთვები + + გაჩერდი + მაქსიმალური განმეორებითი ცდები + მცდელობების მაქსიმალური რაოდენობა ჩამოტვირთვის გაუქმებამდე + შეფერხება მრიცხველ ქსელებში + დახურვა + ჩამოტვირთვის რიგის შეზღუდვა + ერთი ჩამოტვირთვა ერთდროულად იმუშავებს + ჩამოტვირთვების დაწყება + თქვენ მოგეთხოვებათ სად შეინახოთ თითოეული ჩამოტვირთვა + გამოიყენეთ სისტემის საქაღალდის ამომრჩევი (SAF) + \"Storage Access Framework\" საშუალებას გაძლევთ ჩამოტვირთოთ გარე SD ბარათზე + Android 10-დან მხოლოდ „Storage Access Framework“ არის მხარდაჭერილი + აირჩიეთ მაგალითი + აპლიკაციის ენა + სისტემის ნაგულისხმევი + ნანახის ამოღება + წაშალოთ ნანახი ვიდეოები\? + დიახ, და ნაწილობრივ ნანახი ვიდეოები + ExoPlayer-ის შეზღუდვების გამო ძიების ხანგრძლივობა დაყენდა %d წამზე + + %d წამი + %d წამები + + + %d წუთი + %d წუთები + + + %d საათი + %d საათები + + + %d დღე + %d დღეების + + Რა არის ახალი + არხების ჯგუფები + არხი ბოლოს განახლდა: %s + არ არის ჩატვირთული: %d + არხის ჩატვირთვა… + არხის დამუშავება… + ახალი არხის ელემენტები + აირჩიეთ გამომწერები + გამოწერები არ არის არჩეული + + არჩეული %d + არჩეულია %d + + ცარიელი ჯგუფის სახელი + გსურთ ამ ჯგუფის წაშლა\? + ახალი + მხოლოდ დაუჯგუფებელი გამოწერების ჩვენება + არხი + არხის განახლების ბარიერი + დრო ბოლო განახლებიდან გამოწერამდე ითვლება მოძველებულად — %s + ყოველთვის განახლება + შეცდომა არხის ჩატვირთვისას + ავტორის ანგარიში შეჩერებულია. +\n NewPipe ვერ შეძლებს ამ არხის ჩატვირთვას მომავალში. +\n გსურთ ამ არხის გამოწერის გაუქმება\? + მიიღეთ გამოყოფილი არხიდან, როცა ხელმისაწვდომია + ჩართეთ სწრაფი რეჟიმი + სწრაფი რეჟიმის გამორთვა + ნანახი ნივთების ჩვენება + ნანახი ნივთების დამალვა + ეს შინაარსი ჯერ არ არის მხარდაჭერილი NewPipe-ის მიერ. +\n +\n იმედია, ის იქნება მხარდაჭერილი მომავალ ვერსიაში. + არხის ავატარის ესკიზი + შექმნილია %s-ის მიერ + %s-ის მიხედვით + დასაკრავი სიის გვერდი + ესკიზის ჩვენება + Ბოლო + თავები + თქვენს მოწყობილობაზე არცერთ აპლიკაციას არ შეუძლია ამის გახსნა + ამ მოქმედებისთვის შესაბამისი ფაილების მენეჯერი ვერ მოიძებნა. +\n გთხოვთ, დააინსტალიროთ Storage Access Framework თავსებადი ფაილ მენეჯერი + ეს კონტენტი მიუწვდომელია თქვენს ქვეყანაში. + ეს კონტენტი პირადია, ამიტომ მისი სტრიმინგი ან ჩამოტვირთვა შეუძლებელია NewPipe-ის მიერ. + ანგარიში შეწყვეტილია + %s იძლევა ამ მიზეზს + ეს კონტენტი ხელმისაწვდომია მხოლოდ მომხმარებლებისთვის, რომლებმაც გადაიხადეს, ამიტომ მისი სტრიმინგი ან ჩამოტვირთვა შეუძლებელია NewPipe-ის მიერ. + გამორჩეული + რადიო + აირჩიეთ თქვენი საყვარელი ღამის თემა — %s + ჩამოტვირთვა დაიწყო + ჩართეთ აღწერილობაში ტექსტის არჩევა + გამორთეთ აღწერილობაში ტექსტის არჩევა + კატეგორია + ტეგები + ლიცენზია + კონფიდენციალურობა + Ასაკობრივი შეზღუდვა + Ენა + მასპინძელი + მინიატურების URL + საჯარო + დამალული + პირადი + შიდა + ჩამაგრებული კომენტარი + დაგულებულია შემქმნელის მიერ + საიტის გახსნა + პლანშეტის რეჟიმი + ჩართულია + გამორთულია + ExoPlayer ნაგულისხმევი + შეტყობინებები გამორთულია + მიიღეთ შეტყობინება + თქვენ ახლა გამოიწერეთ ეს არხი + , + ყველას გადართვა + ნაკადები, რომლებიც ჯერ არ არის მხარდაჭერილი დამტვირთველის მიერ, არ არის ნაჩვენები + არჩეული ნაკადი არ არის მხარდაჭერილი გარე დამკვრელის მიერ + ვიდეო ნაკადები არ არის ხელმისაწვდომი გარე დამკვრელებისთვის + აირჩიეთ ხარისხი გარე დამკვრელებისთვის + უცნობი ფორმატი + უცნობი ხარისხი + მომავალი ელემენტების ჩვენება + სამომავლო ნივთების დამალვა + დალაგება + ეგეთი უკვე არსებობს + ინსტანციის დადასტურება ვერ მოხერხდა + ჩართეთ YouTube-ის „შეზღუდული რეჟიმი“ + "ეს ვიდეო ასაკობრივი შეზღუდულია. +\n თუ გსურთ მისი ნახვა, ჩართეთ „%1$s“ პარამეტრებში." + ლაივი + ეს ვიდეო ასაკობრივად შეზღუდულია. +\n YouTube-ის ახალი წესების გამო ასაკობრივად შეზღუდული ვიდეოებით, NewPipe-ს არ შეუძლია წვდომა მის რომელიმე ვიდეო ნაკადზე და, შესაბამისად, ვერ ახერხებს მის დაკვრას. + ძიების ისტორია წაიშალა + წაშალეთ ქუქი-ფაილები, რომლებსაც NewPipe ინახავს, როდესაც თქვენ გადაჭრით reCAPTCHA + წაშლის ნათამაშები დაკვრილ ისტორიას და დაკვრის პოზიციებს + ფაილი წაიშალა + შეტყობინებები ახალი ნაკადების შესახებ გამოწერებისთვის + უგულებელყოფს თქვენს ამჟამინდელ ისტორიას, გამოწერებს, დასაკრავ სიებს და (სურვილისამებრ) პარამეტრებს + ძიების ისტორიის გასუფთავება + შეცდომა + გთხოვთ, შეამოწმოთ, არის თუ არა პრობლემა თქვენი ავარიის განხილვის შესახებ. დუბლიკატი ბილეთების შექმნისას ჩვენგან იღებთ დროს, რომელიც ჩვენ შეგვიძლია დავხარჯოთ ფაქტობრივი ხარვეზის გამოსწორებაში. + გარე SD ბარათზე ჩამოტვირთვა შეუძლებელია. გსურთ ჩამოტვირთვის საქაღალდის მდებარეობის გადაყენება\? + გარე დამკვრელს არ აქვთ ამ ტიპის ბმულების მხარდაჭერა + ფაილი არ არსებობს ან მასზე წაკითხვის ან ჩაწერის ნებართვა აკლია + შენახული ჩანართების წაკითხვა ვერ მოხერხდა, ამიტომ გამოიყენეთ ნაგულისხმევი ჩანართები + რა:\\nმოითხოვეთ:\\შინაარსის ენა:\\nშინაარსის ქვეყანა:\\nაპლიკაციის ენა:\\nმომსახურება:\\nGMT დრო:\\პაკეტი:\\ვერსია:\\nOS ვერსია: + ამტვირთველის ავატარის ესკიზი + კომენტარები გამორთულია + Შექმნა + წაშლა + გაუქმება + საკონტროლო ჯამი + გთხოვთ, განსაზღვროთ ჩამოტვირთვის საქაღალდე მოგვიანებით პარამეტრებში + ჩამოტვირთვის საქაღალდე ჯერ არ არის დაყენებული, ახლავე აირჩიეთ ჩამოტვირთვის ნაგულისხმევი საქაღალდე + ჩამოტვირთვები + ყველაზე განსაკუთრებული პერსონაჟები + დაშვებული სიმბოლოები ფაილის სახელებში + არასწორი სიმბოლოები ჩანაცვლებულია ამ მნიშვნელობით + შესახებ & ხშირად დასმული კითხვები + ამ ფაილის დასაკრავად აპი არ არის დაინსტალირებული + მესამე მხარის ლიცენზიები + © %1$s მიერ %2$s %3$s-ის ქვეშ + NewPipe შემუშავებულია მოხალისეების მიერ, რომლებიც ატარებენ თავისუფალ დროს და მოგაქვთ საუკეთესო მომხმარებლის გამოცდილება. დაეხმარეთ დეველოპერებს, გააუმჯობესონ NewPipe, სანამ ფინჯანი ყავით ტკბებიან. + YouTube გამოწერების იმპორტი Google takeout-დან: +\n +\n 1. გადადით ამ URL-ზე: %1$s +\n 2. შედით სისტემაში მოთხოვნისას +\n 3. დააწკაპუნეთ ღილაკზე \"ყველა მონაცემი შედის\", შემდეგ \"გააუქმეთ ყველა\", შემდეგ აირჩიეთ მხოლოდ \"გამოწერა\" და დააწკაპუნეთ \"OK\" +\n 4. დააწკაპუნეთ „შემდეგი ნაბიჯი“ და შემდეგ „ექსპორტის შექმნა“ +\n 5. დააწკაპუნეთ ღილაკზე „ჩამოტვირთვა“ მისი გამოჩენის შემდეგ +\n 6. დააწკაპუნეთ IMPORT FILE ქვემოთ და აირჩიეთ გადმოწერილი .zip ფაილი +\n 7. [თუ .zip-ის იმპორტი ვერ მოხერხდა] ამოიღეთ. + მოედანი + ახალი ნაკადების შეტყობინებები + მონაცემთა დაცვის ევროპული ზოგადი რეგულაციის (GDPR) შესაბამისობის მიზნით, ჩვენ ვაქცევთ თქვენს ყურადღებას NewPipe-ის კონფიდენციალურობის პოლიტიკაზე. გთხოვთ ყურადღებით წაიკითხოთ. +\nთქვენ უნდა დაეთანხმოთ მას, რომ გამოგვიგზავნოთ ხარვეზის ანგარიში. + საჭიროა ქსელის კავშირი + ბადე + Seekbar-ის ესკიზის გადახედვა + მხოლოდ Wi-Fi-ზე + დაბალი ხარისხი(პატარა) + NewPipe განახლება ხელმისაწვდომია! + მოქმედება უარყოფილია სისტემის მიერ + მიმდინარეობს განახლებების შემოწმება… + შექმენით უნიკალური სახელი + გადაწერა + ფაილი ამ სახელით უკვე არსებობს + ჩამოტვირთული ფაილი ამ სახელით უკვე არსებობს + უსაფრთხო კავშირის დამყარება ვერ მოხერხდა + გსურთ თქვენი ჩამოტვირთვის ისტორიის გასუფთავება ან ყველა გადმოწერილი ფაილის წაშლა\? + ფაილზე მუშაობისას NewPipe დაიხურა + პროგრესი დაიკარგა, რადგან ფაილი წაიშალა + ჩამოტვირთვის ისტორიის გასუფთავება + სასარგებლოა მობილური ინტერნეტზე გადასვლისას, თუმცა ზოგიერთი ჩამოტვირთვის შეჩერება შეუძლებელია + ჩამოტვირთვების პაუზა + იკითხეთ, სად უნდა ჩამოტვირთოთ + თქვენ მოგეთხოვებათ სად შეინახოთ თითოეული ჩამოტვირთვა. +\n ჩართეთ სისტემის საქაღალდის ამომრჩევი (SAF), თუ გსურთ ჩამოტვირთოთ გარე SD ბარათზე + ვიდეოები, რომლებიც უყურეთ დასაკრავ სიაში დამატებამდე და მის შემდეგ, წაიშლება. +\n დარწმუნებული ხართ\? ამის გაუქმება შეუძლებელია! + NewPipe არის copyleft უფასო პროგრამული უზრუნველყოფა: თქვენ შეგიძლიათ გამოიყენოთ, შეისწავლოთ, გააზიაროთ და გააუმჯობესოთ იგი სურვილისამებრ. კონკრეტულად თქვენ შეგიძლიათ გადაანაწილოთ და/ან შეცვალოთ იგი GNU-ს ზოგადი საჯარო ლიცენზიის პირობებით, როგორც ეს გამოქვეყნებულია თავისუფალი პროგრამული უზრუნველყოფის ფონდის მიერ, ლიცენზიის მე-3 ვერსიით, ან (თქვენი სურვილისამებრ) ნებისმიერი შემდგომი ვერსიით. + ავტო + ცარიელი გვერდი + აირჩიეთ არხი + კიოსკის გვერდი + ნაგულისხმევი კიოსკი + გსურთ პარამეტრების იმპორტიც\? + რიგში დადგა შემდეგი + დაიწყეთ დაკვრა ამომხტარ ფანჯარაში + ადგილობრივი + ახლახან დამატებულია + ინფორმაციის მიღება… + ახალი დასაკრავი სია + დამუშავება… შეიძლება რამდენიმე წუთი დასჭირდეს + წაშალოთ ეს დასაკრავი სია\? + მეხსიერების გაჟონვის ჩვენება + აღდგენა. + რიგი + გამოწერების იმპორტი ვერ მოხერხდა + შეატყობინეთ სასიცოცხლო ციკლის შეცდომებს + იძულებითი მოხსენება შეუსაბამო Rx გამონაკლისების შესახებ ფრაგმენტის ან აქტივობის სასიცოცხლო ციკლის გარეთ განკარგვის შემდეგ + აჩვენეთ პიკასოს ფერადი ლენტები სურათების თავზე, სადაც მითითებულია მათი წყარო: წითელი ქსელისთვის, ლურჯი დისკისთვის და მწვანე მეხსიერებისთვის + სწრაფი კვების რეჟიმი ამაზე მეტ ინფორმაციას არ იძლევა. + „%s“-ის არხის ჩატვირთვა ვერ მოხერხდა. + ხელმისაწვდომია ზოგიერთ სერვისში, როგორც წესი, ბევრად უფრო სწრაფია, მაგრამ შეიძლება დააბრუნოს შეზღუდული რაოდენობის ელემენტი და ხშირად არასრული ინფორმაცია (მაგ. ხანგრძლივობის გარეშე, ელემენტის ტიპი, არ არის ლაივის სტატუსი) + გამოიყენეთ ესკიზი როგორც ჩაკეტილი ეკრანის ფონისთვის, ასევე შეტყობინებებისთვის + "როგორ ფიქრობთ, არხის ჩატვირთვა ძალიან ნელია\? თუ ასეა, სცადეთ ჩართოთ სწრაფი ჩატვირთვა (შეგიძლიათ შეცვალოთ ის პარამეტრებში ან ქვემოთ მოცემულ ღილაკზე დაჭერით). +\n +\n NewPipe გთავაზობთ არხის ჩატვირთვის ორ სტრატეგიას: +\n • მთელი სააბონენტო არხის მიღება, რომელიც ნელია, მაგრამ დასრულებულია. +\n • გამოყოფილი სერვისის საბოლოო წერტილის გამოყენება, რომელიც არის სწრაფი, მაგრამ ჩვეულებრივ არასრული. +\n +\n ამ ორს შორის განსხვავება ისაა, რომ სწრაფს, როგორც წესი, აკლია გარკვეული ინფორმაცია, მაგალითად, ნივთის ხანგრძლივობა ან ტიპი (არ განასხვავებს პირდაპირ ვიდეოებს ჩვეულებრივ ვიდეოებს შორის) და შეიძლება დაბრუნდეს ნაკლები ელემენტი. +\n +\n YouTube არის სერვისის მაგალითი, რომელიც გთავაზობთ ამ სწრაფ მეთოდს თავისი RSS არხით. +\n +\n ასე რომ, არჩევანი დამოკიდებულია იმაზე, თუ რა გირჩევნიათ: სიჩქარე ან ზუსტი ინფორმაცია." + ეს არის SoundCloud Go+ სიმღერა, ყოველ შემთხვევაში თქვენს ქვეყანაში, ამიტომ მისი სტრიმინგი ან ჩამოტვირთვა შეუძლებელია NewPipe-ის მიერ. + ამ მოქმედებისთვის შესაბამისი ფაილების მენეჯერი ვერ მოიძებნა. +\n გთხოვთ, დააინსტალიროთ ფაილის მენეჯერი ან სცადოთ გამორთოთ \'%s\' ჩამოტვირთვის პარამეტრებში + ეს ვიდეო ხელმისაწვდომია მხოლოდ YouTube Music Premium-ის წევრებისთვის, ამიტომ მისი სტრიმინგი ან ჩამოტვირთვა შეუძლებელია NewPipe-ის მიერ. + ავტომატური (მოწყობილობის თემა) + თქვენ შეგიძლიათ აირჩიოთ თქვენი საყვარელი ღამის თემა ქვემოთ + ახლა შეგიძლიათ აირჩიოთ ტექსტი აღწერილობაში. გაითვალისწინეთ, რომ გვერდი შეიძლება ციმციმდეს და ბმულები არ იყოს დაწკაპუნებული შერჩევის რეჟიმში. + მხარდაჭერა + აუდიო ნაკადები არ არის ხელმისაწვდომი გარე დამკვრელებისთვის + \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 0a36e3ee6..0c4642744 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -150,7 +150,7 @@ NewPipe에 대해서 제3자 라이센스 © %3$s 하에서 %2$s 에 의한 %1$s - NewPipe 정보 + 정보 및 자주 묻는 질문들 라이센스 가볍고 빠른 자유 안드로이드 스트리밍 앱입니다. 기여 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 77d55ae7e..314dba462 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -118,7 +118,7 @@ Negalima keisti prenumeratos Negalima atnaujinti prenumeratos Prenumeratos - Kas Naujo + Kas naujo Ieškoti istorijoje Saugoti paieškos užklausas vietinėje atmintyje Žiūrėjimo istorija @@ -436,7 +436,7 @@ Generuoti unikalų vardą Atkūrimo greičio valdymas Rodyti miniatiūrą - Kanalo grupės + Kanalų grupės %d diena %d dienos @@ -463,7 +463,7 @@ Paskutiniai Niekada Kanalas - Naujas + Nauja atstatoma Užverti Sustabdyti diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 196e4000d..b93d7a1e5 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -41,7 +41,7 @@ Opplasterens avatar Nikk Nesetrekk - Trykk forstørrelsesglasset for å begynne + Trykk på forstørrelsesglasset for å komme i gang. Innhold Vis aldersbegrenset innhold Feil @@ -276,16 +276,16 @@ Tøm avspillingshistorikk Slett historikken og posisjon for avspilte strømmer Slett hele visningshistorikken\? - Visningshistorikk slettet. + Visningshistorikken er slettet Tøm søkehistorikk Sletter historikken for søkte nøkkelord Slett hele søkehistorikken\? - Søkehistorikk slettet. + Søkehistorikken er slettet Ett element slettet. Inget program installert for avspilling av denne filen Undertekster Endre spillerens undertekststørrelse og bakgrunnsstiler. Krever omstart av appen for å tre i kraft - NewPipe er copyleft, fri programvare: Du kan bruke, studere og forbedre etter egen vilje. Spesifikt kan du redistribuere og/eller modifisere det i henhold til vilkårene gitt i GNU General Public-lisensen, som publisert av Free Software Foundation, enten versjon 3 av lisensen, eller (etter eget ønske) enhver senere versjon. + NewPipe er copyleft-fri programvare: Du kan bruke, studere og forbedre den etter egen vilje. Spesifikt kan du redistribuere og/eller modifisere den i henhold til vilkårene gitt i GNU General Public-lisensen, som er publisert av Free Software Foundation, enten versjon 3 av lisensen, eller (etter eget ønske) enhver senere versjon. Ønsker du også å importere innstillinger? Kunne ikke importere abonnementer Kunne ikke eksportere abonnementer @@ -315,8 +315,8 @@ NewPipe-prosjektet tar ditt personvern veldig alvorlig. Derfor samler ikke programmet inn data uten ditt samtykke. \nNewPipes personvernspraksis forklarer i detalj hvilken data som sendes og lagres når du sender en krasjrapport. Les personvernspraksis - For å overholde Europeisk Generell Data Proteksjons-Regularing (GDPR), vil vi rette oppmerksomheten din mot NewPipes personvernspraksis. Les den nøye. -\nDu må godta den for å sende oss feilrapporten. + For å overholde EUs personvernforordning (GDPR), vil vi rette oppmerksomheten din mot NewPipe sin personvernerklæring. Vennligst les den nøye. +\nDu må godta den, for å sende oss feilrapporten. Godta Avslå Ubegrenset @@ -398,7 +398,7 @@ Posisjon i lister Vis avspillingsposisjonsindikator i lister Tøm data - Avspillingsposisjon slettet. + Avspillingsposisjoner er slettet Fil flyttet eller slettet En fil ved dette navnet finnes allerede Kan ikke overskrive filen @@ -416,7 +416,7 @@ Du vil bli spurt om hvor hver nedlasting skal plasseres \nAktiver system mappe velgeren (SAF) dersom du vil laste ned til et eksternt SD kort Bruk systemmappevelger (SAF) - «Lagringstilgangsrammeverk» (SAF) tillater nedlasting til eksternt SD-kort. + \'Lagringstilgangsrammeverk\' (SAF) tillater nedlasting til et eksternt SD-kort Slett avspillingsposisjoner Sletter alle avspillingsposisjoner Slett alle avspillingsposisjoner\? @@ -431,7 +431,7 @@ %s lytter %s lyttere - Språket vil endres når programmet startes på ny. + Språket vil først bli endret etter at programmet har blitt omstartet Standard kiosk PeerTube-instanser Lokal @@ -536,7 +536,7 @@ Du kan maksimalt velge tre handlinger som skal vises i kompaktvarselet! Rediger hver varslingshandling nedenfor ved å trykke på den. Velg opptil tre av dem som skal vises i det kompakte varselet ved å bruke avmerkingsboksene til høyre Beskjær videominiatyrbildet som vises i varselet fra 16:9 til 1:1 sideforhold (kan føre til forvrengninger) - Tilgjengelig i noen tjenester, det er vanligvis mye raskere, men kan gi et begrenset antall elementer, og ofte ufullstendig info (f.eks. ingen varighet, elementtype, eller sanntidsstatus). + Tilgjengelig i noen tjenester, det er vanligvis mye raskere, men kan gi et begrenset antall elementer, og ofte ufullstendig informasjon (f.eks. ingen varighet, elementtype, eller sanntidsstatus) Hent fra dedikert strøm når tilgjengelig Tid siden siste oppdatering før et abonnement vurderes utdatert — %s Som følge av begrensninger i ExoPlayer er blafringsdistansen begrenset til %d sekunder @@ -612,8 +612,8 @@ Skaperens konto har blitt terminert. \nNewPipe vil ikke kunne laste inn denne informasjonskanalen i fremtiden. \nØnsker du å oppheve ditt abonnement på denne kanalen\? - Skru av valgt av tekst i beskrivelsen - Skru på valg av tekst i beskrivelsen + Skru av merking av tekst i beskrivelsen + Skru på merking av tekst i beskrivelsen %s oppgav denne grunnen: Konto terminert Vis avspilte elementer @@ -621,8 +621,8 @@ Kunne ikke laste inn informasjonskanal Fra Android 10 er kun «lagringstilgangsrammeverk» støttet Du vil bli spurt om hvor du vil lagre hver nedlastning - Miniatyrbildeforhåndsvisning - Ingen nedlastingsmappe valgt. Velg forvalgt nedlastingsmappe nå. + Forhåndsvisning av miniatyrbilde i søkefelt + Ingen nedlastingsmappe er satt ennå, velg en standard nedlastingsmappe nå Av Nettbrett-modus @@ -655,9 +655,9 @@ Søkeforslag annensteds fra Lokale søkeforslag Marker som sett - Ikke start videoer i minispilleren, men gå til fullskjermsmodus direkte, hvis auto-rotering er låst. Du har fremdeles tilgang til minispilleren ved å avslutte fullskjermsvisning. + Ikke start videoer i minispilleren, men bytt til fullskjermsmodus direkte dersom auto-rotering er låst. Du har fremdeles tilgang til minispilleren ved å avslutte fullskjermsvisningen Vis Picasso-fargede bånd på toppen av bilder for å indikere kilde: Rød for nettverk, blå for disk, og grønn for minne - Hjertemerket av skaper + Hjertemerket av skaperen Vis bildeindikatorer Dra elementer for å fjerne dem Start hovedspiller i fullskjerm @@ -666,10 +666,10 @@ Se etter oppdateringer Behandler … Kan ta sin tid Krasj avspilleren - Vis «Krasj spilleren» + Vis \"Krasj spilleren\" Se etter nye versjoner manuelt Nye informasjonskanalelementer - Ser etter oppdateringer … + Ser etter oppdateringer… Viser et krasjalternativ ved bruk av avspilleren Det oppsto en feil, se varselet Festet kommentar @@ -677,7 +677,7 @@ Merknader for innrapportering av feil NewPipe oppdaget en feil, trykk for å rapportere Opprett en feilmerknad - Vis et feil-alternativsfelt + Vis en feil hurtigbar Ingen passende filbehandler ble funnet for denne handlingen. \nVennligst installer en filbehandler, eller prøv å skru av \'%s\' i nedlastingsinnstillingene Ingen passende filbehandler ble funnet for denne handlingen. @@ -686,4 +686,42 @@ ExoPlayer-forvalg Intervallstørrelse for avspillingsinnlasting Bytt avspillinginnlastingens intervallstørrelse (for øyeblikket %s). En lavere verdi kan øke hastigheten på den første videoinnlastingen. Endringer krever en omstart av spilleren + Spillervarsel + Varsler + Nye strømmer + Varsler om nye strømmer for abonnementer + + %s ny strøm + %s nye strømmer + + , + Konfigurer varsling for gjeldende avspillingsstrøm + Prosent + Halvtone + Den valgte strømmen støttes ikke av eksterne spillere + Laster inn strømdetaljer… + Slett alle nedlastede filer fra harddisken\? + Varsler er deaktivert + Du abonnerer nå på denne kanalen + Strømmer som ennå ikke er støttet av nedlasteren, vises ikke + Velg kvalitet for eksterne spillere + Vis fremtidige elementer + Skjul viste elementer + Ingen videostrømmer er tilgjengelige for eksterne spillere + Ukjent format + Ukjent kvalitet + Skjul fremtidige elementer + Ofte stilte spørsmål + Vis på nettsiden + Start sjekk etter nye strømmer + Varsel om nye strømmer + Hyppighet for sjekk + Varsle om nye strømmer fra abonnementer + Nødvendig nettverkstilkobling + Et hvilket som helst nettverk + Bli varslet + Ingen lydstrømmer er tilgjengelige for eksterne spillere + Sorter + Velg alle + Hvis du har problemer med å bruke appen, så bør du sjekke ut disse svarene fra generelle spørsmål! \ No newline at end of file diff --git a/app/src/main/res/values-nn/strings.xml b/app/src/main/res/values-nn/strings.xml new file mode 100644 index 000000000..d937b6a69 --- /dev/null +++ b/app/src/main/res/values-nn/strings.xml @@ -0,0 +1,66 @@ + + + Trykk på aukeglaset for å byrja. + Gjeve ut den %1$s + Fann ingen straumspelar. Legg inn VLC\? + Ingen straumavspelar funne (du kan leggja inn VLC for å spela av straumen). + Legg inn + Avbryt + Greitt + Opna i ein nettlesar + Merk som sett + Sprett opp i eit vindauga + Opna med + Del + Søk + Innstillingar + Tenkte du på «%1$s»\? + Del med + Nytta ytre videospelar + Tek bort ljod ved somme oppløysingar + Nytta ein ytre ljodavspelar + Fylg + Fylgjer + Stogg å fylgja + Gjeve opp å fylgja kanalen + Vis opplysingar + Fylgingar + Gøymde spelelister + Vel fane + Sprett opp + Legg til i + Vel hentemappe for videofiler + Hentemappe for ljod + Vis høgare oppløysingar + Berre somme einingar kan spela av 2K-/4K-videoar + Spel av med Kodi + Syna \"Spela av med Kodi\"-val + Hent + Hent straumfil + Gøymer henta videofiler her + Bakgrunn + Videohentingsmappe + Henta ljodfiler vert gøymt her + Vel hentemappe for ljodfiler + Legg inn saknande Kore-app\? + Viser svar for: %s + Kunne ikkje brigde fylging + Nettbrettmodus + + Av + Merknader er slått av + , + Slå av/på alle + Ingen ljodstraumar er tilgjengelege for ytre spelarar + Ingen videostraumar er tilgjengelege for ytre spelarar + Vel kvalitet for ytre spelarar + Vis framtidige ting + Skjul framtidige ting + Skil ut + Opna nettstaden + Du fylgjer no denne kanalen + Vald straum er ikkje stødd av ytre spelarar + Straumar som ikkje enno er stødde av hentaren, er ikkje synlege + Ukjend kvalitet + Ukjend format + \ No newline at end of file diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index b9bab7892..17564b93b 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -15,7 +15,7 @@ ଗାଢ଼ %d ମିନିଟ୍ - %d ମିନିଟ୍ + ମୋଟ %d ମିନିଟ୍ ଆପ୍ ଭାଷା ସ୍ୱୟଂଚାଳିତ (ଡିଭାଇସ୍ ଥିମ୍) @@ -25,19 +25,19 @@ ଚାଲୁ %d ଘଣ୍ଟା - %d ଘଣ୍ଟା + ମୋଟ %d ଘଣ୍ଟା %d ସେକେଣ୍ଡ - %d ସେକେଣ୍ଡ + ମୋଟ %d ସେକେଣ୍ଡ %d ଦିନ - %d ଦିନ + ମୋଟ %d ଦିନ ନୂଆ %1$s ରେ ପ୍ରକାଶିତ - କୌଣସି ଷ୍ଟ୍ରିମ୍ ପ୍ଲେୟାର୍ ମିଳିଲା ନାହିଁ | VLC ସଂସ୍ଥାପନ କରନ୍ତୁ \? + କୌଣସି ଷ୍ଟ୍ରିମ୍ ପ୍ଲେୟାର୍ ମିଳିଲା ନାହିଁ । VLC ସଂସ୍ଥାପନ କରନ୍ତୁ \? କୌଣସି ଷ୍ଟ୍ରୀମ ପ୍ଲେୟାର ନାହିଁ । ସଂସ୍ଥାପନ କରନ୍ତୁ ପପ୍ଅପ୍ ମୋଡ୍ ରେ ଖୋଲନ୍ତୁ @@ -52,4 +52,676 @@ ସନ୍ଧାନ ଠିକ୍ ଅଛି ବ୍ରାଉଜରରେ ଖୋଲନ୍ତୁ + ବୁକମାର୍କ ହୋଇଥିବା ପ୍ଲେଲିଷ୍ଟଗୁଡିକ + ପୃଷ୍ଠଭୂମି + ପପ୍ଅପ୍ + ଭିଡିଓ ଡାଉନଲୋଡ୍ ଫୋଲ୍ଡର୍ + ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଭିଡିଓ ଫାଇଲଗୁଡ଼ିକ ଏଠାରେ ଗଚ୍ଛିତ ଅଛି + ଅଡିଓ ଫାଇଲ୍ ପାଇଁ ଡାଉନଲୋଡ୍ ଫୋଲ୍ଡର୍ ବାଛନ୍ତୁ + ୟୁଟ୍ୟୁବ୍ ଏକ \"ପ୍ରତିବନ୍ଧିତ ମୋଡ୍\" ପ୍ରଦାନ କରେ ଯାହା ସମ୍ଭାବ୍ୟ ପରିପକ୍ୱ ବିଷୟବସ୍ତୁକୁ ଲୁଚାଇଥାଏ + ଇତିହାସ ବିଲୋପ ଦେଖନ୍ତୁ + ପ୍ଲେକ୍ ପୋଜିସନ୍ ଡିଲିଟ୍ ହୋଇଛି + ସନ୍ଧାନ ଇତିହାସ ବିଲୋପ ହେଲା + ଆପ୍ ପୁନଃଆରମ୍ଭ ହେବା ପରେ ଭାଷା ପରିବର୍ତ୍ତନ ହେବ + ପ୍ଲେଲିଷ୍ଟ ଥମ୍ବନେଲ ଭାବରେ ସେଟ୍ କରନ୍ତୁ + ଫାଇଲ୍ କୁ ନବଲିଖନ କରିପାରିବ ନାହିଁ + ଫାଇଲ୍ ସୃଷ୍ଟି ହୋଇପାରିବ ନାହିଁ + ସର୍ଭର ସହିତ ସଂଯୋଗ ହୋଇପାରିବ ନାହିଁ + ଗନ୍ତବ୍ୟସ୍ଥଳ ଫୋଲ୍ଡର ସୃଷ୍ଟି ହୋଇପାରିବ ନାହିଁ + %s ରେ ଆପଣ ପସନ୍ଦ କରୁଥିବା ଉଦାହରଣଗୁଡିକ ଖୋଜ + ଉଦାହରଣ ଯୋଡନ୍ତୁ + ଉଦାହରଣ ବୈଧ କରିପାରିଲା ନାହିଁ + ଭିଡିଓ ବର୍ଣ୍ଣନା ଏବଂ ଅତିରିକ୍ତ ସୂଚନା ଲୁଚାଇବାକୁ ବନ୍ଦ କରନ୍ତୁ + ଅଡିଓ + ବାହ୍ୟ ଅଡିଓ ପ୍ଲେୟାର ବ୍ୟବହାର କରନ୍ତୁ + ସବସ୍କ୍ରାଇବ କରନ୍ତୁ + ସଦସ୍ୟତା ଅଦ୍ୟତନ କରିପାରିଲା ନାହିଁ + ଟ୍ୟାବ୍ ବାଛନ୍ତୁ + ଅଡିଓ ଡାଉନଲୋଡ୍ ଫୋଲ୍ଡର୍ + ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଅଡିଓ ଫାଇଲଗୁଡ଼ିକ ଏଠାରେ ଗଚ୍ଛିତ ଅଛି + ଭିଡିଓ ଫାଇଲ୍ ପାଇଁ ଡାଉନଲୋଡ୍ ଫୋଲ୍ଡର୍ ବାଛନ୍ତୁ + ଡିଫଲ୍ଟ ରେଜୋଲୁସନ + କୋଡି ସହିତ ଖୋଲନ୍ତୁ + ଦ୍ୱିତୀୟ କ୍ରିୟା ବଟନ୍ + ପୁନରାବୃତ୍ତି କରନ୍ତୁ + ବିଜ୍ଞପ୍ତିକୁ ରଙ୍ଗ କରନ୍ତୁ + ପପ୍ଅପ୍ ର ଶେଷ ଆକାର ଏବଂ ସ୍ଥିତି ମନେରଖ + ଦ୍ରୁତ ନିଷ୍କ୍ରିୟ ସନ୍ଧାନ ବ୍ୟବହାର କରନ୍ତୁ + ମନ୍ତବ୍ୟ ଲୁଚାଇବାକୁ ବନ୍ଦ କରନ୍ତୁ + ଇତିହାସ ଖୋଜ + ସ୍ଥାନୀୟ ଭାବରେ ସନ୍ଧାନ ଜିଜ୍ଞାସା ଗଚ୍ଛିତ କରନ୍ତୁ + \"ଧାଡ଼ିରେ ମିଶାଇବାକୁ ଧରି ରଖନ୍ତୁ\" ଟିପ୍ ଦେଖାନ୍ତୁ + ଅସମର୍ଥିତ URL + ଦ୍ରୁତ-ଅଗ୍ରଗାମୀ / ପାଶ୍ଚାତ ଗାମୀ ସମୟ ଖୋଜ + ମନ୍ତବ୍ୟଗୁଡିକ ଦେଖାନ୍ତୁ + ଡାଉନଲୋଡ୍ କରନ୍ତୁ + ସହିତ ଅଂଶୀଦାର କରନ୍ତୁ + ପରବର୍ତ୍ତୀ ଷ୍ଟ୍ରିମ୍କୁ ଅଟୋ-ଏନକ୍ୟୁ କରନ୍ତୁ + ଅଟୋ-ଏନକ୍ୟୁଇଙ୍ଗ୍ + ଏକ ଧାଡି ସଫା କରିବା ପୂର୍ବରୁ ନିଶ୍ଚିତକରଣ ମାଗନ୍ତୁ + ଗୋଟିଏ ଖେଳାଳୀରୁ ଅନ୍ୟ ଖେଳାଳୀକୁ ପରିବର୍ତ୍ତନ କରିବା ଆପଣଙ୍କ ଧାଡି ବଦଳାଇପାରେ + ସକ୍ରିୟ ପ୍ଲେୟାର କ୍ୟୁ ବଦଳାଯିବ + ଥମ୍ୱନେଲ୍ ଲୋଡ୍ କରନ୍ତୁ + \'ପରବର୍ତ୍ତୀ\' ଏବଂ \'ସମାନ\' ଭିଡିଓଗୁଡିକ ଦେଖାନ୍ତୁ + ବର୍ଣ୍ଣନା ଦେଖାନ୍ତୁ + ପ୍ରତିଛବି କ୍ୟାଚ୍ ପୋଛି ଦିଆଗଲା + ମେଟାଡାଟା କ୍ୟାଚ୍ ପୋଛି ହୋଇଗଲା + ଭଲ୍ୟୁମ୍ ଅଙ୍ଗଭଙ୍ଗୀ ନିୟନ୍ତ୍ରଣ + ପ୍ଲେୟାରର ଉଜ୍ଜ୍ୱଳତାକୁ ନିୟନ୍ତ୍ରଣ କରିବା ପାଇଁ ଅଙ୍ଗଭଙ୍ଗୀ ବ୍ୟବହାର କରନ୍ତୁ + ପରାମର୍ଶ ଖୋଜ + ସ୍ଥାନୀୟ ସନ୍ଧାନ ପରାମର୍ଶ + ସୁଦୂର ସନ୍ଧାନ ପରାମର୍ଶ + ଦେଖାଯାଇଥିବା ଭିଡିଓ ଗୁଡ଼ିକର ଇତିହାସ + ପୁନଃ ଚଲାନ୍ତୁ + ତାଲିକାରେ ଅବସ୍ଥାନ + ତଥ୍ୟ ସଫା କରନ୍ତୁ + ଦେଖାଯାଇଥିବା ଭିଡିଓଗୁଡିକର ଟ୍ରାକ୍ ରଖନ୍ତୁ + ଖେଳିବା ଆରମ୍ଭ କରନ୍ତୁ + ଫୁଲ ସ୍କ୍ରିନରେ ମୁଖ୍ୟ ପ୍ଲେୟାର ଆରମ୍ଭ କରନ୍ତୁ + ସ୍ଵତଃ ଚଳିତ + URL ଚିହ୍ନି ପାରିଲା ନାହିଁ । ଅନ୍ୟ ଏକ ଆପ୍ ସହିତ ଖୋଲନ୍ତୁ\? + ଡିଫଲ୍ଟ ବିଷୟବସ୍ତୁ ଦେଶ + ଡିଫଲ୍ଟ ବିଷୟବସ୍ତୁ ଭାଷା + PeerTube ଉଦାହରଣ + ଉଦାହରଣ URL ପ୍ରବେଶ କରନ୍ତୁ + କେବଳ HTTPS URL ଗୁଡିକ ସମର୍ଥିତ + ଇନଷ୍ଟାଣ୍ଟ ପୂର୍ବରୁ ବିଦ୍ୟମାନ ଅଛି + ପ୍ଲେୟାର + ଇତିହାସ ଏବଂ କ୍ୟାଚ୍ + ଦୃଶ୍ୟ + ତ୍ରୁଟି ନିବାରଣ କରନ୍ତୁ + ଅଦ୍ୟତନଗୁଡିକ + ପ୍ଲେବେକ୍ ଲୋଡ୍ ବ୍ୟବଧାନ ଆକାର + ଫାଇଲନାମ ଖାଲି ହୋଇପାରିବ ନାହିଁ + କୋଡି ମିଡିଆ ସେଣ୍ଟର ମାଧ୍ୟମରେ ଏକ ଭିଡିଓ ଚଲାଇବା ପାଇଁ ଏକ ବିକଳ୍ପ ପ୍ରଦର୍ଶନ କରନ୍ତୁ + 16: 9 ରୁ 1: 1 ଆସପେକ୍ଟ ଅନୁପାତରେ ବିଜ୍ଞପ୍ତିରେ ଦେଖାଯାଇଥିବା ଭିଡିଓ ଥମ୍ବନେଲକୁ କ୍ରପ୍ କରନ୍ତୁ + ଏକ ସଂପୃକ୍ତ ଷ୍ଟ୍ରିମ୍ ଯୋଡି ପ୍ଲେବ୍ୟାକ୍ କ୍ୟୁ ଶେଷ କରିବା (ପୁନରାବୃତ୍ତି ନକରିବା) ଜାରି ରଖ + କମ୍ପାକ୍ଟ ନୋଟିଫିକେସନ୍ ରେ ଦେଖାଇବାକୁ ଆପଣ ପ୍ରାୟ ତିନୋଟି କ୍ରିୟା ଚୟନ କରିପାରିବେ! + ଥମ୍ବନେଲରେ ଥିବା ମୁଖ୍ୟ ରଙ୍ଗ ଅନୁଯାୟୀ ଆଣ୍ଡ୍ରଏଡ୍ ବିଜ୍ଞପ୍ତିର ରଙ୍ଗ କଷ୍ଟୋମାଇଜ୍ କରନ୍ତୁ (ଧ୍ୟାନ ଦିଅନ୍ତୁ ଯେ ଏହା ସମସ୍ତ ଡିଭାଇସରେ ଉପଲବ୍ଧ ନୁହେଁ) + କ୍ୟାଚ୍ ହୋଇଥିବା ମେଟାଡାଟା ପୋଛି ଦିଅ + ମେଟା ସୂଚନା ଦେଖାନ୍ତୁ + ଶେଷ ପ୍ଲେବେକ୍ ସ୍ଥିତିକୁ ପୁନଃ ସ୍ଥାପନ କରନ୍ତୁ + ତାଲିକାରେ ପ୍ଲେବେକ୍ ପୋଜିସନ୍ ସୂଚକ ଦେଖାନ୍ତୁ + ସମସ୍ତ କ୍ୟାଚ୍ ହୋଇଥିବା ୱେବପୃଷ୍ଠା ତଥ୍ୟ ଅପସାରଣ କରନ୍ତୁ + ପ୍ଲେୟାର ଭଲ୍ୟୁମକୁ ନିୟନ୍ତ୍ରଣ କରିବା ପାଇଁ ଅଙ୍ଗଭଙ୍ଗୀ ବ୍ୟବହାର କରନ୍ତୁ + ସନ୍ଧାନ କରିବା ସମୟରେ ଦେଖାଇବାକୁ ପରାମର୍ଶଗୁଡିକ ବାଛନ୍ତୁ + ବାଧା ପରେ ଖେଳିବା ଜାରି ରଖନ୍ତୁ (ଯଥା ଫୋନକଲ୍) + ଭିଡିଓ \"ବିବରଣୀ:\" ରେ ପୃଷ୍ଠଭୂମି କିମ୍ବା ପପ୍ଅପ୍ ବଟନ୍ ଦବାଇବା ସମୟରେ ଟିପ୍ ଦେଖାନ୍ତୁ + ଆପଣଙ୍କର ପ୍ରିୟ PeerTube ଉଦାହରଣଗୁଡିକ ବାଛନ୍ତୁ + ବ୍ୟବହାର + ଭିଡିଓ ଏବଂ ଅଡିଓ + ମିନି ପ୍ଲେୟାରରେ ଭିଡିଓ ଆରମ୍ଭ କରନ୍ତୁ ନାହିଁ, କିନ୍ତୁ ଅଟୋ ଘୂର୍ଣ୍ଣନ ବନ୍ଦ ହୋଇଗଲେ ସିଧାସଳଖ ଫୁଲ୍ ସ୍କ୍ରିନ୍ ମୋଡ୍ କୁ ଯାଆନ୍ତୁ। ଫୁଲ୍ ସ୍କ୍ରିନ୍ ଛାଡି ଆପଣ ଏପର୍ଯ୍ୟନ୍ତ ମିନି ପ୍ଲେୟାରକୁ ପ୍ରବେଶ କରିପାରିବେ + ଏହା ଉପରେ ଟ୍ୟାପ୍ କରି ନିମ୍ନରେ ପ୍ରତ୍ୟେକ ବିଜ୍ଞପ୍ତି କାର୍ଯ୍ୟ ସଂପାଦନ କରନ୍ତୁ। ଡାହାଣରେ ଥିବା ଚେକ୍ ବକ୍ସ ବ୍ୟବହାର କରି କମ୍ପାକ୍ଟ ବିଜ୍ଞପ୍ତିରେ ଦେଖାଯିବାକୁ ସେମାନଙ୍କ ମଧ୍ୟରୁ ତିନୋଟି ପର୍ଯ୍ୟନ୍ତ ଚୟନ କରନ୍ତୁ + ଥମ୍ବନେଲ ଲୋଡିଂ, ଡାଟା ଏବଂ ମେମୋରୀ ବ୍ୟବହାରକୁ ରୋକିବା ପାଇଁ ବନ୍ଦ କରନ୍ତୁ । ପରିବର୍ତ୍ତନଗୁଡ଼ିକ ଉଭୟ ଇନ-ମେମୋରୀ ଏବଂ ଅନ୍-ଡିସ୍କ ଇମେଜ୍ କ୍ୟାଚ୍ ସଫା କରେ + ଷ୍ଟ୍ରିମ୍ ସୃଷ୍ଟିକର୍ତ୍ତା, ଷ୍ଟ୍ରିମ୍ ବିଷୟବସ୍ତୁ କିମ୍ବା ଏକ ସନ୍ଧାନ ଅନୁରୋଧ ବିଷୟରେ ଅତିରିକ୍ତ ସୂଚନା ସହିତ ମେଟା ସୂଚନା ବାକ୍ସଗୁଡ଼ିକୁ ଲୁଚାଇବାକୁ ବନ୍ଦ କରନ୍ତୁ + ପିଲାମାନଙ୍କ ପାଇଁ ସମ୍ଭବତ content ଅନୁପଯୁକ୍ତ ବିଷୟବସ୍ତୁ ଦେଖାନ୍ତୁ କାରଣ ଏହାର ବୟସ ସୀମା ଅଛି (ଯେପରିକି 18+) + ଏହି ଭିଡିଓ ବୟସ-ସୀମିତ ଅଟେ । +\nବୟସ-ସୀମିତ ଭିଡିଓ ସହିତ ନୂତନ ୟୁଟ୍ୟୁବ୍ ନୀତି ହେତୁ, NewPipe ଏହାର କୌଣସି ଭିଡିଓ ଷ୍ଟ୍ରିମ୍ ପ୍ରବେଶ କରିପାରିବ ନାହିଁ ଏବଂ ଏହିପରି ଏହାକୁ ଚଲାଇବାରେ ଅସମର୍ଥ । + NewPipe ହେଉଛି copyleft libre ସଫ୍ଟୱେର୍: ଆପଣ ନିଜ ଇଚ୍ଛାରେ ଏହାକୁ ବ୍ୟବହାର, ଅଧ୍ୟୟନ, ଅଂଶୀଦାର ଏବଂ ଉନ୍ନତି କରିପାରିବେ । ନିର୍ଦ୍ଦିଷ୍ଟ ଭାବରେ ଆପଣ ମାଗଣା ସଫ୍ଟୱେର୍ ଫାଉଣ୍ଡେସନ୍ ଦ୍ଵାରା ପ୍ରକାଶିତ GNU ଜେନେରାଲ୍ ପବ୍ଲିକ୍ ଲାଇସେନ୍ସର ସର୍ତ୍ତାବଳୀ ଅନୁଯାୟୀ ଏହାକୁ ପୁନ istr ବଣ୍ଟନ ଏବଂ / କିମ୍ବା ରୂପାନ୍ତର କରିପାରିବେ, ଲାଇସେନ୍ସର ସଂସ୍କରଣ 3 କିମ୍ବା ପରବର୍ତ୍ତୀ ସଂସ୍କରଣରେ (ଆପଣଙ୍କ ବିକଳ୍ପରେ) । + \"ପ୍ଲେୟାର୍ କ୍ରାସ୍\" ଦେଖାନ୍ତୁ + ଗୁଗୁଲ୍ ନିଆଯିବା ଠାରୁ ୟୁଟ୍ୟୁବ୍ ସଦସ୍ୟତା ଆମଦାନୀ କରନ୍ତୁ: +\n +\n1. ଏହି URL କୁ ଯାଆନ୍ତୁ: %1$s । +\n2. ପଚରାଗଲେ ଲଗ୍ ଇନ୍ କରନ୍ତୁ । +\n3. \"ସମସ୍ତ ତଥ୍ୟ ଅନ୍ତର୍ଭୂକ୍ତ\" ଉପରେ କ୍ଲିକ୍ କରନ୍ତୁ, ତାପରେ \"ସମସ୍ତ ଚୟନ କରନ୍ତୁ\" ଉପରେ କ୍ଲିକ୍ କରନ୍ତୁ, ତାପରେ କେବଳ \"ସଦସ୍ୟତା\" ଚୟନ କରନ୍ତୁ ଏବଂ \"ଓକେ\" କ୍ଲିକ୍ କରନ୍ତୁ । +\n4. \"ପରବର୍ତ୍ତୀ ପଦକ୍ଷେପ\" ଏବଂ ତାପରେ \"ରପ୍ତାନି ସୃଷ୍ଟି\" ଉପରେ କ୍ଲିକ୍ କରନ୍ତୁ । +\n5. ଏହା ଦେଖାଯିବା ପରେ \"ଡାଉନଲୋଡ୍\" ବଟନ୍ ଉପରେ କ୍ଲିକ୍ କରନ୍ତୁ । +\n6. ନିମ୍ନରେ IMPORT FILE ଉପରେ କ୍ଲିକ୍ କରନ୍ତୁ ଏବଂ ଡାଉନଲୋଡ୍ ହୋଇଥିବା .zip ଫାଇଲ୍ ଚୟନ କରନ୍ତୁ । +\n7. [ଯଦି .zip ଆମଦାନି ବିଫଳ] + ମୋବାଇଲ୍ ଡାଟା ସୁଇଚ୍ କରିବା ସମୟରେ ଉପଯୋଗୀ, ଯଦିଓ କିଛି ଡାଉନଲୋଡ୍ ସ୍ଥଗିତ ହୋଇପାରିବ ନାହିଁ + କେତେକ ସେବାରେ ଉପଲବ୍ଧ, ଏହା ସାଧାରଣତଃ ଅଧିକ ତୀବ୍ର ଅଟେ କିନ୍ତୁ ଏକ ସୀମିତ ପରିମାଣର ଆଇଟମ୍ ଏବଂ ପ୍ରାୟତଃ ଅସମ୍ପୂର୍ଣ୍ଣ ସୂଚନା ଫେରସ୍ତ କରିପାରେ (ଯଥା କୌଣସି ଅବଧି, ଆଇଟମ୍ ପ୍ରକାର, ଜୀବନ୍ତ ସ୍ଥିତି ନାହିଁ) + ଆପଣ ଭାବୁଛନ୍ତି କି ଫିଡ୍ ଲୋଡିଂ ବହୁତ ଧୀର ଅଟେ\? ଯଦି ଏହା ହୁଏ, ଦ୍ରୁତ ଲୋଡିଂ ସକ୍ଷମ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ (ଆପଣ ଏହାକୁ ସେଟିଂସମୂହରେ କିମ୍ବା ତଳେ ଥିବା ବଟନ୍ ଦବାଇ ଏହାକୁ ପରିବର୍ତ୍ତନ କରିପାରିବେ) । +\n +\nNewPipe ଦୁଇଟି ଫିଡ୍ ଲୋଡିଂ କ strateg ଶଳ ପ୍ରଦାନ କରେ: +\n• ସମଗ୍ର ସବସ୍କ୍ରିପସନ୍ ଚ୍ୟାନେଲ୍ ଆଣିବା, ଯାହା ଧୀର କିନ୍ତୁ ସଂପୂର୍ଣ୍ଣ । +\nଏକ ଉତ୍ସର୍ଗୀକୃତ ସେବା ଶେଷ ପଏଣ୍ଟ ବ୍ୟବହାର କରିବା, ଯାହା ଦ୍ରୁତ କିନ୍ତୁ ସାଧାରଣତଃ ସଂପୂର୍ଣ୍ଣ ନୁହେଁ । +\n +\nଉଭୟଙ୍କ ମଧ୍ୟରେ ପାର୍ଥକ୍ୟ ହେଉଛି ଦ୍ରୁତତମରେ ସାଧାରଣତ some କିଛି ସୂଚନା ଅଭାବ ଥାଏ, ଯେପରିକି ଆଇଟମ୍ ର ଅବଧି କିମ୍ବା ପ୍ରକାର (ଲାଇଭ୍ ଭିଡିଓ ଏବଂ ସାଧାରଣ ଭିଡିଓ ମଧ୍ୟରେ ପାର୍ଥକ୍ୟ କରିପାରିବ ନାହିଁ) ଏବଂ ଏହା କମ୍ ଆଇଟମ୍ ଫେରସ୍ତ କରିପାରେ । +\n +\nୟୁଟ୍ୟୁବ୍ ହେଉଛି ଏକ ସେବାର ଏକ ଉଦାହରଣ ଯାହା ଏହାର RSS ଫିଡ୍ ସହିତ ଏହି ଦ୍ରୁତ ପଦ୍ଧତି ପ୍ରଦାନ କରେ । +\n +\nତେଣୁ ଆପଣ ଯାହା ପସନ୍ଦ କରନ୍ତି ତାହା ପସନ୍ଦ ଫୁଟିବ: ଗତି କିମ୍ବା ସଠିକ୍ ସୂଚନା । + ଏହି କାର୍ଯ୍ୟ ପାଇଁ କୌଣସି ଉପଯୁକ୍ତ ଫାଇଲ ପରିଚାଳକ ମିଳିଲା ନାହିଁ । +\nଦୟାକରି ଏକ ଫାଇଲ୍ ମ୍ୟାନେଜର୍ ସଂସ୍ଥାପନ କରନ୍ତୁ କିମ୍ବା ଡାଉନଲୋଡ୍ ସେଟିଂସମୂହରେ \'%s\' ଅକ୍ଷମ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ + ଏହି ଭିଡିଓ କେବଳ ୟୁଟ୍ୟୁବ୍ ମ୍ୟୁଜିକ୍ ପ୍ରିମିୟମ୍ ସଦସ୍ୟଙ୍କ ପାଇଁ ଉପଲବ୍ଧ, ତେଣୁ ଏହାକୁ ନ୍ୟୁପାଇପ୍ ଦ୍ୱାରା ଷ୍ଟ୍ରିମ୍ କିମ୍ବା ଡାଉନଲୋଡ୍ କରାଯାଇପାରିବ ନାହିଁ । + ଲୋଡ୍ ବ୍ୟବଧାନ ଆକାର ପରିବର୍ତ୍ତନ କରନ୍ତୁ (currently %s)। ଏକ କମ୍ ମୂଲ୍ୟ ପ୍ରାରମ୍ଭିକ ଭିଡିଓ ଲୋଡିଂକୁ ତ୍ୱରାନ୍ୱିତ କରିପାରେ । ପରିବର୍ତ୍ତନଗୁଡିକ ଏକ ପ୍ଲେୟାର ପୁନଃଆରମ୍ଭ ଆବଶ୍ୟକ କରେ + ଏହି କାର୍ଯ୍ୟ ପାଇଁ କୌଣସି ଉପଯୁକ୍ତ ଫାଇଲ ପରିଚାଳକ ମିଳିଲା ନାହିଁ । +\nଦୟାକରି ଏକ ଷ୍ଟୋରେଜ୍ ଆକ୍ସେସ୍ ଫ୍ରେମୱାର୍କ ସୁସଙ୍ଗତ ଫାଇଲ୍ ମ୍ୟାନେଜର୍ ସଂସ୍ଥାପନ କରନ୍ତୁ + ଅନ୍ତତଃ ପକ୍ଷେ ଆପଣଙ୍କ ଦେଶରେ ଏହା ଏକ ସାଉଣ୍ଡକ୍ଲାଉଡ୍ ଗୋ + ଟ୍ରାକ୍, ତେଣୁ ଏହାକୁ ନ୍ୟୁପାଇପ୍ ଦ୍ୱାରା ଷ୍ଟ୍ରିମ୍ କିମ୍ବା ଡାଉନଲୋଡ୍ କରାଯାଇପାରିବ ନାହିଁ । + ଆପଣ ବର୍ତ୍ତମାନ ବର୍ଣ୍ଣନା ଭିତରେ ଟେକ୍ସଟ୍ ଚୟନ କରିପାରିବେ । ଧ୍ୟାନ ଦିଅନ୍ତୁ ଯେ ପୃଷ୍ଠାଟି ଫ୍ଲିକର ହୋଇପାରେ ଏବଂ ଚୟନ ମୋଡରେ ଥିବାବେଳେ ଲିଙ୍କଗୁଡିକ କ୍ଲିକ୍ ହୋଇନପାରେ । + ଏହି ବିଷୟବସ୍ତୁ କେବଳ ଉପଭୋକ୍ତାମାନଙ୍କ ପାଇଁ ଉପଲବ୍ଧ, ଯେଉଁମାନେ ଦେୟ ଦେଇଛନ୍ତି, ତେଣୁ ଏହାକୁ NewPipe ଦ୍ୱାରା ଷ୍ଟ୍ରିମିଟ୍ କିମ୍ବା ଡାଉନଲୋଡ୍ କରାଯାଇପାରିବ ନାହିଁ । + ୟୁରୋପୀୟ ଜେନେରାଲ୍ ଡାଟା ପ୍ରୋଟେକସନ୍ ରେଗୁଲେସନ୍ (GDPR) କୁ ପାଳନ କରିବାକୁ, ଆମେ ଏଠାରେ NewPipe ର ଗୋପନୀୟତା ନୀତି ପ୍ରତି ଆପଣଙ୍କ ଦୃଷ୍ଟି ଆକର୍ଷଣ କରୁ । ଦୟାକରି ଏହାକୁ ଭଲ ଭାବରେ ପଢ଼ନ୍ତୁ । +\nଆମକୁ ବଗ୍ ରିପୋର୍ଟ ପଠାଇବାକୁ ତୁମେ ଏହାକୁ ଗ୍ରହଣ କରିବା ଜରୁରୀ । + ସଦସ୍ୟତା ଗୁଡ଼ିକ + କିଛି ରେଜୋଲୁସନରେ ଅଡିଓ ଅପସାରଣ କରେ + ଉଚ୍ଚ ରେଜୋଲୁସନ ଦେଖାନ୍ତୁ + \"କୋଡି ସହିତ ଖୋଲନ୍ତୁ\" ବିକଳ୍ପ ଦେଖାନ୍ତୁ + ପ୍ଲେ ଲିଷ୍ଟରେ ଯୋଡାଯିବା ପୂର୍ବରୁ ଏବଂ ପରେ ଦେଖାଯାଇଥିବା ଭିଡିଓଗୁଡିକ ଅପସାରିତ ହେବ । +\nତମେ ନିଶ୍ଚିତ କି\? ଏହାକୁ ପୂର୍ବବତ୍ କରାଯାଇପାରିବ ନାହିଁ! + ପ୍ଲେୟାରକୁ କ୍ରାସ୍ କରନ୍ତୁ + ଡିଫଲ୍ଟ ଅଡିଓ ଫର୍ମାଟ୍ + ଅକ୍ଷୟ ସନ୍ଧାନ ପ୍ଲେୟାରକୁ ହ୍ରାସ ହୋଇଥିବା ସଠିକତା ସହିତ ଶୀଘ୍ର ପଦବୀ ଖୋଜିବାକୁ ଅନୁମତି ଦିଏ । 5, 15 କିମ୍ବା 25 ସେକେଣ୍ଡ ଖୋଜିବା ଏହା ସହିତ କାମ କରେ ନାହିଁ + %s ପାଇଁ ଫଳାଫଳ ଦେଖାଉଛି + ବାହ୍ୟ ଭିଡିଓ ପ୍ଲେୟାର ବ୍ୟବହାର କରନ୍ତୁ + ସଦସ୍ୟତା + ସଦସ୍ୟତା ରଦ୍ଦ କରନ୍ତୁ + ଚ୍ୟାନେଲ ସଦସ୍ୟତା ରଦ୍ଦ ହେଲା + ସଦସ୍ୟତା ପରିବର୍ତ୍ତନ କରିପାରିଲା ନାହିଁ + ସୂଚନା ଦେଖାନ୍ତୁ + ମିଶାଅ + ଡିଫଲ୍ଟ ପପ୍ଅପ୍ ରେଜୋଲୁସନ + କେବଳ କିଛି ଡିଭାଇସ୍ 2K / 4K ଭିଡିଓ ଚଲାଇ ପାରିବେ + ନିଖୋଜ କୋର ଆପ୍ ସଂସ୍ଥାପନ କରିବେ\? + ଥମ୍ୱନେଲ କୁ 1:1 ଅନୁପାତରେ କ୍ରୋପ୍ କରନ୍ତୁ + ପ୍ରଥମ କ୍ରିୟା ବଟନ୍ + ତୃତୀୟ କ୍ରିୟା ବଟନ୍ + ଚତୁର୍ଥ କ୍ରିୟା ବଟନ୍ + ପଞ୍ଚମ କ୍ରିୟା ବଟନ୍ + ଶଫଲ୍ + ବଫରିଂ + କିଛି ନୁହେଁ + ଡିଫଲ୍ଟ ଭିଡିଓ ଫର୍ମାଟ୍ + ପପ୍ଅପ୍ ଗୁଣଗୁଡିକ ମନେରଖ + ଉଜ୍ଜ୍ୱଳତା ଅଙ୍ଗଭଙ୍ଗୀ ନିୟନ୍ତ୍ରଣ + ପ୍ରକ୍ରିୟାକରଣ… କିଛି ସମୟ ନେଇପାରେ + ପ୍ଲେୟାର କ୍ୟାପସନ୍ ଟେକ୍ସଟ୍ ସ୍କେଲ୍ ଏବଂ ପୃଷ୍ଠଭୂମି ଶୈଳୀକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ । କାର୍ଯ୍ୟକାରୀ ହେବାକୁ ଆପ୍ ପୁନଃଆରମ୍ଭ ଆବଶ୍ୟକ କରେ + LeakCanary ଉପଲବ୍ଧ ନାହିଁ + ଏନକ୍ୟୁ + ଏହି ଡାଉନଲୋଡ୍ ପୁନରୁଦ୍ଧାର କରିପାରିବ ନାହିଁ + ଉଭୟ ଲକ୍ ସ୍କ୍ରିନ୍ ପୃଷ୍ଠଭୂମି ଏବଂ ବିଜ୍ଞପ୍ତି ପାଇଁ ଥମ୍ବନେଲ୍ ବ୍ୟବହାର କରନ୍ତୁ + ଏହି ବିଷୟବସ୍ତୁ ବ୍ୟକ୍ତିଗତ ଅଟେ, ତେଣୁ ଏହାକୁ NewPipe ଦ୍ୱାରା ଷ୍ଟ୍ରିମିଟ୍ କିମ୍ବା ଡାଉନଲୋଡ୍ କରାଯାଇପାରିବ ନାହିଁ । + ପରବର୍ତ୍ତୀ ରେ ଏନକ୍ୟୁ + ପରବର୍ତ୍ତି ରେ ପ୍ଲେ ହେବ + ବୁକମାର୍କ ପ୍ଲେଲିଷ୍ଟ + ଡାଉନଲୋଡ୍ ଆରମ୍ଭ କରନ୍ତୁ + ମ୍ୟୁଟ କରନ୍ତୁ + ପ୍ଲେୟାର ବିଜ୍ଞପ୍ତି + ସାମ୍ପ୍ରତିକ ଖେଳୁଥିବା ଷ୍ଟ୍ରିମ୍ ବିଜ୍ଞପ୍ତିକୁ ବିନ୍ୟାସ କରନ୍ତୁ + ପପ୍ଅପ୍ ମୋଡ୍ ରେ ଖେଳିବା + ବୟସ ସୀମିତ ବିଷୟବସ୍ତୁ ଦେଖାନ୍ତୁ + ୟୁଟ୍ୟୁବ୍ ର \"ପ୍ରତିବନ୍ଧିତ ମୋଡ୍\" ଟର୍ନ୍ ଅନ୍ କରନ୍ତୁ + ଡାଉନଲୋଡ୍ + ଡାଉନଲୋଡ୍ + ଚ୍ୟାନେଲଗୁଡିକ + ପ୍ଲେଲିଷ୍ଟ ଗୁଡିକ + ଭିଡିଓ ଗୁଡିକ + ଟ୍ରାକ ଗୁଡିକ + ଉପଯୋଗକର୍ତ୍ତାଗଣ + ସଫା + ସର୍ବୋତ୍ତମ ରେଜୋଲୁସନ + ପୂର୍ବବତ୍ କରନ୍ତୁ + ସମସ୍ତ ପ୍ଲେ କରନ୍ତୁ + ସର୍ବଦା + ଫାଇଲ୍ + ବିଜ୍ଞପ୍ତି ଗୁଡିକ + ଆପ୍ ଅଦ୍ୟତନ ବିଜ୍ଞପ୍ତି + ନୂତନ NewPipe ସଂସ୍କରଣ ପାଇଁ ବିଜ୍ଞପ୍ତି + ଭିଡିଓ ହ୍ୟାସ୍ ବିଜ୍ଞପ୍ତି + ଭିଡିଓ ହ୍ୟାସିଂ ପ୍ରଗତି ପାଇଁ ବିଜ୍ଞପ୍ତି + ନୂତନ ଷ୍ଟ୍ରିମ୍ ଗୁଡ଼ିକ + ସଦସ୍ୟତା ପାଇଁ ନୂତନ ଷ୍ଟ୍ରିମ୍ ବିଷୟରେ ବିଜ୍ଞପ୍ତି + ତ୍ରୁଟି ରିପୋର୍ଟ ବିଜ୍ଞପ୍ତି + ତ୍ରୁଟି ରିପୋର୍ଟ କରିବାକୁ ବିଜ୍ଞପ୍ତି + [ଅଜ୍ଞାତ] + ପୃଷ୍ଠଭୂମିକୁ ସୁଇଚ୍ କରନ୍ତୁ + ପପ୍ଅପ୍ କୁ ସୁଇଚ୍ କରନ୍ତୁ + ମେନ୍ କୁ ସୁଇଚ୍ କର + ଡାଟାବେସ୍ ରପ୍ତାନି କରନ୍ତୁ + ରପ୍ତାନି ଇତିହାସ, ସଦସ୍ୟତା, ପ୍ଲେଲିଷ୍ଟ ଏବଂ ସେଟିଂସମୂହ + ସମ୍ପୂର୍ଣ୍ଣ ଘଣ୍ଟା ଇତିହାସ ବିଲୋପ କରିବେ କି\? + ପ୍ଲେବେକ୍ ପୋଜିସନ୍ ଡିଲିଟ୍ କରନ୍ତୁ + ସମସ୍ତ ପ୍ଲେକ୍ ପୋଜିସନ୍ ଡିଲିଟ୍ କରେ + ସନ୍ଧାନ ଇତିହାସ ସଫା କରନ୍ତୁ + ସମଗ୍ର ସନ୍ଧାନ ଇତିହାସ ବିଲୋପ କରିବେ କି\? + ସାହାଯ୍ୟ + ବାହ୍ୟ ସଂରକ୍ଷଣ ଉପଲବ୍ଧ ନାହିଁ + ନେଟୱର୍କ ତ୍ରୁଟି + ସମସ୍ତ ଥମ୍ୱନେଲ୍ ଲୋଡ୍ କରିପାରିଲା ନାହିଁ + ୱେବସାଇଟ୍ ପାର୍ସ କରିପାରିଲା ନାହିଁ + ବିଷୟବସ୍ତୁ ଉପଲବ୍ଧ ନାହିଁ + ଆପ୍ / UI କ୍ରାସ୍ ହୋଇଛି + ପ୍ଲେୟାର ତ୍ରୁଟିରୁ ପୁନରୁଦ୍ଧାର + କୌଣସି ଭିଡିଓ ଷ୍ଟ୍ରିମ୍ ମିଳିଲା ନାହିଁ + କୌଣସି ଅଡିଓ ଷ୍ଟ୍ରିମ୍ ମିଳିଲା ନାହିଁ + ଏକ ତ୍ରୁଟି ଘଟିଲା:%1$s + ଡାଉନଲୋଡ୍ କରିବାକୁ କୌଣସି ଷ୍ଟ୍ରିମ୍ ଉପଲବ୍ଧ ନାହିଁ + ଆପଣ ଡିଫଲ୍ଟ ପୁନଃସ୍ଥାପନ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି\? + NewPipe ଏକ ତ୍ରୁଟିର ସମ୍ମୁଖୀନ ହେଲା, ରିପୋର୍ଟ କରିବାକୁ ଟ୍ୟାପ୍ କରନ୍ତୁ + ଦୁଃଖିତ, ତାହା ହୋଇ ନଥାନ୍ତା । + ଇ-ମେଲ ମାଧ୍ୟମରେ ଏହି ତ୍ରୁଟି ରିପୋର୍ଟ କରନ୍ତୁ + GitHub ରେ ରିପୋର୍ଟ କରନ୍ତୁ + ଭିଡିଓ + ଅଡିଓ + ଗ୍ରାହକ ଗଣନା ଉପଲବ୍ଧ ନାହିଁ + କୌଣସି ଦର୍ଶନ ନାହିଁ + କେହି ଦେଖୁ ନାହାଁନ୍ତି + କେହି ଶୁଣୁ ନାହାଁନ୍ତି + କୌଣସି ଭିଡିଓ ନାହିଁ + 100+ ଭିଡିଓ + ∞ ଭିଡିଓ ଗୁଡିକ + ଆରମ୍ଭ + ବିଲୋପ କରନ୍ତୁ + ଚେକ୍ସମ୍ + ବରଖାସ୍ତ + ଦସ୍ତାବିଜ୍ ର ନାମ + ଥ୍ରେଡ୍ + ତ୍ରୁଟି + ନୂତନ ପାଇପ୍ ଡାଉନଲୋଡ୍ କରୁଛି + ହ୍ୟାସ୍ ଗଣନା + କ୍ଲିପବୋର୍ଡରେ କପି କରାଯାଇଛି + 1 ଆଇଟମ୍ ଡିଲିଟ୍ ହୋଇଛି । + reCAPTCHA ଆହ୍ୱାନ + ସମାପ୍ତ + ଡାଉନଲୋଡ୍ କରନ୍ତୁ + ଅବୈଧ ବର୍ଣ୍ଣଗୁଡିକ ଏହି ମୂଲ୍ୟ ସହିତ ବଦଳାଯାଏ + ପ୍ରତିସ୍ଥାପନ ବର୍ଣ୍ଣ + ଅଧିକାଂଶ ବିଶେଷ ବର୍ଣ୍ଣ + NewPipe ବିଷୟରେ + ତୃତୀୟ-ପକ୍ଷ ଲାଇସେନ୍ସ + ଲାଇସେନ୍ସ ଗୁଡ଼ିକ + ଯୋଗଦାନ କରନ୍ତୁ + GitHub ରେ ଦେଖନ୍ତୁ + ଦାନ କରନ୍ତୁ + ସ୍ଵେଚ୍ଛାସେବୀ ସେମାନଙ୍କର ସର୍ବୋତ୍ତମ ସମୟ ଆପଣଙ୍କୁ ସର୍ବୋତ୍ତମ ଉପଭୋକ୍ତା ଅଭିଜ୍ଞତା ଆଣିବା ଦ୍ୱାରା ନୂତନ ପାଇପ୍ ବିକଶିତ କରନ୍ତି । ଡେଭଲପର୍ମାନଙ୍କୁ ଏକ କପ୍ କଫି ଉପଭୋଗ କରୁଥିବାବେଳେ NewPipe କୁ ଆହୁରି ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରିବାକୁ ଫେରନ୍ତୁ । + NewPipe ର ଗୋପନୀୟତା ନୀତି + ଗୋପନୀୟତା ନୀତି ପଢ଼ନ୍ତୁ + NewPipe ର ଲାଇସେନ୍ସ + ଲାଇସେନ୍ସ ପଢ଼ନ୍ତୁ + ଶେଷ ଥର ପ୍ଲେ ହୋଇଛି + ଖାଲି ପୃଷ୍ଠା + ଚ୍ୟାନେଲ୍ ପୃଷ୍ଠା + କିଓସ୍କ ପୃଷ୍ଠା + ଡିଫଲ୍ଟ କିଓସ୍କ + ଶ୍ରେଷ୍ଠ 50 + ନୂତନ ଏବଂ ଗରମ + ସ୍ଥାନୀୟ + ସମ୍ପ୍ରତି ଯୋଡା ଯାଇଛି + ସର୍ବଦା ପଚାର + ଅନୁରୋଧ କରାଯାଇଥିବା ବିଷୟବସ୍ତୁକୁ ଧାରଣ କରୁଛି + ପୃଷ୍ଠଭୂମି ପ୍ଲେୟାର + ପପ୍ଅପ୍ ପ୍ଲେୟାର୍ + ନୂତନ ପ୍ଲେଲିଷ୍ଟ + ଅନ୍ମୁଟ୍ କରନ୍ତୁ + ଏହି ପ୍ଲେଲିଷ୍ଟ ବିଲୋପ କରିବେ କି\? + କୌଣସି କ୍ୟାପସନ୍ ନାହିଁ + ଫିଟ୍ + ମେମୋରୀ ଲିକ୍ ମନିଟରିଂ ହିପ୍ ଡମ୍ପିଂ କରିବା ସମୟରେ ଆପ୍ ପ୍ରତିକ୍ରିୟାଶୀଳ ହୋଇପାରେ + ସେବାଗୁଡିକରୁ ମୂଳ ଲେଖା ଷ୍ଟ୍ରିମ୍ ଆଇଟମ୍ ଗୁଡିକରେ ଦୃଶ୍ୟମାନ ହେବ + ମିଡିଆ ଟନେଲିଂକୁ ଅକ୍ଷମ କରନ୍ତୁ + ଯଦି ଆପଣ ଏକ କଳା ପରଦା ଅନୁଭବ କରନ୍ତି କିମ୍ବା ଭିଡିଓ ପ୍ଲେବେକ୍ ଉପରେ ଝୁଣ୍ଟି ପଡ଼ନ୍ତି ତେବେ ମିଡିଆ ଟନେଲିଂକୁ ଅକ୍ଷମ କରନ୍ତୁ + ଚିତ୍ରଗୁଡ଼ିକର ଉପରେ ପିକାସୋ ରଙ୍ଗୀନ ଫିତା ଦେଖାନ୍ତୁ: ସେମାନଙ୍କର ଉତ୍ସକୁ ସୂଚାଇଥାଏ: ନେଟୱାର୍କ ପାଇଁ ନାଲି, ଡିସ୍କ ପାଇଁ ନୀଳ ଏବଂ ସ୍ମୃତି ପାଇଁ ସବୁଜ + ଆମଦାନି କରନ୍ତୁ + ଠାରୁ ଆମଦାନୀ କରନ୍ତୁ + ଆମଦାନି… + ରପ୍ତାନି… + ଫାଇଲ୍ ଆମଦାନୀ କରନ୍ତୁ + ପୂର୍ବ ରପ୍ତାନି + ମନେରଖନ୍ତୁ ଏହି ଅପରେସନ୍ ନେଟୱାର୍କ ମହଙ୍ଗା ହୋଇପାରେ । +\n +\nଆପଣ ଜାରି ରଖିବାକୁ ଚାହୁଁଛନ୍ତି କି\? + ବାରମ୍ବାର ଯାଞ୍ଚ କରୁଛି + ନୂତନ ଷ୍ଟ୍ରିମ୍ ବିଜ୍ଞପ୍ତିଗୁଡିକ + ଆବଶ୍ୟକ ନେଟୱର୍କ ସଂଯୋଗ + ସଦସ୍ୟତା ଠାରୁ ନୂତନ ଷ୍ଟ୍ରିମ୍ ବିଷୟରେ ସୂଚିତ କର + ଯେକୌଣସି ନେଟୱାର୍କ + ଅଦ୍ୟତନ ଗୁଡିକ + ଏକ ନୂତନ ସଂସ୍କରଣ ଉପଲବ୍ଧ ହେଲେ ଆପ୍ ଅପଡେଟ୍ କୁ ତୁରନ୍ତ ଏକ ବିଜ୍ଞପ୍ତି ଦେଖାନ୍ତୁ + କଦାପି ନୁହେଁ + ଭ୍ୟୁ ମୋଡ୍ ତାଲିକା କର + ଗ୍ରୀଡ୍ + ସ୍ଵତଃ + ବିରାମ ଅଛି + + ଡାଉନଲୋଡ୍ ସମାପ୍ତ ହୋଇଛି + %s ଟି ଡାଉନଲୋଡ୍ ସମାପ୍ତ ହୋଇଛି + + ଅନନ୍ୟ ନାମ ସୃଷ୍ଟି କରନ୍ତୁ + ଏହି ନାମ ସହିତ ଏକ ଡାଉନଲୋଡ୍ ଚାଲିଛି + ଏହି ନାମ ସହିତ ଏକ ବିଚାରାଧୀନ ଡାଉନଲୋଡ୍ ଅଛି + ତ୍ରୁଟି ଦେଖାନ୍ତୁ + ସର୍ଭର ଡାଟା ପଠାଏ ନାହିଁ + ସର୍ଭର ମଲ୍ଟି-ଥ୍ରେଡେଡ୍ ଡାଉନଲୋଡ୍ ଗ୍ରହଣ କରେ ନାହିଁ, @string/msg_threads = 1 ସହିତ ପୁନଃଚେଷ୍ଟା କର + ମିଳିଲା ନାହିଁ + ପ୍ରଗତି ହଜିଗଲା, କାରଣ ଫାଇଲ୍ ଡିଲିଟ୍ ହେଲା + ପରବର୍ତ୍ତୀ ପ୍ରକ୍ରିୟାକରଣ ବିଫଳ ହେଲା + ଫାଇଲରେ କାମ କରିବାବେଳେ ନ୍ୟୁ ପାଇପ୍ ବନ୍ଦ ହୋଇଯାଇଥିଲା + ଡିଭାଇସରେ କୌଣସି ସ୍ଥାନ ବାକି ନାହିଁ + ଡିସ୍କରୁ ସମସ୍ତ ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଫାଇଲଗୁଡ଼ିକୁ ଲିଭାନ୍ତୁ\? + ବନ୍ଦ କର + ସର୍ବାଧିକ ପୁନଃଚେଷ୍ଟା + ମିଟର ନେଟୱାର୍କରେ ବାଧା + ବନ୍ଦ କର + ଡାଉନଲୋଡ୍ ବିରତି କରନ୍ତୁ + କେଉଁଠାରେ ଡାଉନଲୋଡ୍ କରିବେ ପଚାରନ୍ତୁ + \'ଷ୍ଟୋରେଜ୍ ଆକ୍ସେସ୍ ଫ୍ରେମୱାର୍କ\' ଏକ ବାହ୍ୟ SD କାର୍ଡକୁ ଡାଉନଲୋଡ୍ କରିବାକୁ ଅନୁମତି ଦିଏ + ଆଣ୍ଡ୍ରଏଡ୍ 10 ରୁ କେବଳ \'ଷ୍ଟୋରେଜ୍ ଆକ୍ସେସ୍ ଫ୍ରେମୱାର୍କ\' ସମର୍ଥିତ + ଏକ ଉଦାହରଣ ବାଛନ୍ତୁ + ExoPlayer ପ୍ରତିବନ୍ଧକ ହେତୁ ସନ୍ଧାନ ସମୟସୀମା %d ସେକେଣ୍ଡରେ ସେଟ୍ ହୋଇଥିଲା + ଆପଣ ଏହି ଗୋଷ୍ଠୀ ବିଲୋପ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି\? + କେବଳ ଅଣସଂଗଠିତ ସଦସ୍ୟତା ଦେଖାନ୍ତୁ + ଫିଡ୍ + ଫିଡ୍ ଅପଡେଟ୍ ସୀମା + ସର୍ବଦା ଅଦ୍ୟତନ କରନ୍ତୁ + ଦ୍ରୁତ ମୋଡ୍ ଅକ୍ଷମ କରନ୍ତୁ + ପ୍ଲେଲିଷ୍ଟ ପୃଷ୍ଠା + ଥମ୍ୱନେଲ୍ ଦେଖାନ୍ତୁ + ଆପଣଙ୍କ ଡିଭାଇସରେ କୌଣସି ଆପ୍ ଏହାକୁ ଖୋଲିପାରିବ ନାହିଁ + ଏହି ବିଷୟବସ୍ତୁ ଆପଣଙ୍କ ଦେଶରେ ଉପଲବ୍ଧ ନୁହେଁ । + ବର୍ଣ୍ଣନାରେ ପାଠ ବାଛିବା ସକ୍ଷମ କରନ୍ତୁ + ବର୍ଗ + ବିଜ୍ଞପ୍ତି ଗୁଡିକ ଅକ୍ଷମ ହୋଇଛି + ସମସ୍ତ ଟୋଗଲ୍ କରନ୍ତୁ + ଅକ୍ଷମ + ଡାଉନଲୋଡ୍ ମେନୁ ସେଟ୍ ଅପ୍ କରିପାରିଲା ନାହିଁ + ଟ୍ରେଣ୍ଡିଂ + ସ୍ଵତଃସୃଷ୍ଟ + ବିଷୟବସ୍ତୁ + ଡାଉନଲୋଡ୍ ଧାଡି ସୀମିତ କରନ୍ତୁ + ଅଦ୍ୟତନ ପାଇଁ ଯାଞ୍ଚ କରନ୍ତୁ + ନୂତନ ସଂସ୍କରଣଗୁଡ଼ିକ ପାଇଁ ମାନୁଆଲ ଯାଞ୍ଚ କରନ୍ତୁ + ବିଚାରାଧୀନ ଅଛି + ଡାଉନଲୋଡ୍ କରିବାକୁ ଟ୍ୟାପ୍ କରନ୍ତୁ + ଦେଖାଯାଇଥିବା ଭିଡିଓଗୁଡିକ ଅପସାରଣ କରିବେ କି\? + ବର୍ଣ୍ଣନାରେ ପାଠ ବାଛିବା ଅକ୍ଷମ କରନ୍ତୁ + ଏକ ସୁରକ୍ଷିତ ସଂଯୋଗ ସ୍ଥାପନ କରିପାରିଲା ନାହିଁ + ଟୋଗଲ୍ ସେବା, ବର୍ତ୍ତମାନ ମନୋନୀତ: + ଫେରସ୍ତ କର + ଓଭର୍ ରାଇଟ୍ କରନ୍ତୁ + ଥମ୍ବନେଲ୍ URL + ହୋଷ୍ଟ + ଜନସାଧାରଣ + ତାଲିକାଭୁକ୍ତ ନୁହେଁ + ବ୍ୟକ୍ତିଗତ + ମନ୍ତବ୍ୟଗୁଡିକ ଅକ୍ଷମ ହୋଇଛି + ଦୟାକରି ସେଟିଂସମୂହରେ ଏକ ଡାଉନଲୋଡ୍ ଫୋଲ୍ଡର୍ ବ୍ୟାଖ୍ୟା କରନ୍ତୁ + ଅଧ୍ୟାୟ ଗୁଡ଼ିକ + ସିଧାପ୍ରସରଣ + ପୃଷ୍ଠଭୂମିରେ ଖେଳିବା + ଦୁଃଖିତ, କିଛି ଭୁଲ ହୋଇଗଲା । + ରିପୋର୍ଟ କରନ୍ତୁ + ସୂଚନା: + କଣ ହେଲା: + ବିବରଣୀ: + ଭିଡିଓ ଚଲାନ୍ତୁ, ଅବଧି: + ଅପଲୋଡରର ଅବତାର ଥମ୍ୱବେଲ୍ + ପସନ୍ଦ + ନାପସନ୍ଦ + ମନ୍ତବ୍ୟ ଗୁଡିକ + ବର୍ଣ୍ଣନା + ମିଲିୟନ + ସମାଧାନ + ପ୍ଲେବେକ୍ ସ୍ପିଡ୍ ନିୟନ୍ତ୍ରଣ + ଟେମ୍ପୋ + ଅନ୍ହକ୍ (ବିକୃତିର କାରଣ ହୋଇପାରେ) + ନୀରବତା ସମୟରେ ଦ୍ରୁତ ଅଗ୍ରଗାମୀ + ପଦାଙ୍କ + ପୁନଃସେଟ୍ କରନ୍ତୁ + ଗ୍ରହଣ କରନ୍ତୁ + ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ + କୌଣସି ସୀମା ନାହିଁ + ନିମ୍ନ ଗୁଣ (ଛୋଟ) + ଦେଖାନ୍ତୁ ନାହିଁ + ପ୍ରତ୍ୟେକ ଡାଉନଲୋଡ୍ କୁ କେଉଁଠାରେ ସେଭ୍ କରାଯିବ ତାହା ଆପଣଙ୍କୁ ପଚରାଯିବ + ଖାତା ବନ୍ଦ ହୋଇଗଲା + ଆପଣଙ୍କର ପ୍ରିୟ ରାତିର ଥିମ୍ -%s ଚୟନ କରନ୍ତୁ + ଲାଇସେନ୍ସ + ସମସ୍ତ + ଗୀତ + ଘଟଣା + କଳାକାର ମାନେ + ଏହି ଷ୍ଟ୍ରିମ୍ ଚଲାଇ ପାରିଲା ନାହିଁ + ଫାଇଲ୍ ବିଦ୍ୟମାନ ନାହିଁ କିମ୍ବା ଏହାକୁ ପଢ଼ିବା କିମ୍ବା ଲେଖିବା ପାଇଁ ଅନୁମତି ଅଭାବ + ଏପରି ଫୋଲ୍ଡର ନାହିଁ + ସଞ୍ଚିତ ଟ୍ୟାବଗୁଡିକ ପଢ଼ି ପାରିଲା ନାହିଁ, ତେଣୁ ଡିଫଲ୍ଟଗୁଡିକ ବ୍ୟବହାର କରି + କଣ:\\nRequest:\\nContent Language:\\nContent Country:\\nApp Language:\\nService:\\nGMT Time:\\nPackage:\\nVersion:\\nOS ସଂସ୍କରଣ: + କୌଣସି ଫଳାଫଳ ନାହିଁ + ଏଠାରେ କ୍ରିକେଟ୍ ବ୍ୟତୀତ ଆଉ କିଛି ନାହିଁ + ପୁନଃଚେଷ୍ଟା କରନ୍ତୁ + କିଛି କହିବାର ନାହିଁ + ୱେବସାଇଟ୍ + ଅଧିକ ସୂଚନା ଏବଂ ସମ୍ବାଦ ପାଇଁ NewPipe ୱେବସାଇଟ୍ ପରିଦର୍ଶନ କରନ୍ତୁ । + ରପ୍ତାନି ହୋଇଛି + କୌଣସି ବୈଧ ZIP ଫାଇଲ୍ ନାହିଁ + ଆଲୋଚନା + ଅପସାରଣ କରନ୍ତୁ + ଅଡିଓ ସେଟିଂସମୂହ + ଏନକ୍ୟୁ କରିବାକୁ ଧର + ବୁକମାର୍କ ଅପସାରଣ କରନ୍ତୁ + ପ୍ଲେଲିଷ୍ଟ ସୃଷ୍ଟି ହୋଇଛି + %s ଦ୍ୱାରା ସୃଷ୍ଟି + %s ଦ୍ଵାରା + ନୁଆ କଣ + ଶେଷ ଅଦ୍ୟତନ କରନ୍ତୁ: %s + ଲୋଡ୍ ହୋଇନାହିଁ: %d + ଫିଡ୍ ଲୋଡିଂ… + ସଦସ୍ୟତା ଚୟନ କରନ୍ତୁ + କୌଣସି ସଦସ୍ୟତା ଚୟନ ହୋଇନାହିଁ + ଦ୍ରୁତ ମୋଡ୍ ସକ୍ଷମ କରନ୍ତୁ + %s ଏହି କାରଣ ପ୍ରଦାନ କରେ: + ଚ୍ୟାନେଲର ଅବତାର ଥମ୍ୱନେଲ୍ + ବୈଶିଷ୍ଟ୍ୟ + ରେଡିଓ + ExoPlayer ଡିଫଲ୍ଟ + ବୟସ ସୀମା + ଅଜ୍ଞାତ ଗୁଣବତ୍ତା + ଭବିଷ୍ୟତ ଆଇଟମ୍ ଗୁଡିକ ଦେଖାନ୍ତୁ + ଏହି ଭିଡିଓ ବୟସ ସୀମିତ ଅଟେ । +\n +\nଯଦି ଆପଣ ଏହାକୁ ଦେଖିବାକୁ ଚାହୁଁଛନ୍ତି ତେବେ ସେଟିଂସମୂହରେ \"%1$s\" ଟର୍ନ୍ ଅନ୍ କରନ୍ତୁ । + ତ୍ରୁଟି ରିପୋର୍ଟ + ଆଲବମ୍ ଗୁଡ଼ିକ + ବାହ୍ୟ SD କାର୍ଡକୁ ଡାଉନଲୋଡ୍ କରିବା ସମ୍ଭବ ନୁହେଁ ।ଡାଉନଲୋଡ୍ ଫୋଲ୍ଡର ଅବସ୍ଥାନ ପୁନଃସେଟ୍ କରନ୍ତୁ\? + ଫାଇଲ୍ ଡିଲିଟ୍ ହୋଇଛି + କେବଳ ଥରେ + ନୂତନ ପାଇପ୍ ବିଜ୍ଞପ୍ତି + ଡାଟାବେସ୍ ଆମଦାନୀ କରନ୍ତୁ + NewPipe ର ପ୍ଲେୟାର ପାଇଁ ବିଜ୍ଞପ୍ତି + ReCAPTCHA କୁକିଜ୍ ସଫା କରନ୍ତୁ + reCAPTCHA କୁକିଜ୍ ସଫା ହୋଇଛି + ଯେତେବେଳେ ଆପଣ ଏକ reCAPTCHA ସମାଧାନ କରନ୍ତି, କୁକିଜ୍ ସଫା କରନ୍ତୁ + ଆପଣଙ୍କର ସାମ୍ପ୍ରତିକ ଇତିହାସ, ସଦସ୍ୟତା, ପ୍ଲେଲିଷ୍ଟ ଏବଂ (ଇଚ୍ଛାଧୀନ) ସେଟିଂସମୂହକୁ ନବଲିଖନ କରେ + ଘଣ୍ଟା ଇତିହାସ ସଫା କରନ୍ତୁ + ଖେଳାଯାଇଥିବା ଷ୍ଟ୍ରିମ୍ ଏବଂ ପ୍ଲେକ୍ ସ୍ଥିତିକୁ ବିଲୋପ କରେ + ସମସ୍ତ ପ୍ଲେକ୍ ପୋଜିସନ୍ ବିଲୋପ କରିବେ କି\? + ସନ୍ଧାନ କୀ ଶବ୍ଦର ଇତିହାସ ବିଲୋପ କରେ + ତ୍ରୁଟି + ଭିଡିଓ URL ଦସ୍ତଖତକୁ ଡିବଫସ୍କେଟ୍ କରିପାରିଲା ନାହିଁ + ପୁନରୁଦ୍ଧାର ନ ହୋଇପାରିଲା ପରି ପ୍ଲେୟାର ତ୍ରୁଟି ଘଟିଲା + ବାହ୍ୟ ପ୍ଲେୟାରମାନେ ଏହି ପ୍ରକାର ଲିଙ୍କକୁ ସମର୍ଥନ କରନ୍ତି ନାହିଁ + ଫାଇଲ୍ ଘୁଞ୍ଚିଗଲା କିମ୍ବା ଡିଲିଟ୍ ହେଲା + ଏପର୍ଯ୍ୟନ୍ତ କୌଣସି ପ୍ଲେଲିଷ୍ଟ ବୁକମାର୍କ ନାହିଁ + ସେପରି କୌଣସି ଫାଇଲ / ବିଷୟବସ୍ତୁ ଉତ୍ସ ନାହିଁ + ଡିଫଲ୍ଟଗୁଡିକ ପୁନରୁଦ୍ଧାର କରନ୍ତୁ + ଏକ ତ୍ରୁଟି ଘଟିଛି, ବିଜ୍ଞପ୍ତିକୁ ଦେଖନ୍ତୁ + ଫର୍ମାଟ୍ ହୋଇଥିବା ରିପୋର୍ଟ କପି କରନ୍ତୁ + ଅନ୍ୟ ଆପ୍ସ ଉପରେ ପ୍ରଦର୍ଶନ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ + ଦୟାକରି ଯାଞ୍ଚ କରନ୍ତୁ ଯେ ଆପଣଙ୍କର କ୍ରାସ୍ ବିଷୟରେ ଆଲୋଚନା କରୁଥିବା ଏକ ସମସ୍ୟା ପୂର୍ବରୁ ଅଛି କି\? ନକଲ ଟିକେଟ୍ ତିଆରି କରିବାବେଳେ, ଆପଣ ଆମଠାରୁ ସମୟ ନିଅନ୍ତି ଯାହାକୁ ଆମେ ପ୍ରକୃତ ତ୍ରୁଟି ସୁଧାରିବା ସହିତ ଖର୍ଚ୍ଚ କରିପାରିବା । + ଆପଣଙ୍କର ମନ୍ତବ୍ୟ (ଇଂରାଜୀରେ): + ସମ୍ବନ୍ଧୀୟ ଆଇଟମ୍ ଗୁଡ଼ିକ + ପୁନଃ ସଯାଇବାକୁ ଡ୍ରାଗ୍ କରନ୍ତୁ + ବିରାମ + ବିଲିଅନ୍ + କୌଣସି ଗ୍ରାହକ ନାହାଁନ୍ତି + ସୃଷ୍ଟି କରନ୍ତୁ + ବିବରଣୀ ପାଇଁ ଟ୍ୟାପ୍ କରନ୍ତୁ + ଏହି ଫାଇଲ୍ ଚଲାଇବା ପାଇଁ କୌଣସି ଆପ୍ ସଂସ୍ଥାପିତ ହୋଇନାହିଁ + ନାମ ପରିବର୍ତ୍ତନ କରନ୍ତୁ + ଦୟାକରି ଅପେକ୍ଷା କର… + ଏପର୍ଯ୍ୟନ୍ତ କୌଣସି ଡାଉନଲୋଡ୍ ଫୋଲ୍ଡର ସେଟ୍ ହୋଇନାହିଁ, ବର୍ତ୍ତମାନ ଡିଫଲ୍ଟ ଡାଉନଲୋଡ୍ ଫୋଲ୍ଡର ବାଛନ୍ତୁ + ସମାଧାନ ହେବାପରେ \"ସମାପ୍ତ\" ଦବାନ୍ତୁ + reCAPTCHA ଚ୍ୟାଲେଞ୍ଜ ଅନୁରୋଧ + ଫାଇଲ ନାମରେ ଅନୁମତିପ୍ରାପ୍ତ ବର୍ଣ୍ଣଗୁଡିକ + ଅକ୍ଷର ଏବଂ ସଂଖ୍ୟା + © %1$s ଦ୍ଵାରା %2$s ରେ %3$s + ଆପଣଙ୍କର ଧାରଣା ଅଛି କି ନାହିଁ; ଅନୁବାଦ, ଡିଜାଇନ୍ ପରିବର୍ତ୍ତନ, କୋଡ୍ ସଫା କରିବା, କିମ୍ବା ପ୍ରକୃତ ଭାରୀ କୋଡ୍ ପରିବର୍ତ୍ତନ - ସାହାଯ୍ୟ ସର୍ବଦା ସ୍ୱାଗତଯୋଗ୍ୟ ।ଯେତେ ଭଲ ହୁଏ ସେତେ ଭଲ ହୁଏ! + ଆଣ୍ଡ୍ରଏଡରେ ସ୍ଵାଧୀନ ହାଲୁକା ଷ୍ଟ୍ରିମିଂ । + ନ୍ୟୁ ପାଇପ୍ ପ୍ରୋଜେକ୍ଟ ଆପଣଙ୍କ ଗୋପନୀୟତାକୁ ଅତି ଗମ୍ଭୀରତାର ସହିତ ନେଇଥାଏ । ତେଣୁ, ଆପଣଙ୍କ ସମ୍ମତି ବିନା ଆପ୍ କୌଣସି ତଥ୍ୟ ସଂଗ୍ରହ କରେ ନାହିଁ । +\nNewPipe ର ଗୋପନୀୟତା ନୀତି ବିସ୍ତୃତ ଭାବରେ ବ୍ୟାଖ୍ୟା କରେ ଯେତେବେଳେ ଆପଣ କ୍ରାସ୍ ରିପୋର୍ଟ ପଠାନ୍ତି କେଉଁ ତଥ୍ୟ ପଠାଯାଏ ଏବଂ ଗଚ୍ଛିତ ହୁଏ । + ମୁଖ୍ୟ ପୃଷ୍ଠାର ବିଷୟବସ୍ତୁ + ଏକ ପ୍ଲେଲିଷ୍ଟ ଚୟନ କରନ୍ତୁ + ଆମଦାନୀ ହୋଇଛି + ଏହା ତୁମର ସାମ୍ପ୍ରତିକ ସେଟଅପ୍ କୁ ନବଲିଖନ କରିବ । + ଧାଡି ଚଲାନ୍ତୁ + ଏହି ଅନୁମତି ଆବଶ୍ୟକ +\nପପ୍ଅପ୍ ମୋଡ୍ ରେ ଖୋଲ + ଏକ ତ୍ରୁଟି ବିଜ୍ଞପ୍ତି ସୃଷ୍ଟି କରନ୍ତୁ + କୁ ରପ୍ତାନି କରନ୍ତୁ + URL କିମ୍ବା ଆପଣଙ୍କର ID ଟାଇପ୍ କରି ଏକ ସାଉଣ୍ଡ କ୍ଲାଉଡ୍ ପ୍ରୋଫାଇଲ୍ ଆମଦାନୀ କରନ୍ତୁ: +\n +\nଏକ ୱେବ୍ ବ୍ରାଉଜରରେ “ଡେସ୍କଟପ୍ ମୋଡ୍” ସକ୍ଷମ କର (ମୋବାଇଲ୍ ଡିଭାଇସ୍ ପାଇଁ ସାଇଟ୍ ଉପଲବ୍ଧ ନୁହେଁ) +\n2. ଏହି URL କୁ ଯାଆନ୍ତୁ:%1$s । +\n3. ପଚରାଗଲେ ଲଗ୍ ଇନ୍ କରନ୍ତୁ । +\n4. ଆପଣ ପୁନଃ ନିର୍ଦ୍ଦେଶିତ ହୋଇଥିବା ପ୍ରୋଫାଇଲ୍ URL କପି କରନ୍ତୁ । + ପିଚ୍ + ମୋବାଇଲ୍ ଡାଟା ବ୍ୟବହାର କରିବା ସମୟରେ ରେଜୋଲୁସନ ସୀମିତ କରନ୍ତୁ + ଅଦ୍ୟତନ ପାଇଁ ଯାଞ୍ଚ କରୁଛି… + ସେକ୍ବାର୍ ଥମ୍ୱନେଲ୍ ପୂର୍ବାବଲୋକନ + ଉଚ୍ଚ ଗୁଣବତ୍ତା (ବଡ଼) + NewPipe ଅଦ୍ୟତନ ଉପଲବ୍ଧ! + ଆପଣ ଆପଣଙ୍କର ଡାଉନଲୋଡ୍ ଇତିହାସ ସଫା କରିବାକୁ କିମ୍ବା ସମସ୍ତ ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଫାଇଲଗୁଡିକ ବିଲୋପ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି\? + ସର୍ଭର ଖୋଜି ପାଇଲା ନାହିଁ + + %1$s ଡାଉନଲୋଡ୍ ଡିଲିଟ୍ ହୋଇଛି + %1$s ଡାଉନଲୋଡ୍ ଗୁଡ଼ିକ ଡିଲିଟ୍ ହୋଇଛି + + + %d ଚୟନ ହୋଇଛି + ମୋଟ %d ଟି ଚୟନ ହୋଇଛି + + \'%s\' ପାଇଁ ଫିଡ୍ ଲୋଡ୍ ହୋଇପାରିଲା ନାହିଁ । + ନୂତନ ଫିଡ୍ ଆଇଟମ୍ + ଲେଖକଙ୍କ ଆକାଉଣ୍ଟକୁ ବନ୍ଦ କରିଦିଆଯାଇଛି । +\nଭବିଷ୍ୟତରେ NewPipe ଏହି ଫିଡ୍ ଲୋଡ୍ କରିବାକୁ ସମର୍ଥ ହେବ ନାହିଁ । +\nଆପଣ ଏହି ଚ୍ୟାନେଲରୁ ସଦସ୍ୟତା ରଦ୍ଦ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି\? + ଦେଖାଯାଇଥିବା ଆଇଟମଗୁଡିକ ଦେଖାନ୍ତୁ + ଆଭ୍ୟନ୍ତରୀଣ + ଆପଣ ବର୍ତ୍ତମାନ ଏହି ଚ୍ୟାନେଲକୁ ସବସ୍କ୍ରାଇବ କରିଛନ୍ତି + ବାହ୍ୟ ଖେଳାଳିଙ୍କ ପାଇଁ କୌଣସି ଭିଡିଓ ଷ୍ଟ୍ରିମ୍ ଉପଲବ୍ଧ ନାହିଁ + ସୃଷ୍ଟିକର୍ତ୍ତାଙ୍କ ଦ୍ୱାରା ହୃଦୟ + ଷ୍ଟ୍ରିମ୍ ଯାହା ଏପର୍ଯ୍ୟନ୍ତ ଡାଉନଲୋଡର୍ ଦ୍ୱାରା ସମର୍ଥିତ ନୁହେଁ + ଅଜ୍ଞାତ ଫର୍ମାଟ୍ + ପ୍ରତ୍ୟେକ ଡାଉନଲୋଡ୍ କୁ କେଉଁଠାରେ ସେଭ୍ କରାଯିବ ତାହା ଆପଣଙ୍କୁ ପଚରାଯିବ । +\nଯଦି ଆପଣ ଏକ ବାହ୍ୟ SD କାର୍ଡକୁ ଡାଉନଲୋଡ୍ କରିବାକୁ ଚାହୁଁଛନ୍ତି ତେବେ ସିଷ୍ଟମ୍ ଫୋଲ୍ଡର୍ ପିକର୍ (SAF) କୁ ସକ୍ଷମ କରନ୍ତୁ + ମେମୋରୀ ଲିକ୍ ଦେଖାନ୍ତୁ + ଆଇଟମଗୁଡିକରେ ମୂଳ ସମୟ ପୂର୍ବରୁ ଦେଖାନ୍ତୁ + ବିସର୍ଜନ ପରେ ଖଣ୍ଡ କିମ୍ବା କାର୍ଯ୍ୟକଳାପ ଜୀବନଚକ୍ର ବାହାରେ ଅଣସଂରକ୍ଷିତ Rx ବ୍ୟତିକ୍ରମଗୁଡିକର ଫୋର୍ସ ରିପୋର୍ଟିଂ + ଲାଇଫ୍ ସାଇକେଲ୍ ତ୍ରୁଟିଗୁଡିକ ରିପୋର୍ଟ କରନ୍ତୁ + ସମାପ୍ତ + ପୁନରୁଦ୍ଧାର ହେଉଛି + ଧାଡିରେ ଯୋଗ ହେଲା + ପରବର୍ତ୍ତୀ ପ୍ରକ୍ରିୟାକରଣ + ଏହି ନାମ ସହିତ ଏକ ଡାଉନଲୋଡ୍ ଫାଇଲ୍ ପୂର୍ବରୁ ବିଦ୍ୟମାନ ଅଛି + ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଫାଇଲଗୁଡିକ ଡିଲିଟ୍ କରନ୍ତୁ + ସିଷ୍ଟମ୍ ଫୋଲ୍ଡର୍ ପିକର୍ (SAF) ବ୍ୟବହାର କରନ୍ତୁ + ହଁ, ଏବଂ ଆଂଶିକ ଦେଖାଯାଇଥିବା ଭିଡିଓଗୁଡିକ + ଗୋଷ୍ଠୀ ନାମ ଖାଲି ଅଛି + ଉପଲବ୍ଧ ଥିବାବେଳେ ଉତ୍ସର୍ଗୀକୃତ ଫିଡରୁ ଆଣ + ତାଲିକା + ଗୋଟିଏ ଡାଉନଲୋଡ୍ ଏକ ସମୟରେ ଚାଲିବ + ସମ୍ପ୍ରତି + ଟାବଲେଟ୍ ମୋଡ୍ + ବାହ୍ୟ ଖେଳାଳିଙ୍କ ପାଇଁ କୌଣସି ଅଡିଓ ଷ୍ଟ୍ରିମ୍ ଉପଲବ୍ଧ ନାହିଁ + ବାହ୍ୟ ଖେଳାଳିଙ୍କ ପାଇଁ ଗୁଣବତ୍ତା ଚୟନ କରନ୍ତୁ + ପିନ୍ ହୋଇଥିବା ମନ୍ତବ୍ୟ + ଭବିଷ୍ୟତର ଆଇଟମ୍ ଲୁଚାନ୍ତୁ + ୱେବସାଇଟ୍ ଖୋଲନ୍ତୁ + ହଜାର + ସୂଚନା ପାଇବା… + + %s ଗ୍ରାହକ + ମୋଟ %s ଗ୍ରାହକ + + + %s ଦର୍ଶନ + ମୋଟ %s ଦର୍ଶନ + + + %s ଜଣ ଦେଖୁଛନ୍ତି + ମୋଟ %s ଜଣ ଦେଖୁଛନ୍ତି + + ବିଷୟରେ & FAQ + ପ୍ରାୟତଃ ପଚରାଯାଇଥିବା ପ୍ରଶ୍ନ + ଯଦି ଆପଣ ଆପ୍ ବ୍ୟବହାର କରିବାରେ ଅସୁବିଧାର ସମ୍ମୁଖୀନ ହେଉଛନ୍ତି, ସାଧାରଣ ପ୍ରଶ୍ନର ଏହି ଉତ୍ତରଗୁଡିକ ଯାଞ୍ଚ କରିବାକୁ ନିଶ୍ଚିତ ହୁଅନ୍ତୁ! + ୱେବସାଇଟ୍ ରେ ଦେଖନ୍ତୁ + ଆପଣ ସନ୍ଧାନ ଇତିହାସରୁ ଏହି ଆଇଟମ୍ ବିଲୋପ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି\? + ଅଧିକାଂଶ ପ୍ଲେ ହୋଇଛି + ମୁଖ୍ୟ ପୃଷ୍ଠାରେ କେଉଁ ଟ୍ୟାବଗୁଡ଼ିକ ଦେଖାଯାଏ + ଏକ ଚ୍ୟାନେଲ୍ ଚୟନ କରନ୍ତୁ + ସେଗୁଡିକ ଅପସାରଣ କରିବା ପାଇଁ ଆଇଟମଗୁଡିକ ସ୍ୱାଇପ୍ କରନ୍ତୁ + ଏପର୍ଯ୍ୟନ୍ତ କୌଣସି ଚ୍ୟାନେଲ ରେ ସଦସ୍ୟତା ନାହିଁ + ଏକ କିଓସ୍କ ଚୟନ କରନ୍ତୁ + ଚେତାବନୀ: ସମସ୍ତ ଫାଇଲ୍ ଆମଦାନି କରିପାରିଲା ନାହିଁ । + ଆପଣ ସେଟିଂସମୂହ ମଧ୍ୟ ଆମଦାନୀ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି\? + ମନ୍ତବ୍ୟ ଲୋଡ୍ ହୋଇପାରିଲା ନାହିଁ + ଅଧିକାଂଶ ପସନ୍ଦ କରନ୍ତି + ଚ୍ୟାନେଲର ବିବରଣୀ ଦେଖାନ୍ତୁ + ଏନକ୍ୟୁ + ଅନୁକରଣ + ପୃଷ୍ଠଭୂମିରେ ଖେଳିବା ଆରମ୍ଭ କରନ୍ତୁ + ଏକ ପପ୍ଅପ୍ ରେ ଖେଳିବା ଆରମ୍ଭ କରନ୍ତୁ + ଷ୍ଟ୍ରିମ୍ ବିବରଣୀ ଲୋଡ୍ କରୁଛି… + ଡ୍ରୟର ଖୋଲନ୍ତୁ + ଡ୍ରୟର ବନ୍ଦ କରନ୍ତୁ + ପସନ୍ଦିତ \'ଖୋଲା\' କ୍ରିୟା + ବିଷୟବସ୍ତୁ ଖୋଲିବା ସମୟରେ ଡିଫଲ୍ଟ କାର୍ଯ୍ୟ -%s + ଭିଡିଓ ପ୍ଲେୟାର + ପ୍ଲେ ଲିଷ୍ଟରେ ଯୋଡନ୍ତୁ + ତାଲିକାଭୁକ୍ତ + ଜୁମ୍ କରନ୍ତୁ + ପ୍ଲେଲିଷ୍ଟ ଥମ୍ବନେଲ ବଦଳିଗଲା । + ଅଟୋ-ଜେନେରେଟ୍ (କୌଣସି ଅପଲୋଡର୍ ମିଳିଲା ନାହିଁ) + ପୁରଣ କରନ୍ତୁ + କ୍ୟାପସନ୍ + ପ୍ରତିଛବି ସୂଚକ ଦେଖାନ୍ତୁ + ପ୍ଲେୟାର ବ୍ୟବହାର କରିବା ସମୟରେ ଏକ କ୍ରାସ୍ ବିକଳ୍ପ ଦେଖାଏ + ନୂତନ ଷ୍ଟ୍ରିମ୍ ପାଇଁ ଯାଞ୍ଚ ଚଲାନ୍ତୁ + ଆପ୍ କ୍ରାସ୍ କରନ୍ତୁ + ଏକ ତ୍ରୁଟି ସ୍ନାକବାର୍ ଦେଖାନ୍ତୁ + ସଦସ୍ୟତା ଆମଦାନି କରିପାରିଲା ନାହିଁ + ସଦସ୍ୟତା ରପ୍ତାନି କରିପାରିଲା ନାହିଁ + ତୁମର ID, soundcloud.com/yourid + ଶତକଡା + ସେମିଟୋନ୍ + ଆପ୍ ସୁଇଚ୍ ରେ କମ୍ କରନ୍ତୁ + ମୁଖ୍ୟ ଭିଡିଓ ପ୍ଲେୟାରରୁ ଅନ୍ୟ ଆପକୁ ସୁଇଚ୍ କରିବା ସମୟରେ କାର୍ଯ୍ୟ -%s + କିଛି ନୁହେଁ + ପୃଷ୍ଠଭୂମି ପ୍ଲେୟାରକୁ କମ୍ କରନ୍ତୁ + ପପ୍ଅପ୍ ପ୍ଲେୟାରକୁ ସର୍ବନିମ୍ନ କରନ୍ତୁ + ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଚଲାଇବା ଆରମ୍ଭ କରନ୍ତୁ -%s + କେବଳ ୱାଇ-ଫାଇରେ + କାର୍ଯ୍ୟ ସିଷ୍ଟମ ଦ୍ୱାରା ପ୍ରତ୍ୟାଖ୍ୟାନ + ଡାଉନଲୋଡ୍ ବିଫଳ ହେଲା + ଏହି ନାମ ସହିତ ଏକ ଫାଇଲ୍ ପୂର୍ବରୁ ବିଦ୍ୟମାନ ଅଛି + ସଂଯୋଗ ସମୟ ସମାପ୍ତ + ଡାଉନଲୋଡ୍ ଇତିହାସ ସଫା କରନ୍ତୁ + ଡାଉନଲୋଡ୍ ବାତିଲ୍ କରିବା ପୂର୍ବରୁ ସର୍ବାଧିକ ସଂଖ୍ୟକ ଚେଷ୍ଟା + ଦେଖାଯାଇଥିବା ଅପସାରଣ କରନ୍ତୁ + ଚ୍ୟାନେଲ୍ ଗୋଷ୍ଠୀଗୁଡିକ + ଫିଡ୍ ପ୍ରକ୍ରିୟାକରଣ… + ଏକ ସଦସ୍ୟତା ପୂର୍ବରୁ ଶେଷ ଅଦ୍ୟତନ ପରେ ସମୟ ପୁରୁଣା ବୋଲି ବିବେଚନା କରାଯାଏ -%s + ଫିଡ୍ ଲୋଡ୍ କରିବାରେ ତ୍ରୁଟି + ଫାଷ୍ଟ ଫିଡ୍ ମୋଡ୍ ଏହା ଉପରେ ଅଧିକ ସୂଚନା ପ୍ରଦାନ କରେ ନାହିଁ । + ଦେଖାଯାଇଥିବା ଆଇଟମଗୁଡିକ ଲୁଚାନ୍ତୁ + ଏହି ବିଷୟବସ୍ତୁ ଏପର୍ଯ୍ୟନ୍ତ NewPipe ଦ୍ୱାରା ସମର୍ଥିତ ନୁହେଁ । +\n +\nଭବିଷ୍ୟତ ସଂସ୍କରଣରେ ଏହା ସମର୍ଥିତ ହେବ ବୋଲି ଆଶା କରୁଛି । + ଆପଣ ନିମ୍ନରେ ଆପଣଙ୍କର ପ୍ରିୟ ରାତିର ଥିମ୍ ଚୟନ କରିପାରିବେ + ଡାଉନଲୋଡ୍ ଆରମ୍ଭ ହୋଇଛି + ଟ୍ୟାଗ୍ସ + ସୂଚିତ କର + , + ମନୋନୀତ ଷ୍ଟ୍ରିମ୍ ବାହ୍ୟ ଖେଳାଳିଙ୍କ ଦ୍ୱାରା ସମର୍ଥିତ ନୁହେଁ + + %s ଜଣ ଶ୍ରୋତା + ମୋଟ %s ଜଣ ଶ୍ରୋତା + + + %s ଭିଡିଓ + ମୋଟ %s ଭିଡିଓ + + + %s ନୂଆ ଷ୍ଟ୍ରୀମ + ମୋଟ %s ନୂଆ ଷ୍ଟ୍ରୀମ + + ସଜାନ୍ତୁ \ No newline at end of file diff --git a/app/src/main/res/values-pa-rPK/strings.xml b/app/src/main/res/values-pa-rPK/strings.xml index 01b5deb60..0cc27a059 100644 --- a/app/src/main/res/values-pa-rPK/strings.xml +++ b/app/src/main/res/values-pa-rPK/strings.xml @@ -120,4 +120,11 @@ دِکھ صرف ایچ‌ٹی‌ٹی‌پی‌ایس نال کڑی دا پتہ ہی ماݨنیوگ ہن ویکھیا جا چُکیا چنت کرو + سمگری + کلاکار + بند کیتا + مٹاؤ + فائل + موڑو + ہمیشہ \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index eb7c157b0..80f776bdd 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -108,7 +108,7 @@ NewPipe Hakkında Üçüncü Taraf Lisansları © %1$s, %2$s tarafından %3$s altında - Hakkında & SSS + Hakkında ve SSS Lisanslar Android\'de özgür ve hafif bir oynatıcı. GitHub\'da Görüntüle diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index f82c3e124..1b0289c3c 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -16,7 +16,7 @@ Тека для завантаження відео Виберіть теку для завантаження відеофайлів Виберіть теку для завантаження аудіофайлів - Шлях до теки зі завантаженими відео + Шлях до теки із завантаженими відео Тека для завантаження аудіо Завантажені аудіофайли зберігаються тут Типова роздільність @@ -293,7 +293,7 @@ \n \nБажаєте продовжити\? Завантажувати ескізи - Вимкніть для запобігання завантаженню ескізів, що заощадить трафік та внутрішню пам\'ять. Зміни призведуть до очищення кешу зображень + Вимкніть для запобігання завантаженню ескізів, що заощадить трафік і внутрішню пам\'ять. Зміни призведуть до очищення кешу зображень Кеш зображень стерто Стерти кеш метаданих Видалити всі кешовані дані вебсторінок @@ -405,7 +405,7 @@ Позиції відтворення видалено Файл переміщено або видалено не можу перезаписати файл - Завантаження з такою назвою вже є в черзі + Завантаження з такою назвою вже додано в чергу NewPipe був закритий під час роботи над файлом На пристрої не залишилося вільного місця Прогрес втрачено через видалення файлу diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 87d85696f..870ab327d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -41,7 +41,7 @@ 播放器 历史记录与缓存 撤销 - 全部播放 + 播放全部 总是 仅一次 添加至 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 0863e5dab..ab0234223 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -369,7 +369,7 @@ 更新 出咗新版本嘅時候,顯示通知提示升級個 app 手動檢查下有冇新版本 - NewPipe 出咗更新! + NewPipe 出咗更新喇! 仲等緊 恢復緊 動作被系統拒絕咗 @@ -710,4 +710,5 @@ 去網站睇下 排序 常見問題 + 若然您用呢個 app 有疑問,然而「亦有些難啟齒」,不妨睇下常見問題集,話唔定會發現「有場舞還未發表」! \ No newline at end of file diff --git a/fastlane/metadata/android/ar_LY/short_description.txt b/fastlane/metadata/android/ar_LY/short_description.txt index 72c4d0ee6..df70e08b1 100644 --- a/fastlane/metadata/android/ar_LY/short_description.txt +++ b/fastlane/metadata/android/ar_LY/short_description.txt @@ -1 +1 @@ -واجهة يوتيوب خفيفة الوزن مجانية للاندرويد +واجهة يوتيوب خفيفة مجانية للاندرويد diff --git a/fastlane/metadata/android/de/changelogs/730.txt b/fastlane/metadata/android/de/changelogs/730.txt index 422bd31b3..12c5ffb16 100644 --- a/fastlane/metadata/android/de/changelogs/730.txt +++ b/fastlane/metadata/android/de/changelogs/730.txt @@ -1,2 +1,2 @@ -# Behoden +# Behoben - erneuter Hotfix des Entschlüsselungsfunktionsfehlers. diff --git a/fastlane/metadata/android/de/changelogs/910.txt b/fastlane/metadata/android/de/changelogs/910.txt index 50b46f58e..9be252c7b 100644 --- a/fastlane/metadata/android/de/changelogs/910.txt +++ b/fastlane/metadata/android/de/changelogs/910.txt @@ -1 +1 @@ -Fehler bei Datenbankmigration behoben, welche in seltenen Fällen einen Start der App verhindert. +Fehler bei Datenbankmigration behoben, welche in seltenen Fällen einen Start der App verhinderte. diff --git a/fastlane/metadata/android/es/changelogs/991.txt b/fastlane/metadata/android/es/changelogs/991.txt new file mode 100644 index 000000000..1342826ad --- /dev/null +++ b/fastlane/metadata/android/es/changelogs/991.txt @@ -0,0 +1,13 @@ +Nuevo +* Se añadió el botón "Abrir en el navegador" en el panel de error. +* Se añadió la opción de mostrar grupos de canales como lista. +* [YouTube] Haga click prolongado en un segmento del stream para compartir la URL del tiempo exacto. +* Se añadió el botón "Abrir en el navegador" en el panel de error. + +Mejorado +* Se añadió localización de Islandés y se actualizaron muchas otras traducciones. +* Muchas mejoras internas + +Arreglado +* Se arreglaron múltiples crasheos. +* [YouTube] Se arreglaron las cargas de canales, feeds no dedicados y problemas de contenido en algunos países. diff --git a/fastlane/metadata/android/fa/changelogs/870.txt b/fastlane/metadata/android/fa/changelogs/870.txt new file mode 100644 index 000000000..04fb855a8 --- /dev/null +++ b/fastlane/metadata/android/fa/changelogs/870.txt @@ -0,0 +1,2 @@ +این یک آپدیت مهمی بوده که اجازه میده از SoundCloud دیگه بدون دردسر استفاده کنید. +الان دیگه از نسخه 2 ی api ی SoundCloud استفاده شده برای استخراج و از شناسایی شدن جلوگیری شده. diff --git a/fastlane/metadata/android/fa/changelogs/910.txt b/fastlane/metadata/android/fa/changelogs/910.txt new file mode 100644 index 000000000..9ad34ba3d --- /dev/null +++ b/fastlane/metadata/android/fa/changelogs/910.txt @@ -0,0 +1 @@ +نقص بخش مهاجرت دیتابیس درونی اپ برطرف شده، که باعث بروز خطا میشد. diff --git a/fastlane/metadata/android/fil/changelogs/63.txt b/fastlane/metadata/android/fil/changelogs/63.txt index 83f5e5869..9643e7545 100644 --- a/fastlane/metadata/android/fil/changelogs/63.txt +++ b/fastlane/metadata/android/fil/changelogs/63.txt @@ -1,8 +1,8 @@ -### Mga pagpapabuti -- Pag-import/export ng mga setting #1333 -- Bawas na overdraw (nakakabuti sa performance) #1371 -- Mga pagpapaganda sa code #1375 -- Mga bagay-bagay tungkol sa GDPR #1420 +### Mga Pagpapabuti +- Mag-import/export ng mga setting #1333 +- Bawasan ang pag-overdraw (nakabubuti sa pagtakbo ng app) #1371 +- Ilan pang mga pagpapahusay #1375 +- Mga bagay tungkol sa GDPR #1420 -### Inayos -- Downloader: Ayusin ang pag-crash tuwing binubuksan ang mga .giga file na hindi pa tapos i-download #1407 +### Mga Pagsasaayos +- Pang-download: Iwasan ang pag-crash kapag pinoproseso ang mga hindi pa natatapos na download mula sa mga .giga file #1407 diff --git a/fastlane/metadata/android/hi/changelogs/953.txt b/fastlane/metadata/android/hi/changelogs/953.txt new file mode 100644 index 000000000..7863012a7 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/953.txt @@ -0,0 +1 @@ +यूट्यूब के डिक्रिप्शन फ़ंक्शन का निष्कर्षण ठीक किया गया। diff --git a/fastlane/metadata/android/hi/changelogs/954.txt b/fastlane/metadata/android/hi/changelogs/954.txt new file mode 100644 index 000000000..36536b8c7 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/954.txt @@ -0,0 +1,8 @@ +• नए एप्लिकेशन वर्कफ़्लो: विस्तार पृष्ठ पर वीडियो चलाएं, प्लेयर को छोटा करने के लिए नीचे स्वाइप करें +• मीडियास्टाइल सूचनाएँ: सूचनाएँ, प्रदर्शन सुधार में अनुकूलन योग्य क्रियाएँ +• डेस्कटॉप ऐप के रूप में न्यूपाइप का उपयोग करते समय मूल आकार परिवर्तन +• असमर्थित यूआरएल टोस्ट के मामले में खुले विकल्पों के साथ संवाद दिखाएं +• रिमोट सुझावों के अनुपलब्धता पर अनुभव में सुधार +• 720p60 (इन-ऐप प्लेयर) और 480p (पॉप-अप प्लेयर) के लिए डिफ़ॉल्ट वीडियो की गुणवत्ता वृद्धि + +• त्रुटियों में सुधार और बोहोत कुछ diff --git a/fastlane/metadata/android/hi/changelogs/955.txt b/fastlane/metadata/android/hi/changelogs/955.txt index 2c38a9f32..0add0a6f6 100644 --- a/fastlane/metadata/android/hi/changelogs/955.txt +++ b/fastlane/metadata/android/hi/changelogs/955.txt @@ -1,3 +1,3 @@ -[यूट्यूब] कुछ उपयोगकर्ताओं के लिए खोज को ठीक करें -[यूट्यूब] यादृच्छिक डिक्रिप्शन अपवादों को ठीक करें -[साउंडक्लाउड] एक स्लैश के साथ समाप्त होने वाले यूआरएल अब सही ढंग से पार्स किए गए हैं +[यूट्यूब] कुछ उपयोगकर्ताओं के लिए खोज को ठीक किया गया +[यूट्यूब] यादृच्छिक डिक्रिप्शन अपवादों को ठीक किया गया +[साउंडक्लाउड] एक स्लैश के साथ समाप्त होने वाले यूआरएल अब सही ढंग से पदच्छेदन किया गया diff --git a/fastlane/metadata/android/hi/changelogs/956.txt b/fastlane/metadata/android/hi/changelogs/956.txt new file mode 100644 index 000000000..3917d4aeb --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/956.txt @@ -0,0 +1 @@ +[यूट्यूब] किसी भी वीडियो को लोड करते समय क्रैश में सुधार diff --git a/fastlane/metadata/android/hi/changelogs/957.txt b/fastlane/metadata/android/hi/changelogs/957.txt new file mode 100644 index 000000000..63c9e0c6c --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/957.txt @@ -0,0 +1,10 @@ +• एक में विशिष्ट एनक्यूई क्रियाओं को एकजुट किया +• दो उँगलियों के जेस्चर से वीडियो प्लेयर को बंद करना +• रेकॉप्टचा कूकीज को हटाने की अनुमति +• अधिसूचना को रंगीन न करने का विकल्प +• न्यूपाइप को साझा करते समय अनंत बफ़रिंग,त्रुटियां और अन्य विसंगतियों में सुधार +• यूट्यूब वीडियो को गति दें और आयु प्रतिबंधित वीडियो में सुधार +• फास्ट फॉरवर्ड / रिवाइंड पर क्रैश ठीक किया गया +• थंबनेल खींचकर सूचियों को पुनर्व्यवस्थित न करने का संशोधन +• हमेशा पॉपअप गुणों को याद रखने का संशोधन +• संताली भाषा जोड़ी गयी diff --git a/fastlane/metadata/android/hi/changelogs/958.txt b/fastlane/metadata/android/hi/changelogs/958.txt new file mode 100644 index 000000000..910882c1b --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/958.txt @@ -0,0 +1,15 @@ +नया और बेहतर: +• लॉक स्क्रीन पर थंबनेल छिपाने के लिए पुनः जोड़ा गया विकल्प +• फ़ीड ताज़ा करने के लिए खींचो +• स्थानीय सूचियों को लाने पर बेहतर प्रदर्शन + +फिक्स्ड: +• रैम से हटाए जाने के बाद न्यूपाइप शुरू करते समय क्रैश का निवारन +• इंटरनेट कनेक्शन न होने पर स्टार्टअप पर क्रैश का निवारन +• फिक्स्ड चमक- और वॉल्यूम- जेस्चर सेटिंग्स +• [यूट्यूब] फिक्स्ड लंबे प्लेलिस्ट + +अन्य: +• कोड शोधन और कई आंतरिक सुधार +• निर्भरता अद्यतन +• अनुवाद अपडेट diff --git a/fastlane/metadata/android/hi/changelogs/959.txt b/fastlane/metadata/android/hi/changelogs/959.txt new file mode 100644 index 000000000..601c655ac --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/959.txt @@ -0,0 +1,5 @@ +त्रुटि रिपोर्टर खोलने के बाद क्रैश का निश्चित अंतहीन लूप। +पीयरट्यूब उदाहरणों की अद्यतन सूची जो न्यूपाइप द्वारा स्वचालित रूप से खोली जा सकती है। +अपडेट किए गए अनुवाद।त्रुटि रिपोर्टर खोलने के बाद क्रैश का निश्चित अंतहीन लूप। +पीयरट्यूब उदाहरणों की अद्यतन सूची जो न्यूपाइप द्वारा स्वचालित रूप से खोली जा सकती है। +अपडेट किए गए अनुवाद। diff --git a/fastlane/metadata/android/hi/changelogs/960.txt b/fastlane/metadata/android/hi/changelogs/960.txt new file mode 100644 index 000000000..355d831fb --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/960.txt @@ -0,0 +1,4 @@ +• सेटिंग्स में निर्यात डेटाबेस विकल्प का बेहतर विवरण। +• फिक्स्ड YouTube टिप्पणियों का पदच्छेद। +• Media.ccc.de सेवा का निश्चित प्रदर्शन नाम में सुधार। +• अपडेट किए गए अनुवाद। diff --git a/fastlane/metadata/android/hi/changelogs/961.txt b/fastlane/metadata/android/hi/changelogs/961.txt new file mode 100644 index 000000000..1e12457bd --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/961.txt @@ -0,0 +1,12 @@ +• [यूट्यूब] मिक्स सपोर्ट +• [यूट्यूब] सार्वजनिक प्रसारकों और कोविद -19 के बारे में जानकारी प्रदर्शित किया गया +• [media.ccc.de] “ताज़ा” वीडियो जोड़े गए +• सोमाली अनुवाद जोड़ा गया + +• कई आंतरिक सुधार + +• विडियो प्लेयर के भीतर शेयरिंग वीडियो में सुधार +• फिक्स्ड रिक्त रिक्प्चा वेबव्यू +• फिक्स्ड क्रैश जो एक सूची से एक धारा को हटाते समय होता था +• [पीयरट्यूब] फिक्स्ड संबंधित धाराएँ +• [यूट्यूब] निश्चित यूट्यूब संगीत खोज diff --git a/fastlane/metadata/android/hi/changelogs/962.txt b/fastlane/metadata/android/hi/changelogs/962.txt new file mode 100644 index 000000000..bdcfc4df4 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/962.txt @@ -0,0 +1,2 @@ +मीडिया.सिसिसी.डीई सेवा में "हाल के" वीडियो जोड़े गए। +मीडिया.सिसिसी.डीई सेवा में लाइव स्ट्रीम जोड़ा गया और लाइव स्ट्रीम समर्थन भी। diff --git a/fastlane/metadata/android/hu/changelogs/991.txt b/fastlane/metadata/android/hu/changelogs/991.txt new file mode 100644 index 000000000..386cded5a --- /dev/null +++ b/fastlane/metadata/android/hu/changelogs/991.txt @@ -0,0 +1,13 @@ +Újdonság +• "Megnyitás böngészőben" gomb került a hibapanelre +• Bekerült a csatornacsoportok listaként megjeleníthetősége +• [YouTube] Nyomj hosszan a stream szegmenseire időbélyegzett URL megosztásához +• Sor lejátszása gomb került a minilejátszóra + +Javítások +• Bekerült az izlandi fordítás és sok fordítás frissítve lett +• Sok belső javítás történt + +Hibajavítások +• Többféle összeomlás lett javítva +• [YouTube] Javítva lett a csatornák betöltése, a nem dedikált feed és néhány ország visszajátszási gondjait megkerültük diff --git a/fastlane/metadata/android/ka/changelogs/63.txt b/fastlane/metadata/android/ka/changelogs/63.txt new file mode 100644 index 000000000..185bfd650 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/63.txt @@ -0,0 +1,8 @@ +### გაუმჯობესებები + - იმპორტი/ექსპორტის პარამეტრები #1333 + - ზედრევის შემცირება (შესრულების გაუმჯობესება) #1371 + - მცირე კოდის გაუმჯობესება #1375 + - დაამატეთ ყველაფერი GDPR #1420-ის შესახებ + + ### გამოსწორდა + - Downloader: შეასწორეთ ავარია დაუმთავრებელი ჩამოტვირთვების ჩატვირთვისას .giga ფაილებიდან #1407 diff --git a/fastlane/metadata/android/ka/changelogs/64.txt b/fastlane/metadata/android/ka/changelogs/64.txt new file mode 100644 index 000000000..5d32b7c0d --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/64.txt @@ -0,0 +1,8 @@ +### გაუმჯობესებები + - დაემატა ვიდეოს ხარისხის შეზღუდვის შესაძლებლობა მობილური ინტერნეტის გამოყენებისას. #1339 + - დაიმახსოვრე სიკაშკაშე #1442 სესიისთვის + - გააუმჯობესეთ ჩამოტვირთვის შესრულება სუსტი CPU-ებისთვის #1431 + - დაამატეთ (სამუშაო) მხარდაჭერა მედია სესიისთვის #1433 + + ### გამოსწორება + - დააფიქსირეთ ავარია ჩამოტვირთვების გახსნისას (გამოსწორება უკვე ხელმისაწვდომია გამოშვების ბილდებისთვის) #1441 diff --git a/fastlane/metadata/android/ka/changelogs/65.txt b/fastlane/metadata/android/ka/changelogs/65.txt new file mode 100644 index 000000000..e2ca8059d --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/65.txt @@ -0,0 +1,26 @@ +### გაუმჯობესებები + + - გამორთეთ ბურგერმენუს ხატის ანიმაცია #1486 + - ჩამოტვირთვების წაშლის გაუქმება #1472 + - ჩამოტვირთვის ვარიანტი გაზიარების მენიუში #1498 + - დამატებულია გაზიარების ვარიანტი გრძელი შეხების მენიუში #1454 + - მთავარი მოთამაშის მინიმიზაცია #1354 გასასვლელზე + - ბიბლიოთეკის ვერსიის განახლება და მონაცემთა ბაზის სარეზერვო დაფიქსირება #1510 + - ExoPlayer 2.8.2 განახლება #1392 + - გადამუშავდა დაკვრის სიჩქარის კონტროლის დიალოგი, რათა მხარი დაუჭიროს სხვადასხვა ნაბიჯების ზომას უფრო სწრაფი სიჩქარის ცვლილებისთვის. + - დამატებულია გადართვა სწრაფი წინსვლისთვის დუმილის დროს დაკვრის სიჩქარის კონტროლში. ეს გამოსადეგი უნდა იყოს აუდიო წიგნებისთვის და გარკვეული მუსიკის ჟანრებისთვის და შეუძლია ნამდვილი უწყვეტი გამოცდილების მოტანა (და შეიძლება დაარღვიოს სიმღერა მრავალი დუმილით =\\). + - რეფაქტორირებული მედია წყაროს გარჩევადობა, რათა მეტამონაცემების გადაცემა მედიასთან ერთად შიგადაშიგ პლეერში, ვიდრე ხელით. ახლა ჩვენ გვაქვს მეტამონაცემების ერთი წყარო და პირდაპირ ხელმისაწვდომია დაკვრის დაწყებისას. + - დაფიქსირდა დისტანციური დასაკრავი სიის მეტამონაცემები არ განახლდება, როდესაც ახალი მეტამონაცემები ხელმისაწვდომია დასაკრავი სიის ფრაგმენტის გახსნისას. + - სხვადასხვა ინტერფეისის შესწორებები: #1383, ფონური მოთამაშის შეტყობინებების კონტროლი ახლა ყოველთვის თეთრია, უფრო ადვილია ამომხტარი მოთამაშის გამორთვა ფლანგით + - გამოიყენეთ ახალი ექსტრაქტორი რეფაქტორირებული არქიტექტურით მულტისერვისისთვის + + ### ასწორებს + + - დააფიქსირეთ #1440 გატეხილი ვიდეო ინფორმაციის განლაგება #1491 + - ნახეთ ისტორიის შესწორება #1497 + - #1495, მეტამონაცემების (მინიატურების, სათაურის და ვიდეოების რაოდენობა) განახლებით, როგორც კი მომხმარებელი წვდება დასაკრავ სიას. + - #1475, მონაცემთა ბაზაში ხედის დარეგისტრირებით, როდესაც მომხმარებელი იწყებს ვიდეოს გარე პლეერზე დეტალურ ფრაგმენტზე. + - დააფიქსირეთ ეკრანის დროის ამოწურვა ამომხტარი რეჟიმის შემთხვევაში. #1463 (დასწორებულია #640) + - მთავარი ვიდეო პლეერის დაფიქსირება #1509 + - [#1412] დაფიქსირდა გამეორების რეჟიმი, რომელიც იწვევს მოთამაშის NPE-ს, როდესაც მიიღება ახალი განზრახვა, როდესაც მოთამაშის აქტივობა ფონზეა. + - დაფიქსირებული მინიმიზაცია მოთამაშის ამომხტარ ფანჯარაში არ ანადგურებს მოთამაშეს, როდესაც ამომხტარი ნებართვა არ არის მინიჭებული. diff --git a/fastlane/metadata/android/ka/changelogs/66.txt b/fastlane/metadata/android/ka/changelogs/66.txt new file mode 100644 index 000000000..e30f99fc8 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/66.txt @@ -0,0 +1,33 @@ +v0.13.7-ის ცვლილების ჟურნალი + + ### გამოსწორდა + - დააფიქსირეთ v0.13.6-ის დახარისხების ფილტრის პრობლემები + + # ცვლილების ჟურნალი v0.13.6 + + ### გაუმჯობესებები + + - გამორთეთ ბურგერმენუს ხატის ანიმაცია #1486 + - ჩამოტვირთვების წაშლის გაუქმება #1472 + - ჩამოტვირთვის ვარიანტი გაზიარების მენიუში #1498 + - დამატებულია გაზიარების ვარიანტი გრძელი შეხების მენიუში #1454 + - მთავარი მოთამაშის მინიმიზაცია #1354 გასასვლელზე + - ბიბლიოთეკის ვერსიის განახლება და მონაცემთა ბაზის სარეზერვო დაფიქსირება #1510 + - ExoPlayer 2.8.2 განახლება #1392 + - გადამუშავდა დაკვრის სიჩქარის კონტროლის დიალოგი, რათა მხარი დაუჭიროს სხვადასხვა ნაბიჯების ზომას უფრო სწრაფი სიჩქარის ცვლილებისთვის. + - დამატებულია გადართვა სწრაფი წინსვლისთვის დუმილის დროს დაკვრის სიჩქარის კონტროლში. ეს გამოსადეგი უნდა იყოს აუდიო წიგნებისთვის და გარკვეული მუსიკის ჟანრებისთვის და შეუძლია ნამდვილი უწყვეტი გამოცდილების მოტანა (და შეიძლება დაარღვიოს სიმღერა მრავალი დუმილით =\\). + - რეფაქტორირებული მედია წყაროს გარჩევადობა, რათა მეტამონაცემების გადაცემა მედიასთან ერთად შიგადაშიგ პლეერში, ვიდრე ხელით. ახლა ჩვენ გვაქვს მეტამონაცემების ერთი წყარო და პირდაპირ ხელმისაწვდომია დაკვრის დაწყებისას. + - დაფიქსირდა დისტანციური დასაკრავი სიის მეტამონაცემები არ განახლდება, როდესაც ახალი მეტამონაცემები ხელმისაწვდომია დასაკრავი სიის ფრაგმენტის გახსნისას. + - სხვადასხვა ინტერფეისის შესწორებები: #1383, ფონური მოთამაშის შეტყობინებების კონტროლი ახლა ყოველთვის თეთრია, უფრო ადვილია ამომხტარი მოთამაშის გამორთვა ფლანგით + - გამოიყენეთ ახალი ექსტრაქტორი რეფაქტორირებული არქიტექტურით მულტისერვისისთვის + + ### ასწორებს + + - დააფიქსირეთ #1440 გატეხილი ვიდეო ინფორმაციის განლაგება #1491 + - ნახეთ ისტორიის შესწორება #1497 + - #1495, მეტამონაცემების (მინიატურების, სათაურის და ვიდეოების რაოდენობა) განახლებით, როგორც კი მომხმარებელი წვდება დასაკრავ სიას. + - #1475, მონაცემთა ბაზაში ხედის დარეგისტრირებით, როდესაც მომხმარებელი იწყებს ვიდეოს გარე პლეერზე დეტალურ ფრაგმენტზე. + - დააფიქსირეთ ეკრანის დროის ამოწურვა ამომხტარი რეჟიმის შემთხვევაში. #1463 (დასწორებულია #640) + - მთავარი ვიდეო პლეერის დაფიქსირება #1509 + - [#1412] დაფიქსირდა გამეორების რეჟიმი, რომელიც იწვევს მოთამაშის NPE-ს, როდესაც მიიღება ახალი განზრახვა, როდესაც მოთამაშის აქტივობა ფონზეა. + - დაფიქსირებული მინიმიზაცია მოთამაშის ამომხტარ ფანჯარაში არ ანადგურებს მოთამაშეს, როდესაც ამომხტარი ნებართვა არ არის მინიჭებული. diff --git a/fastlane/metadata/android/ka/changelogs/68.txt b/fastlane/metadata/android/ka/changelogs/68.txt new file mode 100644 index 000000000..1c6967bcb --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/68.txt @@ -0,0 +1,31 @@ +v0.14.1-ის ცვლილებები + + ### გამოსწორდა + - დაფიქსირდა ვიდეო url #1659-ის გაშიფვრა ვერ მოხერხდა + - დაფიქსირდა აღწერილობის ბმული კარგად არ არის ამონაწერი #1657 + + v0.14.0-ის # ცვლილებები + + ### ახალი + - ახალი უჯრის დიზაინი #1461 + - ახალი კონფიგურირებადი წინა გვერდი #1461 + + ### გაუმჯობესებები + - გადამუშავებული ჟესტების კონტროლი #1604 + - ახალი გზა ამომხტარი პლეერის დახურვის #1597 + + ### გამოსწორდა + - შეცდომის გამოსწორება, როდესაც ხელმოწერების რაოდენობა მიუწვდომელია. იხურება #1649. + - აჩვენეთ "აბონენტთა რაოდენობა მიუწვდომელია" ამ შემთხვევებში + - შეასწორეთ NPE, როდესაც YouTube დასაკრავი სია ცარიელია + - სწრაფი შესწორება კიოსკებისთვის SoundCloud-ში + - Refactor და bugfix #1623 + - დააფიქსირეთ ციკლური ძიების შედეგი #1562 + - შეასწორეთ ძიების ზოლი, რომელიც არ არის სტატიკურად განლაგებული + - გაასწორეთ YT Premium ვიდეო არ არის სწორად დაბლოკილი + - დააფიქსირეთ ვიდეოები, რომლებიც ზოგჯერ არ იტვირთება (DASH ანალიზების გამო) + - დააფიქსირეთ ბმულები ვიდეოს აღწერაში + - გაფრთხილების ჩვენება, როდესაც ვინმე ცდილობს გარე sdcard-ზე ჩამოტვირთვას + - დააფიქსირეთ არაფერი ნაჩვენები გამონაკლისის გამომწვევი ანგარიში + - ესკიზი არ არის ნაჩვენები ანდროიდ 8.1-ის ფონურ პლეერში [იხილეთ აქ](https://github.com/TeamNewPipe/NewPipe/issues/943) + - სამაუწყებლო მიმღების რეგისტრაციის დაფიქსირება. იხურება #1641. diff --git a/fastlane/metadata/android/ka/changelogs/69.txt b/fastlane/metadata/android/ka/changelogs/69.txt new file mode 100644 index 000000000..b5d54c565 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/69.txt @@ -0,0 +1,19 @@ +### ახალი + - დიდხანს შეეხეთ წაშლას და გააზიარეთ გამოწერებში #1516 + - ტაბლეტის ინტერფეისი და ბადის სიის განლაგება #1617 + + ### გაუმჯობესებები + - შეინახეთ და გადატვირთეთ ბოლო გამოყენებული ასპექტის თანაფარდობა #1748 + - ჩართეთ ხაზოვანი განლაგება ჩამოტვირთვების აქტივობაში ვიდეოს სრული სახელებით #1771 + - წაშალეთ და გააზიარეთ ხელმოწერები პირდაპირ გამოწერების ჩანართიდან #1516 + - ახლა რიგში დაყენება იწვევს ვიდეოს დაკვრას, თუ დაკვრის რიგი უკვე დასრულდა #1783 + - ცალკე პარამეტრები მოცულობისა და სიკაშკაშის ჟესტებისთვის #1644 + - დაამატეთ მხარდაჭერა ლოკალიზაციის #1792-ისთვის + + ### ასწორებს + - დააფიქსირეთ დროის ანალიზი . ფორმატში, ამიტომ NewPipe შეიძლება გამოყენებულ იქნას ფინეთში + - შეასწორეთ გამოწერების რაოდენობა + - დაამატეთ წინა პლანზე სერვისის ნებართვა API 28+ მოწყობილობებისთვის #1830 + + ### ცნობილი შეცდომები + - დაკვრის მდგომარეობის შენახვა შეუძლებელია Android P-ზე diff --git a/fastlane/metadata/android/ka/changelogs/70.txt b/fastlane/metadata/android/ka/changelogs/70.txt new file mode 100644 index 000000000..cd2bcb531 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/70.txt @@ -0,0 +1,25 @@ +ყურადღება: ეს ვერსია ალბათ არის bugfest, ისევე როგორც წინა. თუმცა 17 წლიდან სრული გათიშვის გამო გაფუჭებული ვერსია ჯობია არა ვერსიას. მართალია? ¯\_(ツ)_/¯ + + ### გაუმჯობესებები + * გადმოწერილი ფაილების გახსნა შესაძლებელია ერთი დაწკაპუნებით #1879 + * ჩამოაგდეს მხარდაჭერა ანდროიდის 4.1 - 4.3 #1884 + * წაშალეთ ძველი მოთამაშე #1884 + * წაშალეთ ნაკადები მიმდინარე სათამაშო რიგიდან მარჯვნივ #1915-ზე გადაფურცლით + * ამოიღეთ ავტომატური რიგის ნაკადი, როდესაც ახალი ნაკადი დაიდება ხელით #1878 + * ჩამოტვირთვების შემდგომი დამუშავება და დაკარგული ფუნქციების დანერგვა #1759 @kapodamy-ის მიერ + * შემდგომი დამუშავების ინფრასტრუქტურა + * "ინფრასტრუქტურის" სათანადო შეცდომის დამუშავება (ჩამომტვირთველისთვის) + * რიგი მრავალი ჩამოტვირთვის ნაცვლად + * გადაიტანეთ სერიული მომლოდინე ჩამოტვირთვები (`.giga` ფაილები) აპის მონაცემებში + * განახორციელეთ მაქსიმალური ჩამოტვირთვის ხელახალი ცდა + * სწორი მრავალძაფის ჩამოტვირთვის პაუზა + * მობილურ ქსელზე გადასვლისას ჩამოტვირთვების შეწყვეტა (არასდროს მუშაობს, იხილეთ მე-2 პუნქტი) + * შეინახეთ ძაფების რაოდენობა შემდეგი ჩამოტვირთვებისთვის + * ბევრი შეუსაბამობა დაფიქსირდა + + ### გამოსწორდა + * შეასწორეთ ავარია ნაგულისხმევი გარჩევადობით დაყენებული საუკეთესო და შეზღუდული მობილური მონაცემთა გარჩევადობით #1835 + * ამომხტარი მოთამაშის ავარია დაფიქსირდა #1874 + * NPE, როდესაც ცდილობთ გახსნათ ფონური მოთამაშე #1901 + * შეასწორეთ ახალი ნაკადების ჩასმა, როცა ავტომატური რიგი ჩართულია #1878 + * დააფიქსირა გაშიფვრის დახურვის საკითხი diff --git a/fastlane/metadata/android/ka/changelogs/71.txt b/fastlane/metadata/android/ka/changelogs/71.txt new file mode 100644 index 000000000..1b2598eb7 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/71.txt @@ -0,0 +1,10 @@ +### გაუმჯობესებები + * დაამატეთ აპლიკაციის განახლების შეტყობინება GitHub build-ისთვის (#1608 @krtkush-ის მიერ) + * ჩამოტვირთვის სხვადასხვა გაუმჯობესება (#1944 @kapodamy): + * დაამატეთ დაკარგული თეთრი ხატები და გამოიყენეთ მყარი გზა ხატის ფერების შესაცვლელად + * შეამოწმეთ, არის თუ არა იტერატორი ინიციალიზებული (ასწორებს #2031) + * დაუშვით ხელახალი ჩამოტვირთვები „დამუშავების შემდგომ წარუმატებელი“ შეცდომით ახალ muxer-ში + * ახალი MPEG-4 muxer, რომელიც აფიქსირებს არასინქრონულ ვიდეო და აუდიო ნაკადებს (#2039) + + ### გამოსწორდა + * YouTube პირდაპირი სტრიმინგები წყვეტს დაკვრას მცირე ხნის შემდეგ (#1996 @yausername-ის მიერ) diff --git a/fastlane/metadata/android/ka/changelogs/730.txt b/fastlane/metadata/android/ka/changelogs/730.txt new file mode 100644 index 000000000..35717b66f --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/730.txt @@ -0,0 +1,2 @@ +#გამოსწორდა + - ცხელი გამოსწორების გაშიფვრის ფუნქციის შეცდომა ისევ. diff --git a/fastlane/metadata/android/ka/changelogs/740.txt b/fastlane/metadata/android/ka/changelogs/740.txt new file mode 100644 index 000000000..3589197f9 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/740.txt @@ -0,0 +1,23 @@ +

      გაუმჯობესებები

      +
        +
      • გახადეთ კომენტარებში ბმულები დაწკაპუნებით, გაზარდეთ ტექსტის ზომა
      • +
      • მოძებნეთ კომენტარებში დროის ანაბეჭდის ბმულებზე დაწკაპუნებით
      • +
      • სასურველი ჩანართის ჩვენება ახლახან არჩეული მდგომარეობის მიხედვით
      • +
      • დაამატე დასაკრავი სია რიგში, როდესაც დიდხანს დააწკაპუნებთ 'ფონზე' დასაკრავი სიის ფანჯარაში
      • +
      • მოძებნეთ გაზიარებული ტექსტი, როდესაც ის არ არის URL
      • +
      • დაამატეთ "გაზიარება მიმდინარე დროს" ღილაკი მთავარ ვიდეო დამკვრელზე
      • +
      • დახურვის ღილაკის დამატება მთავარ დამკვრელზე, როდესაც ვიდეო რიგი დასრულდება
      • +
      • დაამატეთ "დაკვრა პირდაპირ ფონზე" ვიდეო სიის ელემენტების მენიუს ხანგრძლივი დაჭერისთვის
      • +
      • გააუმჯობესეთ ინგლისური თარგმანი Play/Enqueue ბრძანებებისთვის
      • +
      • შესრულების მცირე გაუმჯობესება
      • +
      • გამოუყენებელი ფაილების წაშლა
      • +
      • განაახლეთ ExoPlayer 2.9.6-ზე
      • +
      • დაამატეთ მხარდაჭერა Invidious ბმულებისთვის
      • +
      +

      გამოსწორებულია

      +
        +
      • გასწორდა გადახვევა/ კომენტარები და დაკავშირებული ნაკადები გამორთულია
      • +
      • დაასწორა CheckForNewAppVersionTask შესრულებული მაშინ, როცა არ უნდა
      • +
      • გასწორდა youtube გამოწერის იმპორტი: იგნორირება გაუკეთეთ არასწორი url-ით და შეინახეთ ცარიელი სათაურით
      • +
      • შეასწორეთ არასწორი YouTube url: ხელმოწერის ტეგის სახელი ყოველთვის არ არის „ხელმოწერა“, რაც ხელს უშლის ნაკადების ჩატვირთვას
      • +
      diff --git a/fastlane/metadata/android/ka/changelogs/750.txt b/fastlane/metadata/android/ka/changelogs/750.txt new file mode 100644 index 000000000..cea3507a5 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/750.txt @@ -0,0 +1,22 @@ +ახალი + დაკვრის რეზიუმე #2288 + • განაახლეთ ნაკადები, სადაც ბოლო დროს გაჩერდით + Downloader Enhancements #2149 + • გამოიყენეთ Storage Access Framework ჩამოტვირთვების შესანახად გარე SD-ბარათებზე + • ახალი mp4 muxer + • სურვილისამებრ შეცვალეთ ჩამოტვირთვის დირექტორია ჩამოტვირთვის დაწყებამდე + • პატივი ეცით მრიცხველ ქსელებს + + + გაუმჯობესებული + • ამოღებულია გემას სიმები #2295 + • გაუმკლავდეს (ავტო)როტაციის ცვლილებებს აქტივობის სასიცოცხლო ციკლის #2444 + • დააწკაპუნეთ მენიუები თანმიმდევრული #2368 + + დაფიქსირდა + • დაფიქსირდა არჩეული სუბტიტრების ტრეკის სახელი, რომელიც არ იყო ნაჩვენები #2394 + • არ გატეხოთ, როდესაც აპის განახლება ვერ ხერხდება (GitHub ვერსია) #2423 + • დაფიქსირებული ჩამოტვირთვები დარჩა 99.9% #2440 + • განაახლეთ სათამაშო რიგის მეტამონაცემები #2453 + • [SoundCloud] გამოსწორდა ავარია დასაკრავი სიების ჩატვირთვისას TeamNewPipe/NewPipeExtractor#170 + • [YouTube] ფიქსირებული ხანგრძლივობის გარჩევა შეუძლებელია TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/ka/changelogs/760.txt b/fastlane/metadata/android/ka/changelogs/760.txt new file mode 100644 index 000000000..b530c09d3 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/760.txt @@ -0,0 +1,43 @@ +ცვლილებები 0.17.1-ში + + ახალი + • ტაილანდური ლოკალიზაცია + + + გაუმჯობესებული + • დაამატე აქ დაკვრის დაწყება მოქმედების ხანგრძლივი დაჭერის მენიუში დასაკრავი სიებისთვის ისევ #2518 + • დაამატეთ გადამრთველი SAF / ძველი ფაილის ამომრჩევი #2521 + + დაფიქსირდა + • დააფიქსირეთ ქრება ღილაკები ჩამოტვირთვების ხედში აპების გადართვისას #2487 + • დაკვრის პოზიციის დაფიქსირება შენახულია, თუმცა ნახვის ისტორია გამორთულია + • დააფიქსირეთ შემცირებული შესრულება, რომელიც გამოწვეულია დაკვრის პოზიციით სიის ხედებში #2517 + • [Extractor] Fix ReCaptchaActivity #2527, TeamNewPipe/NewPipeExtractor#186 + • [Extractor] [YouTube] შეასწორეთ შემთხვევითი ძიების შეცდომა, როდესაც დასაკრავი სიები შედეგებშია TeamNewPipe/NewPipeExtractor#185 + + + + ცვლილებები 0.17.0-ში + + ახალი + დაკვრის რეზიუმე #2288 + • განაახლეთ ნაკადები, სადაც ბოლო დროს გაჩერდით + Downloader Enhancements #2149 + • გამოიყენეთ Storage Access Framework ჩამოტვირთვების შესანახად გარე SD-ბარათებზე + • ახალი mp4 muxer + • სურვილისამებრ შეცვალეთ ჩამოტვირთვის დირექტორია ჩამოტვირთვის დაწყებამდე + • პატივი ეცით მრიცხველ ქსელებს + + + გაუმჯობესებული + • ამოღებულია გემას სიმები #2295 + • გაუმკლავდეს (ავტო)როტაციის ცვლილებებს აქტივობის სასიცოცხლო ციკლის #2444 + • დააწკაპუნეთ მენიუები თანმიმდევრული #2368 + + დაფიქსირდა + • დაფიქსირდა არჩეული სუბტიტრების ტრეკის სახელი, რომელიც არ იყო ნაჩვენები #2394 + • არ გატეხოთ, როდესაც აპის განახლება ვერ ხერხდება (GitHub ვერსია) #2423 + • დაფიქსირებული ჩამოტვირთვები დარჩა 99.9% #2440 + • განაახლეთ სათამაშო რიგის მეტამონაცემები #2453 + • [SoundCloud] გამოსწორდა ავარია დასაკრავი სიების ჩატვირთვისას TeamNewPipe/NewPipeExtractor#170 + • [YouTube] ფიქსირებული ხანგრძლივობის გარჩევა შეუძლებელია TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/ka/changelogs/770.txt b/fastlane/metadata/android/ka/changelogs/770.txt new file mode 100644 index 000000000..92b58026c --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/770.txt @@ -0,0 +1,4 @@ +ცვლილებები 0.17.2-ში + + გაასწორდა + • გაასწორდა, რომ ვიდეო არ იყო ხელმისაწვდომი diff --git a/fastlane/metadata/android/ka/changelogs/780.txt b/fastlane/metadata/android/ka/changelogs/780.txt new file mode 100644 index 000000000..ea9ffd667 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/780.txt @@ -0,0 +1,12 @@ +ცვლილებები 0.17.3-ში + + გაუმჯობესებული + • დამატებულია ვარიანტი #2550 დაკვრის მდგომარეობის გასასუფთავებლად + • დამალული დირექტორიების ჩვენება ფაილის ამომრჩეველში #2591 + • მხარდაჭერილი URL-ები `invidio.us`-დან, რომლებიც გაიხსნება NewPipe #2488-ით + • დაამატეთ მხარდაჭერა `music.youtube.com` URL-ებისთვის TeamNewPipe/NewPipeExtractor#194 + + დაფიქსირდა + • [YouTube] გაასწორა 'java.lang.IllegalArgumentException #192 + • [YouTube] დაფიქსირდა პირდაპირი სტრიმინგები არ მუშაობს TeamNewPipe/NewPipeExtractor#195 + • დაფიქსირდა მუშაობის პრობლემა Android Pie-ში #2592 ნაკადის ჩამოტვირთვისას diff --git a/fastlane/metadata/android/ka/changelogs/790.txt b/fastlane/metadata/android/ka/changelogs/790.txt new file mode 100644 index 000000000..dc83588ee --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/790.txt @@ -0,0 +1,14 @@ +გაუმჯობესებული + • დაამატეთ მეტი სათაური უსინათლოთა ხელმისაწვდომობისᲗვის გასაუმჯობესებლად #2655 + • გახადეთ ჩამოტვირთვის საქაღალდის პარამეტრის ენა უფრო თანმიმდევრული და ნაკლებად ორაზროვანი #2637 + + დაფიქსირდა + • შეამოწმეთ არის თუ არა ბლოკში ბოლო ბაიტი ჩამოტვირთული #2646 + • დაფიქსირდა გადახვევა ვიდეო დეტალების ფრაგმენტში #2672 + • წაშალეთ ორმაგი ძიების წმინდა ყუთის ანიმაციები ერთ #2695-ზე + • [SoundCloud] გაასწორეთ client_id ამონაწერი #2745 + + განვითარება + • დაამატეთ NewPipeExtractor-დან მემკვიდრეობით მიღებული გამოტოვებული დამოკიდებულებები NewPipe #2535-ში + • მიგრაცია AndroidX #2685-ზე + • განაახლეთ ExoPlayer 2.10.6 #2697, #2736 diff --git a/fastlane/metadata/android/ka/changelogs/800.txt b/fastlane/metadata/android/ka/changelogs/800.txt new file mode 100644 index 000000000..33e3e8cbc --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/800.txt @@ -0,0 +1,27 @@ +ახალი + • PeerTube მხარდაჭერა P2P-ის გარეშე (#2201) [ბეტა]: + ◦ უყურეთ და ჩამოტვირთეთ ვიდეოები PeerTube ინსტანციებიდან + ◦ დაამატებულია ეგზემპლარები პარამეტრებში, რათა მიიღოთ PeerTube სრულ სამყაროში + ◦ შეიძლება იყოს პრობლემები SSL-ის ხელის ჩამორთმევასთან დაკავშირებით Android 4.4 და 7.1-ზე, როდესაც შედიხართ გარკვეულ ინსტანციებზე, რამაც გამოიწვია ქსელის შეცდომა. + + • Downloader (#2679): + ◦ გამოთვალეთ ჩამოტვირთვის დრო + ◦ ჩამოტვირთეთ opus (webm ფაილები) როგორც ogg + ◦ აღადგინეთ ვადაგასული ჩამოტვირთვის ბმულები, რომ განაახლოთ ჩამოტვირთვები ხანგრძლივი პაუზის შემდეგ + + გაუმჯობესებული + • აცნობეთ KioskFragment-ს სასურველი კონტენტის ქვეყანაში ცვლილებების შესახებ და გააუმჯობესეთ ყველა ძირითადი ჩანართის შესრულება #2742 + • გამოიყენეთ ახალი ლოკალიზაციისა და Downloader-ის იმპლემენტაციები ამომყვანი #2713-დან + • „ნაგულისხმევი კიოსკი“ სტრიქონის თარგმნად აქცია + • შავი ნავიგაციის ზოლი შავი თემისთვის #2569 + + დაფიქსირდა + • გამოსწორდა ხარვეზი, რომელიც ვერ ახერხებდა ამომხტარი პლეერის გადაადგილებას, თუ ამომხტარი ფლეიერის #2772 გადაადგილებისას სხვა თითი იყო განთავსებული + • დასაკრავი სიების დაშვება ამტვირთავი აკლია და შეასწორეთ ამ პრობლემასთან დაკავშირებული ავარიები #2724, TeamNewPipe/NewPipeExtractor#219 + • TLS1.1/1.2-ის ჩართვა Android 4.4 მოწყობილობებზე (API 19/KitKat) TLS ხელის ჩამორთმევის გამოსასწორებლად MediaCCC-ით და PeerTube-ის ზოგიერთი ინსტანციით #2792 + • [SoundCloud] დაფიქსირდა client_id მოპოვება TeamNewPipe/NewPipeExtractor#217 + • [SoundCloud] აუდიო ნაკადის ამოღების შესწორება + + განვითარება + • განაახლეთ ExoPlayer 2.10.8 #2791, #2816-ზე + • განაახლეთ Gradle 3.5.1-ზე და დაამატეთ Kotlin მხარდაჭერა #2714 diff --git a/fastlane/metadata/android/ka/changelogs/810.txt b/fastlane/metadata/android/ka/changelogs/810.txt new file mode 100644 index 000000000..487e28633 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/810.txt @@ -0,0 +1,19 @@ +ახალი + • ვიდეოს მინიატურების ჩვენება ჩაკეტილ ეკრანზე ფონზე დაკვრისას + + გაუმჯობესებული + • დაამატებულია ლოკალური დასაკრავი სია რიგში ფონზე / ამომხტარ ღილაკზე ხანგრძლივი დაჭერისას + • გააკეთეთ მთავარი გვერდის ჩანართები გადასახვევად და დამალეთ, როდესაც მხოლოდ ერთი ჩანართია + • შეტყობინებების მინიატურების განახლებების რაოდენობის შეზღუდვა ფონურ პლეერში + • დაამატეთ მოჩვენებითი მინიატურა ცარიელი ადგილობრივი დასაკრავი სიებისთვის + • გამოიყენეთ *.opus ფაილის გაფართოება *.webm-ის ნაცვლად და აჩვენეთ "opus" ფორმატში ლეიბლის ნაცვლად "WebM Opus" ჩამოტვირთვის ჩამოსაშლელ სიაში + • „ჩამოტვირთვებში“ ჩამოტვირთული ფაილების ან ჩამოტვირთვის ისტორიის წასაშლელად ღილაკის დამატება + • [YouTube] დაამატეთ მხარდაჭერა /c/shortened_url არხის ბმულებს + + დაფიქსირდა + • დაფიქსირდა მრავალი პრობლემა NewPipe-ში ვიდეოს გაზიარებისა და მისი ნაკადების პირდაპირ ჩამოტვირთვისას + • დააფიქსირა მოთამაშის წვდომა მისი შექმნის ძაფიდან + • დაფიქსირდა ძიების შედეგების პეიჯინგი + • [YouTube] დაფიქსირდა NPE-ის გამომწვევი null-ის ჩართვა + • [YouTube] დააფიქსირა კომენტარების ნახვა invidio.us url-ის გახსნისას + • [SoundCloud] განახლებულია client_id diff --git a/fastlane/metadata/android/ka/changelogs/820.txt b/fastlane/metadata/android/ka/changelogs/820.txt new file mode 100644 index 000000000..da86b5007 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/820.txt @@ -0,0 +1 @@ +დაფიქსირდა გაშიფვრის ფუნქციის სახელი regex, რის გამოც YouTube გამოუსადეგარი გახდა. diff --git a/fastlane/metadata/android/ka/changelogs/830.txt b/fastlane/metadata/android/ka/changelogs/830.txt new file mode 100644 index 000000000..4fb8bde1a --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/830.txt @@ -0,0 +1 @@ +განახლებულია SoundCloud client_id SoundCloud-ის პრობლემების მოსაგვარებლად. diff --git a/fastlane/metadata/android/ka/changelogs/840.txt b/fastlane/metadata/android/ka/changelogs/840.txt new file mode 100644 index 000000000..d181548ea --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/840.txt @@ -0,0 +1,22 @@ +ახალი + • დაემატა ენის ამომრჩევი აპის ენის შესაცვლელად + • დამატებულია კოდის გაგზავნის ღილაკი მოთამაშის დასაკეც მენიუში + • დამატებულია ხანგრძლივი დაჭერით კომენტარების კოპირების შესაძლებლობა + + გაუმჯობესებული + • დააფიქსირეთ ReCaptcha აქტივობა და სწორად შეინახეთ მიღებული ქუქიები + • ამოღებულია წერტილების მენიუ უჯრის სასარგებლოდ და ისტორიის დამალვის ღილაკი, როდესაც ნახვის ისტორია არ არის ჩართული პარამეტრებში + • მოითხოვეთ სხვა აპებზე ჩვენების ნებართვა სწორად პარამეტრებში Android 6-ზე და შემდეგ ვერსიაზე + • ადგილობრივი დასაკრავი სიის სახელის გადარქმევა BookmarkFragment-ზე ხანგრძლივი დაწკაპუნებით + • PeerTube-ის სხვადასხვა გაუმჯობესება + • გაუმჯობესდა რამდენიმე ინგლისური წყაროს სტრიქონი + + დაფიქსირდა + • დაფიქსირდა დამკვრელის ხელახლა გაშვება, თუმცა ის შეჩერებულია, როდესაც ჩართულია ოფცია „მინიმიზაცია აპის შეცვლაზე“ და NewPipe მინიმიზირებულია + • დააფიქსირეთ საწყისი სიკაშკაშის მნიშვნელობა ჟესტისთვის + • დაფიქსირდა .srt სუბტიტრების ჩამოტვირთვები, რომლებიც არ შეიცავს ყველა ხაზს + • დაფიქსირდა SD ბარათზე ჩამოტვირთვა ვერ მოხერხდა, რადგან ზოგიერთი Android 5 მოწყობილობა არ შეესაბამება CTF-ს + • დაფიქსირდა ჩამოტვირთვა Android KitKat-ზე + • დაფიქსირდა კორუმპირებული ვიდეო .mp4 ფაილის აუდიო ფაილად აღიარება + • დაფიქსირდა ლოკალიზაციის მრავალი პრობლემა, მათ შორის არასწორი ჩინური ენის კოდები + • [YouTube] აღწერილობაში დროის შტამპები ხელახლა შეიძლება დააწკაპუნოთ diff --git a/fastlane/metadata/android/ka/changelogs/850.txt b/fastlane/metadata/android/ka/changelogs/850.txt new file mode 100644 index 000000000..c78859a4e --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/850.txt @@ -0,0 +1 @@ +ამ გამოშვებაში განახლდა YouTube ვებსაიტის ვერსია. ვებსაიტის ძველი ვერსია შეწყდება მარტში და, შესაბამისად, თქვენ უნდა განაახლოთ NewPipe. diff --git a/fastlane/metadata/android/ka/changelogs/860.txt b/fastlane/metadata/android/ka/changelogs/860.txt new file mode 100644 index 000000000..174e5bf87 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/860.txt @@ -0,0 +1,7 @@ +გაუმჯობესებული + • შეინახეთ და აღადგინეთ სიმაღლე და ტემპი გამორთულია თუ არა + • პლეერში ეკრანის ამოჭრის მხარდაჭერა + • მრგვალი ხედვა და აბონენტების რაოდენობა + • ოპტიმიზებულია YouTube ნაკლები მონაცემების გამოსაყენებლად + + YouTube-თან დაკავშირებული 15-ზე მეტი შეცდომა დაფიქსირდა და გასწორდა ამ გამოშვებაში. diff --git a/fastlane/metadata/android/ka/changelogs/870.txt b/fastlane/metadata/android/ka/changelogs/870.txt new file mode 100644 index 000000000..5ed151a78 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/870.txt @@ -0,0 +1,2 @@ +ეს არის Hotfix-ის გამოშვება, რომელიც ახლებს NewPipe-ს, რათა შესაძლებელი გახდეს SoundCloud-ის გამოყენება კვლავ დიდი პრობლემების გარეშე. + SoundCloud-ის v2 API ახლა გამოიყენება ექსტრაქტორში და გაუმჯობესებულია კლიენტის არასწორი ID-ების გამოვლენა. diff --git a/fastlane/metadata/android/ka/changelogs/900.txt b/fastlane/metadata/android/ka/changelogs/900.txt new file mode 100644 index 000000000..4dc628a67 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/900.txt @@ -0,0 +1,14 @@ +ახალი + • გამოწერის ჯგუფები და დახარისხებული არხები + • დადუმების ღილაკი მოთამაშეებში + + გაუმჯობესებული + • დაუშვით music.youtube.com და media.ccc.de ბმულების გახსნა NewPipe-ში + • ორი პარამეტრის გადატანა გარეგნობიდან კონტენტზე + • 5, 15, 25 წამის ძიების ვარიანტების დამალვა, თუ არაზუსტი ძიება ჩართულია + + დაფიქსირდა + • ზოგიერთი WebM ვიდეოს ძებნა შეუძლებელია + • მონაცემთა ბაზის სარეზერვო ასლი Android P-ზე + • ავარია ჩამოტვირთული ფაილის გაზიარებისას + • ბევრი YouTube მოპოვების პრობლემა და სხვა ... diff --git a/fastlane/metadata/android/ka/changelogs/910.txt b/fastlane/metadata/android/ka/changelogs/910.txt new file mode 100644 index 000000000..f5b615699 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/910.txt @@ -0,0 +1 @@ +დაფიქსირდა მონაცემთა ბაზის მიგრაცია, რამაც ხელი შეუშალა NewPipe-ის დაწყებას ზოგიერთ იშვიათ შემთხვევებში. diff --git a/fastlane/metadata/android/ka/changelogs/920.txt b/fastlane/metadata/android/ka/changelogs/920.txt new file mode 100644 index 000000000..a5b7a214d --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/920.txt @@ -0,0 +1,9 @@ +გაუმჯობესებული + + • დამატებულია ატვირთვის თარიღი და ნახვების რაოდენობა ნაკადის ბადის ერთეულებზე + • უჯრის სათაურის განლაგების გაუმჯობესება + + გასწორდა + + • გასწორდა დადუმების ღილაკი, რომელიც იწვევს ავარიას API 19-ზე + • გასწორდა გრძელი 1080p 60fps ვიდეოების ჩამოტვირთვა diff --git a/fastlane/metadata/android/ka/changelogs/930.txt b/fastlane/metadata/android/ka/changelogs/930.txt new file mode 100644 index 000000000..10502743b --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/930.txt @@ -0,0 +1,19 @@ +ახალი + • ძიება YouTube Music-ზე + • Android TV-ის ძირითადი მხარდაჭერა + + გაუმჯობესებული + • დამატებულია ყველა ნანახი ვიდეოს წაშლის შესაძლებლობა ადგილობრივი დასაკრავი სიიდან + • შეტყობინებების ჩვენება, როდესაც კონტენტი ჯერ არ არის მხარდაჭერილი ავარიის ნაცვლად + • გაუმჯობესებული ამომხტარი დამკვრელის ზომის შეცვლა პინჩის ჟესტებით + • სტრიმინგების რიგში ჩასმა ფონზე ხანგრძლივი დაჭერით და არხის ამომხტარი ღილაკებით + • უჯრის სათაურის სათაურის ზომის გაუმჯობესებული დამუშავება + + დაფიქსირდა + • ფიქსირებული ასაკობრივი შეზღუდვის კონტენტის პარამეტრი არ მუშაობს + • დააფიქსირა გარკვეული სახის reCAPTCHA-ები + • დაფიქსირდა ავარია სანიშნეების გახსნისას, როდესაც დასაკრავი სია არის `null` + • ქსელთან დაკავშირებული გამონაკლისების დაფიქსირება + • დაფიქსირდა ჯგუფური დახარისხების ღილაკის ხილვადობა გამოწერების ფრაგმენტში + + და მეტი diff --git a/fastlane/metadata/android/ka/changelogs/940.txt b/fastlane/metadata/android/ka/changelogs/940.txt new file mode 100644 index 000000000..7c5f74013 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/940.txt @@ -0,0 +1,16 @@ +ახალი + • დაამატეთ მხარდაჭერა SoundCloud-ის კომენტარებისთვის + • დაამატეთ YouTube შეზღუდული რეჟიმის პარამეტრი + • PeerTube-ის მშობელი არხის დეტალების ჩვენება + + გაუმჯობესებული + • კორე ღილაკის ჩვენება მხოლოდ მხარდაჭერილი სერვისებისთვის + • დაბლოკეთ მოთამაშის ჟესტები, რომლებიც იწყება Navigation Bar-ზე ან Status Bar-ზე + • ხელახლა ცდისა და გამოწერის ღილაკების ფონის ფერის შეცვლა სერვისის ფერის მიხედვით + + დაფიქსირდა + • დააფიქსირეთ ჩამოტვირთვის დიალოგის გაყინვა + • ბრაუზერის გახსნის ღილაკი ახლა ნამდვილად იხსნება ბრაუზერში + • ვიდეოების გახსნისას ავარიის გამოსწორება და „ამ ნაკადის დაკვრა ვერ მოხერხდა“ + + და მეტი diff --git a/fastlane/metadata/android/ka/changelogs/950.txt b/fastlane/metadata/android/ka/changelogs/950.txt new file mode 100644 index 000000000..56020dc63 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/950.txt @@ -0,0 +1,4 @@ +ამ გამოშვებას მოაქვს სამი მცირე გამოსწორება: + • გასწორდა წვდომა მეხსიერებაზე Android 10+-ზე + • ფიქსირებული გახსნის კიოსკები + • ხანგრძლივი ვიდეოების ფიქსირებული ხანგრძლივობის გარჩევა diff --git a/fastlane/metadata/android/ka/changelogs/951.txt b/fastlane/metadata/android/ka/changelogs/951.txt new file mode 100644 index 000000000..689d4c63d --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/951.txt @@ -0,0 +1,17 @@ +ახალი + • დაამატეთ სააბონენტო ამომრჩევის ძიება არხის ჯგუფის დიალოგში + • დაამატეთ ფილტრი არხის ჯგუფის დიალოგში მხოლოდ დაუჯგუფებელი გამოწერების საჩვენებლად + • დასაკრავი სიის ჩანართის დამატება მთავარ გვერდზე + • სწრაფი წინ/უკან გადახვევა ფონური/გამომხტარი მოთამაშის რიგში + • ძიების შეთავაზების ჩვენება: იგულისხმეთ და აჩვენეთ შედეგი + + გაუმჯობესებული + • ჩამოაგდეთ განაცხადის მეტამონაცემების ჩაწერა შეფუთულ ფაილებში + • არ ამოიღოთ წარუმატებელი ნაკადები რიგიდან + • განაახლეთ სტატუსის ზოლის ფერი, რათა შეესაბამებოდეს ხელსაწყოთა ზოლის ფერს + + დაფიქსირდა + • დაფიქსირდა აუდიო/ვიდეო დესინქრონიზაცია, რომელიც გამოწვეული იყო მცურავი წერტილის კუმულაციური შეცდომებით + • [PeerTube] წაშლილი კომენტარების მართვა + + და მეტი diff --git a/fastlane/metadata/android/ka/changelogs/952.txt b/fastlane/metadata/android/ka/changelogs/952.txt new file mode 100644 index 000000000..4e9b8832e --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/952.txt @@ -0,0 +1,7 @@ +გაუმჯობესებული + • ავტომატური დაკვრა ხელმისაწვდომია ყველა სერვისისთვის (მხოლოდ YouTube-ის ნაცვლად) + + გასწორდა + • გაასწორა დაკავშირებული ნაკადები YouTube-ის ახალი გაგრძელების მხარდაჭერით + • ფიქსირებული ასაკობრივი შეზღუდული YouTube ვიდეოები + • [Android TV] ფიქსირებული ფოკუსის ხაზგასმის გადაფარვა diff --git a/fastlane/metadata/android/ka/changelogs/953.txt b/fastlane/metadata/android/ka/changelogs/953.txt new file mode 100644 index 000000000..75d226e00 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/953.txt @@ -0,0 +1 @@ +გაასწორეთ YouTube-ის გაშიფვრის ფუნქციის ამოღება. diff --git a/fastlane/metadata/android/ka/changelogs/954.txt b/fastlane/metadata/android/ka/changelogs/954.txt new file mode 100644 index 000000000..f033caed7 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/954.txt @@ -0,0 +1,9 @@ +ახალი აპლიკაციის სამუშაო პროცესი: დაუკარით ვიდეოები დეტალების გვერდზე, გადაფურცლეთ ქვემოთ მოთამაშის შესამცირებლად + • MediaStyle შეტყობინებები: კონფიგურირებადი მოქმედებები შეტყობინებებში, მუშაობის გაუმჯობესება + • ძირითადი ზომის შეცვლა NewPipe-ის დესკტოპის აპად გამოყენებისას + + • აჩვენეთ დიალოგი ღია ვარიანტებით მხარდაჭერილი URL-ის სადღეგრძელოს შემთხვევაში + • გააუმჯობესეთ ძიების შეთავაზებების გამოცდილება, როდესაც დისტანციური ვერსიების მიღება შეუძლებელია + • ვიდეოს ნაგულისხმევი ხარისხის გაზრდა 720p60-მდე (აპს-შიდა პლეერი) და 480p-მდე (მომხტარი პლეერი) + + • ბევრი შეცდომების გამოსწორება და სხვა diff --git a/fastlane/metadata/android/ka/changelogs/955.txt b/fastlane/metadata/android/ka/changelogs/955.txt new file mode 100644 index 000000000..a3af0c85c --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/955.txt @@ -0,0 +1,3 @@ +[YouTube] გასწორდა ძიება ზოგიერთი მომხმარებლისთვის + [YouTube] გასწორდა შემთხვევითი გაშიფვრის გამონაკლისები + [SoundCloud] URL-ები, რომლებიც მთავრდება ხაზებით, ახლა სწორად არის გაანალიზებული diff --git a/fastlane/metadata/android/ka/changelogs/956.txt b/fastlane/metadata/android/ka/changelogs/956.txt new file mode 100644 index 000000000..5beb440a9 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/956.txt @@ -0,0 +1 @@ +[YouTube] გამოსწორდა ავარია ნებისმიერი ვიდეოს ჩატვირთვისას diff --git a/fastlane/metadata/android/ka/changelogs/957.txt b/fastlane/metadata/android/ka/changelogs/957.txt new file mode 100644 index 000000000..1f478d18c --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/957.txt @@ -0,0 +1,10 @@ +• კონკრეტული რიგის მოქმედებების გაერთიანება ერთში + • ორი თითის ჟესტი მოთამაშის დახურვისთვის + • დაუშვით reCAPTCHA ქუქიების გასუფთავება + • შეტყობინების გაუფერულების ვარიანტი + • გააუმჯობესე, თუ როგორ იხსნება ვიდეოს დეტალები, რათა გამოსწორდეს უსასრულო ბუფერირება, ბუფერული ქცევა NewPipe-თან გაზიარებისას და სხვა შეუსაბამობები + • დააჩქარეთ YouTube ვიდეოები და დააფიქსირეთ ასაკობრივი შეზღუდვები + • შეასწორეთ ავარია სწრაფ წინ/უკან გადახვევაზე + • ნუ გადააწყობთ სიებს ესკიზების გადატანით + • ყოველთვის გახსოვდეთ ამომხტარი თვისებები + • დაამატეთ სანტალი ენა diff --git a/fastlane/metadata/android/ka/changelogs/958.txt b/fastlane/metadata/android/ka/changelogs/958.txt new file mode 100644 index 000000000..c987d7375 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/958.txt @@ -0,0 +1,15 @@ +ახალი და გაუმჯობესებული: + • ხელახლა დამატებულია ესკიზის დამალვის ვარიანტი ჩაკეტილ ეკრანზე + • გაიყვანეთ არხის განახლებისთვის + • გაუმჯობესებული შესრულება ადგილობრივი სიების მიღებისას + + დაფიქსირდა: + • დაფიქსირდა ავარია NewPipe-ის გაშვებისას, ოპერატიული მეხსიერებიდან ამოღების შემდეგ + • დაფიქსირდა ავარია გაშვებისას, როცა ინტერნეტი არ არის + • დაფიქსირდა სიკაშკაშის და მოცულობის ჟესტების პარამეტრები + • [YouTube] დაფიქსირდა გრძელი დასაკრავი სიები + + სხვა: + • კოდების გასუფთავება და რამდენიმე შიდა გაუმჯობესება + • დამოკიდებულების განახლებები + • თარგმანის განახლებები diff --git a/fastlane/metadata/android/ka/changelogs/959.txt b/fastlane/metadata/android/ka/changelogs/959.txt new file mode 100644 index 000000000..d68f58a68 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/959.txt @@ -0,0 +1,3 @@ +დაფიქსირდა ავარიების გაუთავებელი ციკლი შეცდომის რეპორტიორის გახსნის შემდეგ. + განახლებულია PeerTube ინსტანციების სია, რომლებიც ავტომატურად გაიხსნება NewPipe-ის მიერ. + განახლებული თარგმანები. diff --git a/fastlane/metadata/android/ka/changelogs/960.txt b/fastlane/metadata/android/ka/changelogs/960.txt new file mode 100644 index 000000000..0eb0b822f --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/960.txt @@ -0,0 +1,4 @@ +• გაუმჯობესებული აღწერა ექსპორტის მონაცემთა ბაზის პარამეტრებში. + • დაფიქსირდა YouTube კომენტარების გარჩევა. + • დაფიქსირდა media.ccc.de სერვისის საჩვენებელი სახელი. + • განახლებული თარგმანები. diff --git a/fastlane/metadata/android/ka/changelogs/961.txt b/fastlane/metadata/android/ka/changelogs/961.txt new file mode 100644 index 000000000..f70fa3d04 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/961.txt @@ -0,0 +1,12 @@ +• [YouTube] Mix მხარდაჭერა + • [YouTube] ინფორმაციის ჩვენება საზოგადოებრივი მაუწყებლებისა და Covid-19-ის შესახებ + • [media.ccc.de] დამატებულია ბოლო ვიდეოები + • დამატებულია სომალიური თარგმანი + + • ბევრი შიდა გაუმჯობესება + + • დაფიქსირდა ვიდეოების გაზიარება პლეერის შიგნიდან + • დაფიქსირდა ცარიელი ReCaptcha ვებ-ხედვა + • დაფიქსირდა ავარია, რომელიც მოხდა ნაკადის სიიდან ამოღებისას + • [PeerTube] დაფიქსირდა დაკავშირებული ნაკადები + • [YouTube] დაფიქსირდა YouTube Music ძიება diff --git a/fastlane/metadata/android/ka/changelogs/962.txt b/fastlane/metadata/android/ka/changelogs/962.txt new file mode 100644 index 000000000..21e9c6a18 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/962.txt @@ -0,0 +1,2 @@ +media.ccc.de სერვისს დაემატა "უახლესი" ვიდეოები. + დაემატა პირდაპირი სტრიმინგები media.ccc.de სერვისს და ასევე პირდაპირი სტრიმინგის მხარდაჭერას. diff --git a/fastlane/metadata/android/ka/changelogs/963.txt b/fastlane/metadata/android/ka/changelogs/963.txt new file mode 100644 index 000000000..b7f7e915a --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/963.txt @@ -0,0 +1 @@ +• [YouTube] გასწორდა არხის გაგრძელება diff --git a/fastlane/metadata/android/ka/changelogs/964.txt b/fastlane/metadata/android/ka/changelogs/964.txt new file mode 100644 index 000000000..c23e90b14 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/964.txt @@ -0,0 +1,8 @@ +• დამატებულია თავების მხარდაჭერა მოთამაშის კონტროლში + • [PeerTube] დაემატა სეპიას ძებნა + • ხელახლა დაემატა გაზიარების ღილაკი ვიდეოს დეტალების ხედში და ნაკადის აღწერა გადატანილია ჩანართის განლაგებაში + • გამორთეთ სიკაშკაშის აღდგენა, თუ სიკაშკაშის ჟესტი გამორთულია + • დამატებულია სიის ელემენტი კოდიზე ვიდეოს დასაკრავად + • გამოსწორდა ავარია, როდესაც ნაგულისხმევი ბრაუზერი არ არის დაყენებული ზოგიერთ მოწყობილობაზე და გააუმჯობესეთ გაზიარების დიალოგები + • გადართეთ დაკვრა/პაუზა ტექნიკის სივრცის ღილაკით სრულეკრანიან დამკვრელში + • [media.ccc.de] სხვადასხვა შესწორებები და გაუმჯობესება diff --git a/fastlane/metadata/android/ka/changelogs/965.txt b/fastlane/metadata/android/ka/changelogs/965.txt new file mode 100644 index 000000000..2f67bcc17 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/965.txt @@ -0,0 +1,6 @@ +‚გამოსწორდა ავარია, რომელიც მოხდა არხის ჯგუფების ხელახალი შეკვეთისას. + დაფიქსირდა მეტი YouTube ვიდეოს მიღება არხებიდან და დასაკრავი სიებიდან. + გამოსწორდა YouTube კომენტარების მიღება. + დაემატა მხარდაჭერა /watch/, /v/ და /w/ ქვებილიკებისთვის YouTube URL-ებში. + დაფიქსირდა SoundCloud კლიენტის ID და გეოშეზღუდული კონტენტის ამოღება. + დაემატა ჩრდილოეთ ქურთული ლოკალიზაცია. diff --git a/fastlane/metadata/android/ka/changelogs/966.txt b/fastlane/metadata/android/ka/changelogs/966.txt new file mode 100644 index 000000000..0f0b7421d --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/966.txt @@ -0,0 +1,14 @@ +ახალი: + • ახალი სერვისის დამატება: Bandcamp + + გაუმჯობესებული: + • დაამატეთ ვარიანტი, რომ აპს მიჰყვეს მოწყობილობის თემას + • ზოგიერთი ავარიის თავიდან აცილება შეცდომების გაუმჯობესებული პანელის ჩვენებით + • აჩვენეთ მეტი ინფორმაცია იმის შესახებ, თუ რატომ არის კონტენტი მიუწვდომელი + • აპარატურის სივრცის ღილაკი იწვევს დაკვრა/პაუზას + • აჩვენეთ „ჩამოტვირთვა დაიწყო“ სადღეგრძელო + + დაფიქსირდა: + • დააფიქსირეთ ძალიან მცირე მინიატურა ვიდეოს დეტალებში ფონზე დაკვრის დროს + • შეასწორეთ ცარიელი სათაური მინიმიზირებულ მოთამაშეში + • დააფიქსირეთ ბოლო ზომის შეცვლის რეჟიმი, რომელიც არ აღდგება სწორად diff --git a/fastlane/metadata/android/ka/changelogs/967.txt b/fastlane/metadata/android/ka/changelogs/967.txt new file mode 100644 index 000000000..5d1835b2e --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/967.txt @@ -0,0 +1 @@ +გაასწორა YouTube, რომელიც ევროკავშირში არ მუშაობს გამართულად. ეს გამოწვეული იყო ახალი ქუქი-ჩანაწერით და კონფიდენციალურობის თანხმობის სისტემით, რომელიც მოითხოვს NewPipe-ს დააყენოს თანხმობის ქუქი-ფაილები. diff --git a/fastlane/metadata/android/ka/changelogs/968.txt b/fastlane/metadata/android/ka/changelogs/968.txt new file mode 100644 index 000000000..ef5b5ce6f --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/968.txt @@ -0,0 +1,7 @@ +დამატებულია არხის დეტალების ვარიანტი ხანგრძლივი დაჭერის მენიუში. + დამატებულია ფუნქციონირება დასაკრავი სიის სახელის გადარქმევის მიზნით დასაკრავი სიის ინტერფეისიდან. + ნება მიეცით მომხმარებელს შეაჩეროს ვიდეო ბუფერის დროს. + გაპრიალებული თეთრი თემა. + დაფიქსირდა შრიფტების გადახურვა უფრო დიდი ზომის შრიფტის გამოყენებისას. + არ დაფიქსირდა ვიდეო Formuler და Zephier მოწყობილობებზე. + დაფიქსირდა სხვადასხვა ავარია. diff --git a/fastlane/metadata/android/ka/changelogs/969.txt b/fastlane/metadata/android/ka/changelogs/969.txt new file mode 100644 index 000000000..5b61cc7ec --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/969.txt @@ -0,0 +1,8 @@ +• დაუშვით ინსტალაცია გარე მეხსიერებაზე + • [Bandcamp] დამატებულია მხარდაჭერა ნაკადზე პირველი სამი კომენტარის ჩვენებისთვის + • აჩვენეთ „ჩამოტვირთვა დაიწყო“ სადღეგრძელო მხოლოდ ჩამოტვირთვის დაწყებისას + • არ დააყენოთ reCaptcha ქუქი, როცა არ არის შენახული ქუქი + • [Player] ქეშის მუშაობის გაუმჯობესება + • [Player] ფიქსირებული პლეერი ავტომატურად არ უკრავს + • ჩამოტვირთვების წაშლისას წინა Snackbar-ების გაუქმება + • დაფიქსირდა ობიექტის წაშლის მცდელობა, რომელიც არ არის სიაში diff --git a/fastlane/metadata/android/ka/changelogs/970.txt b/fastlane/metadata/android/ka/changelogs/970.txt new file mode 100644 index 000000000..ccc87e82e --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/970.txt @@ -0,0 +1,11 @@ +ახალი + • აჩვენეთ შინაარსის მეტამონაცემები (თეგები, კატეგორიები, ლიცენზია, ...) აღწერილობის ქვემოთ + • დამატებულია „არხის დეტალების ჩვენება“ ოფცია დისტანციურ (არალოკალურ) დასაკრავ სიებში + • მენიუს ხანგრძლივი დაჭერით დაემატა „გახსნა ბრაუზერში“. + + დაფიქსირდა + • დაფიქსირდა ბრუნვის ავარია ვიდეოს დეტალების გვერდზე + • დაფიქსირდა ღილაკი „თამაში კოდით“ პლეერში ყოველთვის მოგთხოვთ კორეს დააინსტალიროთ + • დაფიქსირდა და გაუმჯობესდა დაყენების იმპორტისა და ექსპორტის გზები + • [YouTube] დააფიქსირა მოწონებების რაოდენობა + Და უფრო მეტი diff --git a/fastlane/metadata/android/ka/changelogs/971.txt b/fastlane/metadata/android/ka/changelogs/971.txt new file mode 100644 index 000000000..7898e5ee4 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/971.txt @@ -0,0 +1,3 @@ +Hotfix + • ბუფერის გაზრდა რებუფერის შემდეგ დაკვრისთვის + • გამოსწორდა ავარია ტაბლეტებსა და ტელევიზორებზე პლეერში სათამაშო რიგის ხატულაზე დაწკაპუნებისას diff --git a/fastlane/metadata/android/ka/changelogs/972.txt b/fastlane/metadata/android/ka/changelogs/972.txt new file mode 100644 index 000000000..737bb6725 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/972.txt @@ -0,0 +1,14 @@ +ახალი + აღწერილობაში დროის შტამპების და ჰეშთეგების ამოცნობა + დამატებულია ტაბლეტის ხელით რეჟიმის პარამეტრი + დამატებულია ნათამაშები ელემენტების არხში დამალვის შესაძლებლობა + + გაუმჯობესებული + სათანადოდ მხარი დაუჭირეთ Storage Access Framework-ს + მიუწვდომელი და დასრულებული არხების შეცდომის უკეთესი მართვა + Android-ის გაზიარების ფურცელი Android 10+ მომხმარებლებისთვის ახლა აჩვენებს კონტენტის სათაურს. + განახლებულია Invidious ინსტანციები და მხარს უჭერს Piped ბმულებს. + + დაფიქსირდა + [YouTube] ასაკით შეზღუდული კონტენტი + ფანჯრის გაჟონვის თავიდან აცილება, გამონაკლისი არჩევანის დიალოგის გახსნისას diff --git a/fastlane/metadata/android/ka/changelogs/973.txt b/fastlane/metadata/android/ka/changelogs/973.txt new file mode 100644 index 000000000..75ab08edd --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/973.txt @@ -0,0 +1,4 @@ +Hotfix + • გაასწორეთ ესკიზები და სათაურები, რომლებიც ამოჭრილია ბადის განლაგებაში, არასწორი გაანგარიშების გამო, თუ რამდენი ვიდეო შეიძლება მოთავსდეს ერთ რიგში + • დააფიქსირეთ ჩამოტვირთვის დიალოგი, რომელიც გაქრება არაფრის გაკეთების გარეშე, თუ გახსნილია გაზიარების მენიუდან + • განაახლეთ ბიბლიოთეკა, რომელიც დაკავშირებულია გარე აქტივობების გახსნასთან, როგორიცაა Storage Access Framework ფაილის ამომრჩევი diff --git a/fastlane/metadata/android/ka/changelogs/974.txt b/fastlane/metadata/android/ka/changelogs/974.txt new file mode 100644 index 000000000..3e594ea57 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/974.txt @@ -0,0 +1,5 @@ +Hotfix + • მოაგვარეთ ბუფერის პრობლემები, რომლებიც გამოწვეულია YouTube-ის შეფერხებით + • შეასწორეთ YouTube კომენტარების ამოღება და ავარია გამორთული კომენტარებით + • შეასწორეთ YouTube მუსიკის ძიება + • შეასწორეთ PeerTube პირდაპირი ეთერი diff --git a/fastlane/metadata/android/ka/changelogs/975.txt b/fastlane/metadata/android/ka/changelogs/975.txt new file mode 100644 index 000000000..2bc309acc --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/975.txt @@ -0,0 +1,17 @@ +ახალი + • ძიების დროს მინიატურების გადახედვის ჩვენება + • გამორთული კომენტარების აღმოჩენა + • არხის ერთეულის ნანახად მონიშვნის დაშვება + • კომენტარების გულების ჩვენება + + გაუმჯობესებულია + • მეტამონაცემების და ტეგების განლაგების გაუმჯობესება + • სერვისის ფერის გამოყენება UI კომპონენტებზე + + დაფიქსირდა + • მინი პლეერში მინიატურების დაფიქსირება + • დააფიქსირეთ დაუსრულებელი ბუფერირება დუბლიკატი რიგის ერთეულებზე + • ზოგიერთი მოთამაშის შესწორება, როგორიცაა როტაცია და უფრო სწრაფი დახურვა + • დააფიქსირეთ ReCAPTCHA დარჩენილი ჩატვირთული ფონზე + • დაწკაპუნების გამორთვა არხის განახლებისას + • შეასწორეთ ჩამოტვირთვის ავარია diff --git a/fastlane/metadata/android/ka/changelogs/976.txt b/fastlane/metadata/android/ka/changelogs/976.txt new file mode 100644 index 000000000..069e263bc --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/976.txt @@ -0,0 +1,10 @@ +• დამატებულია პლეერის პირდაპირ გახსნის ოპცია სრულ ეკრანზე + • ნება დართეთ აირჩიოთ რომელი ტიპის საძიებო წინადადებები გამოჩნდეს + • მუქი თემა ახლა უფრო მუქი + დამატებულია მუქი დახვეწილი ეკრანი + • გაუმჯობესებული ფაილის ამომრჩევი არასასურველი ფაილების გასათეთრებლად + • დაფიქსირდა YouTube გამოწერების იმპორტი + • ნაკადის ხელახლა დაკვრა მოითხოვს ხელახლა დაჭერას გამეორების ღილაკზე + • დაფიქსირდა დახურვის აუდიო სესია + • [Android TV] დაფიქსირდა გრძელი საძიებო ზოლის ნახტომები DPad-ის გამოყენებისას + + შემდგომი ცვლილებების სანახავად, ნახეთ ცვლილებების ჟურნალი (და ბლოგის პოსტი) ქვემოთ მოცემული ბმულების ჩანართიდან. diff --git a/fastlane/metadata/android/ka/changelogs/977.txt b/fastlane/metadata/android/ka/changelogs/977.txt new file mode 100644 index 000000000..9c8767768 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/977.txt @@ -0,0 +1,10 @@ +• დამატებულია „შემდეგი დაკვრის“ ღილაკი ხანგრძლივი დაჭერის მენიუში + • განზრახვის ფილტრს დაემატა YouTube shorts ბილიკის პრეფიქსი + • ფიქსირებული პარამეტრების იმპორტი + • შეცვალეთ საძიებო ზოლის პოზიცია მოთამაშის ღილაკებით რიგის ეკრანზე + • MediasessionManager-თან დაკავშირებული სხვადასხვა შესწორებები + • დაფიქსირებული ძიების ზოლი არ დასრულებულა ვიდეოს დასრულების შემდეგ + • გამორთული მედია გვირაბი RealtekATV-ზე + • გაფართოებული მინიმირებული მოთამაშის ღილაკების დაწკაპუნებადი არე + + შემდგომი ცვლილებების სანახავად, ნახეთ ცვლილებების ჟურნალი (და ბლოგის პოსტი) ქვემოთ მოცემული ბმულების ჩანართიდან. diff --git a/fastlane/metadata/android/ka/changelogs/978.txt b/fastlane/metadata/android/ka/changelogs/978.txt new file mode 100644 index 000000000..600962d14 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/978.txt @@ -0,0 +1 @@ +დაფიქსირდა შემოწმების შესრულება NewPipe-ის ახალი ვერსიისთვის. ეს შემოწმება ხანდახან ძალიან ადრე სრულდებოდა და, შესაბამისად, იწვევს აპის ავარიას. ეს ახლა უნდა გამოსწორდეს. diff --git a/fastlane/metadata/android/ka/changelogs/979.txt b/fastlane/metadata/android/ka/changelogs/979.txt new file mode 100644 index 000000000..ba6916b3a --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/979.txt @@ -0,0 +1,2 @@ +გასწორდა დაკვრის განახლება + - გაუმჯობესებები იმის უზრუნველსაყოფად, რომ სერვისი, რომელიც განსაზღვრავს თუ არა NewPipe-მა უნდა შეამოწმოს ახალი ვერსიის შემოწმება, არ დაიწყო ფონზე diff --git a/fastlane/metadata/android/ka/changelogs/980.txt b/fastlane/metadata/android/ka/changelogs/980.txt new file mode 100644 index 000000000..34b4bb313 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/980.txt @@ -0,0 +1,13 @@ +ახალი + • მენიუს გასაზიარებლად დაემატა „დამატება დასაკრავ სიაში“ ოფცია + • დამატებულია მხარდაჭერა y2u.be და PeerTube მოკლე ბმულებისთვის + + გაუმჯობესებული + • დაკვრა-სიჩქარის კონტროლი უფრო კომპაქტური გახდა + • არხი ახლა ხაზს უსვამს ახალ ელემენტებს + • არხში "ნანახი ელემენტების ჩვენება" ოფცია ახლა შენახულია + + დაფიქსირდა + • დაფიქსირდა YouTube-ის მოწონებისა და დაწუნებების მოპოვება + • დაფიქსირდა ავტომატური გამეორება ფონიდან დაბრუნების შემდეგ + Და უფრო მეტი diff --git a/fastlane/metadata/android/ka/changelogs/981.txt b/fastlane/metadata/android/ka/changelogs/981.txt new file mode 100644 index 000000000..9bd4cfe7b --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/981.txt @@ -0,0 +1,2 @@ +წაიშალა MediaParser-ის მხარდაჭერა Android 11+-ზე ბუფერირების შემდეგ დაკვრის წარუმატებელი რეზიუმეს გამოსასწორებლად. + გამორთულია მედია გვირაბი Philips QM16XE-ზე დაკვრის პრობლემების მოსაგვარებლად. diff --git a/fastlane/metadata/android/ka/changelogs/982.txt b/fastlane/metadata/android/ka/changelogs/982.txt new file mode 100644 index 000000000..fcb0d4417 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/982.txt @@ -0,0 +1 @@ +გაასწორა YouTube არ უკრავს არცერთ ნაკადს. diff --git a/fastlane/metadata/android/ka/changelogs/983.txt b/fastlane/metadata/android/ka/changelogs/983.txt new file mode 100644 index 000000000..73351e994 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/983.txt @@ -0,0 +1,9 @@ +დაამატეთ ახალი ინტერფეისი და ქცევა ორმაგი შეხებით მოსაძებნად + გახადეთ პარამეტრები საძიებელი + მონიშნეთ ჩამაგრებული კომენტარები, როგორც ასეთი + დაამატეთ ღია აპის მხარდაჭერა FSFE-ის PeerTube ინსტანციისთვის + შეცდომის შეტყობინებების დამატება + დააფიქსირეთ პირველი რიგის ელემენტის გამეორება მოთამაშის შეცვლაზე + დაელოდეთ უფრო მეტხანს ბუფერირებისას პირდაპირი სტრიმინგების დროს, სანამ არ მოხდება + ადგილობრივი ძიების შედეგების თანმიმდევრობის დაფიქსირება + დააფიქსირეთ ცარიელი ელემენტის ველები სათამაშო რიგში diff --git a/fastlane/metadata/android/ka/changelogs/984.txt b/fastlane/metadata/android/ka/changelogs/984.txt new file mode 100644 index 000000000..1d7308ab8 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/984.txt @@ -0,0 +1,7 @@ +ჩატვირთეთ საკმარისი საწყისი ელემენტი სიებში, რათა შეავსოთ მთელი ეკრანი და დააფიქსიროთ გადახვევა ტაბლეტებსა და ტელევიზორებზე + შეასწორეთ შემთხვევითი ავარიები სიებში გადახვევისას + სთხოვეთ მოთამაშეს სწრაფად მოძებნოს გადაფარვის რკალი სისტემის ინტერფეისის ქვეშ + დააბრუნეთ ცვლილებები ამონაჭრებში მრავალ ფანჯარაში თამაშისას, რაც იწვევს მოთამაშის არასწორად რეგრესიას ზოგიერთ ტელეფონზე + გაზიზარდა compileSdk 30-დან 31-მდე + შეცდომის მოხსენების ბიბლიოთეკის განახლება + გადააკეთეთ რამდენიმე კოდი პლეერში diff --git a/fastlane/metadata/android/ka/changelogs/985.txt b/fastlane/metadata/android/ka/changelogs/985.txt new file mode 100644 index 000000000..d20512f17 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/985.txt @@ -0,0 +1 @@ +გაასწორა YouTube არ უკრავს არცერთ ნაკადს diff --git a/fastlane/metadata/android/ka/changelogs/986.txt b/fastlane/metadata/android/ka/changelogs/986.txt new file mode 100644 index 000000000..c6a064c6c --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/986.txt @@ -0,0 +1,16 @@ +ახალი + • შეტყობინებები ახალი ნაკადებისთვის + • უწყვეტი გადასვლა ფონსა და ვიდეო პლეერებს შორის + • სიმაღლის შეცვლა ნახევარტონებით + • დასაკრავ სიას დაამატე მთავარი მოთამაშის რიგი + + გაუმჯობესებული + • დაიმახსოვრე სიჩქარე/სიმაღლის ნაბიჯის ზომა + • შეამცირეთ საწყისი ხანგრძლივი ბუფერირება ვიდეო პლეერში + • გააუმჯობესეთ მოთამაშის ინტერფეისი Android TV-სთვის + • დაადასტურეთ ყველა გადმოწერილი ფაილის წაშლამდე + + დაფიქსირდა + • შეასწორეთ მედია ღილაკი, რომელიც არ მალავს მოთამაშის კონტროლს + • დააფიქსირეთ დაკვრის გადატვირთვა მოთამაშის ტიპის შეცვლაზე + • დააფიქსირეთ დასაკრავი სიის დიალოგის როტაცია diff --git a/fastlane/metadata/android/ka/changelogs/987.txt b/fastlane/metadata/android/ka/changelogs/987.txt new file mode 100644 index 000000000..ce6806a93 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/987.txt @@ -0,0 +1,12 @@ +ახალი + • პროგრესული HTTP-ის გარდა მიწოდების მეთოდების მხარდაჭერა: დაკვრის უფრო სწრაფი ჩატვირთვის დრო, PeerTube-სა და SoundCloud-ის შესწორებები, ახლახან დასრულებული YouTube-ის პირდაპირი სტრიმინგების დაკვრა + • დამატების ღილაკი დისტანციური დასაკრავი სიის ადგილობრივ სიაში დასამატებლად + • სურათის გადახედვა Android 10+ გაზიარების ფურცელში + + გაუმჯობესებული + • დაკვრის პარამეტრების გაუმჯობესება + • ხელმოწერის იმპორტი/ექსპორტის ღილაკების გადატანა სამწერტილიან მენიუში + + დაფიქსირდა + • სრულად ნანახი ვიდეოების დასაკრავი სიიდან ამოშლის შესწორება + • შეასწორეთ გაზიარების მენიუს თემა და ჩანაწერი „დაამატე დასაკრავ სიაში“. diff --git a/fastlane/metadata/android/ka/changelogs/988.txt b/fastlane/metadata/android/ka/changelogs/988.txt new file mode 100644 index 000000000..e42877c9c --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/988.txt @@ -0,0 +1,2 @@ +[YouTube] გაასწორდა შეცდომა „ვერ მივიღე ნაკადი“ რომელიმე ვიდეოს დაკვრის მცდელობისას + [YouTube] შეასწორდა „შემდეგი კონტენტი მიუწვდომელია ამ აპში“. მოთხოვნილი ვიდეოს ნაცვლად ნაჩვენები შეტყობინება diff --git a/fastlane/metadata/android/ka/changelogs/989.txt b/fastlane/metadata/android/ka/changelogs/989.txt new file mode 100644 index 000000000..481927de1 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/989.txt @@ -0,0 +1,3 @@ +• [YouTube] შეასწორდა უსასრულო ჩატვირთვა ნებისმიერი ვიდეოს დაკვრის მცდელობისას + • [YouTube] დააფიქსირეთ შეფერხება ზოგიერთ ვიდეოზე + • განაახლეთ jsoup ბიბლიოთეკა 1.15.3-მდე, რომელიც მოიცავს უსაფრთხოების შესწორებას diff --git a/fastlane/metadata/android/ka/changelogs/990.txt b/fastlane/metadata/android/ka/changelogs/990.txt new file mode 100644 index 000000000..c19e2db24 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/990.txt @@ -0,0 +1,15 @@ +ეს გამოშვება ამცირებს Android 4.4 KitKat-ის მხარდაჭერას, ახლა მინიმალური ვერსიაა Android 5 Lollipop! + + ახალი + • ჩამოტვირთეთ ხანგრძლივი დაჭერის მენიუდან + • მომავალი ვიდეოების დამალვა არხში + • გააზიარეთ ადგილობრივი დასაკრავი სიები + + გაუმჯობესებული + • გადააკეთეთ მოთამაშის კოდი მცირე კომპონენტებად: ნაკლები ოპერატიული მეხსიერება, ნაკლები შეცდომები + • ესკიზების მასშტაბის რეჟიმის გაუმჯობესება + • Vector-ize image placeholders + + დაფიქსირდა + • მოაგვარეთ სხვადასხვა პრობლემები მოთამაშის შეტყობინებასთან დაკავშირებით: მოძველებული/გამოტოვებული მედიის ინფორმაცია, დამახინჯებული მინიატურა + • დააფიქსირეთ სრული ეკრანი ეკრანის 1/4-ის გამოყენებით diff --git a/fastlane/metadata/android/ka/changelogs/991.txt b/fastlane/metadata/android/ka/changelogs/991.txt new file mode 100644 index 000000000..010c04c8f --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/991.txt @@ -0,0 +1,13 @@ +ახალი + • შეცდომის პანელში დაამატეთ ღილაკი „გახსნა ბრაუზერში“. + • დაამატეთ ოფცია არხების ჯგუფების სიაში საჩვენებლად + • [YouTube] დიდხანს დააწკაპუნეთ ნაკადის სეგმენტებზე დროის ანაბეჭდის URL-ის გასაზიარებლად + • თამაშის რიგის ღილაკის დამატება მინი პლეერში + + გაუმჯობესებული + • დაამატეთ ისლანდიური ლოკალიზაცია და განახლებულია მრავალი სხვა თარგმანი + • ბევრი შიდა გაუმჯობესება + + დაფიქსირდა + • მრავალი ავარიის გამოსწორება + • [YouTube] ზოგიერთ ქვეყანაში არხების ჩატვირთვის, გამოუყენებელი არხის და დაკვრის პრობლემის გადაჭრის გადაჭრა diff --git a/fastlane/metadata/android/ka/full_description.txt b/fastlane/metadata/android/ka/full_description.txt new file mode 100644 index 000000000..eff57aabe --- /dev/null +++ b/fastlane/metadata/android/ka/full_description.txt @@ -0,0 +1 @@ +NewPipe არ იყენებს Google Framework ბიბლიოთეკას ან YouTube API-ს. ის მხოლოდ აანალიზებს ვებსაიტს, რათა მოიპოვოს მისთვის საჭირო ინფორმაცია. ამიტომ ამ აპლიკაციის გამოყენება შესაძლებელია მოწყობილობებზე Google სერვისების დაყენების გარეშე. გარდა ამისა, თქვენ არ გჭირდებათ YouTube ანგარიში NewPipe-ის გამოსაყენებლად და ეს არის FLOSS. diff --git a/fastlane/metadata/android/ka/short_description.txt b/fastlane/metadata/android/ka/short_description.txt new file mode 100644 index 000000000..3c12faee9 --- /dev/null +++ b/fastlane/metadata/android/ka/short_description.txt @@ -0,0 +1 @@ +უფასო მსუბუქი YouTube წინა ნაწილი Android-ისთვის. diff --git a/fastlane/metadata/android/or/full_description.txt b/fastlane/metadata/android/or/full_description.txt new file mode 100644 index 000000000..e0ae60693 --- /dev/null +++ b/fastlane/metadata/android/or/full_description.txt @@ -0,0 +1 @@ +NewPipe କୌଣସି ଗୁଗୁଲ୍ framework କରେ ନାହିଁ | ଏହା ଆବଶ୍ୟକ କରୁଥିବା ସୂଚନା ହାସଲ କରିବା ପାଇଁ ଏହା କେବଳ ୱେବସାଇଟ୍ କୁ ବିଶ୍ଳେଷଣ କରେ | ତେଣୁ ଗୁଗୁଲ୍ ସର୍ଭିସ୍ ଇନଷ୍ଟଲ୍ ହୋଇନଥିବା ଡିଭାଇସରେ ଏହି ଆପ୍ ବ୍ୟବହାର କରାଯାଇପାରିବ | ଆହୁରି ମଧ୍ୟ, NewPipe ବ୍ୟବହାର କରିବା ପାଇଁ ଆପଣଙ୍କୁ ଏକ ୟୁଟ୍ୟୁବ୍ ଆକାଉଣ୍ଟ୍ ଦରକାର ନାହିଁ, ଏବଂ ଏହା FLOSS | diff --git a/fastlane/metadata/android/pa/changelogs/991.txt b/fastlane/metadata/android/pa/changelogs/991.txt new file mode 100644 index 000000000..cdd3f14da --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/991.txt @@ -0,0 +1,13 @@ +ਨਵਾਂ +• "ਬ੍ਰਾਊਜ਼ਰ 'ਚ ਖੋਲੋ" ਬਟਨ ਤਰੁੱਟੀ ਪੈਨਲ ਵਿੱਚ ਜੋੜਿਆ +• ਚੈਨਲ ਗਰੁੱਪਾਂ ਨੂੰ ਲਿਸਟ ਦੇ ਰੂਪ 'ਚ ਵੇਖਣ ਦਾ ਵਿਕਲਪ ਜੋੜਿਆ ਗਿਆ +• [ਯੂਟਿਊਬ] ਸਟ੍ਰੀਮ ਸੈਗਮੈਟਾਂ ਨੂੰ ਲੰਮਾ ਦਬਾ ਕੇ ਟਾਈਮ ਸਟੈਂਪਡ Url ਖੋਲਣ ਦੀ ਸਹੂਲਤ ਜੋੜੀ ਗਈ +• ਮਿੰਨੀ ਪਲੇਅਰ ਵਿੱਚ ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ ਖੋਲਣ ਵਾਲਾ ਬਟਨ ਜੋੜਿਆ ਗਿਆ + +ਸੁਧਾਰ +• ਨਵੀਂ ਆਈਸਲੈਂਡਿਕ, ਪੰਜਾਬੀ (ਪਾਕਿਸਤਾਨ) ਭਾਸ਼ਾ ਅਤੇ ਹੋਰ ਕਈ ਭਾਸ਼ਾਵਾਂ [ਸਮੇਤ ਪੰਜਾਬੀ (ਭਾਰਤ] ਦੇ ਅਨੁਵਾਦ ਸੁਧਾਰ ਕਰਕੇ ਜੋੜੇ ਗਏ +• ਹੋਰ ਅੰਦਰੂਨੀ ਸੁਧਾਰ + +ਸਹੀ ਕੀਤੇ +• ਕਈ ਤਰਾਂ ਦੇ ਕਰੈਸ਼ ਦਰੁੱਸਤ ਕੀਤੇ ਗਏ +• [ਯੂਟਿਊਬ] ਚੈਨਲ ਦੇ ਵੀਡੀਓ ਵਿਖਣੇ ਅਤੇ ਫੀਡ ਵਿੱਚ ਵਿਖਣੇ ਸਹੀ ਕੀਤੇ ਗਏ diff --git a/fastlane/metadata/android/pt-PT/changelogs/990.txt b/fastlane/metadata/android/pt-PT/changelogs/990.txt new file mode 100644 index 000000000..63c3c3d19 --- /dev/null +++ b/fastlane/metadata/android/pt-PT/changelogs/990.txt @@ -0,0 +1,14 @@ +Esta versão deixa de suportar o Android 4.4 KitKat, agora a versão mínima é o Android 5 Lollipop! + +Novo +• Descarregar a partir do menu de toque longo +• Ocultar vídeos futuros no feed +• Partilhar listas de reprodução locais + +Melhorado +• Refatorizado o código do reprodutor: menos RAM, menos erros +• Melhorada a escala de miniaturas + +Corrigido +• Vários problemas com a notificação do reprodutor: informações de média desatualizadas/ausentes, miniatura distorcida +• Ecrã cheio usando 1/4 do ecrã diff --git a/fastlane/metadata/android/pt-PT/changelogs/991.txt b/fastlane/metadata/android/pt-PT/changelogs/991.txt new file mode 100644 index 000000000..2331d0c35 --- /dev/null +++ b/fastlane/metadata/android/pt-PT/changelogs/991.txt @@ -0,0 +1,13 @@ +Novo +•Botão "Abrir no navegador" no painel de erros +•Opção para mostrar grupos de canais como lista +•[YouTube] Clique longo nos segmentos de transmissão para partilhar o URL com a data/hora +•Botão de fila de reprodução no mini reprodutor + +Melhorado +•Nova localização em islandês e outras traduções atualizadas +•Muitas melhorias internas + +Corrigido +•Várias falhas +•[YouTube] Correção no carregamento de canais, feeds não dedicados e solução alternativa de problemas de reprodução em alguns países diff --git a/fastlane/metadata/android/pt/changelogs/65.txt b/fastlane/metadata/android/pt/changelogs/65.txt index 89a006829..92b3dd535 100644 --- a/fastlane/metadata/android/pt/changelogs/65.txt +++ b/fastlane/metadata/android/pt/changelogs/65.txt @@ -8,7 +8,7 @@ - Atualização da versão da biblioteca e correção de cópia de segurança da base de dados #1510 - ExoPlayer 2.8.2 Atualização #1392 - Retrabalhado a caixa de diálogo de controlo de velocidade de reprodução para suportar diferentes tamanhos de etapa para uma mudança de velocidade mais rápida. -- Adicionado uma alternância para avanço rápido durante silêncios no controle de velocidade de reprodução. Isso deve ser útil para audiolivros e certos géneros musicais, e pode trazer uma experiência verdadeiramente perfeita (e pode quebrar uma música com muitos silêncios =\\). +- Adicionado uma alternância para avanço rápido durante silêncios no controle de velocidade de reprodução. Isso deve ser útil para audiolivros e certos gêneros musicais, e pode trazer uma experiência verdadeiramente perfeita (e pode quebrar uma música com muitos silêncios =\\). - Resolução de fonte de média ré fatorada para permitir a passagem de metadados junto com a média internamente no reprodutor, em vez de fazê-lo manualmente. Agora temos uma única fonte de metadados e está disponível diretamente quando a reprodução é iniciada. - Correção de metadados de listas de reprodução remotas que não são atualizadas quando novos metadados estão disponíveis quando o fragmento da lista de reprodução é aberta. - Várias correções de interface do utilizador : #1383, controles de notificação do reprodutor em segundo plano agora sempre brancos, mais fácil de desligar o reprodutor pop-up por meio de arremesso diff --git a/fastlane/metadata/android/pt/changelogs/951.txt b/fastlane/metadata/android/pt/changelogs/951.txt index c391aa519..deb97a0ee 100644 --- a/fastlane/metadata/android/pt/changelogs/951.txt +++ b/fastlane/metadata/android/pt/changelogs/951.txt @@ -13,3 +13,5 @@ Melhorado Fixo • Desync de áudio/vídeo • [PeerTube] Gerir comentários apagados + +e mais diff --git a/fastlane/metadata/android/ru/changelogs/730.txt b/fastlane/metadata/android/ru/changelogs/730.txt new file mode 100644 index 000000000..c721a163f --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/730.txt @@ -0,0 +1,2 @@ +# Исправлено +- Повторно исправлено ошибку функции расшифровки. diff --git a/fastlane/metadata/android/ru/changelogs/740.txt b/fastlane/metadata/android/ru/changelogs/740.txt new file mode 100644 index 000000000..a89174aeb --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/740.txt @@ -0,0 +1,23 @@ +

      Улучшения

      +
        +
      • сделана возможность нажимать на ссылки в комментариях, увеличен размер текста
      • +
      • поиск по нажатию на временные отметки в комментариях
      • +
      • показывать предпочитаемую вкладку, на основании состояния недавно выбраных
      • +
      • добавить плейлист в очередь при длинном нажатии на 'Фон' в окне плейлиста
      • +
      • поиск по тексту переданному приложению, если это не ссылка
      • +
      • добавить "поделиться на этом моменте" кнопку в основной видео-проигрыватель
      • +
      • добавить кнопку закрытия в основной видео-проигрыватель, когда очередь проигрывания закончилась
      • +
      • добавить "Воспроизвести на фоне" в меню длинного нажатия для предметов из видео-листа
      • +
      • улучшить английский перевод для команд Воспроизвести/Добавить в очередь
      • +
      • мелкие улучшения работы приложения
      • +
      • уюрать неиспользованные файлы
      • +
      • обновить ExoPlayer до 2.9.6
      • +
      • добавить поддержку ссылок Invidious
      • +
      +

      Исправлено

      +
        +
      • исправлено пролистывание с выключенными комментариями и похожими трансляциями
      • +
      • исправлено запуск CheckForNewAppVersionTask когда это не нужно't
      • +
      • исправлено импорт подписок с youtube: игнорирование подписок с неправильными ссылками и сохранение тех, у которых пустые названия
      • +
      • исправить неправильные YouTube ссылки: название метки подписи не всегда "signature", что не даёт загружаться трансляциям
      • +
      diff --git a/fastlane/metadata/android/ru/changelogs/750.txt b/fastlane/metadata/android/ru/changelogs/750.txt new file mode 100644 index 000000000..aac46059a --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/750.txt @@ -0,0 +1,22 @@ +Новое +Продолжить проигрывание #2288 +• Продолжать трансляции с того момента, где вы остановились +Улучшения загрузчика #2149 +• Использовать Storage Access Framework для хранения загрузок на SD-картах +• Новый mp4 микшер +• Выборочно меняйте путь загрузки перед тем, как начать скачивание +• Учитывать сети с измеряемым трафиком + + +Улучшено +• Убрано gema строчки #2295 +• Работа с изменениями (авто)поворота во время цикла использования #2444 +• Сделать меню длинного нажатия постоянными #2368 + +Исправлено +• Исправлено не показывающееся название выбранной дорожки субтитров #2394 +• Не вылетать при провальной проверке обновлений приложения (GitHub версия) #2423 +• Исправлено вечную загрузку при достижении 99.9% #2440 +• Обновление метаданных очереди проигрывания #2453 +• [SoundCloud] Исправлен вылет при загрузке плейлистов TeamNewPipe/NewPipeExtractor#170 +• [YouTube] Исправлена ошибка парсинга времени проигрывания TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/ru/changelogs/780.txt b/fastlane/metadata/android/ru/changelogs/780.txt index 24cfa6e7f..4b09a23bd 100644 --- a/fastlane/metadata/android/ru/changelogs/780.txt +++ b/fastlane/metadata/android/ru/changelogs/780.txt @@ -3,7 +3,7 @@ Улучшено • Добавлена возможность очистки состояний воспроизведения #2550 • Показ скрытых каталогов в средстве выбора файлов #2591 -• Поддержка URL-адресов из экземпляров `invidio.us`, открываемых с помощью NewPipe #2488 +• Поддержка URL-адресов из экземпляров `invidio.us`, открываемых с помощью NewPipe #2488 • Добавлена поддержка URL-адресов `music.youtube.com` TeamNewPipe/NewPipeExtractor #194 Исправлено diff --git a/fastlane/metadata/android/ru/changelogs/820.txt b/fastlane/metadata/android/ru/changelogs/820.txt new file mode 100644 index 000000000..a426ed393 --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/820.txt @@ -0,0 +1 @@ +Исправлено расшифровку названия функции regex, из-за чего YouTube нельзя было использовать. diff --git a/fastlane/metadata/android/ru/changelogs/830.txt b/fastlane/metadata/android/ru/changelogs/830.txt new file mode 100644 index 000000000..ffa9dfa68 --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/830.txt @@ -0,0 +1 @@ +Обновлено SoundCloud client_id, чтобы исправить проблемы с SoundCloud. diff --git a/fastlane/metadata/android/ru/changelogs/850.txt b/fastlane/metadata/android/ru/changelogs/850.txt new file mode 100644 index 000000000..3a81f4aef --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/850.txt @@ -0,0 +1 @@ +В этом релизе обновлена версия сайта YouTube. Старая версия сайта больше не будет поддерживаться начиная с Марта, поэтому вам нужно обновить NewPipe. diff --git a/fastlane/metadata/android/ru/changelogs/910.txt b/fastlane/metadata/android/ru/changelogs/910.txt new file mode 100644 index 000000000..883c347f5 --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/910.txt @@ -0,0 +1 @@ +Исправлено перенесение баз данных, что мешало загрузке NewPipe в редких случаях. diff --git a/fastlane/metadata/android/ru/changelogs/963.txt b/fastlane/metadata/android/ru/changelogs/963.txt new file mode 100644 index 000000000..06da13b42 --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/963.txt @@ -0,0 +1 @@ +• [YouTube] Исправлено продолжение канала From f1b15a95a47a267f3b1aa8ddf456860ce3750dca Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Wed, 20 Jul 2022 09:01:12 +0530 Subject: [PATCH 043/147] Show toast when no updates are available. Co-authored-by: Stypox --- .../java/org/schabi/newpipe/MainActivity.java | 2 +- .../org/schabi/newpipe/NewVersionWorker.kt | 77 +++++++++++-------- .../settings/UpdateSettingsFragment.java | 12 +-- app/src/main/res/values-ar/strings.xml | 3 +- app/src/main/res/values-az/strings.xml | 3 +- app/src/main/res/values-b+ast/strings.xml | 3 +- app/src/main/res/values-b+uz+Latn/strings.xml | 3 +- app/src/main/res/values-be/strings.xml | 3 +- app/src/main/res/values-bg/strings.xml | 3 +- app/src/main/res/values-bn-rBD/strings.xml | 3 +- app/src/main/res/values-bn-rIN/strings.xml | 1 - app/src/main/res/values-bn/strings.xml | 3 +- app/src/main/res/values-ca/strings.xml | 3 +- app/src/main/res/values-ckb/strings.xml | 3 +- app/src/main/res/values-cs/strings.xml | 3 +- app/src/main/res/values-da/strings.xml | 3 +- app/src/main/res/values-de/strings.xml | 3 +- app/src/main/res/values-el/strings.xml | 3 +- app/src/main/res/values-eo/strings.xml | 3 +- app/src/main/res/values-es/strings.xml | 3 +- app/src/main/res/values-et/strings.xml | 3 +- app/src/main/res/values-eu/strings.xml | 3 +- app/src/main/res/values-fa/strings.xml | 3 +- app/src/main/res/values-fi/strings.xml | 3 +- app/src/main/res/values-fr/strings.xml | 3 +- app/src/main/res/values-gl/strings.xml | 3 +- app/src/main/res/values-he/strings.xml | 3 +- app/src/main/res/values-hi/strings.xml | 3 +- app/src/main/res/values-hr/strings.xml | 3 +- app/src/main/res/values-hu/strings.xml | 3 +- app/src/main/res/values-hy/strings.xml | 2 +- app/src/main/res/values-ia/strings.xml | 2 +- app/src/main/res/values-in/strings.xml | 3 +- app/src/main/res/values-it/strings.xml | 3 +- app/src/main/res/values-ja/strings.xml | 3 +- app/src/main/res/values-kab/strings.xml | 1 - app/src/main/res/values-kmr/strings.xml | 3 +- app/src/main/res/values-ko/strings.xml | 57 +++++++------- app/src/main/res/values-ku/strings.xml | 3 +- app/src/main/res/values-lt/strings.xml | 3 +- app/src/main/res/values-lv/strings.xml | 3 +- app/src/main/res/values-mk/strings.xml | 3 +- app/src/main/res/values-ml/strings.xml | 3 +- app/src/main/res/values-ms/strings.xml | 3 +- app/src/main/res/values-nb-rNO/strings.xml | 3 +- app/src/main/res/values-ne/strings.xml | 3 +- app/src/main/res/values-nl-rBE/strings.xml | 3 +- app/src/main/res/values-nl/strings.xml | 3 +- app/src/main/res/values-pa/strings.xml | 3 +- app/src/main/res/values-pl/strings.xml | 3 +- app/src/main/res/values-pt-rBR/strings.xml | 3 +- app/src/main/res/values-pt-rPT/strings.xml | 3 +- app/src/main/res/values-pt/strings.xml | 3 +- app/src/main/res/values-ro/strings.xml | 3 +- app/src/main/res/values-ru/strings.xml | 3 +- app/src/main/res/values-sc/strings.xml | 3 +- app/src/main/res/values-sk/strings.xml | 3 +- app/src/main/res/values-sl/strings.xml | 3 +- app/src/main/res/values-so/strings.xml | 3 +- app/src/main/res/values-sq/strings.xml | 3 +- app/src/main/res/values-sr/strings.xml | 3 +- app/src/main/res/values-sv/strings.xml | 3 +- app/src/main/res/values-ta/strings.xml | 3 +- app/src/main/res/values-th/strings.xml | 3 +- app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-uk/strings.xml | 3 +- app/src/main/res/values-ur/strings.xml | 3 +- app/src/main/res/values-vi/strings.xml | 3 +- app/src/main/res/values-zh-rCN/strings.xml | 3 +- app/src/main/res/values-zh-rHK/strings.xml | 3 +- app/src/main/res/values-zh-rTW/strings.xml | 3 +- app/src/main/res/values/strings.xml | 5 +- 72 files changed, 142 insertions(+), 204 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index d4b2305c7..0f82c8a9f 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -172,7 +172,7 @@ public class MainActivity extends AppCompatActivity { if (prefs.getBoolean(app.getString(R.string.update_app_key), true)) { // Start the worker which is checking all conditions // and eventually searching for a new version. - NewVersionWorker.enqueueNewVersionCheckingWork(app); + NewVersionWorker.enqueueNewVersionCheckingWork(app, false); } } diff --git a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt index 917b96b45..1aa02d8dc 100644 --- a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt +++ b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt @@ -3,16 +3,18 @@ package org.schabi.newpipe import android.content.Context import android.content.Intent import android.util.Log +import android.widget.Toast import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat +import androidx.core.content.ContextCompat import androidx.core.content.edit import androidx.core.net.toUri import androidx.preference.PreferenceManager -import androidx.work.OneTimeWorkRequest +import androidx.work.OneTimeWorkRequestBuilder import androidx.work.WorkManager -import androidx.work.WorkRequest import androidx.work.Worker import androidx.work.WorkerParameters +import androidx.work.workDataOf import com.grack.nanojson.JsonParser import com.grack.nanojson.JsonParserException import org.schabi.newpipe.extractor.downloader.Response @@ -42,26 +44,34 @@ class NewVersionWorker( versionCode: Int ) { if (BuildConfig.VERSION_CODE >= versionCode) { + if (inputData.getBoolean(IS_MANUAL, false)) { + // Show toast stating that the app is up-to-date if the update check was manual. + ContextCompat.getMainExecutor(applicationContext).execute { + Toast.makeText(applicationContext, R.string.app_update_unavailable_toast, + Toast.LENGTH_SHORT).show() + } + } return } - val app = App.getApp() // A pending intent to open the apk location url in the browser. val intent = Intent(Intent.ACTION_VIEW, apkLocationUrl?.toUri()) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - val pendingIntent = PendingIntentCompat.getActivity(app, 0, intent, 0) - val channelId = app.getString(R.string.app_update_notification_channel_id) - val notificationBuilder = NotificationCompat.Builder(app, channelId) + val pendingIntent = PendingIntentCompat.getActivity( + applicationContext, 0, intent, 0 + ) + val channelId = applicationContext.getString(R.string.app_update_notification_channel_id) + val notificationBuilder = NotificationCompat.Builder(applicationContext, channelId) .setSmallIcon(R.drawable.ic_newpipe_update) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) - .setContentIntent(pendingIntent) .setAutoCancel(true) - .setContentTitle(app.getString(R.string.app_update_notification_content_title)) - .setContentText( - app.getString(R.string.app_update_notification_content_text) + - " " + versionName - ) - val notificationManager = NotificationManagerCompat.from(app) + .setContentIntent(pendingIntent) + .setContentTitle(applicationContext.getString( + R.string.app_update_available_notification_title)) + .setContentText(applicationContext.getString( + R.string.app_update_available_notification_text, versionName)) + + val notificationManager = NotificationManagerCompat.from(applicationContext) notificationManager.notify(2000, notificationBuilder.build()) } @@ -72,12 +82,14 @@ class NewVersionWorker( return } - val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext) - // Check if the last request has happened a certain time ago - // to reduce the number of API requests. - val expiry = prefs.getLong(applicationContext.getString(R.string.update_expiry_key), 0) - if (!isLastUpdateCheckExpired(expiry)) { - return + if (!inputData.getBoolean(IS_MANUAL, false)) { + val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext) + // Check if the last request has happened a certain time ago + // to reduce the number of API requests. + val expiry = prefs.getLong(applicationContext.getString(R.string.update_expiry_key), 0) + if (!isLastUpdateCheckExpired(expiry)) { + return + } } // Make a network request to get latest NewPipe data. @@ -120,43 +132,42 @@ class NewVersionWorker( } override fun doWork(): Result { - try { + return try { checkNewVersion() + Result.success() } catch (e: IOException) { Log.w(TAG, "Could not fetch NewPipe API: probably network problem", e) - return Result.failure() + Result.failure() } catch (e: ReCaptchaException) { Log.e(TAG, "ReCaptchaException should never happen here.", e) - return Result.failure() + Result.failure() } - return Result.success() } companion object { private val DEBUG = MainActivity.DEBUG private val TAG = NewVersionWorker::class.java.simpleName private const val NEWPIPE_API_URL = "https://newpipe.net/api/data.json" + private const val IS_MANUAL = "isManual" /** - * Start a new worker which - * checks if all conditions for performing a version check are met, - * fetches the API endpoint [.NEWPIPE_API_URL] containing info - * about the latest NewPipe version - * and displays a notification about ana available update. + * Start a new worker which checks if all conditions for performing a version check are met, + * fetches the API endpoint [.NEWPIPE_API_URL] containing info about the latest NewPipe + * version and displays a notification about an available update if one is available. *

      - * Following conditions need to be met, before data is request from the server: + * Following conditions need to be met, before data is requested from the server: * * * The app is signed with the correct signing key (by TeamNewPipe / schabi). * If the signing key differs from the one used upstream, the update cannot be installed. * * The user enabled searching for and notifying about updates in the settings. * * The app did not recently check for updates. * We do not want to make unnecessary connections and DOS our servers. - * */ @JvmStatic - fun enqueueNewVersionCheckingWork(context: Context) { - val workRequest: WorkRequest = - OneTimeWorkRequest.Builder(NewVersionWorker::class.java).build() + fun enqueueNewVersionCheckingWork(context: Context, isManual: Boolean) { + val workRequest = OneTimeWorkRequestBuilder() + .setInputData(workDataOf(IS_MANUAL to isManual)) + .build() WorkManager.getInstance(context).enqueue(workRequest) } } diff --git a/app/src/main/java/org/schabi/newpipe/settings/UpdateSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/UpdateSettingsFragment.java index f1f63ffdf..d1a379e66 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/UpdateSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/UpdateSettingsFragment.java @@ -16,25 +16,17 @@ public class UpdateSettingsFragment extends BasePreferenceFragment { .apply(); if (checkForUpdates) { - checkNewVersionNow(); + NewVersionWorker.enqueueNewVersionCheckingWork(requireContext(), true); } return true; }; private final Preference.OnPreferenceClickListener manualUpdateClick = preference -> { Toast.makeText(getContext(), R.string.checking_updates_toast, Toast.LENGTH_SHORT).show(); - checkNewVersionNow(); + NewVersionWorker.enqueueNewVersionCheckingWork(requireContext(), true); return true; }; - private void checkNewVersionNow() { - // Search for updates immediately when update checks are enabled. - // Reset the expire time. This is necessary to check for an update immediately. - defaultPreferences.edit() - .putLong(getString(R.string.update_expiry_key), 0).apply(); - NewVersionWorker.enqueueNewVersionCheckingWork(getContext()); - } - @Override public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) { addPreferencesFromResourceRegistry(); diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index d38540895..0ae1d07ae 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -370,8 +370,7 @@ القائمة الشبكة تلقائي - تحديث NewPipe متاح! - اضغط لتنزيل + تحديث NewPipe متاح! انتهى ريثما متوقف diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 2d6f4e9c6..bc2e354b7 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -485,7 +485,7 @@ növbədədir sonrakı emal olunur Yeniləmələr yoxlanılır… - NewPipe yeniləməsi mövcuddur! + NewPipe yeniləməsi mövcuddur! Lisenziya Müəllifin hesabı bağlanıb. \nNewPipe gələcəkdə bu axını yükləyə bilməyəcək. @@ -572,7 +572,6 @@ bərpa olunur dayandırıldı Bitdi - Endirmək üçün toxun Heç biri Əsas video oynadıcıdan digər tətbiqə keçid zamanı hərəkət — %s İmtina diff --git a/app/src/main/res/values-b+ast/strings.xml b/app/src/main/res/values-b+ast/strings.xml index 611c2dd03..64ff2569c 100644 --- a/app/src/main/res/values-b+ast/strings.xml +++ b/app/src/main/res/values-b+ast/strings.xml @@ -236,8 +236,7 @@ Soscribiéstite Nun hai vídeos ¿Desaniciar tol historial de busques\? - ¡Hai un anovamientu pa NewPipe! - Toca pa baxalu + ¡Hai un anovamientu pa NewPipe! Perdióse\'l progresu porque se desanició\'l ficheru Instancies de PeerTube La instancia yá esiste diff --git a/app/src/main/res/values-b+uz+Latn/strings.xml b/app/src/main/res/values-b+uz+Latn/strings.xml index 05ad40fa6..b902372ed 100644 --- a/app/src/main/res/values-b+uz+Latn/strings.xml +++ b/app/src/main/res/values-b+uz+Latn/strings.xml @@ -453,8 +453,7 @@ to\'xtatildi Kutilmoqda Tugatildi - Yuklash uchun bosing - NewPipe yangilanishi mavjud! + NewPipe yangilanishi mavjud! Avto Tarmoq Ro\'yxat diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 8254855f5..5fa293143 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -355,8 +355,7 @@ Спіс Сетка Аўтаматычна - Даступна абнаўленне NewPipe! - Націсніце для загрузкі + Даступна абнаўленне NewPipe! Скончана У чарзе прыпынена diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 5ac2b1db8..cf1c8b9a5 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -398,10 +398,9 @@ Само при Wi-Fi Вид на списъка Възстанови последната позиция - Нова версия на NewPipe е налична! + Нова версия на NewPipe е налична! Миниатюри на лентата за превъртане Нискокачествени (малки) - Докоснете за изтегляне на опашка Актуализации Презаписване diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml index 730150552..9b4e8158a 100644 --- a/app/src/main/res/values-bn-rBD/strings.xml +++ b/app/src/main/res/values-bn-rBD/strings.xml @@ -178,7 +178,6 @@ এরর দেখান ডাউনলোড ব্যর্থ হয়েছে স্থগিত - ডাউনলোড করতে টোকা দিন অটো সীমাহীন কোন ক্যাপশন নেই @@ -392,7 +391,7 @@ পঞ্চম পদক্ষেপ বোতাম ভিডিও বর্ণনা ও বাড়তি তথ্য লুকাতে বন্ধ করুন দেখিও না - নিউ পাইপ আপডেট এসেছে! + নিউ পাইপ আপডেট এসেছে! মন্তব্যসমূহ নিষ্ক্রিয় আছে %s বার দেখেছে diff --git a/app/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml index 00468f7f7..12fcfe6b7 100644 --- a/app/src/main/res/values-bn-rIN/strings.xml +++ b/app/src/main/res/values-bn-rIN/strings.xml @@ -153,7 +153,6 @@ সার্ভার পাওয়া যায় নি ডাউন লোড হয় নি পজ হয়েছে - ডাউন লোড করার জন্য চাপ দিন অটো গ্রিড ক্যাপশন diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 4b90b22e2..c5e762cf9 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -17,7 +17,6 @@ ডাউন লোড হয় নি পজ হয়েছে সম্পূর্ণ - ডাউন লোড করার জন্য চাপ দিন অটো ছক তালিকা @@ -470,7 +469,7 @@ পরিমাপকৃত নেটওয়ার্কে বাধা দাও এই ডাউনলোড উদ্ধার করা যাচ্ছে না এই ফাইলের উপর লেখা যাচ্ছে না - নিউপাইপ হালনাগাদ আছে! + নিউপাইপ হালনাগাদ আছে! ভাসমান চালকের ক্ষুদ্রকরণ করো প্লেয়ার পটভূমিতে ক্ষুদ্রকরণ করো অ্যাপ পরিবর্তনে ক্ষুদ্রকরণ করো diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 34fe35f11..7b5f08aed 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -347,7 +347,7 @@ Llista Quadrícula Automàtic - Una nova versió del NewPipe està disponible! + Una nova versió del NewPipe està disponible! Pendent en pausa a la cua @@ -388,7 +388,6 @@ Tanca S\'ha produït un error en llegir les pestanyes desades; s\'estan utilitzant les pestanyes per defecte Mostra una notificació per demanar l\'actualització de l\'aplicació si hi ha una versió nova disponible - Toqueu per baixar El servidor no està enviant dades Notificació d\'actualització de l\'aplicació Reprèn la reproducció diff --git a/app/src/main/res/values-ckb/strings.xml b/app/src/main/res/values-ckb/strings.xml index 4c53c11b9..424d80db3 100644 --- a/app/src/main/res/values-ckb/strings.xml +++ b/app/src/main/res/values-ckb/strings.xml @@ -354,7 +354,6 @@ هه‌ندێك له‌ قه‌باره‌كان ده‌نگیان تێدا نامێنێته‌وه‌ ڕووداوەکان وێنۆچکەی کەسی بەرزکەرەوە - كرتە بکە بۆ دابه‌زاندن هاورده‌كرا دابه‌زاندنه‌كان کۆنترۆڵی خێرایی کارپێکەر @@ -519,7 +518,7 @@ \nهەڵبژێرەری فۆڵدەری سیستەم کارابکە (SAF) گەر دەتەوێت بابەتەکانت لە بیرگەی دەرەکیدا داببەزێنرێن دواین لێدراو ناتوانرێ لیستی دابه‌زاندن دابنرێت - وەشانی نوێی نیوپایپ بەردەستە! + وەشانی نوێی نیوپایپ بەردەستە! وێنۆچکەی خشتەلێدان گۆڕدرا. هێنانەوەی پەڕەی کەسی SoundCloud بەدانانی بەستەر یاخوود ئایدی: \n diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index e790a5fe4..b73228962 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -360,8 +360,7 @@ Seznam Mřížka Automaticky - Aktualizace NewPipe je k dispozici! - Klepněte pro stažení + Aktualizace NewPipe je k dispozici! Hotovo Vyčkávání Pozastaveno diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index a336d21a3..0b47cc594 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -289,7 +289,6 @@ Liste Gitter Automatisk - Tryk for at downloade Færdig Afventning efterbehandling @@ -369,7 +368,7 @@ Ingen Minimer til baggrundsafspiller Minimer til pop op-afspiller - En NewPipe-opdatering er tilgængelig! + En NewPipe-opdatering er tilgængelig! sat på pause sat i kø Maksimalt antal genforsøg diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 7502adbf8..1fdc727c7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -364,8 +364,7 @@ Hohe Qualität (größer) Niedrige Qualität (kleiner) Nicht anzeigen - Eine NewPipe-Aktualisierung ist verfügbar! - Zum Herunterladen antippen + Eine NewPipe-Aktualisierung ist verfügbar! Fertig Ausstehend pausiert diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index d54041a7f..2c338beb9 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -358,8 +358,7 @@ Λίστα Πλέγμα Αυτόματα - Μια νέα έκδοση του NewPipe είναι διαθέσιμη! - Πατήστε για λήψη + Μια νέα έκδοση του NewPipe είναι διαθέσιμη! Ολοκληρώθηκε Εκκρεμεί σε παύση diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index da1a040cb..b652b35b9 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -388,8 +388,7 @@ Listo Krado Aŭto - Ĝisdatigo de NewPipe havebla! - Premi por elŝuti + Ĝisdatigo de NewPipe havebla! Finita Pritraktata Paŭzigita diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 09115a31e..4440319a4 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -411,8 +411,7 @@ Mostrar una notificación para solicitar actualizar la aplicación al haber una nueva versión disponible Modo de vista de lista Automático - ¡Actualización de NewPipe disponible! - Pulsa para descargar + ¡Actualización de NewPipe disponible! Mostrar comentarios Desactivar para ocultar comentarios Reproducción automática diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 3fcdbf04a..6c9ddff88 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -358,8 +358,7 @@ Nimekiri Võrgustik Auto - NewPipe värskendus on saadaval! - Allalaadimiseks puuduta + NewPipe värskendus on saadaval! Lõpetatud Ootel peatatud diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 19f9fcfa6..2cd46f50c 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -358,8 +358,7 @@ Zerrenda Sareta Automatikoa - NewPipe-ren eguneraketa eskuragarri dago! - Sakatu deskargatzeko + NewPipe-ren eguneraketa eskuragarri dago! Amaituta Zain pausatuta diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 5c153fe3e..877dc7660 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -254,8 +254,7 @@ سیاهه شبکه خودکار - به‌روزرسانی برای نیوپایپ موجود است! - برای بارگیری، لمس کنید + به‌روزرسانی برای نیوپایپ موجود است! تمام در انتظار صف‌گذاری diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index af19e4f12..9b40ad900 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -520,8 +520,7 @@ Hyödyllinen vaihdettaessa mobiilidataan, vaikka joitakin latauksia ei voi pysäyttää Keskeytä, kun yhteys on käytön mukaan laskutettava tauotettu - Napauta ladataksesi - NewPipe-päivitys on saatavilla! + NewPipe-päivitys on saatavilla! Listanäkymän ulkoasu Automaattinen Ruudukko diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 3830e440b..bbbaadbc1 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -359,8 +359,7 @@ Liste Grille Auto - Une mise à jour de NewPipe est disponible ! - Appuyer pour télécharger + Une mise à jour de NewPipe est disponible ! Terminé En attente en pause diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index f1e815499..b033a1f51 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -452,8 +452,7 @@ pausado Pendente Rematado - Prema para descargar - A actualización de NewPipe está dispoñible! + A actualización de NewPipe está dispoñible! Automático Mostra os indicadores de posición de reprodución nas listas Use xestos para controlar o brillo do reprodutor diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 1ae0aab87..81d9af3b6 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -364,8 +364,7 @@ רשימה טבלה אוטומטית - יצא עדכון ל־NewPipe! - יש לגעת כדי להוריד + יצא עדכון ל־NewPipe! הסתיים מושהה בתור diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 9231057c4..8de09ab55 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -343,8 +343,7 @@ मुख्य पृष्ठ पर कौन से टैब दिखाए जाते हैं अपडेट सूची - न्यूपाइप अपडेट उपलब्ध! - डाउनलोड करने के लिए टैप करें + न्यूपाइप अपडेट उपलब्ध! समाप्त अपूर्ण रोका हुआ diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 87f95366a..ba1dcaebc 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -310,8 +310,7 @@ Prikaži obavijest i zatraži aktualiziranje programa kad je dostupna nova verzija Popis Popločeno - Dostupna je nova verzija za NewPipe! - Dodirni za preuzimanje + Dostupna je nova verzija za NewPipe! Preuzimanje nije uspjelo Prikaži pogrešku Isključi za sprečavanje učitavanja sličica, čime se štedi korištenje podataka i memorije. Promjene čiste predmemoriju slika radne memorije i diska diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 86f699a00..35099eaab 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -381,8 +381,7 @@ szüneteltetve Függőben lévő Befejezett - Kattintson a letöltéshez - NewPipe frissítés érhető el! + NewPipe frissítés érhető el! Automatikus Rács Lista diff --git a/app/src/main/res/values-hy/strings.xml b/app/src/main/res/values-hy/strings.xml index 218854841..0c6345a28 100644 --- a/app/src/main/res/values-hy/strings.xml +++ b/app/src/main/res/values-hy/strings.xml @@ -83,7 +83,7 @@ %d րոպե Ալիքների խմբեր - NewPipe֊ի նոր թարմացում է հասանելի + NewPipe֊ի նոր թարմացում է հասանելի Ցանկ Երբեք Ոչինչ diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index f4383defb..c3a63ee66 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -150,7 +150,7 @@ Predefinite del systema Lingua del application Actualisar sempre - Il ha un actualisation de NewPipe disponibile! + Il ha un actualisation de NewPipe disponibile! Monstrar un notification pro requestar le actualisation del application quando un nove version es disponibile Actualisationes Aperir in modo emergente diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 7fec1490d..06aa6a595 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -352,8 +352,7 @@ Daftar Kisi Otomatis - Pembaruan NewPipe telah tersedia! - Ketuk untuk mengunduh + Pembaruan NewPipe telah tersedia! Selesai Tertunda dijeda diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index acb9d6bc0..997896373 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -359,8 +359,7 @@ Lista Griglia Automatica - Aggiornamento di NewPipe disponibile! - Premi per scaricare + Aggiornamento di NewPipe disponibile! Completati In corso in pausa diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index d5d6ae8c9..23da92ff2 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -342,8 +342,7 @@ リスト グリッド 自動 - NewPipe のアップデートがあります! - タップでダウンロード + NewPipe のアップデートがあります! 完了 順番に処理中 一時停止 diff --git a/app/src/main/res/values-kab/strings.xml b/app/src/main/res/values-kab/strings.xml index d84f7f698..15fe0c15b 100644 --- a/app/src/main/res/values-kab/strings.xml +++ b/app/src/main/res/values-kab/strings.xml @@ -127,7 +127,6 @@ Pas Amezwer n unagraw Snifel isem - Nnal akken ad tessidreḍ Asider ur yeddi ara Tamwalit o diff --git a/app/src/main/res/values-kmr/strings.xml b/app/src/main/res/values-kmr/strings.xml index c93a111f1..5e3c852e7 100644 --- a/app/src/main/res/values-kmr/strings.xml +++ b/app/src/main/res/values-kmr/strings.xml @@ -424,8 +424,7 @@ sekinî Nexelas Qediya - Tap bikin dakêşin - Nûvekirina NewPipe heye! + Nûvekirina NewPipe heye! Jixweber Qefes Rêzok diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 0c4642744..c0ba72c26 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -261,18 +261,18 @@ 구독 목록 내보내기 실패 구글 테이크아웃에서 유튜브 구독 가져오기: \n -\n1. 다음 URL로 이동: %1$s -\n2. 요청 시 로그인 -\n3. \"모든 데이터 포함\"을 클릭한 다음 \"모두 선택 취소\"를 클릭한 후 \"구독\"만 선택하고 \"확인\" 클릭 -\n4. \"다음 단계\"를 클릭한 다음 \"내보내기 만들기\" 클릭 -\n5. \"다운로드\" 버튼이 나타나면 클릭 -\n6. 아래 파일 가져오기를 클릭하고 다운로드한 .zip 파일 선택 +\n1. 다음 URL로 이동: %1$s +\n2. 요청 시 로그인 +\n3. \"모든 데이터 포함\"을 클릭한 다음 \"모두 선택 취소\"를 클릭한 후 \"구독\"만 선택하고 \"확인\" 클릭 +\n4. \"다음 단계\"를 클릭한 다음 \"내보내기 만들기\" 클릭 +\n5. \"다운로드\" 버튼이 나타나면 클릭 +\n6. 아래 파일 가져오기를 클릭하고 다운로드한 .zip 파일 선택 \n7. [.zip 가져오기가 실패한 경우] .csv 파일(일반적으로 \"YouTube 및 YouTube Music/subscriptions/subscriptions.csv\" 아래에 있음)의 압축을 풀고, 아래 파일 가져오기를 클릭하고 압축을 푼 csv 파일 선택 - URL 또는 ID를 입력하여 SoundCloud 프로필을 가져옵니다: + URL 또는 ID를 입력하여 SoundCloud 프로필을 가져옵니다: \n -\n1. 웹 브라우저에서 \"데스크톱 모드\"를 활성화합니다(모바일 장치에서는 사이트를 사용할 수 없습니다) -\n2. 다음 URL로 이동: %1$s -\n3. 요청 시 로그인 +\n1. 웹 브라우저에서 \"데스크톱 모드\"를 활성화합니다(모바일 장치에서는 사이트를 사용할 수 없습니다) +\n2. 다음 URL로 이동: %1$s +\n3. 요청 시 로그인 \n4. 리디렉션된 프로필 URL을 복사합니다. 프로필ID, soundcloud.com/프로필ID 경고: 데이터가 많이 소모될 수 있습니다. @@ -311,7 +311,7 @@ NewPipe는 카피레프트 자유 소프트웨어입니다: 마음대로 사용하고, 연구하고, 공유하고, 개선할 수 있습니다. 특히 자유 소프트웨어 재단에서 발행한 GNU 일반 공중 사용 라이센스의 조건에 따라 라이센스 버전 3 또는 (귀하의 선택에 따라) 이후 버전을 재배포 및/또는 수정할 수 있습니다. 설정도 가져오시겠습니까\? 무음 구간 빨리 감기 - 유럽 연합 일반 데이터 보호 규정(GDPR)을 준수하기 위해 NewPipe의 개인 정보 보호 정책에 주의를 기울입니다. 주의 깊게 읽으십시오. + 유럽 연합 일반 데이터 보호 규정(GDPR)을 준수하기 위해 NewPipe의 개인 정보 보호 정책에 주의를 기울입니다. 주의 깊게 읽으십시오. \n버그 보고서를 보내려면 수락해야 합니다. 동의 동의하지 않음 @@ -351,8 +351,7 @@ 목록 격자 자동 - NewPipe 업데이트를 사용할 수 있습니다! - 여기를 눌러서 다운로드 + NewPipe 업데이트를 사용할 수 있습니다! 완료됨 대기열에 있음 일시중지됨 @@ -406,7 +405,7 @@ 다운로드 시작 다운로드 일시정지 다운로드 위치를 묻기 - 각 다운로드를 저장할 위치를 묻는 메시지가 표시됩니다. + 각 다운로드를 저장할 위치를 묻는 메시지가 표시됩니다. \n외부 SD 카드에 다운로드하려면 시스템 폴더 선택기(SAF) 활성화 시스템 폴더 선택기(SAF) 사용 \'저장영역 접속 프레임워크\'를 통해 외부 SD 카드로 다운로드 가능 @@ -590,7 +589,7 @@ 태블릿 모드 지역 검색 제안 원격 검색 제안 - 이 동영상은 연령 제한이 있습니다. + 이 동영상은 연령 제한이 있습니다. \n연령 제한 동영상에 대한 새로운 유튜브 정책으로 인해 NewPipe는 동영상 스트림에 접속할 수 없으므로 재생할 수 없습니다. reCAPTCHA를 해결할 때 NewPipe가 저장하는 쿠키 지우기 설명 @@ -621,8 +620,8 @@ 새로운 피드 항목 그룹화되지 않은 구독만 표시 \'%s\'에 대한 피드를 불러올 수 없습니다. - 제작자의 계정이 해지되었습니다. -\nNewPipe는 앞으로 이 피드를 불러올 수 없습니다. + 제작자의 계정이 해지되었습니다. +\nNewPipe는 앞으로 이 피드를 불러올 수 없습니다. \n이 채널의 구독을 취소하겠습니까\? 빠른 공급 모드는 이에 대한 자세한 정보를 제공하지 않습니다. 사용 가능한 경우 전용 피드에서 가져오기 @@ -677,7 +676,7 @@ 구독 선택 일부 서비스에서 사용할 수 있으며 일반적으로 훨씬 빠르지만 제한된 양의 항목과 종종 불완전한 정보를 반환할 수 있습니다 (예: 기간 없음, 항목 유형, 라이브 상태 없음) 안드로이드 10부터 \'저장영역 접속 프레임워크\'만 지원됩니다 - 재생 목록에 추가되기 전과 후에 시청한 동영상은 제거됩니다. + 재생 목록에 추가되기 전과 후에 시청한 동영상은 제거됩니다. \n확실합니까\? 이것은 취소 할 수 없습니다! 미니 플레이어에서 동영상을 시작하지 말고 자동 회전이 잠겨 있는 경우 전체 화면 모드로 직접 전환하십시오. 전체 화면을 종료하여 미니 플레이어에 계속 접속할 수 있습니다 공식 @@ -691,19 +690,19 @@ \n저장영역 접속 프레임워크 호환 파일 관리자를 설치하십시오 이 작업에 적합한 파일 관리자를 찾을 수 없습니다. \n파일 관리자를 설치하거나 다운로드 설정에서 \'%s\'을(를) 비활성화하십시오 - 피드 로딩이 너무 느리다고 생각하십니까\? 그렇다면 빠른 로딩을 활성화해 보십시오 (설정에서 변경하거나 아래 버튼을 눌러 변경할 수 있습니다). -\n -\nNewPipe는 두 가지 피드 로딩 전략을 제공합니다: -\n• 느리지만 완전한 전체 구독 채널을 가져옵니다. -\n• 빠르지만 일반적으로 완전하지는 않은 전용 서비스 엔드포인트를 사용합니다. -\n -\n둘의 차이점은 빠른 동영상은 일반적으로 항목의 길이나 유형(라이브 동영상과 일반 동영상을 구분할 수 없음)과 같은 일부 정보가 부족하고 더 적은 항목을 반환할 수 있다는 것입니다. -\n -\n유튜브는 RSS 피드로 이 빠른 방법을 제공하는 서비스의 한 예입니다. + 피드 로딩이 너무 느리다고 생각하십니까\? 그렇다면 빠른 로딩을 활성화해 보십시오 (설정에서 변경하거나 아래 버튼을 눌러 변경할 수 있습니다). +\n +\nNewPipe는 두 가지 피드 로딩 전략을 제공합니다: +\n• 느리지만 완전한 전체 구독 채널을 가져옵니다. +\n• 빠르지만 일반적으로 완전하지는 않은 전용 서비스 엔드포인트를 사용합니다. +\n +\n둘의 차이점은 빠른 동영상은 일반적으로 항목의 길이나 유형(라이브 동영상과 일반 동영상을 구분할 수 없음)과 같은 일부 정보가 부족하고 더 적은 항목을 반환할 수 있다는 것입니다. +\n +\n유튜브는 RSS 피드로 이 빠른 방법을 제공하는 서비스의 한 예입니다. \n \n따라서 선택은 속도 또는 정확한 정보 중에서 선호하는 것으로 귀결됩니다. - 이 기능은 아직 NewPipe에서 지원하지 않습니다. -\n + 이 기능은 아직 NewPipe에서 지원하지 않습니다. +\n \n이후 버전에서 지원될 예정입니다. 감시한 항목 숨기기 향후 항목 숨기기 diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index 09a4ad96a..d92b70758 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -390,8 +390,7 @@ خشتە چوارخانە خۆکاری - وەشانی نوێی ئەپ بەردەستە! - کرتە بکە بۆ دابەزاندن + وەشانی نوێی ئەپ بەردەستە! تەواوبوو لە نۆرەیە وەستاوە diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 314dba462..3f66c5f1f 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -569,7 +569,7 @@ Paskutinis atnaujinimas: %s Klausti kur parsiųsti failo perrašyti nepavyko - Prieinamas NewPipe atnaujinimas! + Prieinamas NewPipe atnaujinimas! Perjungiant programą sumažinti Atkabinti (gali iškraipyti) Nepavyko eksportuoti prenumeratų @@ -585,7 +585,6 @@ Pašalinti parsiųstus failus Pasirinkite kopiją Riboti parsiuntimų eilę - Paspauskite parsiuntimui Sąrašo rodinio režimas Prasukti kai nieko negroja Grojaraščio puslapis diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 7f0396455..6cd2bf06d 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -447,8 +447,7 @@ Pausēts Gaida Pabeigts - Nospiediet, lai lejupielādētu - Ir pieejams Newpipe atjauninājums! + Ir pieejams Newpipe atjauninājums! Automātiski Tīkls Saraksts diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index 0aaa8d546..ee10117bf 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -349,8 +349,7 @@ Список Решетка Автоматски - NewPipe ажурирање е достапно! - Допри за преземање + NewPipe ажурирање е достапно! Завршено Во очекување Паузирано diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 9e4d29cfe..0966dc7e9 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -420,8 +420,7 @@ താൽക്കാലികമായി നിർത്തി ശേഷിക്കുന്നു പൂർത്തിയായി - ഡൗൺലോഡുചെയ്യാൻ ടാപ്പുചെയ്യുക - ന്യൂപൈപ്പ് അപ്‌ഡേറ്റ് ലഭ്യമാണ്! + ന്യൂപൈപ്പ് അപ്‌ഡേറ്റ് ലഭ്യമാണ്! ഓട്ടോ ഗ്രിഡ് ലിസ്റ്റ് diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index 2c358748a..fd3d16e46 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -348,8 +348,7 @@ Senarai Grid Auto - Kemas kini NewPipe Tersedia! - Ketik untuk muat turun + Kemas kini NewPipe Tersedia! Selesai dijeda telah beratur diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index b93d7a1e5..ac3a0af1a 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -358,8 +358,7 @@ Liste Rutenett Auto - Ny NewPipe-versjon er tilgjengelig! - Trykk for å laste ned + Ny NewPipe-versjon er tilgjengelig! Fullført pauset I kø diff --git a/app/src/main/res/values-ne/strings.xml b/app/src/main/res/values-ne/strings.xml index 9cbad12ab..d8e5339fd 100644 --- a/app/src/main/res/values-ne/strings.xml +++ b/app/src/main/res/values-ne/strings.xml @@ -356,8 +356,7 @@ सूची ग्रिड स्वतः - NewPipe अपडेट उपलब्ध छ! - डाउनलोड गर्न ट्याप गर्नुहोस् + NewPipe अपडेट उपलब्ध छ! समाप्त रोकिएको पज diff --git a/app/src/main/res/values-nl-rBE/strings.xml b/app/src/main/res/values-nl-rBE/strings.xml index 3b54c56f5..766938925 100644 --- a/app/src/main/res/values-nl-rBE/strings.xml +++ b/app/src/main/res/values-nl-rBE/strings.xml @@ -358,8 +358,7 @@ Lijst Raster Auto - NewPipe update is beschikbaar! - Tik om te downloaden + NewPipe update is beschikbaar! Voltooid gepauzeerd toegevoegd aan wachtrij diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 8f2ef55b1..7f926546b 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -356,8 +356,7 @@ Lijst Raster Auto - NewPipe-update is beschikbaar! - Tik om te downloaden + NewPipe-update is beschikbaar! Voltooid In afwachting van gepauzeerd diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 883bb7dfa..0826c0c95 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -355,8 +355,7 @@ ਲਿਸਟ ਗਰਿੱਡ ਆਟੋ - ਨਿਊ-ਪਾਈਪ ਦੀ ਅਪਡੇਟ ਉਪਲਬੱਧ ਹੈ! - ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਦਬਾਓ + ਨਿਊ-ਪਾਈਪ ਦੀ ਅਪਡੇਟ ਉਪਲਬੱਧ ਹੈ! ਮੁਕੰਮਲ ਹੋਇਆ ਬਕਾਇਆ ਰੁਕਿਆ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index aa55dfb0e..baa2b3feb 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -362,8 +362,7 @@ Lista Siatka Automatyczny - Dostępna jest aktualizacja NewPipe! - Naciśnij, aby pobrać + Dostępna jest aktualizacja NewPipe! Zakończone wstrzymane w kolejce diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index ddde09333..bf67c7463 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -361,8 +361,7 @@ Lista Grade Automático - Atualização do NewPipe disponível! - Toque para baixar + Atualização do NewPipe disponível! Finalizado pausado na fila diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 4fd41be2e..e21aba751 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -151,7 +151,6 @@ %s a ver Por favor aguarde… - Toque para descarregar Limpar Cancelar subscrição Conteúdo @@ -244,7 +243,7 @@ Grelha Exportado Escolha a pasta para colocar os ficheiros de áudio - Atualização NewPipe disponível! + Atualização NewPipe disponível! Eventos Política de privacidade do NewPipe Não foi possível carregar todas as miniaturas diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 3d22a074f..41d4c211c 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -359,8 +359,7 @@ Lista Grelha Automático - Atualização NewPipe disponível! - Toque para descarregar + Atualização NewPipe disponível! Terminada em pausa na fila diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 5e147dc13..383b81fb6 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -512,8 +512,7 @@ Întrerupt În așteptare Finalizat - Atingeți pentru a descărca - Actualizare NewPipe disponibilă! + Actualizare NewPipe disponibilă! Automat Grilă Listă diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 048f5723e..25ac89786 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -370,8 +370,7 @@ Уведомления о новых версиях NewPipe Обновления Показать уведомление при наличии новой версии - Доступно обновление NewPipe! - Нажмите для загрузки + Доступно обновление NewPipe! Завершено приостановлено в очереди diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml index 7af30f884..025b222f6 100644 --- a/app/src/main/res/values-sc/strings.xml +++ b/app/src/main/res/values-sc/strings.xml @@ -344,8 +344,7 @@ in pàusa In isetu Acabadu - Toca pro iscarrigare - B\'est un\'agiornamentu de NewPipe disponìbile! + B\'est un\'agiornamentu de NewPipe disponìbile! Automàtica Grìllia Lista diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index cb6b42f7d..6a9665f11 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -361,8 +361,7 @@ Zoznam Mriežka Auto - Aktualizácia NewPipe je k dispozícii! - Ťuknite a stiahnite + Aktualizácia NewPipe je k dispozícii! Ukončené Vo fronte pozastavené diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index a0314b710..c0600b0ac 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -227,7 +227,6 @@ Prenos spodletel Pavza Končano - Tapnite da prenesete Seznam Posodobitve Sprejmi @@ -446,7 +445,7 @@ Prikazujem rezultate za %s Vrsta V vrsti - NewPipe posodobitve so na voljo! + NewPipe posodobitve so na voljo! Avtomatsko Mreža Nikoli diff --git a/app/src/main/res/values-so/strings.xml b/app/src/main/res/values-so/strings.xml index 431ef57ad..4679b733b 100644 --- a/app/src/main/res/values-so/strings.xml +++ b/app/src/main/res/values-so/strings.xml @@ -75,8 +75,7 @@ la qabtay Socda Dhamaystirmay - Ku dhufo si aad u dajiso - Nooc cusub oo NewPipe ah ayaa diyaar ah! + Nooc cusub oo NewPipe ah ayaa diyaar ah! Qaabka soobandhigga Marna WiFi-ga kaliya diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index 74d89908b..7e25c799b 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -110,8 +110,7 @@ e shtuar në radhë ndalur Përfunduar - Shtyp për të shkarkuar - Përditësim i ri i NewPipe është i disponueshëm! + Përditësim i ri i NewPipe është i disponueshëm! Automatike Listë Pamja e listës diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 26c3e896f..6de2e6441 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -268,8 +268,7 @@ паузирано На чекању Завршено - Тапните за преузимање - Доступно је ажурирање за ЊуПајп! + Доступно је ажурирање за ЊуПајп! аутоматски мрежа листа diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 3d28686ba..4be4aa932 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -355,8 +355,7 @@ Lista Rutnät Automatiskt - En NewPipe-uppdatering är tillgänglig! - Tryck för att hämta + En NewPipe-uppdatering är tillgänglig! Färdig pausad köad diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index f2fa5c40f..4294fccd3 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -303,7 +303,6 @@ இப்பெயருடன் ஒரு பதிவிறக்கம் நிலுவையிலுள்ளது பின்னர் பதிவிறக்க அடைவை அமைவில் வரையறுக்கவும் பதிவிறக்கம் - பதிவிறக்க தட்டு பதிவிறக்கத்தை ரத்துசெய்வதற்கு முன் செய்யவேண்டிய அதிகபட்ச முயற்சிகள் பதிவிறக்கம் முடிந்தது @@ -317,7 +316,7 @@ இப்பதிவிறக்கத்தை மீட்டெடுக்க முடியவில்லை உருப்படிகளை அகற்ற அவற்றைத் தேய் பிழை அறிவிப்பைப் படை - NewPipe புதுப்பிப்பு கிடைக்கிறது! + NewPipe புதுப்பிப்பு கிடைக்கிறது! அருகலையில் மட்டும் ஒருபோதுமில்லை பட்டியல் பார்வை முறை diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 3c0848af1..1ee527caf 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -331,8 +331,7 @@ รายการ ตาราง อัตโนมัติ - NewPipe พร้อมให้อัพเดทแล้ว! - แตะเพื่อดาวน์โหลด + NewPipe พร้อมให้อัพเดทแล้ว! เสร็จแล้ว อยู่ในคิว หยุดชั่วคราว diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 80f776bdd..d864ab0e2 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -353,7 +353,6 @@ Izgara Otomatik NewPipe güncellemesi var! - İndirmek için dokunun Tamamlandı durduruldu sırada diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 1b0289c3c..299aba747 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -362,8 +362,7 @@ Конференції Оновлення Автоматично - Доступне оновлення NewPipe! - Натисніть для завантаження + Доступне оновлення NewPipe! Завершено Очікує призупинено diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 2c3582209..8258f366f 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -350,8 +350,7 @@ فہرست گرڈ خودکار - نیو پائپ کی تازہ کاری دستیاب! - ڈاؤن لوڈ کرنے کے لئے کلک کریں + نیو پائپ کی تازہ کاری دستیاب! ختم ملتوی توقف diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 40eb323c1..c7bfb9e77 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -354,8 +354,7 @@ Danh sách Lưới Tự động - Đã có bản cập nhật mới! - Nhấn để tải về + Đã có bản cập nhật mới! Xong đã tạm dừng trong hàng đợi diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 870ab327d..99d5b1733 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -59,7 +59,7 @@ 无法得知订阅人数 有新版本时,显示通知提示更新应用 网格 - NewPipe 可更新! + NewPipe 可更新! 服务器不接受多线程下载, 使用 @string/msg_threads = 1 重试 自动播放 清空数据 @@ -366,7 +366,6 @@ 更新 列表 自动 - 点击下载 处理中 生成唯一名称 覆盖 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index ab0234223..6037d60d7 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -261,7 +261,6 @@ 自動 低畫質 (細格啲) 唔顯示 - 撳一下去下載 無觀看次數 %s 個人聽緊 @@ -369,7 +368,7 @@ 更新 出咗新版本嘅時候,顯示通知提示升級個 app 手動檢查下有冇新版本 - NewPipe 出咗更新喇! + NewPipe 出咗更新喇! 仲等緊 恢復緊 動作被系統拒絕咗 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 845ca5e0f..7621a9486 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -350,8 +350,7 @@ 清單 網格 自動 - 有可用的 NewPipe 更新! - 輕觸以下載 + 有可用的 NewPipe 更新! 已完成 有待處理 已暫停 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3fa37155a..f6ab5c6a1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -554,8 +554,9 @@ Low quality (smaller) Don\'t show - NewPipe update is available! - Tap to download + You are running the latest version of NewPipe + NewPipe update is available! + Tap to download %s Finished Pending paused From 6b210e1542ad4ea739cef54ce12aeeef78a05e37 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Mon, 10 Oct 2022 06:23:46 +0530 Subject: [PATCH 044/147] Apply ktlint formatting. --- .../org/schabi/newpipe/NewVersionWorker.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt index 1aa02d8dc..dac831fe4 100644 --- a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt +++ b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt @@ -47,8 +47,10 @@ class NewVersionWorker( if (inputData.getBoolean(IS_MANUAL, false)) { // Show toast stating that the app is up-to-date if the update check was manual. ContextCompat.getMainExecutor(applicationContext).execute { - Toast.makeText(applicationContext, R.string.app_update_unavailable_toast, - Toast.LENGTH_SHORT).show() + Toast.makeText( + applicationContext, R.string.app_update_unavailable_toast, + Toast.LENGTH_SHORT + ).show() } } return @@ -66,10 +68,14 @@ class NewVersionWorker( .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setAutoCancel(true) .setContentIntent(pendingIntent) - .setContentTitle(applicationContext.getString( - R.string.app_update_available_notification_title)) - .setContentText(applicationContext.getString( - R.string.app_update_available_notification_text, versionName)) + .setContentTitle( + applicationContext.getString(R.string.app_update_available_notification_title) + ) + .setContentText( + applicationContext.getString( + R.string.app_update_available_notification_text, versionName + ) + ) val notificationManager = NotificationManagerCompat.from(applicationContext) notificationManager.notify(2000, notificationBuilder.build()) From 1afb9cdba93ebf6b744d26a1b13010ee2aded19e Mon Sep 17 00:00:00 2001 From: pratyaksh1610 Date: Sun, 4 Dec 2022 17:59:22 +0530 Subject: [PATCH 045/147] added Language suffix for subtitle downloads --- .../newpipe/download/DownloadDialog.java | 18 ++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 2 files changed, 19 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index 2975fe43a..c54fd5173 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -562,6 +562,24 @@ public class DownloadDialog extends DialogFragment selectedSubtitleIndex = position; break; } + onItemSelectedSetFileName(); + } + + private void onItemSelectedSetFileName() { + final String setSubtitleLanguageCode = subtitleStreamsAdapter.getItem(selectedSubtitleIndex) + .getLanguageTag(); + switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) { + case R.id.audio_button: + case R.id.video_button: + dialogBinding.fileName.setText(FilenameUtils.createFilename(getContext(), + currentInfo.getName())); + break; + case R.id.subtitle_button: + dialogBinding.fileName.setText(FilenameUtils.createFilename(getContext(), + currentInfo.getName() + getString( + R.string.caption_file_name, setSubtitleLanguageCode))); + break; + } } @Override diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3fa37155a..fefba2c77 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -452,6 +452,7 @@ Zoom Auto-generated + -%s Captions Modify player caption text scale and background styles. Requires app restart to take effect From 869d46f15ca408086e24383bb008d2024865379f Mon Sep 17 00:00:00 2001 From: pratyaksh1610 Date: Sun, 4 Dec 2022 19:11:38 +0530 Subject: [PATCH 046/147] rename help to fast mode --- app/src/main/res/menu/menu_feed_fragment.xml | 2 +- app/src/main/res/values-ar/strings.xml | 1 - app/src/main/res/values-az/strings.xml | 1 - app/src/main/res/values-b+ast/strings.xml | 1 - app/src/main/res/values-b+uz+Latn/strings.xml | 1 - app/src/main/res/values-be/strings.xml | 1 - app/src/main/res/values-ber/strings.xml | 1 - app/src/main/res/values-bg/strings.xml | 1 - app/src/main/res/values-bn-rBD/strings.xml | 1 - app/src/main/res/values-bn-rIN/strings.xml | 1 - app/src/main/res/values-bn/strings.xml | 1 - app/src/main/res/values-ca/strings.xml | 1 - app/src/main/res/values-ckb/strings.xml | 1 - app/src/main/res/values-cs/strings.xml | 1 - app/src/main/res/values-da/strings.xml | 1 - app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-el/strings.xml | 1 - app/src/main/res/values-eo/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 1 - app/src/main/res/values-et/strings.xml | 1 - app/src/main/res/values-eu/strings.xml | 1 - app/src/main/res/values-fa/strings.xml | 1 - app/src/main/res/values-fi/strings.xml | 1 - app/src/main/res/values-fil/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 - app/src/main/res/values-gl/strings.xml | 1 - app/src/main/res/values-he/strings.xml | 1 - app/src/main/res/values-hi/strings.xml | 1 - app/src/main/res/values-hr/strings.xml | 1 - app/src/main/res/values-hu/strings.xml | 1 - app/src/main/res/values-hy/strings.xml | 1 - app/src/main/res/values-ia/strings.xml | 1 - app/src/main/res/values-in/strings.xml | 2 +- app/src/main/res/values-is/strings.xml | 1 - app/src/main/res/values-it/strings.xml | 1 - app/src/main/res/values-ja/strings.xml | 1 - app/src/main/res/values-ka/strings.xml | 1 - app/src/main/res/values-kab/strings.xml | 1 - app/src/main/res/values-kmr/strings.xml | 1 - app/src/main/res/values-ko/strings.xml | 1 - app/src/main/res/values-ku/strings.xml | 1 - app/src/main/res/values-lt/strings.xml | 1 - app/src/main/res/values-lv/strings.xml | 1 - app/src/main/res/values-ml/strings.xml | 1 - app/src/main/res/values-ms/strings.xml | 1 - app/src/main/res/values-nb-rNO/strings.xml | 1 - app/src/main/res/values-ne/strings.xml | 1 - app/src/main/res/values-nl-rBE/strings.xml | 1 - app/src/main/res/values-nl/strings.xml | 1 - app/src/main/res/values-or/strings.xml | 1 - app/src/main/res/values-pa/strings.xml | 1 - app/src/main/res/values-pl/strings.xml | 1 - app/src/main/res/values-pt-rBR/strings.xml | 1 - app/src/main/res/values-pt-rPT/strings.xml | 1 - app/src/main/res/values-pt/strings.xml | 1 - app/src/main/res/values-ro/strings.xml | 1 - app/src/main/res/values-ru/strings.xml | 1 - app/src/main/res/values-sc/strings.xml | 1 - app/src/main/res/values-sk/strings.xml | 1 - app/src/main/res/values-sl/strings.xml | 1 - app/src/main/res/values-so/strings.xml | 1 - app/src/main/res/values-sq/strings.xml | 1 - app/src/main/res/values-sr/strings.xml | 1 - app/src/main/res/values-sv/strings.xml | 1 - app/src/main/res/values-ta/strings.xml | 1 - app/src/main/res/values-te/strings.xml | 1 - app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-tzm/strings.xml | 1 - app/src/main/res/values-uk/strings.xml | 1 - app/src/main/res/values-und/strings.xml | 1 - app/src/main/res/values-ur/strings.xml | 1 - app/src/main/res/values-vi/strings.xml | 1 - app/src/main/res/values-zh-rCN/strings.xml | 1 - app/src/main/res/values-zh-rHK/strings.xml | 1 - app/src/main/res/values-zh-rTW/strings.xml | 1 - app/src/main/res/values/strings.xml | 2 +- 76 files changed, 3 insertions(+), 76 deletions(-) diff --git a/app/src/main/res/menu/menu_feed_fragment.xml b/app/src/main/res/menu/menu_feed_fragment.xml index 775a2d979..9e5cc862e 100644 --- a/app/src/main/res/menu/menu_feed_fragment.xml +++ b/app/src/main/res/menu/menu_feed_fragment.xml @@ -23,7 +23,7 @@ diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 0ae1d07ae..2c37890a0 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -548,7 +548,6 @@ نظرا لقيود مشغل ExoPlayer مدة التقديم تم ضبطها الى %d ثانية إلغاء كتم الصوت كتم الصوت - مساعدة هذا المحتوى ليس مدعومًا من قبل NewPipe. \n \nنأمل أن يكون مدعومًا في التحديثات القادمة. diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index bc2e354b7..1b49cb60b 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -177,7 +177,6 @@ Videolar Pleylistlər Xəta - Kömək Axtarış tarixçəsi silindi Bütün axtarış tarixçəsi silinsin\? Axtarışdakı açar sözlərin tarixçəsini silir diff --git a/app/src/main/res/values-b+ast/strings.xml b/app/src/main/res/values-b+ast/strings.xml index 64ff2569c..7553a4a9f 100644 --- a/app/src/main/res/values-b+ast/strings.xml +++ b/app/src/main/res/values-b+ast/strings.xml @@ -478,7 +478,6 @@ Fallu de la rede La descarga a la tarxeta SD nun ye posible. ¿Reafitar l\'allugamientu de la carpeta de descarga\? L\'almacenamientu esternu nun ta disponible - Ayuda Desanicióse l\'historial de busques. Desanicia l\'historial de les pallabres clave de busca Llimpiar l\'historial de busca diff --git a/app/src/main/res/values-b+uz+Latn/strings.xml b/app/src/main/res/values-b+uz+Latn/strings.xml index b902372ed..d1853b406 100644 --- a/app/src/main/res/values-b+uz+Latn/strings.xml +++ b/app/src/main/res/values-b+uz+Latn/strings.xml @@ -325,7 +325,6 @@ Tashqi SD-kartaga yuklab olishning iloji yo\'q. Yuklash papkasining joylashuvi tiklansinmi\? Tashqi xotira mavjud emas Xato - Yordam Qidiruv tarixi o\'chirildi. Butun qidiruv tarixi o\'chirilsinmi\? Qidiruv kalit so\'zlar tarixini o\'chiradi diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 5fa293143..74c478324 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -463,7 +463,6 @@ Багрэпарт на GitHub Скапіруйце адфарматаваны багрэпарт Дайце дазвол на адлюстраванне паверх іншых праграм - Дапамога Выдаліць усе пазіцыі прайгравання\? Выдаліць пазіцыі прайгравання Ачысціць reCAPTCHA cookies diff --git a/app/src/main/res/values-ber/strings.xml b/app/src/main/res/values-ber/strings.xml index 0d6c89db5..3912381fc 100644 --- a/app/src/main/res/values-ber/strings.xml +++ b/app/src/main/res/values-ber/strings.xml @@ -52,7 +52,6 @@ ⴰⴼⵉⴷⵢⵓ ⵉⵔⵉⵜⵏ ⵜⴰⵣⴳⵍⵜ - ⵜⵉⵡⵉⵙⵉ ⴰⴼⴰⵢⵍⵓ ⵖⵔ ⵎⴰⵕⵕⴰ ⵉⵜⵜⵡⴰⴽⴽⵙ ⵓⴼⴰⵢⵍⵓ diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index cf1c8b9a5..92418b4da 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -477,7 +477,6 @@ Коментарите са изключени Кои раздели се показват на началната страница Няма свободно място на устройството - Помощ %d секунда %d секунди diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml index 9b4e8158a..fb126fd67 100644 --- a/app/src/main/res/values-bn-rBD/strings.xml +++ b/app/src/main/res/values-bn-rBD/strings.xml @@ -230,7 +230,6 @@ প্লেয়ার এর এরর থেকে বেরিয়ে আসুন স্ট্রিম টি চালানো গেল না বাহ্যিক স্টোরেজ নেই - সাহায্য অনুসন্ধান ইতিহাস মোছা হয়েছে সমগ্র সার্চ ইতিহাস মুছবেন\? সার্চের ইতিহাস মোছা হয় diff --git a/app/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml index 12fcfe6b7..096674cce 100644 --- a/app/src/main/res/values-bn-rIN/strings.xml +++ b/app/src/main/res/values-bn-rIN/strings.xml @@ -196,7 +196,6 @@ দান করুন তৈরি করুন পুনরায় চেষ্টা করুন - সাহায্য দেখার ইতিহাস মুছে গেছে সম্পূর্ণ দেখার ইতিহাস মুছে ফেলুন\? দেখার ইতিহাস মুছে ফেলুন diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index c5e762cf9..b508d1e7e 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -145,7 +145,6 @@ নেটওয়ার্ক ত্রুটি বাহ্যিক স্টোরেজ নেই ত্রুটি - সাহায্য সার্চ ইতিহাস ডিলিট হয়েছে সমগ্র সার্চ ইতিহাস মুছবেন\? সার্চের ইতিহাস মোছা হয় diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 7b5f08aed..df4f27238 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -440,7 +440,6 @@ Vídeos ∞ 100+ vídeos Concedeix permisos per a poder reproduir els continguts a sobre d\'altres aplicacions - Ajuda Artistes Àlbums Cançons diff --git a/app/src/main/res/values-ckb/strings.xml b/app/src/main/res/values-ckb/strings.xml index 424d80db3..499395c30 100644 --- a/app/src/main/res/values-ckb/strings.xml +++ b/app/src/main/res/values-ckb/strings.xml @@ -192,7 +192,6 @@ ناتوانرێت ماڵپەڕ شیبکرێتەوە ڕه‌نووسه‌ ڕێپێدراوه‌كان له‌ فایله‌ ناوییه‌كاندا ئایدییەکەت ، soundcloud.com/yourid - یارمەتی چی نوێ هه‌یه‌ كرتە بکە بۆ وردەکاری شوێنی هەموو کارپێکراوەکان بسڕدرێنەوە؟ diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index b73228962..007819d74 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -469,7 +469,6 @@ Kvůli omezením ExoPlayer bylo prohledávání nastaveno na %d vteřin Ztišit Obnovit hlasitost - Nápověda %d minuta %d minuty diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 0b47cc594..fe7f1dd68 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -404,7 +404,6 @@ Beskrivelse Kapitler Notifikationer - Hjælp Kunstnere Luk Radio diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1fdc727c7..7c1aba828 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -472,7 +472,6 @@ Aufgrund von ExoPlayer-Einschränkungen wurde die Suchdauer auf %d Sekunden gesetzt Stummschaltung Stummschaltung aufheben - Hilfe %d Minute %d Minuten diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 2c338beb9..623cdd8c2 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -474,7 +474,6 @@ Αναφορά στο GitHub Αντιγραφή μορφοποιημένης αναφοράς Δώστε άδεια για προβολή πάνω από άλλες εφαρμογές - Βοήθεια Καλλιτέχνες Άλμπουμ Τραγούδια diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index b652b35b9..a3ea7cbfe 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -496,7 +496,6 @@ Pro ExoPlayer limoj, la serĉa daŭro estas metita %d sekundojn Mutigi Malmutigi - Helpo Tio enhavo ne estas ankoraŭ subtenata per NewPipe.\n\nĜi espereble estos en sekvanta versio. ∞ filmetoj 100+ filmetoj diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 4440319a4..a0c126a15 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -472,7 +472,6 @@ Debido a limitaciones de ExoPlayer, la duración de la búsqueda fue definida en %d segundos Silenciar Desactivar silencio - Ayuda %d minuto %d minutos diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 6c9ddff88..5d879e5dc 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -464,7 +464,6 @@ Võta kasutusele YouTube\'i „Piiratud režiim“ Faili asukoht on muutunud või on ta kustutatud Taasesituste asukohad on kustutatud - Abiteave Kas kustutame kõik taasesituste asukohad\? Kustutab kõik taasesituse käigus salvestatud asukohad Kustuta taasesituste asukohad diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 2cd46f50c..35027aa07 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -508,7 +508,6 @@ Aktibatu audioa Isilarazi - Laguntza Eduki hau ez dago oraindik NewPipengatik onatuta. \n \nEtorkizuneko bertsio batean onartua izatea espero da. diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 877dc7660..052eeba02 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -495,7 +495,6 @@ کسی در حال مشاهده نیست تغییر خدمت، مورد انتخاب شده: اجازه نمایش روی دیگر برنامه‌ها را بدهید - راهنما هنرمندان آلبوم‌ها آوازها diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 9b40ad900..cae958b38 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -367,7 +367,6 @@ Tiedosto siirretty tai poistettu Lataaminen ulkoiselle SD-kortille ei ole mahdollista. Nollataanko latauskansion sijainti\? Ulkoinen tallennustila ei käytettävissä - Ohje Ilmoitukset uusista NewPipe-versioista Sovelluspäivitysilmoitus Tiedosto poistettu diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml index ff9b00420..b1529c7f7 100644 --- a/app/src/main/res/values-fil/strings.xml +++ b/app/src/main/res/values-fil/strings.xml @@ -159,7 +159,6 @@ Sinisimulan na ang Pagdownload Pinusuan ng creator Ni %s - Tulong Naka-pin na komento Buksan ang website Lisensya diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index bbbaadbc1..4c9e22bd6 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -521,7 +521,6 @@ \nYouTube est un exemple de service qui offre une méthode rapide avec son flux RSS. \n \nDonc le choix se résume à ce que vous préférez : la rapidité ou des informations précises. - Aide Ce contenu n’est pas encore pris en charge par NewPipe. \n \nNous espérons qu’il le sera dans une future version. diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index b033a1f51..c57d2f719 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -502,7 +502,6 @@ Ficheiro movido ou eliminado Non é posible descargar na tarxeta SD externa. Restaurar a localización do cartafol de descarga\? Non hai dispoñible almacenamento externo - Axuda Elimináronse as posicións de reprodución Eliminas todas as posicións de reprodución\? Elimina todas as posicións de reprodución diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 81d9af3b6..db906434b 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -475,7 +475,6 @@ עקב מגבלות של ExoPlayer מגבלות טווחי החיפוש הוגדרו לכדי %d שניות השתקה ביטול השתקה - עזרה דקה שתי דקות diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 8de09ab55..dd0c117aa 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -457,7 +457,6 @@ कलाकार गाने कभी नहीं - सहायता reCAPTCHA कुकीज़ को साफ़ कर दिए गए हैं ReCAPTCHA कुकीज़ साफ़ करें एल्बम diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index ba1dcaebc..32e934ebd 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -428,7 +428,6 @@ Videa Isključi zvuk Uključi - Pomoć Učitavanje feeda … Želiš li izbrisati ovu grupu\? Nova diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 35099eaab..be4df3790 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -471,7 +471,6 @@ 100+ videó Jelentés a GitHubon Alapértelmezések visszaállítása - Súgó Sütik törlése, amelyeket a NewPipe akkor ment, amikor megold egy reCAPTCHA-t reCAPTCHA sütik törölve reCAPTCHA sütik törlése diff --git a/app/src/main/res/values-hy/strings.xml b/app/src/main/res/values-hy/strings.xml index 0c6345a28..5f935eb9f 100644 --- a/app/src/main/res/values-hy/strings.xml +++ b/app/src/main/res/values-hy/strings.xml @@ -196,7 +196,6 @@ Նվագել ամենը Ուղիղ Շարունակել նվագարկումը - Օգնություն Լուծել Նշել ալիք Ցույց չտալ diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index c3a63ee66..8094e4687 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -215,7 +215,6 @@ Le discarga al carta SD non es possibile. Reinitialisar le location del dossier de discargas\? Immagazinage externe non disponibile Error - Adjuta Esque tu vole deler tote le positiones de reproduction\? Dele tote le positiones de reproduction Usar le recerca rapide e inexacte diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 06aa6a595..258d3d8a7 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -455,7 +455,7 @@ %d detik Karena kendala ExoPlayer, durasi pencarian ditetapkan ke %d detik - Bantuan + %d menit diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index 2b400ba7f..d190e34a2 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -151,7 +151,6 @@ Ljós Afturkalla Alltaf - Hjálp Villa Fjarlægir hljóð í sumum upplausnum Gat ekki breytt áskrift diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 997896373..ba96b79f3 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -469,7 +469,6 @@ A causa delle limitazioni di ExoPlayer la durata dello spostamento rapido è stata impostata a %d secondi Silenzia Riattiva audio - Aiuto %d minuto %d minuti diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 23da92ff2..d449eed94 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -457,7 +457,6 @@ ExoPlayer の制約のためシーク間隔は %d 秒に設定されました ミュート ミュート解除 - ヘルプ %d 分 diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 70199667c..3ecd10cea 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -198,7 +198,6 @@ დაკვრის პოზიციები წაშლილია წაშლის საძიებო საკვანძო სიტყვების ისტორიას წაშალოთ მთელი ძიების ისტორია\? - დახმარება გარე მეხსიერება მიუწვდომელია Ქსელის შეცდომა ყველა ესკიზის ჩატვირთვა ვერ მოხერხდა diff --git a/app/src/main/res/values-kab/strings.xml b/app/src/main/res/values-kab/strings.xml index 15fe0c15b..ed4ef0f3b 100644 --- a/app/src/main/res/values-kab/strings.xml +++ b/app/src/main/res/values-kab/strings.xml @@ -16,7 +16,6 @@ Afaylu Semɣeṛ Iberdan - Tallalt Susem Yal tikelt Timeẓri diff --git a/app/src/main/res/values-kmr/strings.xml b/app/src/main/res/values-kmr/strings.xml index 5e3c852e7..156e050ed 100644 --- a/app/src/main/res/values-kmr/strings.xml +++ b/app/src/main/res/values-kmr/strings.xml @@ -104,7 +104,6 @@ Dakêşandin ji karta SD ya derveyî re ne gengaz e. Cihê peldanka dakêşanê ji nû ve were çêkirin\? Depoya derveyî tune Şaşî - Alîkarî Dîroka lêgerînê hate jêbirin. Dîroka tevahî lêgerînê jê bibe\? Dîroka peyvên sereke yên lêgerînê jê dike diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index c0ba72c26..5cf5e406d 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -463,7 +463,6 @@ 해결 되었다면 “완료”를 누르세요 ∞ 비디오 100+ 비디오 - 도움말 노래 이 비디오는 연령제한이 있습니다. \n diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index d92b70758..c3bbf9748 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -462,7 +462,6 @@ بەهۆی ExoPlayer ەوە ماوەی بردنەپێش و بردنەپاش لە %d چرکەدا دیاریکرا کپ کپ نەکردن - یارمەتی %d خولەک %d خولەك diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 3f66c5f1f..f9a421cc6 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -293,7 +293,6 @@ Failas perkeltas ar ištrintas Įrašyti į išorinę SD kortelę nepavyko. Atstatyti atsisiuntimo aplanką\? Išorinė saugykla neprieinama - Žinynas Paieškos istorija pašalinta Išvalyti visą paieškos istoriją\? Išvalo paieškos istoriją diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 6cd2bf06d..409e8376f 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -199,7 +199,6 @@ Lejupielādēt uz SD karti nav iespējams. Atiestatīt lejupielāžu mapes lokāciju\? Ārējā krātuve nepieejama Kļūda - Palīdzība Meklēšanas vēsture izdzēsta Izdzēsy visu meklēšanas vēsturi\? Izdzēš meklēto vārdu vēsturi diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 0966dc7e9..46abb1f14 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -233,7 +233,6 @@ എസ്ഡി കാർഡിലേക്ക്‌ ഡൗൺലോഡ് അസാധ്യം. ഡൗൺലോഡ് ഫോൾഡർ മാറ്റട്ടെ\? എസ്ഡി സൗകര്യം ലഭ്യമല്ല പിശക് - സഹായം സെർച്ച് ചരിത്രം നീക്കം ചെയ്തു സെർച്ച് ചരിത്രം നീക്കം ചെയ്യട്ടെയോ\? സെർച്ച് കീവേർഡുകളെ നീക്കം ചെയ്യും diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index fd3d16e46..c577a99a0 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -380,7 +380,6 @@ %d hari - Bantuan Buka dengan %s pendengar diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index ac3a0af1a..edd670bb7 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -462,7 +462,6 @@ Forstum Opphev forstumming - Hjelp %d minutt %d minutter diff --git a/app/src/main/res/values-ne/strings.xml b/app/src/main/res/values-ne/strings.xml index d8e5339fd..1fbe5ff4a 100644 --- a/app/src/main/res/values-ne/strings.xml +++ b/app/src/main/res/values-ne/strings.xml @@ -458,7 +458,6 @@ ExoPlayer अवरोधका कारण खोजी अवधि %d सेकेन्डमा सेट गरियो म्युट ध्वनि सुचारु - मद्दत के तपाईलाई लाग्छ फिड लोडि एकदम ढिलो छ\? यदि हो भने, छिटो लोडिङ् सक्षम गर्न प्रयास गर्नुहोस् (तपाईं यसलाई सेटिंङ्हरूमा वा तलको बटन थिचेर बदल्न सक्नुहुन्छ)। \n \nनयाँ पाइपले दुई फिड लोड गर्ने रणनीति प्रदान गर्दछ: diff --git a/app/src/main/res/values-nl-rBE/strings.xml b/app/src/main/res/values-nl-rBE/strings.xml index 766938925..32a2eb982 100644 --- a/app/src/main/res/values-nl-rBE/strings.xml +++ b/app/src/main/res/values-nl-rBE/strings.xml @@ -518,7 +518,6 @@ Kopieer opgemaakt rapport Geef toestemming voor weergave over andere apps Stream bestand downloaden - Hulp Afspeelposities verwijderd Alle afspeelposities verwijderen\? Verwijdert alle geschiedenis van afspeelposities diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 7f926546b..ce445f475 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -456,7 +456,6 @@ Door beperkingen van ExoPlayer is de zoekduur ingesteld op %d seconden Geluid dempen Geluid aanzetten - Hulp %d seconde %d seconden diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index 17564b93b..f1ae96822 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -273,7 +273,6 @@ ସମସ୍ତ ପ୍ଲେକ୍ ପୋଜିସନ୍ ଡିଲିଟ୍ କରେ ସନ୍ଧାନ ଇତିହାସ ସଫା କରନ୍ତୁ ସମଗ୍ର ସନ୍ଧାନ ଇତିହାସ ବିଲୋପ କରିବେ କି\? - ସାହାଯ୍ୟ ବାହ୍ୟ ସଂରକ୍ଷଣ ଉପଲବ୍ଧ ନାହିଁ ନେଟୱର୍କ ତ୍ରୁଟି ସମସ୍ତ ଥମ୍ୱନେଲ୍ ଲୋଡ୍ କରିପାରିଲା ନାହିଁ diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 0826c0c95..752f0f989 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -572,7 +572,6 @@ ਟਿੱਪਣੀਆਂ ਗਿਟਹੱਬ \'ਤੇ ਜਾ ਕੇ ਇਤਲਾਹ ਦਿਓ ਦੂਜੀਆਂ ਐਪਾਂ ਦੇ ਉੱਤੇ ਵਿਖਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ - ਮਦਦ ਸਾਰੀਆਂ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਉਣੀਆਂ ਹਨ\? ਸਾਰੀਆਂ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਉਂਦਾ ਹੈ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਓ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index baa2b3feb..1360d4279 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -523,7 +523,6 @@ %d minuty %d minut - Pomoc Ta treść nie jest jeszcze obsługiwana przez NewPipe. \n \nMiejmy nadzieję, że będzie obsługiwana w przyszłej wersji. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index bf67c7463..212d8bb17 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -469,7 +469,6 @@ Devido a limitações do ExoPlayer, a duração do avanço foi definida para %d segundos Desativar som Ativar som - Ajuda %d minuto %d minutos diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index e21aba751..521152b29 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -75,7 +75,6 @@ \n \nPara o poder ver, tem que ativar \"%1$s\" nas definições. Ver licença - Ajuda Apenas os URL HTTPS são suportados Falha ao validar a instância Limpar histórico de descargas diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 41d4c211c..ac05f5ca7 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -517,7 +517,6 @@ Devido às restrições de ExoPlayer, a duração da pesquisa foi definida para %d segundos Ativar som Sem som - Ajuda Vídeos Este conteúdo ainda não é suportado pelo NewPipe. \n diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 383b81fb6..b3560fb25 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -348,7 +348,6 @@ Gata Apăsați \"Gata\" după ce ați rezolvat problema Raportați pe GitHub - Ajutor Ștergeți cookie-urile pe care NewPipe le stochează atunci când rezolvați un reCAPTCHA Cookie-urile reCAPTCHA au fost șterse Ștergeți cookie-urile reCAPTCHA diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 25ac89786..34d36237b 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -475,7 +475,6 @@ Из-за ограничений ExoPlayer точность перемотки составляет %d секунд Отключить звук Включить звук - Помощь Введите имя группы %d выбрана diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml index 025b222f6..f68b4c613 100644 --- a/app/src/main/res/values-sc/strings.xml +++ b/app/src/main/res/values-sc/strings.xml @@ -381,7 +381,6 @@ Impossìbile iscarrigare in s\'ischeda SD esterna. Cheres resetare sa positzione de sa cartella de iscarrigamentu\? Memòria esterna non disponìbile Errore - Agiudu Cheres iscantzellare totu sa cronologia de sas chircas\? Iscantzella sa cronologia de sas paràulas chircadas Iscantzella sa cronologia de chirca diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 6a9665f11..a27f2a28f 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -464,7 +464,6 @@ Pre obmedzenie ExoPlayera bolo prehľadávania nastavené na %d sekúnd Stlmiť Povoliť - Pomoc %d sekunda %d sekundy diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index c0600b0ac..e4f3af3dc 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -400,7 +400,6 @@ Obnavljanje od napake predvajanika Prišlo je do neobnovljive napake v predvajalniku Zunanja shramba ni na voljo - Pomoč Izbriše zgodovino ključnih besed za iskanje Položaji predvajalnika so bili izbrisani. Ali želite izbrisati vse položaje predvajalnika\? diff --git a/app/src/main/res/values-so/strings.xml b/app/src/main/res/values-so/strings.xml index 4679b733b..1dc7a27d0 100644 --- a/app/src/main/res/values-so/strings.xml +++ b/app/src/main/res/values-so/strings.xml @@ -296,7 +296,6 @@ Ku dajinta kaydka dibadda (mimoriga) suurtogal ma aha. Dib u fadhiisi khaanada wax lagu dajiyo\? Kaydka dibadda lama heli karo Khalad - Caawin Wixii la raadiyay waa la tirtiray Tirtir dhamaan wixii la raadiyay\? Wuxuu tirtiraa kaydka wixii lagu qoray xaga raadinta diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index 7e25c799b..75ee669f4 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -409,7 +409,6 @@ Shkarkimi në kartën SD të jashtme nuk ishte i mundur. Doni të rivendosni vendndodhjen e dosjes së shkarkimeve\? Magazina e jashtme u padisponueshme Gabim - Ndihmë Historiku i kërkimeve u fshi Doni të fshini të gjithë historikun e kërkimeve\? Fshin historikun e fjalëve kyçe të kërkuara diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 6de2e6441..caf9b61c2 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -437,7 +437,6 @@ Спољни плејери не подржавају ове врсте веза Преузимање на спољну СД картицу није могуће. Ресетовати локацију фасцикле за преузимање\? Спољно складиште није доступно - Помоћ Историја претраге је обрисана Да обришем целу историју претраге\? Брише историју кључних речи за претрагу diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 4be4aa932..8893aee0b 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -398,7 +398,6 @@ Endast HTTPS-URL:er stöds Instansen finns redan Videor - Hjälp Ta bort alla uppspelningspositioner\? Tar bort alla uppspelningspositioner Filen har flyttats eller tagits bort diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 4294fccd3..2103af785 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -241,7 +241,6 @@ இயக்கக குறியிடங்கள் அழிக்கப்பட்டன விவரிப்பு தொகுப்புகள் - உதவி கலைஞர்கள் காணொளிகள் HTTPS உரலிகள் மட்டுமே ஆதரிக்கப்படுகின்றன diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index 22ad6fbf5..b14259c85 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -277,7 +277,6 @@ వ్యాఖ్యలు లేవు బాహ్య SD కార్డ్‌కి డౌన్‌లోడ్ చేయడం సాధ్యం కాదు. డౌన్‌లోడ్ ఫోల్డర్ స్థానాన్ని రీసెట్ చేయాలా\? సృష్టించు - సహాయం డౌన్‌లోడ్ చేయడానికి స్ట్రీమ్‌లు ఏవీ అందుబాటులో లేవు డిఫాల్ట్‌ విలువలకు మార్చు క్రమాన్ని మార్చడానికి లాగండి diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d864ab0e2..2996c19ec 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -463,7 +463,6 @@ ExoPlayer kısıtlamaları gereği konumlama süresi %d saniyeye belirlenmiştir Sessize al Sesi aç - Yardım %d dakika %d dakika diff --git a/app/src/main/res/values-tzm/strings.xml b/app/src/main/res/values-tzm/strings.xml index f121dadde..31d89bdd5 100644 --- a/app/src/main/res/values-tzm/strings.xml +++ b/app/src/main/res/values-tzm/strings.xml @@ -119,7 +119,6 @@ Avidyu Umelan: Tazgelt - Tiwisi Afaylu Ku dwal Sfeḍ diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 299aba747..96ba7bc4c 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -484,7 +484,6 @@ Вимкнути звук Увімкнути звук Локальне - Допомога Відео Не вдалося перевірити сервер NewPipe ще не підтримує цей вміст. diff --git a/app/src/main/res/values-und/strings.xml b/app/src/main/res/values-und/strings.xml index 6452b31c2..b155e5d64 100644 --- a/app/src/main/res/values-und/strings.xml +++ b/app/src/main/res/values-und/strings.xml @@ -60,7 +60,6 @@ ہمیشہ نوٹ [نامعلوم] - مدد خرابی کوئی وی آڈیو سٹریماں نہیں ملیاں رپورٹ کرو diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 8258f366f..561416c7e 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -455,7 +455,6 @@ گِٹ ہب میں اطلاع دیں فارمیٹڈ رپورٹ کو کاپی کریں دوسرے ایپس پر نظر آنے کی اجازت دیں - مدد ان کوکیز کو صاف کریں جنہیں نیو پائپ ری کیپچا حل کرنے کے دوران جمع کرتا ہے ری کیپچا کوکیز صاف ہوئیں ری کیپچا کوکیز کو صاف کریں diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index c7bfb9e77..107ba07ec 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -463,7 +463,6 @@ %s người xem Cho phép hiển thị trên các ứng dụng khác - Trợ giúp Nghệ sĩ Album Bài hát diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 99d5b1733..ca81dbe3e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -457,7 +457,6 @@ 由于 ExoPlayer 的限制,寻址间隔置为 %d 秒 静音 取消静音 - 帮助 %d 分钟 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 6037d60d7..874b808ad 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -217,7 +217,6 @@ 記低睇過嘅影片 自動播放 更新 - 說明 開啟 YouTube 嘅「嚴格篩選模式」 冇串流下載得到 畀權限去喺其他 app 上面顯示 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 7621a9486..2127af3b7 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -457,7 +457,6 @@ 因為 ExoPlayer 的限制,搜尋持續時間設定為 %d 秒 靜音 取消靜音 - 說明 %d 分鐘 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f6ab5c6a1..2215781bb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -212,7 +212,7 @@ Deletes history of search keywords Delete entire search history? Search history deleted - Help + Fast mode Error External storage unavailable From e5f30a07bf5860944a2c5bb52f650903ed857b4a Mon Sep 17 00:00:00 2001 From: Douile <25043847+Douile@users.noreply.github.com> Date: Thu, 25 Aug 2022 21:25:00 +0100 Subject: [PATCH 047/147] Only show "Enqueue next" when in the middle of the queue Add a check that the queue position is not the last in the queue before showing "Enqueue next". Previously the "Enqueue next" action would always be shown if the queue length was greater than one, this meant even if you were at the end of the queue (when "Enqueue" would have the same effect as "Enqueue next") the action would still be shown. --- .../schabi/newpipe/info_list/dialog/InfoItemDialog.java | 5 +++-- .../org/schabi/newpipe/player/helper/PlayerHolder.java | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/info_list/dialog/InfoItemDialog.java b/app/src/main/java/org/schabi/newpipe/info_list/dialog/InfoItemDialog.java index 61a88bb8f..0c69557bf 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/dialog/InfoItemDialog.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/dialog/InfoItemDialog.java @@ -252,10 +252,11 @@ public final class InfoItemDialog { * @return the current {@link Builder} instance */ public Builder addEnqueueEntriesIfNeeded() { - if (PlayerHolder.getInstance().isPlayQueueReady()) { + final PlayerHolder holder = PlayerHolder.getInstance(); + if (holder.isPlayQueueReady()) { addEntry(StreamDialogDefaultEntry.ENQUEUE); - if (PlayerHolder.getInstance().getQueueSize() > 1) { + if (holder.getQueuePosition() < holder.getQueueSize() - 1) { addEntry(StreamDialogDefaultEntry.ENQUEUE_NEXT); } } 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 5eaecd48d..b55a6547a 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 @@ -92,6 +92,13 @@ public final class PlayerHolder { return player.getPlayQueue().size(); } + public int getQueuePosition() { + if (player == null || player.getPlayQueue() == null) { + return 0; + } + return player.getPlayQueue().getIndex(); + } + public void setListener(@Nullable final PlayerServiceExtendedEventListener newListener) { listener = newListener; From 3103fd73022ef97a5a61ea15d8973a133d170dfd Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 4 Dec 2022 18:58:57 +0100 Subject: [PATCH 048/147] Rename list_empty_subtitle string --- app/src/main/res/layout/list_empty_view.xml | 2 +- app/src/main/res/values-ar/strings.xml | 2 +- app/src/main/res/values-az/strings.xml | 2 +- app/src/main/res/values-b+ast/strings.xml | 2 +- app/src/main/res/values-b+uz+Latn/strings.xml | 2 +- app/src/main/res/values-be/strings.xml | 2 +- app/src/main/res/values-bg/strings.xml | 2 +- app/src/main/res/values-bn-rBD/strings.xml | 2 +- app/src/main/res/values-bn/strings.xml | 2 +- app/src/main/res/values-ca/strings.xml | 2 +- app/src/main/res/values-ckb/strings.xml | 2 +- app/src/main/res/values-cs/strings.xml | 2 +- app/src/main/res/values-da/strings.xml | 2 +- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-el/strings.xml | 2 +- app/src/main/res/values-eo/strings.xml | 2 +- app/src/main/res/values-es/strings.xml | 2 +- app/src/main/res/values-et/strings.xml | 2 +- app/src/main/res/values-eu/strings.xml | 2 +- app/src/main/res/values-fa/strings.xml | 2 +- app/src/main/res/values-fi/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values-gl/strings.xml | 2 +- app/src/main/res/values-he/strings.xml | 2 +- app/src/main/res/values-hi/strings.xml | 2 +- app/src/main/res/values-hr/strings.xml | 2 +- app/src/main/res/values-hu/strings.xml | 2 +- app/src/main/res/values-hy/strings.xml | 2 +- app/src/main/res/values-ia/strings.xml | 2 +- app/src/main/res/values-in/strings.xml | 2 +- app/src/main/res/values-is/strings.xml | 2 +- app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-ka/strings.xml | 2 +- app/src/main/res/values-kmr/strings.xml | 2 +- app/src/main/res/values-ko/strings.xml | 2 +- app/src/main/res/values-ku/strings.xml | 2 +- app/src/main/res/values-lt/strings.xml | 2 +- app/src/main/res/values-lv/strings.xml | 2 +- app/src/main/res/values-mk/strings.xml | 2 +- app/src/main/res/values-ml/strings.xml | 2 +- app/src/main/res/values-ms/strings.xml | 2 +- app/src/main/res/values-nb-rNO/strings.xml | 2 +- app/src/main/res/values-ne/strings.xml | 2 +- app/src/main/res/values-nl-rBE/strings.xml | 2 +- app/src/main/res/values-nl/strings.xml | 2 +- app/src/main/res/values-or/strings.xml | 2 +- app/src/main/res/values-pa/strings.xml | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- app/src/main/res/values-pt-rBR/strings.xml | 2 +- app/src/main/res/values-pt-rPT/strings.xml | 2 +- app/src/main/res/values-pt/strings.xml | 2 +- app/src/main/res/values-ro/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-sc/strings.xml | 2 +- app/src/main/res/values-sk/strings.xml | 2 +- app/src/main/res/values-sl/strings.xml | 2 +- app/src/main/res/values-so/strings.xml | 2 +- app/src/main/res/values-sq/strings.xml | 2 +- app/src/main/res/values-sr/strings.xml | 2 +- app/src/main/res/values-sv/strings.xml | 2 +- app/src/main/res/values-ta/strings.xml | 2 +- app/src/main/res/values-te/strings.xml | 2 +- app/src/main/res/values-th/strings.xml | 2 +- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- app/src/main/res/values-ur/strings.xml | 2 +- app/src/main/res/values-vi/strings.xml | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rHK/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 72 files changed, 72 insertions(+), 72 deletions(-) diff --git a/app/src/main/res/layout/list_empty_view.xml b/app/src/main/res/layout/list_empty_view.xml index 21b3b436f..91c6b5666 100644 --- a/app/src/main/res/layout/list_empty_view.xml +++ b/app/src/main/res/layout/list_empty_view.xml @@ -19,5 +19,5 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="6dp" - android:text="@string/empty_subscription_feed_subtitle" /> + android:text="@string/empty_list_subtitle" /> diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index d38540895..033607ae9 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -114,7 +114,7 @@ تعليقك (باللغة الإنجليزية): التفاصيل: لم يتم العثور على نتائج - لا شيء هنا سوى الصراصير + لا شيء هنا سوى الصراصير الصوت إعادة المحاولة ألف diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 2d6f4e9c6..723707b70 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -280,7 +280,7 @@ Video yayımı tapılmadı Şərhlər Açıqlama - Burada kriketlərdən başqa heç nə yoxdur + Burada kriketlərdən başqa heç nə yoxdur Nəticə yoxdur İlkin tənzimləmələri qaytar Fayl köçürüldü və ya silindi diff --git a/app/src/main/res/values-b+ast/strings.xml b/app/src/main/res/values-b+ast/strings.xml index 611c2dd03..b7b568cab 100644 --- a/app/src/main/res/values-b+ast/strings.xml +++ b/app/src/main/res/values-b+ast/strings.xml @@ -73,7 +73,7 @@ La meyor resolución Avisu permanente de NewPipe Nun hai resultaos - Equí nun hai más que grillos + Equí nun hai más que grillos %s soscriptor %s soscriptores diff --git a/app/src/main/res/values-b+uz+Latn/strings.xml b/app/src/main/res/values-b+uz+Latn/strings.xml index 05ad40fa6..c7b35aa3c 100644 --- a/app/src/main/res/values-b+uz+Latn/strings.xml +++ b/app/src/main/res/values-b+uz+Latn/strings.xml @@ -281,7 +281,7 @@ Audio Video Qayta tartiblash uchun tortish - Bu erda kriketlardan boshqa hech narsa yo\'q + Bu erda kriketlardan boshqa hech narsa yo\'q Natija yo\'q Dislayklar Layklar diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 8254855f5..43469b3ca 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -157,7 +157,7 @@ Спадабалася Не спадабалася Няма вынікаў - Нічога няма + Нічога няма Перацягніце, каб змяніць парадак Відэа Аўдыё diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 5ac2b1db8..e4a147649 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -106,7 +106,7 @@ Харесвания Нехаресвания Няма резултати - Тук няма нищо + Тук няма нищо Видео Аудио Опитай отново diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml index 730150552..c89265b1f 100644 --- a/app/src/main/res/values-bn-rBD/strings.xml +++ b/app/src/main/res/values-bn-rBD/strings.xml @@ -364,7 +364,7 @@ সমস্যা হয়েছে, নোটিফিকেশন দেখুন তৈরিকৃত রিপোর্ট কপি করো সম্পর্কিত আইটেমসমূহ - ঝিঁঝিঁপোকা ছাড়া এখানে কিছু নেই + ঝিঁঝিঁপোকা ছাড়া এখানে কিছু নেই পুনর্বিন্যাস্ত করতে টান দিন গ্রাহকসংখ্যা সুলভ নয় কেউ দেখছে না diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 4b90b22e2..58630ec15 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -344,7 +344,7 @@ কেউ শুনছে না কেউ দেখছে না সেবাটি পরিবর্তন করো, বর্তমানে নির্বাচিত: - ঝিঝিপোকা ছাড়া কিছুই নেই এখানে + ঝিঝিপোকা ছাড়া কিছুই নেই এখানে এই ধরনের কোন ফাইল/বিষয়বস্তুর উৎস নেই অপুনরুদ্ধারযোগ্য প্লেয়ার ত্রুটি ঘটেছে ইন্সট্যান্সটি যাচাই করা যায়নি diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 34fe35f11..c3d929dec 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -165,7 +165,7 @@ M\'agrada No m\'agrada Cap resultat - No hi ha res aquí + No hi ha res aquí Torna a provar Cap subscripció Cap reproducció diff --git a/app/src/main/res/values-ckb/strings.xml b/app/src/main/res/values-ckb/strings.xml index 4c53c11b9..b09dc841f 100644 --- a/app/src/main/res/values-ckb/strings.xml +++ b/app/src/main/res/values-ckb/strings.xml @@ -387,7 +387,7 @@ زۆرترین بەدڵ سڕینەوە جۆری بنەڕەتی ڤیدیۆ - هیچ شتێک لێرەدا نییە + هیچ شتێک لێرەدا نییە سڕینەوە هەمان فۆڵدەر بوونی نییە نیشانه‌كردنی خشته‌لێدان diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index e790a5fe4..c75a087fc 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -124,7 +124,7 @@ Oznámení NewPipe Oznámení pro NewPipe přehrávač Žádné výsledky - Je tu sranda jak v márnici + Je tu sranda jak v márnici mld. Žádní odběratelé diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index a336d21a3..dbebc4083 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -313,7 +313,7 @@ Efterbehandling fejlede Stop Hændelser - Intet at se her + Intet at se her t mio. mia. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 7502adbf8..dbc0adefe 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -161,7 +161,7 @@ Die meisten Sonderzeichen Wiedergabe fortsetzen Player - Nichts hier, außer dem Zirpen der Grillen + Nichts hier, außer dem Zirpen der Grillen Möchtest du dieses Element aus dem Suchverlauf löschen\? Leere Seite Einen Kanal auswählen diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index d54041a7f..f9a6bcca4 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -169,7 +169,7 @@ Συγγνώμη, κάτι πήγε στραβά. Τι:\\nΑίτημα:\\nΓλώσσα περιεχομένου:\\nΧώρα περιεχομένου:\\nΓλώσσα εφαρμογής:\\nΥπηρεσία:\\nΏρα GMT:\\nΠακέτο:\\nΈκδοση:\\nΈκδοση λειτουργικού συστήματος: Κανένα αποτέλεσμα - Δεν υπάρχει τίποτα εδώ + Δεν υπάρχει τίποτα εδώ Σύρετε για ταξινόμηση Προσπάθεια εκ νέου χιλ. diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index da1a040cb..525397ca1 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -288,7 +288,7 @@ Historio Historio Neniuj rezultoj - Neniu enhavo + Neniu enhavo Neniuj abonantoj %s abonanto diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 09115a31e..40a483e27 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -144,7 +144,7 @@ Historial y caché Deshacer No hay resultados - Nada aquí más que grillos + Nada aquí más que grillos Sin suscriptores %s suscriptor diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 3fcdbf04a..8c79ad011 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -152,7 +152,7 @@ Meeldib Ei meeldi Tulemusi pole - Siin pole veel midagi + Siin pole veel midagi Lohista järjestuse muutmiseks Video Audio diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 19f9fcfa6..a37d53922 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -142,7 +142,7 @@ Desegin NewPipe erreproduzigailuaren jakinarazpenak Emaitzarik ez - Kilkerrak besterik ez daude hemen + Kilkerrak besterik ez daude hemen Harpidedunik ez Harpidedun %s diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 5c153fe3e..dbb7a5395 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -297,7 +297,7 @@ © %1$s توسط %2$s تحت %3$s اگر ایده‌ای برای ترجمه، تغییر طراحی، پاک‌سازی کد و یا تغییرات واقعا سنگین کدنویسی دارید، از کمک‌تان همواره استقبال می‌کنیم. هر چه بیشتر کار کنیم، نتایج بهتری می‌گیریم! آگاهی‌ها برای پخش‌کنندهٔ نیوپایپ - چیزی جز کریکت اینجا نیست + چیزی جز کریکت اینجا نیست فاقد مشترک خطای عدم احیای پخش‌کننده رخ داد در حال احیا از خطای پخش‌کننده diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index af19e4f12..01e66d0e1 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -99,7 +99,7 @@ Tykkäykset Ei-tykkäykset Ei tuloksia - Tyhjää täynnä + Tyhjää täynnä Video Ääni Toista uudelleen diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 3830e440b..4618e7430 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -143,7 +143,7 @@ Historique et cache Notifications pour le lecteur de NewPipe Aucun résultat - Aucun contenu + Aucun contenu Aucun abonné %s abonné diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index f1e815499..3ba02f41e 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -156,7 +156,7 @@ Gosto Non gosto Non hai resultados - Nada que ver aquí + Nada que ver aquí Arrastre para reordenar Vídeo Audio diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 1ae0aab87..2447b8f4f 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -109,7 +109,7 @@ אהבו לא אהבו אין תוצאות - אין כאן כלום מלבד צרצרים + אין כאן כלום מלבד צרצרים סרטון שמע ניסיון חוזר diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 9231057c4..540b63526 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -123,7 +123,7 @@ पसंद नापसंद कोई परिणाम नहीं मिला - यंहा कुछ नहीं है + यंहा कुछ नहीं है विडियो ऑडियो फिर से कोशिश करे diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 87f95366a..78f45f256 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -144,7 +144,7 @@ Povijest i predmemorija Poništi Nema rezultata - Ovdje nema ništa osim cvrčaka + Ovdje nema ništa osim cvrčaka Nema pretplatnika %s pretplatnik diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 86f699a00..ffd1c47f4 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -167,7 +167,7 @@ A fájlnév nem lehet üres Hiba történt: %1$s Nincs letölthető adatfolyam - Nincs itt semmi pár tücskön kívül + Nincs itt semmi pár tücskön kívül Húzza az átrendezéshez e m diff --git a/app/src/main/res/values-hy/strings.xml b/app/src/main/res/values-hy/strings.xml index 218854841..76ab419ac 100644 --- a/app/src/main/res/values-hy/strings.xml +++ b/app/src/main/res/values-hy/strings.xml @@ -217,7 +217,7 @@ Հանրային Պիտակներ Ծանուցումները անջատված են - Ոչինչ բացի դատարկությունից + Ոչինչ բացի դատարկությունից Կրկին փորձել Հոսքի նորերը \ No newline at end of file diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index f4383defb..547ba2bc8 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -196,7 +196,7 @@ Nulle subscriptores Audio Video - Nihil contentos ci + Nihil contentos ci Nulle resultatos Description Fluxos associate diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 7fec1490d..6ab58ebe9 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -173,7 +173,7 @@ Nama berkas tidak boleh kosong Telah terjadi galat: %1$s Tidak ada hasil - Tidak ada apa pun di sini selain jangkrik + Tidak ada apa pun di sini selain jangkrik Geser untuk ubah urutan Tidak ada pelanggan diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index 2b400ba7f..bb8a8caa3 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -44,7 +44,7 @@ Um NewPipe Áskrift hætt Hætta áskrift - Allt er tómt + Allt er tómt NewPipe er „copyleft“ frjáls hugbúnaður: Þú getur notað, rannsakað, deilt og bætt honum að vild. Þú getur endurdreift og breytt því samkvæmt skilmálum GNU GPL notendaleyfi eins og það er gefið út af Frjálsa Hugbúnaðarstofnuninni, annað hvort útgáfu 3 af leyfinu, eða (að eigin vali) hvaða síðari útgáfu sem er. Í áskrift Bókamerktir spilunarlistar diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index acb9d6bc0..f5ae09d27 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -162,7 +162,7 @@ %s video %s video - Nulla da mostrare + Nulla da mostrare Eliminare questo elemento dalla cronologia delle ricerche\? Contenuto della pagina principale Pagina vuota diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index d5d6ae8c9..f10b61ee9 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -288,7 +288,7 @@ 全画面 自動生成 プレーヤーのキャプションテキストの縮尺と背景スタイルを変更します。有効にするには、アプリの再起動が必要です - 何もありません + 何もありません Google takeout から YouTube の登録リストをインポート: \n \n1. この URL を開きます: %1$s diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 70199667c..096d06f17 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -240,7 +240,7 @@ დაკავშირებული ნივთები აღწერა არანაირი შედეგი - აქ არაფერია კრიკეტების გარდა + აქ არაფერია კრიკეტების გარდა გადაიტანეთ ხელახლა შეკვეთისთვის ვიდეო აუდიო diff --git a/app/src/main/res/values-kmr/strings.xml b/app/src/main/res/values-kmr/strings.xml index c93a111f1..858dc808c 100644 --- a/app/src/main/res/values-kmr/strings.xml +++ b/app/src/main/res/values-kmr/strings.xml @@ -56,7 +56,7 @@ Deng Vîdyo Drag bikin da ku ji nû ve sererast bikin - Li vir ji xeynî krikan pê ve tiştek tune + Li vir ji xeynî krikan pê ve tiştek tune Encam tune Terîf Çemên pêwendîdar diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 0c4642744..8edb8f33c 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -116,7 +116,7 @@ 플레이어 오류로부터 복구 중 무엇:\\n요청:\\n콘텐츠 언어:\\n콘텐츠 국가:\\n앱 언어:\\n서비스:\\nGMT 시간:\\n패키지:\\n버전:\\nOS 버전: 결과 없음 - 구독할 항목을 추가하세요 + 구독할 항목을 추가하세요 백만 십억 diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index 09a4ad96a..674deb58b 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -131,7 +131,7 @@ بەدڵبوون بەدڵنەبوون هیچ ئەنجامێک نییە - هیچ شتێک لێرەدا نییە + هیچ شتێک لێرەدا نییە ڕاکێشان بۆ دووبارە داواکردنەوە ڤیدیۆ دەنگ diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 314dba462..c90df7cb3 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -139,7 +139,7 @@ Įvyko nepataisoma grotuvo klaida Atstatoma po grotuvo klaidos Nėra rezultatų - Čia nieko nėra išskyrus svirplius + Čia nieko nėra išskyrus svirplius Tūkst. Mln. Mlrd. diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 7f0396455..ab428a7df 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -144,7 +144,7 @@ Audio Video Velciet, lai mainītu secību - Šeit nekā nav, tikai sienāži + Šeit nekā nav, tikai sienāži Nav resultātu Apraksts Līdzīgi video diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index 0aaa8d546..fc4a80a4b 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -144,7 +144,7 @@ Допаѓања Недопаѓања Нема резултати - Тука Е Празно :( + Тука Е Празно :( Влечи за да разместиш Видео Звук diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 9e4d29cfe..04a4217d8 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -192,7 +192,7 @@ ഓഡിയോ വീഡിയോ പുനക്രമീകരിക്കാൻ വലിച്ചിടുക - നോക്കേണ്ടടാ ഉണ്ണി ഇവിടെ ഒന്നും ഇല്ല + നോക്കേണ്ടടാ ഉണ്ണി ഇവിടെ ഒന്നും ഇല്ല ഫലങ്ങൾ ലഭ്യമല്ല ഡിസ്ലൈക്കുകൾ ലൈക്കുകൾ diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index 2c358748a..5c546d516 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -173,7 +173,7 @@ Suka Tidak suka Tiada keputusan - Tiada apa-apa di sini tetapi jangkrik + Tiada apa-apa di sini tetapi jangkrik Seret untuk menyusun semula Video Audio diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index b93d7a1e5..d7620752d 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -137,7 +137,7 @@ Historikk og mellomlagring Angre Ingen resultater - Bare ufisk her + Bare ufisk her Ingen abonnenter %s abonnent diff --git a/app/src/main/res/values-ne/strings.xml b/app/src/main/res/values-ne/strings.xml index 9cbad12ab..63a22db05 100644 --- a/app/src/main/res/values-ne/strings.xml +++ b/app/src/main/res/values-ne/strings.xml @@ -178,7 +178,7 @@ मनपर्दो मन नपर्ने कुनै परिणामहरु छैनन् - यहाँ झ्याउँकिरी बाहेक केहि पनि छैन + यहाँ झ्याउँकिरी बाहेक केहि पनि छैन पुन: क्रमबद्ध गर्न तान्नुहोस् भिडियो अडियो diff --git a/app/src/main/res/values-nl-rBE/strings.xml b/app/src/main/res/values-nl-rBE/strings.xml index 3b54c56f5..f51d4c7c6 100644 --- a/app/src/main/res/values-nl-rBE/strings.xml +++ b/app/src/main/res/values-nl-rBE/strings.xml @@ -145,7 +145,7 @@ Duimen Duimen omlaag Geen resultaten - Helemaal niets hier te zien + Helemaal niets hier te zien Versleep om de volgorde te wijzigen Video Geluid diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 8f2ef55b1..09ec28bb5 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -144,7 +144,7 @@ Geschiedenis en cache Ongedaan maken Geen resultaten - Niets, maar dan ook niets te zien + Niets, maar dan ook niets te zien Geen abonnees %s abonnee diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index 17564b93b..c21fb0ed7 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -475,7 +475,7 @@ ସଞ୍ଚିତ ଟ୍ୟାବଗୁଡିକ ପଢ଼ି ପାରିଲା ନାହିଁ, ତେଣୁ ଡିଫଲ୍ଟଗୁଡିକ ବ୍ୟବହାର କରି କଣ:\\nRequest:\\nContent Language:\\nContent Country:\\nApp Language:\\nService:\\nGMT Time:\\nPackage:\\nVersion:\\nOS ସଂସ୍କରଣ: କୌଣସି ଫଳାଫଳ ନାହିଁ - ଏଠାରେ କ୍ରିକେଟ୍ ବ୍ୟତୀତ ଆଉ କିଛି ନାହିଁ + ଏଠାରେ କ୍ରିକେଟ୍ ବ୍ୟତୀତ ଆଉ କିଛି ନାହିଁ ପୁନଃଚେଷ୍ଟା କରନ୍ତୁ କିଛି କହିବାର ନାହିଁ ୱେବସାଇଟ୍ diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 883bb7dfa..92c056402 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -151,7 +151,7 @@ ਪਸੰਦਾਂ ਨਾਪਸੰਦਾਂ ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ - ਇਥੇ ਦਾ ਸੁੰਨਾਪਨ ਦੂਰ ਕਰਨ ਲਈ ਕੁਝ ਸਰਚ ਕਰੋ ਜਾਂ ਕੋਈ ਚੈਨਲ ਸਬਸਕ੍ਰਾਇਬ ਕਰੋ + ਇਥੇ ਦਾ ਸੁੰਨਾਪਨ ਦੂਰ ਕਰਨ ਲਈ ਕੁਝ ਸਰਚ ਕਰੋ ਜਾਂ ਕੋਈ ਚੈਨਲ ਸਬਸਕ੍ਰਾਇਬ ਕਰੋ ਮੁੜ-ਕ੍ਰਮਬੱਧ ਕਰਨ ਲਈ ਡਰੈਗ ਕਰੋ ਵੀਡੀਓ ਆਡੀਓ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index aa55dfb0e..81edd53ef 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -151,7 +151,7 @@ Nie udało się odtworzyć tego strumienia Wystąpił nieodwracalny błąd odtwarzacza Odzyskiwanie po błędzie odtwarzacza - Nic tu nie ma. Słychać tylko świerszcze. + Nic tu nie ma. Słychać tylko świerszcze. Brak subskrybentów %s subskrybent diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index ddde09333..8558fdd63 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -162,7 +162,7 @@ %s vídeos Player - Nada aqui além de grilos + Nada aqui além de grilos Deseja excluir este item do histórico de busca\? Conteúdo da página inicial Página em branco diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 4fd41be2e..f5b82ef65 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -357,7 +357,7 @@ Melhor resolução Selecione um canal Parar - Aqui não há nada para ver + Aqui não há nada para ver Não foi possível configurar o menu de descargas Sem limite Erro diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 3d22a074f..4092cda94 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -136,7 +136,7 @@ Notificação NewPipe Notificações para o reprodutor do NewPipe Sem resultados - Aqui não há nada para ver + Aqui não há nada para ver Sem subscritores %s subscritor diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 5e147dc13..39deef7fb 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -125,7 +125,7 @@ Notificare NewPipe Notificări pentru playerul NewPipe Fără rezultate - Nimic aici în afară de sunetul greierilor + Nimic aici în afară de sunetul greierilor Fără abonați %s abonat diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 048f5723e..7795e3a25 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -147,7 +147,7 @@ История и кэш Отмена Нет результатов - Ничего нет + Ничего нет Нет подписчиков %s подписчик diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml index 7af30f884..34f8b21f7 100644 --- a/app/src/main/res/values-sc/strings.xml +++ b/app/src/main/res/values-sc/strings.xml @@ -174,7 +174,7 @@ Àudio Vìdeu Traga pro torrare a ordinare - Non b\'at nudda inoghe + Non b\'at nudda inoghe Perunu resurtadu Disagradessimentos Agradessimentos diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index cb6b42f7d..ec0e710be 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -144,7 +144,7 @@ História a vyrovnávacia pamäť Vrátiť Žiadne výsledky - Zatiaľ je tu ticho ako v hrobe + Zatiaľ je tu ticho ako v hrobe Žiadni odberatelia %s odberateľ diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index a0314b710..3f159d4e0 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -144,7 +144,7 @@ Zgodovina in predpomnilnik Razveljavi Ni rezultatov iskanja - Tu ni ničesar! + Tu ni ničesar! Ni naročnikov %s naročnik diff --git a/app/src/main/res/values-so/strings.xml b/app/src/main/res/values-so/strings.xml index 431ef57ad..819413890 100644 --- a/app/src/main/res/values-so/strings.xml +++ b/app/src/main/res/values-so/strings.xml @@ -252,7 +252,7 @@ Dhagaysi Muuqaal Farta ku jiid si aad ukala hormariso - meel madhan + meel madhan natiijo lama helin intaan ka helin inta ka heshay diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index 74d89908b..3a50d4d33 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -306,7 +306,7 @@ Audio Video Tërhiqe për të ri-radhitur - Nuk ka asgjë këtu përveç bulkthave + Nuk ka asgjë këtu përveç bulkthave Nuk ka rezultate Mospëlqimet Pëlqimet diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 26c3e896f..4a96ef016 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -138,7 +138,7 @@ Њупајп обавештење Обавештења за Њупајп плејере у позадини и искачућем прозору Нема резултата - Нема ничега овде осим цврчака + Нема ничега овде осим цврчака Нема пратилаца %s пратилац diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 3d28686ba..3a1c6b0f3 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -109,7 +109,7 @@ Spela video, längd: Uppladdarens avatar-miniatyrbild Inga resultat - Här va\' det tomt + Här va\' det tomt Video Ljud Försök igen diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index f2fa5c40f..203296115 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -87,7 +87,7 @@ விவரங்கள்: விருப்பங்கள் முடிவுகள் இல்லை - எந்த முடிவுகளும் இல்லை + எந்த முடிவுகளும் இல்லை இழுத்து வரிசைமாற்று காணொலி ஒலி diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index 22ad6fbf5..f5783e8d6 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -271,7 +271,7 @@ చెక్సమ్ వీడియో URL సంతకాన్ని డీఓబ్‌ఫస్కేట్ చేయడం సాధ్యపడలేదు GitHubపై నివేదించు - ఇక్కడ క్రికెట్‌లు తప్ప మరేమీ లేదు + ఇక్కడ క్రికెట్‌లు తప్ప మరేమీ లేదు ఎవరూ వినడం లేదు ఎవరూ చూడటం లేదు వ్యాఖ్యలు లేవు diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 3c0848af1..d8a90a928 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -167,7 +167,7 @@ ชอบ ไม่ชอบ ไม่มีผลลัพธ์ - ไม่มีอะไรที่นี่นอกจากจิ้งหรีด + ไม่มีอะไรที่นี่นอกจากจิ้งหรีด ลากเพื่อจัดลำดับใหม่ วิดีโอ เสียง diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 80f776bdd..fd073a4ec 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -142,7 +142,7 @@ NewPipe bildirimi NewPipe oynatıcısı için bildirimler Sonuç yok - Burada cırcır böceklerinden başka bir şey yok + Burada cırcır böceklerinden başka bir şey yok Abone yok %s abone diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 1b0289c3c..fff8cac56 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -198,7 +198,7 @@ Вільне та легке потокове програвання на Android. Які б не були ваші ідеї: переклад, дизайн, легкий чи глобальний рефакторинг — будь-яка допомога завжди у пригоді. Що більше зроблено, то ліпшим стає NewPipe! Зневадження - Нічого немає… чути лише цвіркунів + Нічого немає… чути лише цвіркунів Немає переглядів %s перегляд diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 2c3582209..6d2fbc772 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -144,7 +144,7 @@ پسندیدگی ناپسندیدگی کوئی نتائج نہیں - یہاں کچھ نہیں سوائے میرے + یہاں کچھ نہیں سوائے میرے دوبارہ ترتیب دینے کیلئے کھینچں ویڈیو آڈیو diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 40eb323c1..915ab7f22 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -191,7 +191,7 @@ Tên tệp không được để trống Đã xảy ra lỗi: %1$s Không có luồng nào để tải về - Không có gì cả :P + Không có gì cả :P Kéo để sắp xếp lại Không có người đăng ký diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 870ab327d..8afe49dd2 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -196,7 +196,7 @@ NewPipe 播放器的通知 默认视频格式 行为 - 空空如也 + 空空如也 无人观看过 是否删除此条搜索历史记录? 主页面的显示内容 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index ab0234223..2d3b10af6 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -535,7 +535,7 @@ 攝咗做下個等陣播 點做法 影片雜湊進度嘅通知 - 大笪地 + 大笪地 抹走搜尋紀錄 刪除搜尋關鍵字嘅紀錄 係咪要全部剷走晒搜尋嘅紀錄? diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 845ca5e0f..a3c9e77ef 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -125,7 +125,7 @@ NewPipe 通知 NewPipe 播放器的通知 沒有結果 - 這裡空空如也 + 這裡空空如也 無訂閱者 %s 位訂閱者 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3fa37155a..31e1d736d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -265,7 +265,7 @@ Related items Description No results - Nothing here but crickets + Nothing here but crickets Drag to reorder Video Audio From 10977eaefa6a950e3f718263232b4aa60841fa91 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 4 Dec 2022 19:14:42 +0100 Subject: [PATCH 049/147] Show hint about how to import subscriptions when there are none --- .../subscription/SubscriptionFragment.kt | 4 ++-- .../subscription/dialog/FeedGroupDialog.kt | 4 ++-- ...ImportSubscriptionsHintPlaceholderItem.kt} | 7 ++++-- .../layout/list_empty_view_subscriptions.xml | 23 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 33 insertions(+), 6 deletions(-) rename app/src/main/java/org/schabi/newpipe/local/subscription/item/{EmptyPlaceholderItem.kt => ImportSubscriptionsHintPlaceholderItem.kt} (63%) create mode 100644 app/src/main/res/layout/list_empty_view_subscriptions.xml 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 72cd3cf7c..9e1e19fff 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 @@ -41,7 +41,6 @@ import org.schabi.newpipe.local.subscription.SubscriptionViewModel.SubscriptionS import org.schabi.newpipe.local.subscription.dialog.FeedGroupDialog import org.schabi.newpipe.local.subscription.dialog.FeedGroupReorderDialog import org.schabi.newpipe.local.subscription.item.ChannelItem -import org.schabi.newpipe.local.subscription.item.EmptyPlaceholderItem import org.schabi.newpipe.local.subscription.item.FeedGroupAddNewGridItem import org.schabi.newpipe.local.subscription.item.FeedGroupAddNewItem import org.schabi.newpipe.local.subscription.item.FeedGroupCardGridItem @@ -49,6 +48,7 @@ import org.schabi.newpipe.local.subscription.item.FeedGroupCardItem import org.schabi.newpipe.local.subscription.item.FeedGroupCarouselItem import org.schabi.newpipe.local.subscription.item.GroupsHeader import org.schabi.newpipe.local.subscription.item.Header +import org.schabi.newpipe.local.subscription.item.ImportSubscriptionsHintPlaceholderItem import org.schabi.newpipe.local.subscription.services.SubscriptionsExportService import org.schabi.newpipe.local.subscription.services.SubscriptionsImportService import org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.KEY_MODE @@ -312,7 +312,7 @@ class SubscriptionFragment : BaseStateFragment() { groupAdapter.add(this) } - subscriptionsSection.setPlaceholder(EmptyPlaceholderItem()) + subscriptionsSection.setPlaceholder(ImportSubscriptionsHintPlaceholderItem()) subscriptionsSection.setHideWhenEmpty(true) groupAdapter.add( diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt index 4b3c4ccc0..19c581c08 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt @@ -35,7 +35,7 @@ import org.schabi.newpipe.local.subscription.dialog.FeedGroupDialog.ScreenState. import org.schabi.newpipe.local.subscription.dialog.FeedGroupDialog.ScreenState.SubscriptionsPickerScreen import org.schabi.newpipe.local.subscription.dialog.FeedGroupDialogViewModel.DialogEvent.ProcessingEvent import org.schabi.newpipe.local.subscription.dialog.FeedGroupDialogViewModel.DialogEvent.SuccessEvent -import org.schabi.newpipe.local.subscription.item.EmptyPlaceholderItem +import org.schabi.newpipe.local.subscription.item.ImportSubscriptionsHintPlaceholderItem import org.schabi.newpipe.local.subscription.item.PickerIconItem import org.schabi.newpipe.local.subscription.item.PickerSubscriptionItem import org.schabi.newpipe.util.DeviceUtils @@ -338,7 +338,7 @@ class FeedGroupDialog : DialogFragment(), BackPressable { if (subscriptions.isEmpty()) { subscriptionEmptyFooter.clear() - subscriptionEmptyFooter.add(EmptyPlaceholderItem()) + subscriptionEmptyFooter.add(ImportSubscriptionsHintPlaceholderItem()) } else { subscriptionEmptyFooter.clear() } diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/item/EmptyPlaceholderItem.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/item/ImportSubscriptionsHintPlaceholderItem.kt similarity index 63% rename from app/src/main/java/org/schabi/newpipe/local/subscription/item/EmptyPlaceholderItem.kt rename to app/src/main/java/org/schabi/newpipe/local/subscription/item/ImportSubscriptionsHintPlaceholderItem.kt index 59bef55cf..93b551895 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/item/EmptyPlaceholderItem.kt +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/item/ImportSubscriptionsHintPlaceholderItem.kt @@ -5,8 +5,11 @@ import com.xwray.groupie.viewbinding.BindableItem import org.schabi.newpipe.R import org.schabi.newpipe.databinding.ListEmptyViewBinding -class EmptyPlaceholderItem : BindableItem() { - override fun getLayout(): Int = R.layout.list_empty_view +/** + * When there are no subscriptions, show a hint to the user about how to import subscriptions + */ +class ImportSubscriptionsHintPlaceholderItem : BindableItem() { + override fun getLayout(): Int = R.layout.list_empty_view_subscriptions override fun bind(viewBinding: ListEmptyViewBinding, position: Int) {} override fun getSpanSize(spanCount: Int, position: Int): Int = spanCount override fun initializeViewBinding(view: View) = ListEmptyViewBinding.bind(view) diff --git a/app/src/main/res/layout/list_empty_view_subscriptions.xml b/app/src/main/res/layout/list_empty_view_subscriptions.xml new file mode 100644 index 000000000..31e91129b --- /dev/null +++ b/app/src/main/res/layout/list_empty_view_subscriptions.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 31e1d736d..0980c7be5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -266,6 +266,7 @@ Description No results Nothing here but crickets + Import or export subscriptions from the 3-dot menu Drag to reorder Video Audio From 40225443edfb51754cae4e15163d473be82fc04d Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 4 Dec 2022 19:25:38 +0100 Subject: [PATCH 050/147] Center text in empty views --- app/src/main/res/layout/list_empty_view.xml | 2 ++ app/src/main/res/layout/list_empty_view_subscriptions.xml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/app/src/main/res/layout/list_empty_view.xml b/app/src/main/res/layout/list_empty_view.xml index 91c6b5666..a25042aed 100644 --- a/app/src/main/res/layout/list_empty_view.xml +++ b/app/src/main/res/layout/list_empty_view.xml @@ -19,5 +19,7 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="6dp" + android:gravity="center" + android:paddingHorizontal="16dp" android:text="@string/empty_list_subtitle" /> diff --git a/app/src/main/res/layout/list_empty_view_subscriptions.xml b/app/src/main/res/layout/list_empty_view_subscriptions.xml index 31e91129b..74a5eced4 100644 --- a/app/src/main/res/layout/list_empty_view_subscriptions.xml +++ b/app/src/main/res/layout/list_empty_view_subscriptions.xml @@ -19,5 +19,7 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="6dp" + android:gravity="center" + android:paddingHorizontal="16dp" android:text="@string/import_subscriptions_hint" /> From 0923594e51b4300faade4bce79e49793377be3b1 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Sun, 4 Dec 2022 20:35:06 +0100 Subject: [PATCH 051/147] Added option to download items in the queue --- .../java/org/schabi/newpipe/QueueItemMenuUtil.java | 12 ++++++++++++ app/src/main/res/menu/menu_play_queue_item.xml | 3 +++ 2 files changed, 15 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java index 7c646d0e4..66c19f86d 100644 --- a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java +++ b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java @@ -1,5 +1,6 @@ package org.schabi.newpipe; +import static org.schabi.newpipe.util.SparseItemUtil.fetchStreamInfoAndSaveToDatabase; import static org.schabi.newpipe.util.external_communication.ShareUtils.shareText; import android.content.Context; @@ -7,9 +8,11 @@ import android.view.ContextThemeWrapper; import android.view.View; import android.widget.PopupMenu; +import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.FragmentManager; import org.schabi.newpipe.database.stream.model.StreamEntity; +import org.schabi.newpipe.download.DownloadDialog; import org.schabi.newpipe.local.dialog.PlaylistDialog; import org.schabi.newpipe.player.playqueue.PlayQueue; import org.schabi.newpipe.player.playqueue.PlayQueueItem; @@ -75,6 +78,15 @@ public final class QueueItemMenuUtil { shareText(context, item.getTitle(), item.getUrl(), item.getThumbnailUrl()); return true; + case R.id.menu_item_download: + fetchStreamInfoAndSaveToDatabase(context, item.getServiceId(), + item.getUrl(), info -> { + final DownloadDialog downloadDialog = new DownloadDialog(context, + info); + downloadDialog.show(((AppCompatActivity) context) + .getSupportFragmentManager(), "downloadDialog"); + }); + return true; } return false; }); diff --git a/app/src/main/res/menu/menu_play_queue_item.xml b/app/src/main/res/menu/menu_play_queue_item.xml index b23f8008f..00c63e1e0 100644 --- a/app/src/main/res/menu/menu_play_queue_item.xml +++ b/app/src/main/res/menu/menu_play_queue_item.xml @@ -16,4 +16,7 @@ + \ No newline at end of file From 86ee94eb04de41ec8beba177baef6ab4c9dabf24 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 28 Sep 2022 14:25:19 +0200 Subject: [PATCH 052/147] show subscriber count on player page --- .../fragments/detail/VideoDetailFragment.java | 31 +++++++++++++++---- .../fragment_video_detail.xml | 1 - .../main/res/layout/fragment_video_detail.xml | 1 - 3 files changed, 25 insertions(+), 8 deletions(-) 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 7078ecffb..bf0b63e4b 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 @@ -1561,9 +1561,9 @@ public final class VideoDetailFragment binding.detailSubChannelThumbnailView.setVisibility(View.GONE); if (!isEmpty(info.getSubChannelName())) { - displayBothUploaderAndSubChannel(info); + displayBothUploaderAndSubChannel(info, activity); } else if (!isEmpty(info.getUploaderName())) { - displayUploaderAsSubChannel(info); + displayUploaderAsSubChannel(info, activity); } else { binding.detailUploaderTextView.setVisibility(View.GONE); binding.detailUploaderThumbnailView.setVisibility(View.GONE); @@ -1676,23 +1676,42 @@ public final class VideoDetailFragment noVideoStreams ? R.drawable.ic_headset_shadow : R.drawable.ic_play_arrow_shadow); } - private void displayUploaderAsSubChannel(final StreamInfo info) { + private void displayUploaderAsSubChannel(final StreamInfo info, final Context context) { binding.detailSubChannelTextView.setText(info.getUploaderName()); binding.detailSubChannelTextView.setVisibility(View.VISIBLE); binding.detailSubChannelTextView.setSelected(true); - binding.detailUploaderTextView.setVisibility(View.GONE); + + if (info.getUploaderSubscriberCount() > -1) { + binding.detailUploaderTextView.setText( + Localization.shortSubscriberCount(context, info.getUploaderSubscriberCount())); + binding.detailUploaderTextView.setVisibility(View.VISIBLE); + } else { + binding.detailUploaderTextView.setVisibility(View.GONE); + } } - private void displayBothUploaderAndSubChannel(final StreamInfo info) { + private void displayBothUploaderAndSubChannel(final StreamInfo info, final Context context) { binding.detailSubChannelTextView.setText(info.getSubChannelName()); binding.detailSubChannelTextView.setVisibility(View.VISIBLE); binding.detailSubChannelTextView.setSelected(true); binding.detailSubChannelThumbnailView.setVisibility(View.VISIBLE); + final StringBuilder subText = new StringBuilder(); if (!isEmpty(info.getUploaderName())) { - binding.detailUploaderTextView.setText( + subText.append( String.format(getString(R.string.video_detail_by), info.getUploaderName())); + } + if (info.getUploaderSubscriberCount() > -1) { + if (subText.length() > 0) { + subText.append(Localization.DOT_SEPARATOR); + } + subText.append( + Localization.shortSubscriberCount(context, info.getUploaderSubscriberCount())); + } + + if (subText.length() > 0) { + binding.detailUploaderTextView.setText(subText); binding.detailUploaderTextView.setVisibility(View.VISIBLE); binding.detailUploaderTextView.setSelected(true); } else { diff --git a/app/src/main/res/layout-large-land/fragment_video_detail.xml b/app/src/main/res/layout-large-land/fragment_video_detail.xml index c7b77ee9a..c2e02d6ea 100644 --- a/app/src/main/res/layout-large-land/fragment_video_detail.xml +++ b/app/src/main/res/layout-large-land/fragment_video_detail.xml @@ -321,7 +321,6 @@ android:singleLine="true" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="@dimen/video_item_detail_uploader_text_size" - android:textStyle="bold" tools:ignore="RtlHardcoded" tools:text="Uploader" /> diff --git a/app/src/main/res/layout/fragment_video_detail.xml b/app/src/main/res/layout/fragment_video_detail.xml index b407c5ca7..a93631b34 100644 --- a/app/src/main/res/layout/fragment_video_detail.xml +++ b/app/src/main/res/layout/fragment_video_detail.xml @@ -308,7 +308,6 @@ android:singleLine="true" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="@dimen/video_item_detail_uploader_text_size" - android:textStyle="bold" tools:ignore="RtlHardcoded" tools:text="Uploader" /> From 0df696739fa38c6457555272268f8e90339ad1d7 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 4 Dec 2022 20:45:06 +0100 Subject: [PATCH 053/147] Make subscribers in video detail fragment dimmer --- app/src/main/res/layout-large-land/fragment_video_detail.xml | 1 - app/src/main/res/layout/fragment_video_detail.xml | 1 - 2 files changed, 2 deletions(-) diff --git a/app/src/main/res/layout-large-land/fragment_video_detail.xml b/app/src/main/res/layout-large-land/fragment_video_detail.xml index c2e02d6ea..9fdede902 100644 --- a/app/src/main/res/layout-large-land/fragment_video_detail.xml +++ b/app/src/main/res/layout-large-land/fragment_video_detail.xml @@ -319,7 +319,6 @@ android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" - android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="@dimen/video_item_detail_uploader_text_size" tools:ignore="RtlHardcoded" tools:text="Uploader" /> diff --git a/app/src/main/res/layout/fragment_video_detail.xml b/app/src/main/res/layout/fragment_video_detail.xml index a93631b34..438c618ef 100644 --- a/app/src/main/res/layout/fragment_video_detail.xml +++ b/app/src/main/res/layout/fragment_video_detail.xml @@ -306,7 +306,6 @@ android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" - android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="@dimen/video_item_detail_uploader_text_size" tools:ignore="RtlHardcoded" tools:text="Uploader" /> From a4c9e0a35e9e9d82babef8e007e71f55f4414384 Mon Sep 17 00:00:00 2001 From: Daniel Gray Date: Mon, 5 Dec 2022 04:02:21 +0000 Subject: [PATCH 054/147] Remove dead Privacy Tools instance (#9504) --- app/src/main/AndroidManifest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index be14274aa..3ca19e8c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -337,7 +337,6 @@ - From 5fc85fa2e01ef95cffd59571a2c500d661354653 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Mon, 5 Dec 2022 21:21:46 +0100 Subject: [PATCH 055/147] Implemented suggestions --- .../schabi/newpipe/settings/AppearanceSettingsFragment.java | 3 ++- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java index 72ce0f201..ef0e8670c 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java @@ -48,7 +48,8 @@ public class AppearanceSettingsFragment extends BasePreferenceFragment { final Preference preference = findPreference(nightThemeKey); if (preference != null) { preference.setEnabled(false); - preference.setSummary(getString(R.string.night_theme_available)); + preference.setSummary(getString(R.string.night_theme_available, + getString(R.string.auto_device_theme_title))); } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 68f5f67a4..d4172ff36 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -714,7 +714,7 @@ Automatic (device theme) Select your favorite night theme — %s You can select your favorite night theme below - This option is only available if Automatic (Device Theme) is selected for Theme + This option is only available if %s is selected for Theme Download has started You can now select text inside the description. Note that the page may flicker and links may not be clickable while in selection mode. Enable selecting text in the description From 10a5741f36e0fa8c3d806a6a64c1584f06b4ef40 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Wed, 7 Dec 2022 02:32:53 +0100 Subject: [PATCH 056/147] Tried to implement the feature --- .../playlist/model/PlaylistEntity.java | 18 ++++++- .../local/bookmark/BookmarkFragment.java | 53 ++++++++++++------- .../local/dialog/PlaylistAppendDialog.java | 2 +- .../local/playlist/LocalPlaylistFragment.java | 26 +++++---- .../local/playlist/LocalPlaylistManager.java | 18 ++++--- app/src/main/res/values/strings.xml | 2 + 6 files changed, 80 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java b/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java index 37e79f060..a04a284da 100644 --- a/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java +++ b/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java @@ -15,7 +15,7 @@ public class PlaylistEntity { public static final String PLAYLIST_ID = "uid"; public static final String PLAYLIST_NAME = "name"; public static final String PLAYLIST_THUMBNAIL_URL = "thumbnail_url"; - //TODO: add field + public static final String PLAYLIST_THUMBNAIL_SET = "isThumbnailSet"; @PrimaryKey(autoGenerate = true) @ColumnInfo(name = PLAYLIST_ID) @@ -27,9 +27,14 @@ public class PlaylistEntity { @ColumnInfo(name = PLAYLIST_THUMBNAIL_URL) private String thumbnailUrl; - public PlaylistEntity(final String name, final String thumbnailUrl) { + @ColumnInfo(name = PLAYLIST_THUMBNAIL_SET) + private boolean isThumbnailSet; + + public PlaylistEntity(final String name, final String thumbnailUrl, + final boolean isThumbnailSet) { this.name = name; this.thumbnailUrl = thumbnailUrl; + this.isThumbnailSet = isThumbnailSet; } public long getUid() { @@ -55,4 +60,13 @@ public class PlaylistEntity { public void setThumbnailUrl(final String thumbnailUrl) { this.thumbnailUrl = thumbnailUrl; } + + public boolean getIsThumbnailSet() { + return isThumbnailSet; + } + + public void setIsThumbnailSet(final boolean isThumbnailSet) { + this.isThumbnailSet = isThumbnailSet; + } + } diff --git a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java index 2170f7d97..65db40d16 100644 --- a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java @@ -8,6 +8,8 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -24,7 +26,6 @@ import org.schabi.newpipe.database.playlist.PlaylistLocalItem; import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry; import org.schabi.newpipe.database.playlist.model.PlaylistRemoteEntity; import org.schabi.newpipe.databinding.DialogEditTextBinding; -import org.schabi.newpipe.databinding.DialogTitleBinding; import org.schabi.newpipe.error.ErrorInfo; import org.schabi.newpipe.error.UserAction; import org.schabi.newpipe.local.BaseLocalListFragment; @@ -258,32 +259,51 @@ public final class BookmarkFragment extends BaseLocalListFragment arrayAdapter = new ArrayAdapter<>(getContext(), + android.R.layout.simple_list_item_1) { + @Override + public View getView(final int position, final View convertView, + final ViewGroup parent) { + final View v = super.getView(position, convertView, parent); + final TextView textView = v.findViewById(android.R.id.text1); - final DialogTitleBinding dialogBinding = - DialogTitleBinding.inflate(LayoutInflater.from(requireContext())); + if (!isPlaylistThumbnailSet && position == 2) { + textView.setEnabled(false); + return v; + } - dialogBinding.itemRoot.setVisibility(View.GONE); - dialogBinding.itemTitleView.setVisibility(View.GONE); - dialogBinding.itemAdditionalDetails.setVisibility(View.GONE); - final String[] items = new String[]{"Delete", "Rename", "Thumbnail"}; - final DialogInterface.OnClickListener action = (d, index) -> { + textView.setEnabled(true); + return v; + } + }; + arrayAdapter.addAll(getString(R.string.rename), getString(R.string.delete), + getString(R.string.unset_playlist_thumbnail)); + + // Rename = 0; Delete = 1; Unset Thumbnail = 2 + final DialogInterface.OnClickListener action = (dialog, index) -> { switch (index) { case 0: showRenameDialog(selectedItem); break; case 1: + showDeleteDialog(selectedItem.name, + localPlaylistManager.deletePlaylist(selectedItem.uid)); + dialog.dismiss(); break; case 2: + if (isPlaylistThumbnailSet) { + final String ur = "drawable://" + R.drawable.placeholder_thumbnail_playlist; + localPlaylistManager.changePlaylistThumbnail(selectedItem.uid, ur, + false).observeOn(AndroidSchedulers.mainThread()).subscribe(); + } break; } }; - //TODO add rename dialog - - final AlertDialog.Builder builder = new AlertDialog.Builder(activity); - - builder.setItems(items, action) + builder.setAdapter(arrayAdapter, action) .create() .show(); } @@ -302,11 +322,6 @@ public final class BookmarkFragment extends BaseLocalListFragment { - showDeleteDialog(selectedItem.name, - localPlaylistManager.deletePlaylist(selectedItem.uid)); - dialog.dismiss(); - }) .create() .show(); } diff --git a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java index 3d5d16c39..88dec3911 100644 --- a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java +++ b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java @@ -134,7 +134,7 @@ public final class PlaylistAppendDialog extends PlaylistDialog { if (playlist.thumbnailUrl .equals("drawable://" + R.drawable.placeholder_thumbnail_playlist)) { playlistDisposables.add(manager - .changePlaylistThumbnail(playlist.uid, streams.get(0).getThumbnailUrl()) + .changePlaylistThumbnail(playlist.uid, streams.get(0).getThumbnailUrl(), false) .observeOn(AndroidSchedulers.mainThread()) .subscribe(ignored -> successToast.show())); } diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index 66e7cbf8f..78e455c78 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -405,8 +405,9 @@ public class LocalPlaylistFragment extends BaseLocalListFragment { // Remove Watched, Functionality data final List notWatchedItems = new ArrayList<>(); + final boolean isThumbnailSet = playlistManager + .getIsPlaylistThumbnailSet(playlistId); boolean thumbnailVideoRemoved = false; - //TODO: add blocker here if (removePartiallyWatched) { for (final var playlistItem : playlist) { @@ -415,7 +416,7 @@ public class LocalPlaylistFragment extends BaseLocalListFragment successToast.show(), throwable -> showError(new ErrorInfo(throwable, UserAction.REQUESTED_BOOKMARK, @@ -612,8 +612,11 @@ public class LocalPlaylistFragment extends BaseLocalListFragment - changeThumbnailUrl(item.getStreamEntity().getThumbnailUrl())) + changeThumbnailUrl(item.getStreamEntity().getThumbnailUrl(), + true)) .setAction( StreamDialogDefaultEntry.DELETE, (f, i) -> deleteItem(item)) diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java index 33296aa84..2510b284d 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java @@ -41,7 +41,7 @@ public class LocalPlaylistManager { } final StreamEntity defaultStream = streams.get(0); final PlaylistEntity newPlaylist = - new PlaylistEntity(name, defaultStream.getThumbnailUrl()); + new PlaylistEntity(name, defaultStream.getThumbnailUrl(), false); return Maybe.fromCallable(() -> database.runInTransaction(() -> upsertStreams(playlistTable.insert(newPlaylist), streams, 0)) @@ -96,24 +96,29 @@ public class LocalPlaylistManager { } public Maybe renamePlaylist(final long playlistId, final String name) { - return modifyPlaylist(playlistId, name, null); + return modifyPlaylist(playlistId, name, null, false); } public Maybe changePlaylistThumbnail(final long playlistId, - final String thumbnailUrl) { - return modifyPlaylist(playlistId, null, thumbnailUrl); + final String thumbnailUrl, + final boolean isPermanent) { + return modifyPlaylist(playlistId, null, thumbnailUrl, isPermanent); } public String getPlaylistThumbnail(final long playlistId) { return playlistTable.getPlaylist(playlistId).blockingFirst().get(0).getThumbnailUrl(); } + public boolean getIsPlaylistThumbnailSet(final long playlistId) { + return playlistTable.getPlaylist(playlistId).blockingFirst().get(0).getIsThumbnailSet(); + } + private Maybe modifyPlaylist(final long playlistId, @Nullable final String name, - @Nullable final String thumbnailUrl) { + @Nullable final String thumbnailUrl, + final boolean isPermanent) { return playlistTable.getPlaylist(playlistId) .firstElement() - .filter(playlistEntities -> !playlistEntities.isEmpty()) .map(playlistEntities -> { final PlaylistEntity playlist = playlistEntities.get(0); if (name != null) { @@ -121,6 +126,7 @@ public class LocalPlaylistManager { } if (thumbnailUrl != null) { playlist.setThumbnailUrl(thumbnailUrl); + playlist.setIsThumbnailSet(isPermanent); } return playlistTable.update(playlist); }).subscribeOn(Schedulers.io()); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3fa37155a..b79bb2815 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,6 +7,7 @@ Install Cancel OK + Yes Open in browser Mark as watched Open in popup mode @@ -438,6 +439,7 @@ Mute Unmute Set as playlist thumbnail + Unset thumbnail Bookmark Playlist Remove Bookmark Delete this playlist\? From 8edfafcf09dd734a401efe50da3c44a5b5e6d114 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Thu, 8 Dec 2022 22:43:11 +0100 Subject: [PATCH 057/147] Translated using Weblate (Spanish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (Persian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Esperanto) Currently translated at 74.3% (482 of 648 strings) Translated using Weblate (German) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Hindi) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Russian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (French) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (German) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (German) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Odia) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Galician) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Hindi) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Hebrew) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Polish) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Arabic) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Czech) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Italian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (German) Currently translated at 99.8% (647 of 648 strings) Translated using Weblate (Greek) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Greek) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Greek) Currently translated at 99.6% (646 of 648 strings) Co-authored-by: Agnieszka C Co-authored-by: BMN Co-authored-by: C. Rüdinger Co-authored-by: Danial Behzadi Co-authored-by: Eric Co-authored-by: Fjuro Co-authored-by: Florian Co-authored-by: GET100PERCENT Co-authored-by: Gediminas Murauskas Co-authored-by: Hosted Weblate Co-authored-by: Igor Nedoboy Co-authored-by: Ihor Hordiichuk Co-authored-by: Jeff Huang Co-authored-by: Linerly Co-authored-by: Nidi Co-authored-by: Oğuz Ersen Co-authored-by: Priit Jõerüüt Co-authored-by: Retrial Co-authored-by: Rex_sa Co-authored-by: Ricardo Co-authored-by: SC Co-authored-by: ShareASmile Co-authored-by: Skarvinius Co-authored-by: Vasilis K Co-authored-by: Yaron Shahrabani Co-authored-by: argonfilm Co-authored-by: gallegonovato Co-authored-by: nautilusx Co-authored-by: pjammo Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/ Translation: NewPipe/Metadata --- app/src/main/res/values-ar/strings.xml | 4 ++ app/src/main/res/values-az/strings.xml | 4 ++ app/src/main/res/values-cs/strings.xml | 4 ++ app/src/main/res/values-de/strings.xml | 8 ++- app/src/main/res/values-el/strings.xml | 4 ++ app/src/main/res/values-eo/strings.xml | 9 ++-- app/src/main/res/values-es/strings.xml | 6 ++- app/src/main/res/values-et/strings.xml | 8 ++- app/src/main/res/values-fa/strings.xml | 4 ++ app/src/main/res/values-fr/strings.xml | 4 ++ app/src/main/res/values-gl/strings.xml | 4 ++ app/src/main/res/values-he/strings.xml | 4 ++ app/src/main/res/values-hi/strings.xml | 50 ++++++++++--------- app/src/main/res/values-in/strings.xml | 5 +- app/src/main/res/values-it/strings.xml | 4 ++ app/src/main/res/values-lt/strings.xml | 4 ++ app/src/main/res/values-or/strings.xml | 5 ++ app/src/main/res/values-pa/strings.xml | 30 ++++++----- app/src/main/res/values-pl/strings.xml | 44 ++++++++-------- app/src/main/res/values-pt-rBR/strings.xml | 4 ++ app/src/main/res/values-pt/strings.xml | 4 ++ app/src/main/res/values-ru/strings.xml | 6 ++- app/src/main/res/values-sv/strings.xml | 4 ++ app/src/main/res/values-tr/strings.xml | 5 ++ app/src/main/res/values-uk/strings.xml | 4 ++ app/src/main/res/values-zh-rCN/strings.xml | 4 ++ app/src/main/res/values-zh-rTW/strings.xml | 4 ++ .../metadata/android/es/changelogs/991.txt | 2 +- 28 files changed, 175 insertions(+), 67 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 9226a6870..d7bbcd9c0 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -774,4 +774,8 @@ إذا كنت تواجه مشكلة في استخدام التطبيق ، فتأكد من مراجعة هذه الإجابات للأسئلة الشائعة! مشاهدة على الموقع فرز + أنت تقوم بتشغيل أحدث إصدار من NewPipe + انقر للتنزيل %s + الوضع السريع + استيراد الاشتراكات أو تصديرها من القائمة المكونة من 3 نقاط \ No newline at end of file diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 8b5d449dc..a4491688f 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -722,4 +722,8 @@ Tez-tez soruşulan suallar Veb Saytında bax Çeşidlə + NewPipe\'ın ən son versiyasın işlədirsiniz + Sürətli rejim + 3 nöqtə menyudan abunələri idxal və ya ixrac et + %s endirmək üçün toxun \ No newline at end of file diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 3f503ab09..fdbc81d43 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -735,4 +735,8 @@ Pokud máte potíže s používáním aplikace, přečtěte si tyto odpovědi na časté otázky! Zobrazit na webu Řazení + Klepnutím stáhnete %s + Rychlý režim + Používáte nejnovější verzi NewPipe + Import nebo export odběrů z 3-tečkové nabídky \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 951818721..7d8e64475 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -568,12 +568,12 @@ Überschreiben der Warteschlange bestätigen Die aktive Player-Warteschlange wird ersetzt Eingereiht - YouTube bietet einen „Eingeschränkten Modus“, der potenzielle Inhalte für Erwachsene ausblendet + YouTube bietet einen „Eingeschränkten Modus“, der potenziell nicht jugendfreie Inhalte ausblendet Speicherlecks anzeigen Lösche Cookies, die NewPipe speichert, wenn du ein reCAPTCHA löst reCAPTCHA-Cookies wurden gelöscht reCAPTCHA-Cookies löschen - Zeige altersbeschränkte Inhalte (bspw. 18+), welche möglicherweise unpassend für Kinder sein könnten + Inhalte mit Altersbegrenzung (z. B. ab 18) anzeigen, die für Kinder möglicherweise ungeeignet sind In Wiedergabe einreihen Android kann die Farbe der Benachrichtigung entsprechend der Hauptfarbe in der Miniaturansicht anpassen (beachte, dass dies nicht auf allen Geräten verfügbar ist) Benachrichtigung farblich anpassen @@ -722,4 +722,8 @@ Häufig gestellte Fragen Wenn du Probleme bei der Verwendung der App hast, lies bitte die Antworten auf häufig gestellte Fragen! Sortieren + Schneller Modus + Du verwendest die neueste Version von NewPipe + Antippen um %s herunterzuladen + Importieren oder Exportieren von Abonnements über das 3-Punkte-Menü \ No newline at end of file diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 7013ab88e..ae9571aa1 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -722,4 +722,8 @@ Προβολή στην ιστοσελίδα Εάν αντιμετωπίζετε προβλήματα με τη χρήση της εφαρμογής, φροντίστε να ελέγξετε αυτές τις απαντήσεις σε συνήθεις ερωτήσεις! Ταξινόμηση + Γρήγορη λειτουργία + Εισάγετε ή εξάγετε συνδρομές από το μενού 3 κουκκίδων + Πατήστε για λήψη %s + Έχετε την πιο πρόσφατη έκδοση του NewPipe \ No newline at end of file diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index 287b94107..f82244246 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -214,7 +214,7 @@ Ekstera konservejo malhavebla Elŝuti al ekstera SD-karto ne eblas. Ĉu vi volas restarigi la elŝutan dosierujon \? viciĝita - Atendovico + Envicigi Halti Maksimuma nombro de provoj Maksimuma nombro de provoj antaŭ fordecidi la elŝuton @@ -513,7 +513,7 @@ Malhela etoso farbi sciigon Alŝuto - Skali bildeton ĝis 1:1 proportio + Stuci bildeton ĝis 1:1 proportio Malŝatita Ŝaltita Etikedoj @@ -538,7 +538,7 @@ Priskribo Komentoj Montri priskribon - Skali la bildeto de la video en la sciigo inter 16:9 kaj 1:1 propocio (povas kaŭzi distordo) + Stuci la bildeton de la video en la sciigo de 16:9 ĝis 1:1 propocio Montri metadatumojn Marki spektita Malŝatu por kaŝi metadatumujojn kio havas aldonajn informojn pri la elsendfluisto, enhavo de la fluo, aŭ serĉpto @@ -551,4 +551,7 @@ Dua agobutono Tria agobutono Kvara agobutono + Kraŝi la ludilo + Envicigita + Envicigi \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 48617edfb..48e96ebec 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -48,7 +48,7 @@ Miniatura del avatar del usuario Contenido Mostrar contenido con restricción de edad - Toque la lupa para comenzar. + Pulsa la lupa para empezar. En directo Descargas Descargas @@ -738,4 +738,8 @@ Preguntas frecuentes Si tienes problemas al usar la aplicación, ¡Asegúrate de verificar estas respuestas a preguntas comunes! Ordenar + Modo rápido + Importa o exporta las suscripciones desde el menú con los tres puntos + Está ejecutando la última versión de NewPipe + Pulsa para descargar %s \ No newline at end of file diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 3a58f851d..7f2691b77 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -187,7 +187,7 @@ Lõimed Viga NewPipe allalaadimine - Puuduta üksikasjade nägemiseks + Üksikasjade nägemiseks toksa Palun oota… Kopeeriti lõikepuhvrisse Vali määra allalaadimiste kataloog hiljem sätetes @@ -668,7 +668,7 @@ Uued andmevoo kirjed Näita „Jooksuta meediamängija kokku“ nupukest Näitab valikut meediamängija kokkujooksutamiseks - NewPipe töös tekkis viga, sellest teavitamiseks klõpsi + NewPipe töös tekkis viga, sellest teavitamiseks toksa Jooksuta meediamängija kokku Näita veateate akent Teavitus vigadest @@ -722,4 +722,8 @@ Kui sul tekib selle rakenduse kasutamisel probleeme, siis esmalt vaata, kas vastus leidub korduma kippuvate küsimuste hulgas! Edasi loe veebisaidist Sortimine + %s allalaadimiseks toksa + Kiirrežiim + Tellimusi saad importida või eksportida 3 punktiga menüüst + Sa kasutad NewPipe\'i uusimat versiooni \ No newline at end of file diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index c331a8ba0..123c3b201 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -722,4 +722,8 @@ اگر حین استفاده از اپ مشکلی دارید، حتما پاسخ‌ها به سوالات متداول را بررسی کنید! نمایش در وبسایت ترتیب + درون یا برون ریزی اشتراک‌ها از فهرست سه‌نقطه‌ای + حالت سریع + ضربه برای بارگیری %s + از جدیدترین نگارش نیوپایپ استفاده می‌کنید \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index c8cb266d9..d9cfaa8e9 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -737,4 +737,8 @@ Voir sur le site web Si vous avez des difficultés à utiliser l\'application, consultez les réponses aux questions les plus fréquentes ! Trier + Mode rapide + Importer ou exporter des abonnements à partir du menu + Vous utilisez la dernière version de NewPipe + Appuyez pour télécharger %s \ No newline at end of file diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 8d7b91df1..fcabbd95b 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -722,4 +722,8 @@ Preguntas máis frecuentes Se tes problemas para usala aplicación, asegúrate de consultar estas respostas ás preguntas comúns! Ordenar + Modo rápido + Estás executandola última versión de NewPipe + Toca para descargar %s + Importa ou exporta subscricións dende o menú dos 3 puntos \ No newline at end of file diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 6097e169c..6d21a5943 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -748,4 +748,8 @@ הצגה באתר תשובות לשאלות נפוצות אם נתקלת בתקלות כשניסית להשתמש ביישומון, כדאי לעיין בתשובות לשאלות הנפוצות! + ניתן לייבא או לייצא מינויים מתפריט 3 הנקודות + נגיעה כאן תוריד את %s + מצב מהיר + זאת הגרסה העדכנית ביותר של NewPipe \ No newline at end of file diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index c9d271c75..df6d3f3d3 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -9,9 +9,9 @@ डाउनलोड करे खोजें सेटिंग्स - सदस्यता लें - सदस्य है - चैनल सदस्यता हटाई गई + सब्सक्राइब करें + सब्सक्राइब है + चैनल अनसब्सक्राईब हुआ सब्सक्रिप्शनस बैकग्राउंड पॉपअप @@ -44,8 +44,8 @@ कोई दूसरा विडियो चालक प्रयोग करें कुछ विडियो गुणवत्ता स्तर पर ध्वनि हट सकती है कोई दूसरा ध्वनि चालक उपयोग करें - सदस्यता बदला नहीं जा सका - सदस्यता अपडेट नहीं किया जा सका + सब्सक्रिप्शन बदली नहीं जा सकी + सब्सक्रिप्शन अपडेट नहीं किया जा सका देखे की क्या नया है वीडियो डाउनलोड का फ़ोल्डर डाउनलोड की गई वीडियो फ़ाइलें यहां संग्रहीत हैं @@ -75,8 +75,8 @@ प्लेबैक फिर से शुरू करें रूकावटे खत्म होने के बाद विडियो प्ले करे (जैसे - फ़ोन कॉल) \'अगला\' और \'समान\' वीडियो दिखाए - \"कतार में जोड़ने के लिए स्पर्श बनाये रखें\" दिखाए - जब बैकग्राउंड और पॉपअप बटन विडियो के विवरण पन्ने में दबाई जाए तो tip को दिखाए + \"कतार में जोड़ने के लिए स्पर्श बनाये रखें\" दिखाएं + जब बैकग्राउंड और पॉपअप बटन विडियो के विवरण पन्ने में दबाई जाए तो सलाह दिखाएं असमर्थित URL डिफ़ॉल्ट विषय की भाषा प्लेयर @@ -123,17 +123,17 @@ पसंद नापसंद कोई परिणाम नहीं मिला - यंहा कुछ नहीं है + यहां के खालीपन को दूर करने के लिए कुछ सर्च करें या किसी चैनल को सब्सक्राइब करें विडियो ऑडियो फिर से कोशिश करे हज़ार करोड़ अरब - कोई भी सदस्य नहीं है + कोई सब्सक्राइबर नहीं है - %s सदस्य - %s सदस्यो + %s सब्सक्राइबर + %s सब्सक्राइबर %s दर्शक @@ -161,11 +161,11 @@ reCAPTCHA चुनौती reCAPTCHA चुनौती का अनुरोध किया डाउनलोड - फाइल के नाम के लिए आवश्यक characters(जैसे - १२३, abc) की अनुमति है - अमान्य characters इस value से बदल जायेंगे + फाइल के नाम के लिए आवश्यक कैरेक्टर (जैसे - १२३, abc) की अनुमति है + अमान्य कैरेक्टर्स इस संख्या से बदल जायेंगे रिप्लेसमेंट करैक्टर वर्ण और अंक - विशेष वर्ण + विशेष कैरेक्टर्स %2$s के द्वारा © %1$s जो %3$s के अधीन आते है एंड्राइड के लिए हल्का और मुफ्त स्ट्रीमिंग एप्लिकेशन। अगर आपके पास कोई सुझाव हो जैसे -अनुवाद , डिजाईन में बदलाव ,code को साफ़ रखना , या फिर code में जायदा बदलाव लाना हो तो - साहयता के लिए आपका स्वागत है . जितना ज्यादा होगा उतना बेहतर होगा ! @@ -188,7 +188,7 @@ स्ट्रीम फाइल डाउनलोड करें जानकारी दिखाएं बुकमार्क किये गए प्लेलिस्टस - इसमें जोड़ें + में शामिल करें डिफ़ॉल्ट देश का विषय हमेशा के लिए सिर्फ एक बार के लिए @@ -236,7 +236,7 @@ प्लेलिस्ट को हटाना चाहते हैं\? सूची बना दी गई प्लेलिस्ट में जोड़ा गया - प्लेलिस्ट का थंबनेल बदल दिया गया है। + प्लेलिस्ट का थंमनेल बदल दिया गया है। कोई अनुशीर्षक नहीं है फिट भरें @@ -245,7 +245,7 @@ ऑटो-जनरेटेड हीप डंप करने के दौरान मेमोरी लीक मॉनिटरिंग ऐप को अनुत्तरदायी बना सकता है Out-of-Lifecycle त्रुटियों की रिपोर्ट करें - थंबनेल लोड करें + थंमनेल लोड करें तेज और अनिश्चित तलाश का प्रयोग करें अनिश्चित खोज से प्लेयर में कम सटीकता से लेकिन तेजी से वीडियो पोजीशन्स की तलाश कर सकता हैं। 5,15 या 25 सेकंड की तलाश में यह काम नहीं करता थंमनेल लोड करने, डेटा और मेमोरी उपयोग को रोकने के लिए बंद करें। इन-मेमोरी और ऑन-डिस्क छवि कैश दोनों को बदलता है @@ -324,7 +324,7 @@ पृष्ठभूमि प्लेयर में बदले पॉप अप प्लेयर में बदले न्यूपाइप एक काॅपीलेफ़्ट फ़्री साॅफ़्टवेर है: इसे आप अपनी इच्छा के अनुसार इस्तेमाल, जाँच, बाँट तथा और बेहतर बना सकते है। खास तौर पर आप इसे फ़्री साॅफ़्टवेर फ़ाउंडेशन के द्वारा जारी जीएनयू जनरल पब्लिक लाइसेंस के तीसरे या उसके बाद आने वाले कोई भी वर्णन के शर्तों के मुताबिक फिर से बाँट या बदल सकते हैं। - सदस्यता हटाए + अनसब्सक्राईब करें टैब चुने ध्वनि नियंत्रण इशारा कतारबद्ध करें @@ -395,7 +395,7 @@ एक ही समय में एक डाउनलोड चलेगा डाउनलोड प्रारंभ करें डाउनलोड रोकें - डोलोड कहाँ करने के लिए पूछे + डाउनलोड कहाँ करने के लिए पूछे आपको हर डाउनलोड का स्थान पूछा जाएगा \nयदि आप बाहरी एसडी कार्ड में डाउनलोड करना चाहते हैं तो सिस्टम फोल्डर पिकर (SAF) को सक्षम करें सिस्टम फोल्डर पिकर (एसएएफ) का प्रयोग करें @@ -448,7 +448,7 @@ यह सामग्री फिलहाल NewPipe सपोर्ट नहीं करता है। \n \nइसे आशा से भविष्य के संस्करणों में सपोर्ट किया जायेगा। - चैनल का अवतार थंबनेल + चैनल का अवतार थंमनेल %s के द्वारा %s के द्वारा बनाया गया प्लेलिस्ट पृष्ठ @@ -472,7 +472,7 @@ अपने आप कतार में जोड़े कतार को मिटाने से पहले सत्यापन के लिए पूछें तलाश अवधि फास्ट-फ़ॉरवर्ड /- रिवाइंड करे - एंड्रॉइड को थंबनेल में मुख्य रंग के अनुसार अधिसूचना रंग को अनुकूलित करें (ध्यान दें कि यह सभी उपकरणों पर उपलब्ध नहीं है) + एंड्रॉइड को थंमनेल में मुख्य रंग के अनुसार अधिसूचना रंग को अनुकूलित करें (ध्यान दें कि यह सभी उपकरणों पर उपलब्ध नहीं है) सूचनापत्र को रंगीन करें कुछ नहीं बफरिंग @@ -522,7 +522,7 @@ विडीओ हैशिंग की प्रगति की सूचना वीडियो हैश अधिसूचना स्ट्रीम निर्माता, स्ट्रीम सामग्री या खोज अनुरोध के बारे में अतिरिक्त जानकारी के साथ मेटा जानकारी बक्से को छिपाने के लिए बंद करें - Meta जानकारी दिखाएँ + मेटा जानकारी दिखाएँ वीडियो का विवरण और अतिरिक्त जानकारी छिपाने के लिए इसे बंद करें विवरण दिखाएं सक्रिय चालक की क़तार बदल दी जाएगी @@ -589,7 +589,7 @@ कोई भी नेटवर्क अपडेट के लिए जाँच करें निम्न गुणवत्ता (छोटा) - सीकबार थंबनेल पूर्वावलोकन + सीकबार थंमनेल पूर्वावलोकन उच्च गुणवत्ता (बड़ा) अपडेट्स के लिए जांच हो रही है… ठीक हो रहा है @@ -722,4 +722,8 @@ %1$s डाउनलोड हटाए गए क्रमबद्ध करें + तेज मोड + 3-बिंदु वाले मेन्यू से सब्सक्रिप्शनस आयात या निर्यात करें + आप न्यूपाइप का नवीनतम संस्करण चला रहे हैं + %s डाउनलोड करने के लिए टैप करें \ No newline at end of file diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 2b1d84b51..a5b9a3ff2 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -455,7 +455,6 @@ %d detik Karena kendala ExoPlayer, durasi pencarian ditetapkan ke %d detik - %d menit @@ -710,4 +709,8 @@ Jika Anda mengalami masalah menggunakan aplikasi, pastikan untuk melihat jawaban untuk pertanyaan yang umum! Tampilkan di situs web Urutan + Mode cepat + Impor atau ekspor langganan dari menu 3 titik + Anda menjalankan NewPipe versi terkini + Ketuk untuk mengunduh %s \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 82414a524..d2b0d10fe 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -735,4 +735,8 @@ Se riscontri problemi nell\'utilizzo dell\'app, dai un\'occhiata alle risposte delle domande più comuni! Ordina Visualizza sul sito + Recupero veloce + Premi per scaricare %s + L\'ultima versione di NewPipe è già in esecuzione + Importa o esporta iscrizioni dal menu a 3 punti \ No newline at end of file diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 1513680e9..0da729ba8 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -735,4 +735,8 @@ Žiūrėti svetainėje Jei kyla sunkumų naudojantis programėle, būtinai peržiūrėkite šiuos atsakymus į dažniausiai užduodamus klausimus! Rikiuoti + Importuokite arba eksportuokite prenumeratas iš 3 taškelių meniu + Greitasis režimas + Naudojate naujausią „NewPipe“ versiją + Bakstelėkite, kad atsisiųstumėte %s \ No newline at end of file diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index e8f7eb8f8..87190ea75 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -723,4 +723,9 @@ ମୋଟ %s ନୂଆ ଷ୍ଟ୍ରୀମ ସଜାନ୍ତୁ + NewPipe ଅଦ୍ୟତନ ଉପଲବ୍ଧ! + ଦ୍ରୁତ ମୋଡ୍ + 3-ଡଟ୍ ମେନୁରୁ ସଦସ୍ୟତା ଆମଦାନୀ କିମ୍ବା ରପ୍ତାନି କରନ୍ତୁ + ଆପଣ NewPipe ର ସର୍ବଶେଷ ସଂସ୍କରଣ ଚଳାଉଛନ୍ତି + %s ଡାଉନଲୋଡ୍ କରିବାକୁ ଟ୍ୟାପ୍ କରନ୍ତୁ \ No newline at end of file diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 4b0fb71e4..7be904b99 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -29,7 +29,7 @@ ਨਵਾਂ ਕੀ ਹੈ ਬੈਕਗ੍ਰਾਊਂਡ ਆਡੀਓ ਪੌਪ-ਅਪ - ਇਸ ਵਿੱਚ ਜੋੜੋ + ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰੋ ਵੀਡੀਓ ਲਈ ਡਾਊਨਲੋਡ ਫ਼ੋਲਡਰ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਵੀਡਿਓ ਇੱਥੇ ਜਮ੍ਹਾਂ ਹੁੰਦੀਆਂ ਹਨ ਵੀਡੀਓ ਫ਼ਾਈਲਾਂ ਲਈ ਡਾਊਨਲੋਡ ਫ਼ੋਲਡਰ ਚੁਣੋ @@ -129,8 +129,8 @@ ਅਣਚਾਹੀ ਪਲੇਅਰ ਤਰੁੱਟੀ ਆਈ ਹੈ ਪਲੇਅਰ ਤਰੁੱਟੀ ਤੋਂ ਮੁੜ-ਸੁਰਜੀਤ ਹੋ ਰਿਹਾ ਹੈ ਬਾਹਰੀ ਪਲੇਅਰ ਇਸ ਕਿਸਮ ਦੇ ਲਿੰਕਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ - ਕੋਈ ਵੀ ਵੀਡੀਓ ਸਟ੍ਰੀਮ ਨਹੀਂ ਮਿਲੀ - ਕੋਈ ਵੀ ਆਡੀਓ ਸਟ੍ਰੀਮ ਨਹੀਂ ਮਿਲੀ + ਕੋਈ ਵੀਡੀਓ ਸਟ੍ਰੀਮ ਨਹੀਂ ਮਿਲੀ + ਕੋਈ ਆਡੀਓ ਸਟ੍ਰੀਮ ਨਹੀਂ ਮਿਲੀ ਅਜਿਹਾ ਕੋਈ ਫੋਲਡਰ ਨਹੀਂ ਅਜਿਹਾ ਕੋਈ ਫਾਈਲ/ਸਮੱਗਰੀ ਸਰੋਤ ਨਹੀਂ ਹੈ ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਜਾਂ ਇਸ ਨੂੰ ਪੜ੍ਹਨ ਜਾਂ ਲਿਖਣ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ @@ -151,7 +151,7 @@ ਪਸੰਦਾਂ ਨਾਪਸੰਦਾਂ ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ - ਇਥੇ ਦਾ ਸੁੰਨਾਪਨ ਦੂਰ ਕਰਨ ਲਈ ਕੁਝ ਸਰਚ ਕਰੋ ਜਾਂ ਕੋਈ ਚੈਨਲ ਸਬਸਕ੍ਰਾਇਬ ਕਰੋ + ਇਥੇ ਦਾ ਖਾਲੀਪਣ ਦੂਰ ਕਰਨ ਲਈ ਕੁਝ ਸਰਚ ਕਰੋ ਜਾਂ ਕੋਈ ਚੈਨਲ ਸਬਸਕ੍ਰਾਇਬ ਕਰੋ ਮੁੜ-ਕ੍ਰਮਬੱਧ ਕਰਨ ਲਈ ਡਰੈਗ ਕਰੋ ਵੀਡੀਓ ਆਡੀਓ @@ -319,7 +319,7 @@ ਅਸਵੀਕਾਰ ਕੋਈ ਸੀਮਾ ਨਹੀਂ ਮੋਬਾਈਲ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਰੈਜ਼ੋਲੂਸ਼ਨ ਨੂੰ ਸੀਮਿਤ ਕਰੋ - ਐਪ switch ਕਰਨ ਤੇ minimize ਕਰੋ + ਐਪ ਸਵਿੱਚ ਕਰਨ ਤੇ ਮਿਨੀਮਾਈਜ਼ ਕਰੋ ਮੁੱਖ ਵੀਡੀਓ ਪਲੇਅਰ ਤੋਂ ਦੂਜੇ ਐਪ \'ਤੇ ਜਾਣ ਵੇਲ਼ੇ ਕਾਰਵਾਈ — %s ਕੋਈ ਨਹੀਂ ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ ਵਿੱਚ Minimize ਕਰੋ @@ -351,7 +351,7 @@ ਮੁੱਖ ਪੰਨੇ ਤੇ ਕਿਹੜੇ ਟੈਬ ਵਿਖਾਏ ਜਾਣਗੇ ਅਪਡੇਟਾਂ ਜਦੋਂ ਨਵਾਂ ਸੰਸਕਰਣ ਉਪਲਬਧ ਹੁੰਦਾ ਹੈ ਤਾਂ ਐਪ ਅਪਡੇਟ ਨੂੰ ਪੁੱਛਣ ਲਈ ਇੱਕ ਨੋਟੀਫਿਕੇਸ਼ਨ ਦਿਖਾਓ - ਲਿਸਟ view ਮੋਡ + ਲਿਸਟ ਵਿਊ ਮੋਡ ਲਿਸਟ ਗਰਿੱਡ ਆਟੋ @@ -380,8 +380,8 @@ ਰੁੱਕੋ ਵੱਧ ਤੋਂ ਵੱਧ ਕੋਸ਼ਿਸ਼ਾਂ ਡਾਉਨਲੋਡ ਰੱਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਵੱਧ ਤੋਂ ਵੱਧ ਕੋਸ਼ਿਸ਼ਾਂ - Metered ਨੈਟਵਰਕਸ ਤੇ ਰੁਕਾਵਟ - ਮੋਬਾਈਲ ਡਾਟਾ ਤੇ switch ਕਰਨ ਵੇਲੇ ਲਾਭਦਾਇਕ ਹੈ, ਹਾਲਾਂਕਿ ਕੁਝ ਡਾਉਨਲੋਡਾਂ ਨੂੰ suspend ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ + ਮੀਟਰ ਕੀਤੇ ਨੈਟਵਰਕਸ ਤੇ ਰੁਕਾਵਟ + ਮੋਬਾਈਲ ਡਾਟਾ ਤੇ ਸਵਿੱਚ ਕਰਨ ਵੇਲੇ ਲਾਭਦਾਇਕ ਹੈ, ਹਾਲਾਂਕਿ ਕੁਝ ਡਾਉਨਲੋਡਾਂ ਨੂੰ ਮੁਅੱਤਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਇਵੇੰਟਸ ਕਾਨਫਰੰਸਾਂ ਟਿੱਪਣੀਆਂ ਦਿਖਾਓ @@ -408,7 +408,7 @@ ਕੁਨੈਕਸ਼ਨ timeout ਕੀ ਤੁਸੀਂ ਆਪਣਾ ਡਾਊਨਲੋਡ ਇਤਿਹਾਸ ਸਾਫ਼ ਕਰਨਾ ਜਾਂ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ ਮਿਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ\? ਡਾਊਨਲੋਡ ਸੀਮਾ ਕਤਾਰ ਵਿੱਚ - one download will run at the same time + ਇੱਕ ਸਮੇਂ ਤੇ ਇੱਕੋ ਡਾਊਨਲੋਡ ਚੱਲੇਗਾ ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ ਕਰੋ ਡਾਊਨਲੋਡਸ ਰੋਕੋ ਪੁੱਛੋ ਕਿੱਥੇ ਡਾਊਨਲੋਡ ਕਰਨਾ ਹੈ @@ -475,8 +475,8 @@ ਤੁਹਾਡੇ ਡਿਵਾਈਸ ਦੀ ਕੋਈ ਵੀ ਐਪ ਇਸ ਨੂੰ ਖੋਲ੍ਹ ਨਹੀਂ ਸਕਦੀ ਚੈਪਟਰ ਹਾਲੀਆ - ਥਮਨੇਲ ਨੂੰ ਤਾਲਾਬੱਧ ਸਕਰੀਨ ਦੇ ਪਿਛੋਕੜ ਅਤੇ ਇਤਲਾਹਾਂ ਦੋਹਾਂ ਲਈ ਵਰਤੋ - ਥਮਨੇਲ ਵਿਖਾਓ + ਥੰਮਨੇਲ ਨੂੰ ਤਾਲਾਬੱਧ ਸਕਰੀਨ ਦੇ ਪਿਛੋਕੜ ਅਤੇ ਇਤਲਾਹਾਂ ਦੋਹਾਂ ਲਈ ਵਰਤੋ + ਥੰਮਨੇਲ ਵਿਖਾਓ ਪਲੇ-ਸੂਚੀ ਪੰਨਾ %s ਦੁਆਰਾ %s ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ @@ -496,7 +496,7 @@ ਸਿਰਫ਼ ਉਹ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਵਿਖਾਓ ਜੋ ਕਿਸੇ ਗਰੁੱਪ ਵਿੱਚ ਨਹੀਂ ਪਾਈਆਂ ਹੋਈਆਂ ਨਵਾਂ ਕੀ ਤੁਸੀਂ ਇਸ ਗਰੁੱਪ ਨੂੰ ਮਿਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ\? - ਗਰੁੱਪ ਨਾਮ ਖ਼ਾਲੀ ਕਰੋ + ਖ਼ਾਲੀ ਗਰੁੱਪ ਨਾਮ %d ਚੁਣੀ %d ਚੁਣੀਆਂ @@ -641,7 +641,7 @@ ਪਿੰਨ ਕੀਤੀ ਟਿੱਪਣੀ ਅੱਪਡੇਟ ਦੀ ਉਪਲੱਬਧਤਾ ਪਰਖੀ ਜਾ ਰਹੀ… ਵੇਖਿਆ ਜਾ ਚੁੱਕਿਆ ਚਿੰਨਤ ਕਰੋ - ਸੀਕਬਾਰ ਥਮਨੇਲ ਦੀ ਝਲਕ + ਸੀਕਬਾਰ ਥੰਮਨੇਲ ਦੀ ਝਲਕ ਸਮਾਂ-ਅਵਧੀ ਜਦ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਫੀਡ ਦੁਬਾਰਾ ਅੱਪਡੇਟ ਕੀਤੀ ਜਾ ਸਕੇ — %s ਰਚਨਾਕਾਰ ਨੇ ਦਿਲੋਂ ਪਸੰਦ ਕੀਤਾ ਲੋਡ ਅੰਤਰਾਲ ਆਕਾਰ ਬਦਲੋ (ਮੌਜੂਦਾ %s ਤੇ)। ਛੋਟੀ ਸੰਖਿਆ ਵੀਡੀਓ ਜਲਦੀ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਮੱਦਦ ਦੇ ਸਕਦੀ ਹੈ। ਬਦਲਾਅ ਪਲੇਅਰ ਦੁਬਾਰਾ ਚਲਾਉਣ ਤੇ ਹੀ ਹੋਣਗੇ @@ -722,4 +722,8 @@ \nਯੂਟਿਊਬ ਇੱਕ ਅਜਿਹੀ ਸੇਵਾ ਹੈ ਜਿਹੜੀ RSS ਫੀਡ ਜ਼ਰੀਏ ਇਹ ਤੇਜ਼ ਤਰੀਕਾ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ। \n \nਤੁਹਾਡੀ ਚੋਣ ਇਸ ਗੱਲ ਤੇ ਮੁਨੱਸਰ ਕਰਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਗਤੀ ਤੇ ਸਟੀਕਤਾ ਵਿੱਚੋਂ ਕਿਸ ਨੂੰ ਪ੍ਰਾਥਮਿਕਤਾ ਦਿੰਦੇ ਹੋ। + ਤੇਜ ਮੋਡ + 3-ਡੌਟ ਮੀਨੂ ਤੋਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਨੂੰ ਆਯਾਤ ਜਾਂ ਨਿਰਯਾਤ ਕਰੋ + ਤੁਸੀਂ ਨਿਊਪਾਈਪ ਦਾ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਚਲਾ ਰਹੇ ਹੋ + %s ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 3043cb6db..a24be6b94 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -48,7 +48,7 @@ Nie udało się załadować wszystkich miniatur Nie udało się odszyfrować sygnatury URL wideo Nie udało się przetworzyć strony internetowej - Zawartość niedostępna + Treść niedostępna Nie udało się utworzyć menu pobierania Przepraszamy, to nie powinno mieć miejsca. Zgłoś błąd przez e-mail @@ -206,7 +206,7 @@ Odtwarzacz wideo Odtwarzacz w tle Uzyskiwanie informacji… - Ładowanie żądanej zawartości + Ładowanie żądanej treści Pobierz plik strumienia Pokaż informacje Dodaj do @@ -280,12 +280,12 @@ Zaimportuj subskrypcje YouTube z Google Takeout: \n \n1. Przejdź do tego adresu URL: %1$s. -\n2. Zaloguj się, gdy zostaniesz o to poproszony(-na). +\n2. Zaloguj się, gdy zostaniesz o to poproszony(-a). \n3. Naciśnij „Wybrano wszystkie dane z YouTube”, następnie „Odznacz wszystkie”, potem zaznacz tylko „subskrypcje” i naciśnij „OK”. \n4. Naciśnij „Następny krok”, a następnie „Utwórz eksport”. \n5. Naciśnij przycisk „Pobierz”, gdy się pojawi. \n6. Naciśnij IMPORTUJ PLIK poniżej i wybierz pobrany plik ZIP. -\n7. [Jeśli importowanie pliku ZIP nie powiedzie się] Wypakuj plik subskrypcje.csv (powinien on znajdować się w katalogu „YouTube i YouTube Music/subskrypcje.csv”), naciśnij IMPORTUJ PLIK poniżej i wybierz wypakowany plik CSV. +\n7. [Jeśli importowanie pliku ZIP nie powiedzie się] Wypakuj plik subskrypcje.csv (powinien znajdować się w katalogu „YouTube i YouTube Music/subskrypcje.csv”), naciśnij IMPORTUJ PLIK poniżej i wybierz wypakowany plik CSV. Ta operacja może wygenerować duże użycie danych. \n \nCzy chcesz kontynuować? @@ -298,11 +298,11 @@ \n \n1. Włącz opcję „Wersja na komputery” w przeglądarce internetowej (strona nie jest dostępna dla urządzeń mobilnych). \n2. Przejdź do tego adresu URL: %1$s. -\n3. Zaloguj się, gdy zostaniesz o to poproszony(-na). -\n4. Skopiuj adres URL profilu, na który zostałeś(-aś) przekierowany(-na). +\n3. Zaloguj się, gdy zostaniesz o to poproszony(-a). +\n4. Skopiuj adres URL profilu, na który zostałeś(-aś) przekierowany(-a). Brak strumieni do pobrania Preferowana akcja „otwórz” - Domyślna akcja podczas otwierania zawartości — %s + Domyślna akcja podczas otwierania treści — %s Napisy Zmodyfikuj rozmiar tekstu napisów odtwarzacza i style tła. Wymaga ponownego uruchomienia aplikacji, aby zmiany zostały uwzględnione Wyczyść historię oglądania @@ -321,7 +321,7 @@ Projekt NewPipe bardzo poważnie traktuje Twoją prywatność, dlatego aplikacja nie gromadzi żadnych danych bez Twojej zgody. \nPolityka prywatności NewPipe szczegółowo wyjaśnia, jakie dane są zbierane i przesyłane, kiedy wysyłasz raport o awarii aplikacji. Przeczytaj politykę prywatności - Ze względu na wprowadzenie Ogólnego rozporządzenia o ochronie danych (RODO), chcielibyśmy zwrócić Twoją uwagę na politykę prywatności NewPipe. Prosimy przeczytać ją uważnie. + Ze względu na wprowadzenie Ogólnego rozporządzenia o ochronie danych (RODO) chcielibyśmy zwrócić Twoją uwagę na politykę prywatności NewPipe. Prosimy przeczytać ją uważnie. \nMusisz ją zaakceptować, aby przesyłać nam raporty o błędach. Akceptuj Odrzuć @@ -350,7 +350,7 @@ Powiadomienie o aktualizacji aplikacji Powiadomienia o nowych wersjach NewPipe Pamięć zewnętrzna niedostępna - Pobieranie na kartę SD nie jest możliwe. Zresetować lokalizację folderu zapisywania\? + Pobieranie na kartę pamięci nie jest możliwe. Zresetować lokalizację folderu zapisywania\? Nie udało się odczytać zapisanych kart, więc będą używane domyślne Przywróć domyślne Czy chcesz przywrócić ustawienia domyślne\? @@ -417,11 +417,11 @@ Rozpocznij pobieranie Wstrzymaj pobieranie Pytaj, gdzie pobrać - Zostaniesz zapytany(-na), gdzie zapisać każdy pobrany plik. -\nWłącz systemowy selektor folderów (SAF), jeśli chcesz pobierać pliki na kartę SD + Zostaniesz zapytany(-a), gdzie zapisać każdy pobierany plik. +\nWłącz systemowy selektor folderów (SAF), jeśli chcesz pobierać pliki na kartę pamięci Minął czas połączenia Używaj systemowego selektora folderów (SAF) - Systemowy selektor folderów (SAF) umożliwia pobieranie na kartę SD + Systemowy selektor folderów (SAF) umożliwia pobieranie na kartę pamięci Usuń pozycje odtwarzania Usuwa wszystkie pozycje odtwarzania Usunąć wszystkie pozycje odtwarzania\? @@ -470,7 +470,7 @@ %d sekundy %d sekund - Ze względu na ograniczenia odtwarzacza ExoPlayer, wielkość skoku przewijania została ustawiona na %d sekund + Wielkość skoku przewijania została ustawiona na %d sekund ze względu na ograniczenia odtwarzacza ExoPlayer Wycisz Wyłącz wyciszenie Czy uważasz, że ładowanie kanałów jest zbyt powolne\? Jeśli tak, spróbuj włączyć szybkie ładowanie (możesz je zmienić w ustawieniach lub naciskając przycisk poniżej). @@ -602,13 +602,13 @@ Żadna aplikacja na Twoim urządzeniu nie może tego otworzyć Powiązane pozycje Zepsuj aplikację - Ta zawartość dostępna jest tylko dla użytkowników, którzy za nią zapłacili. Nie może ona być strumieniowana ani pobierana przez NewPipe. - To wideo dostępne jest tylko dla subskrybentów usługi YouTube Music Premium. Nie może ono być strumieniowane ani pobierane przez NewPipe. - Ta zawartość jest prywatna, więc nie może być strumieniowana ani pobierana przez NewPipe + Ta treść dostępna jest tylko dla użytkowników, którzy za nią zapłacili. Nie może być strumieniowana ani pobierana przez NewPipe. + To wideo dostępne jest tylko dla subskrybentów usługi YouTube Music Premium. Nie może być strumieniowane ani pobierane przez NewPipe. + Ta treść jest prywatna, więc nie może być strumieniowana ani pobierana przez NewPipe Ta treść nie jest dostępna w Twoim kraju - To wideo ma ograniczenia wiekowe. -\nZe względu na nowe zasady YouTube odnośnie ograniczeń wiekowych, NewPipe nie ma dostępu do żadnego z jego strumieni wideo i dlatego nie jest w stanie go odtworzyć. - To jest utwór SoundCloud Go+ (przynajmniej w Twoim kraju). Nie może on być strumieniowany lub pobierany przez NewPipe. + To wideo jest objęte ograniczeniem wiekowym. +\nZe względu na nowe zasady YouTube dotyczące wideo z ograniczeniami wiekowymi NewPipe nie może uzyskać dostępu do żadnego z jego strumieni wideo i dlatego nie jest w stanie go odtworzyć. + To jest utwór SoundCloud Go+ (przynajmniej w Twoim kraju). Nie może być strumieniowany ani pobierany przez NewPipe. Radio Polecane Rozwiąż @@ -644,7 +644,7 @@ \nCzy chcesz anulować subskrypcję tego kanału\? Nie udało się załadować kanału dla „%s”. Począwszy od Androida 10 obsługiwany jest tylko systemowy selektor folderów (SAF) - Zostaniesz zapytany(-na), gdzie zapisać każdy pobierany plik + Zostaniesz zapytany(-a), gdzie zapisać każdy pobierany plik Nie ustawiono jeszcze folderu zapisywania, wybierz domyślny teraz Błąd podczas ładowania kanału Niepubliczny @@ -743,4 +743,8 @@ Jeśli masz problemy podczas korzystania z aplikacji, koniecznie sprawdź odpowiedzi na najczęściej pojawiające się pytania! Zobacz na stronie internetowej Sortuj + Naciśnij, aby pobrać %s + Tryb szybki + Importuj lub eksportuj subskrypcje z menu z trzema kropkami. + Używasz najnowszej wersji NewPipe \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index d1625084f..be1f732d1 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -735,4 +735,8 @@ Se você está com problemas ao usar o aplicativo, confira estas respostas para perguntas comuns! Perguntas frequentes Classificar + Modo rápido + Importar ou exportar inscrições do menu de 3 pontos + Toque para baixar %s + Você está executando a versão mais recente do NewPipe \ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 15c51d492..862d6e383 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -735,4 +735,8 @@ Ver no site Se está a ter problemas a usar a aplicação, veja estas respostas para perguntas mais comuns! Ordenação + Modo rápido + Importar ou exportar subscrições do menu de 3 pontos + Já está a executar a versão mais recente do NewPipe + Toque para descarregar %s \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a2d670167..e611059e1 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -737,6 +737,10 @@ Скрывать будущие видео Ответы на частые вопросы Если у вас возникли проблемы с использованием приложения, обязательно ознакомьтесь с ответами на распространенные вопросы! - Посмотреть на вебсайте + Посмотреть на веб-сайте Сортировка + У вас последняя версия + Быстрый режим + Импорт и экспорт подписок в меню с 3-мя точками + Нажмите для загрузки %s \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index ac41ccd92..3bdb388c4 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -722,4 +722,8 @@ Vanligt ställda frågor Visa på webbplats Sortera + Importera eller exportera prenumerationer från 3-punktsmenyn + Snabbt läge + Du använder den senaste versionen av NewPipe + Tryck för att ladda ner %s \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 58ca21872..2e0b92b7a 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -722,4 +722,9 @@ Web sitesinde görüntüle Uygulamayı kullanırken sorun yaşıyorsanız, sık sorulan sorulara verilen bu yanıtlara göz atmayı unutmayın! Sırala + Hızlı kip + En yeni NewPipe sürümünü kullanıyorsunuz + NewPipe güncellemesi var! + %s indirmek için dokunun + 3-nokta menüsünden abonelikleri içe veya dışa aktarın \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index f72597c97..a2b392324 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -739,4 +739,8 @@ Поширені запитання Якщо у вас виникли проблеми з використанням застосунку, обов\'язково ознайомтеся з відповідями на поширені запитання! Сортувати + Ви використовуєте найновішу версію NewPipe + Торкніться, щоб завантажити %s + Імпорт або експорт підписок з 3-крапкового меню + Швидкий режим \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 6b57d09f6..e43581523 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -709,4 +709,8 @@ 如果你在使用本应用时遇到问题,请务必查看这些常见问题的答案! 在网站上查看 排序 + 快速模式 + 从三点菜单导入或导出订阅 + 你正在运行最新版的 NewPipe + 轻按下载 %s \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index f9f38b2e0..be81c294f 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -709,4 +709,8 @@ 在網站上檢視 排序 若您在使用此應用程式時遇到任何問題,請務必先看看常見問題的答案! + 您正在執行最新版本的 NewPipe + 輕點以下載 %s + 快速模式 + 從三點式選單匯入或匯出訂閱 \ No newline at end of file diff --git a/fastlane/metadata/android/es/changelogs/991.txt b/fastlane/metadata/android/es/changelogs/991.txt index 1342826ad..27d9c0a36 100644 --- a/fastlane/metadata/android/es/changelogs/991.txt +++ b/fastlane/metadata/android/es/changelogs/991.txt @@ -10,4 +10,4 @@ Mejorado Arreglado * Se arreglaron múltiples crasheos. -* [YouTube] Se arreglaron las cargas de canales, feeds no dedicados y problemas de contenido en algunos países. +* [YouTube] Se arreglaron las cargas de canales, feeds no dedicados y problemas de contenido en algunos países From bf1ebf8733c3d55a8443aa13bf599cbff2fa1981 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Thu, 8 Dec 2022 23:31:20 +0100 Subject: [PATCH 058/147] Fixed some bugs and improved code quality --- .../playlist/dao/PlaylistStreamDAO.java | 10 +++ .../local/bookmark/BookmarkFragment.java | 62 ++++++++++--------- .../local/playlist/LocalPlaylistManager.java | 7 +++ 3 files changed, 51 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java b/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java index 4941d9395..df4ef2e52 100644 --- a/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java +++ b/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java @@ -25,6 +25,7 @@ import static org.schabi.newpipe.database.playlist.model.PlaylistStreamEntity.JO import static org.schabi.newpipe.database.playlist.model.PlaylistStreamEntity.PLAYLIST_STREAM_JOIN_TABLE; import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_ID; import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_TABLE; +import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_THUMBNAIL_URL; import static org.schabi.newpipe.database.stream.model.StreamStateEntity.JOIN_STREAM_ID_ALIAS; import static org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_PROGRESS_MILLIS; import static org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_STATE_TABLE; @@ -53,6 +54,15 @@ public interface PlaylistStreamDAO extends BasicDAO { + " WHERE " + JOIN_PLAYLIST_ID + " = :playlistId") Flowable getMaximumIndexOf(long playlistId); + @Query("SELECT CASE WHEN COUNT(*) != 0 then " + STREAM_THUMBNAIL_URL + " ELSE :defaultUrl END" + + " FROM " + STREAM_TABLE + + " LEFT JOIN " + PLAYLIST_STREAM_JOIN_TABLE + + " ON " + STREAM_ID + " = " + JOIN_STREAM_ID + + " WHERE " + JOIN_PLAYLIST_ID + " = :playlistId " + + " LIMIT 1" + ) + Flowable getAutomaticThumbnailUrl(long playlistId, String defaultUrl); + @RewriteQueriesToDropUnusedColumns @Transaction @Query("SELECT * FROM " + STREAM_TABLE + " INNER JOIN " diff --git a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java index 65db40d16..1ef61bf31 100644 --- a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java @@ -259,11 +259,42 @@ public final class BookmarkFragment extends BaseLocalListFragment arrayAdapter = new ArrayAdapter<>(getContext(), + final ArrayAdapter arrayAdapter = getLocalDialogArrayAdapter(isPlaylistThumbnailSet, + unsetThumbnail); + arrayAdapter.addAll(rename, delete, unsetThumbnail); + + final DialogInterface.OnClickListener action = (dialog, index) -> { + if (index == arrayAdapter.getPosition(rename)) { + showRenameDialog(selectedItem); + } else if (index == arrayAdapter.getPosition(delete)) { + showDeleteDialog(selectedItem.name, localPlaylistManager + .deletePlaylist(selectedItem.uid)); + dialog.dismiss(); + } else if (isPlaylistThumbnailSet) { + final String thumbnail_url = localPlaylistManager + .getAutomaticPlaylistThumbnail(selectedItem.uid); + localPlaylistManager.changePlaylistThumbnail(selectedItem.uid, thumbnail_url, false) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(); + } + }; + + builder.setAdapter(arrayAdapter, action) + .create() + .show(); + } + + private ArrayAdapter getLocalDialogArrayAdapter(final boolean isPlaylistThumbnailSet, + final String unsetThumbnail) { + return new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1) { @Override public View getView(final int position, final View convertView, @@ -271,7 +302,8 @@ public final class BookmarkFragment extends BaseLocalListFragment { - switch (index) { - case 0: showRenameDialog(selectedItem); - break; - case 1: - showDeleteDialog(selectedItem.name, - localPlaylistManager.deletePlaylist(selectedItem.uid)); - dialog.dismiss(); - break; - case 2: - if (isPlaylistThumbnailSet) { - final String ur = "drawable://" + R.drawable.placeholder_thumbnail_playlist; - localPlaylistManager.changePlaylistThumbnail(selectedItem.uid, ur, - false).observeOn(AndroidSchedulers.mainThread()).subscribe(); - } - break; - } - }; - - builder.setAdapter(arrayAdapter, action) - .create() - .show(); } private void showRenameDialog(final PlaylistMetadataEntry selectedItem) { diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java index 2510b284d..8d975241b 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistManager.java @@ -2,6 +2,7 @@ package org.schabi.newpipe.local.playlist; import androidx.annotation.Nullable; +import org.schabi.newpipe.R; import org.schabi.newpipe.database.AppDatabase; import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry; import org.schabi.newpipe.database.playlist.PlaylistStreamEntry; @@ -113,12 +114,18 @@ public class LocalPlaylistManager { return playlistTable.getPlaylist(playlistId).blockingFirst().get(0).getIsThumbnailSet(); } + public String getAutomaticPlaylistThumbnail(final long playlistId) { + final String def = "drawable://" + R.drawable.placeholder_thumbnail_playlist; + return playlistStreamTable.getAutomaticThumbnailUrl(playlistId, def).blockingFirst(); + } + private Maybe modifyPlaylist(final long playlistId, @Nullable final String name, @Nullable final String thumbnailUrl, final boolean isPermanent) { return playlistTable.getPlaylist(playlistId) .firstElement() + .filter(playlistEntities -> !playlistEntities.isEmpty()) .map(playlistEntities -> { final PlaylistEntity playlist = playlistEntities.get(0); if (name != null) { From 7c5b4510af6b4f634e1bb1a053a29c12a5045a3e Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sat, 26 Nov 2022 10:57:27 +0530 Subject: [PATCH 059/147] Update RxJava to 3.1.5. --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 72a03e063..582f61618 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -265,7 +265,7 @@ dependencies { implementation 'com.jakewharton:process-phoenix:2.1.2' // Reactive extensions for Java VM - implementation "io.reactivex.rxjava3:rxjava:3.0.13" + implementation "io.reactivex.rxjava3:rxjava:3.1.5" implementation "io.reactivex.rxjava3:rxandroid:3.0.0" // RxJava binding APIs for Android UI widgets implementation "com.jakewharton.rxbinding4:rxbinding:4.0.0" From c537776826dd0c11a4361cf937f73713882e14ab Mon Sep 17 00:00:00 2001 From: pratyaksh1610 Date: Fri, 9 Dec 2022 14:09:40 +0530 Subject: [PATCH 060/147] Fixes #9518 - Crash fix on clicking on add to playlist. - Added toast when clicked on share button for better UI. --- .../list/playlist/PlaylistFragment.java | 27 ++++++++++++------- app/src/main/res/values/strings.xml | 1 + 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java index e3caeb522..899534793 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java @@ -13,6 +13,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -233,21 +234,29 @@ public class PlaylistFragment extends BaseListInfoFragment dialog.show(getFM(), TAG) - )); + if (currentInfo != null) { + disposables.add(PlaylistDialog.createCorrespondingDialog( + getContext(), + getPlayQueue() + .getStreams() + .stream() + .map(StreamEntity::new) + .collect(Collectors.toList()), + dialog -> dialog.show(getFM(), TAG) + )); + } else { + Toast.makeText(getContext(), getString(R.string.playlist_loading_message), + Toast.LENGTH_SHORT).show(); + } break; default: return super.onOptionsItemSelected(item); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 76b828746..d72fd4217 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -241,6 +241,7 @@ Restore defaults Do you want to restore defaults? Give permission to display over other apps + Playlist loading… NewPipe encountered an error, tap to report An error occurred, see the notification From 0c47fc7017cfdd095ce11c296023bf8db80fb077 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Fri, 9 Dec 2022 10:39:22 +0100 Subject: [PATCH 061/147] Delete translation without default: app_update_notification_content_text --- app/src/main/res/values-hr/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index d9d33e29c..4d428ff34 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -701,7 +701,6 @@ Pokreni traženje novih streamova Prvjeravanje učestalosti Biblioteka „LeakCanary” nije dostupna - Podešavanje visine tona po glazbenim polutonovima Obavijesti o novim streamovima Potrebna mrežna veza Zadano za ExoPlayer From d70b768031f9a288b713bcdbf8e73eacfe1a74cc Mon Sep 17 00:00:00 2001 From: TobiGr Date: Fri, 9 Dec 2022 10:39:49 +0100 Subject: [PATCH 062/147] Delete translation without default: app_update_notification_content_text --- app/src/main/res/values-is/strings.xml | 1 - app/src/main/res/values-ka/strings.xml | 1 - app/src/main/res/values-or/strings.xml | 1 - app/src/main/res/values-und/strings.xml | 1 - 4 files changed, 4 deletions(-) diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index e868fd707..44c19e745 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -454,7 +454,6 @@ Hágæða (stærra) Lágæða (minna) Ekki sýna - Pikkaðu til að sækja að jafna sig Niðurhal mistókst Sýna villu diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 8b1449515..1b700ce74 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -445,7 +445,6 @@ სია მაღალი ხარისხის (უფრო დიდი) არ მაჩვენო - შეეხეთ ჩამოსატვირთად დასრულდა მომლოდინე დაპაუზდა diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index 87190ea75..9c36281dd 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -419,7 +419,6 @@ ଅଦ୍ୟତନ ପାଇଁ ଯାଞ୍ଚ କରନ୍ତୁ ନୂତନ ସଂସ୍କରଣଗୁଡ଼ିକ ପାଇଁ ମାନୁଆଲ ଯାଞ୍ଚ କରନ୍ତୁ ବିଚାରାଧୀନ ଅଛି - ଡାଉନଲୋଡ୍ କରିବାକୁ ଟ୍ୟାପ୍ କରନ୍ତୁ ଦେଖାଯାଇଥିବା ଭିଡିଓଗୁଡିକ ଅପସାରଣ କରିବେ କି\? ବର୍ଣ୍ଣନାରେ ପାଠ ବାଛିବା ଅକ୍ଷମ କରନ୍ତୁ ଏକ ସୁରକ୍ଷିତ ସଂଯୋଗ ସ୍ଥାପନ କରିପାରିଲା ନାହିଁ diff --git a/app/src/main/res/values-und/strings.xml b/app/src/main/res/values-und/strings.xml index b155e5d64..98b1fa4ea 100644 --- a/app/src/main/res/values-und/strings.xml +++ b/app/src/main/res/values-und/strings.xml @@ -94,7 +94,6 @@ روکو مٹاؤ کھاتہ بند کیتا گیا - ڈاؤنلوڈ کرن لئی دباؤ آٹو %1$s نوں جاری کیتی گئی ایس وچ کھُلھو From 26579cc170aad2e0ebbdeb49e4117ea6cc159d4d Mon Sep 17 00:00:00 2001 From: TobiGr Date: Fri, 9 Dec 2022 10:40:48 +0100 Subject: [PATCH 063/147] Delete translation without default: app_update_notification_content_title --- app/src/main/res/values-is/strings.xml | 1 - app/src/main/res/values-ka/strings.xml | 1 - app/src/main/res/values-or/strings.xml | 1 - app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-und/strings.xml | 1 - 5 files changed, 5 deletions(-) diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index 44c19e745..ffb0b59d1 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -136,7 +136,6 @@ Spilari Aflúsa Sjálfgefið tungumál efnis - NewPipe uppfærsla í boði! Tungumál Bæta við Sprettiglugga diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 1b700ce74..1d5d42cac 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -655,7 +655,6 @@ Seekbar-ის ესკიზის გადახედვა მხოლოდ Wi-Fi-ზე დაბალი ხარისხი(პატარა) - NewPipe განახლება ხელმისაწვდომია! მოქმედება უარყოფილია სისტემის მიერ მიმდინარეობს განახლებების შემოწმება… შექმენით უნიკალური სახელი diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index 9c36281dd..7497e5e48 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -575,7 +575,6 @@ ଅଦ୍ୟତନ ପାଇଁ ଯାଞ୍ଚ କରୁଛି… ସେକ୍ବାର୍ ଥମ୍ୱନେଲ୍ ପୂର୍ବାବଲୋକନ ଉଚ୍ଚ ଗୁଣବତ୍ତା (ବଡ଼) - NewPipe ଅଦ୍ୟତନ ଉପଲବ୍ଧ! ଆପଣ ଆପଣଙ୍କର ଡାଉନଲୋଡ୍ ଇତିହାସ ସଫା କରିବାକୁ କିମ୍ବା ସମସ୍ତ ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଫାଇଲଗୁଡିକ ବିଲୋପ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି\? ସର୍ଭର ଖୋଜି ପାଇଲା ନାହିଁ diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 2e0b92b7a..5c3d07204 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -352,7 +352,6 @@ Liste Izgara Otomatik - NewPipe güncellemesi var! Tamamlandı durduruldu sırada diff --git a/app/src/main/res/values-und/strings.xml b/app/src/main/res/values-und/strings.xml index 98b1fa4ea..f22a117c5 100644 --- a/app/src/main/res/values-und/strings.xml +++ b/app/src/main/res/values-und/strings.xml @@ -97,7 +97,6 @@ آٹو %1$s نوں جاری کیتی گئی ایس وچ کھُلھو - نیوپائیپ دا نواں ورژن اُپلبدھ اے! تیردی تصویر وچ کھُلھو سٹریم دی فائل ڈاؤن‌لوڈ کرو %s لئی نتیجے وِکھاۓ جا رہے ہن From 9eb72d5a860b39b11c7f2c0212c2866082b6989a Mon Sep 17 00:00:00 2001 From: TobiGr Date: Fri, 9 Dec 2022 10:42:45 +0100 Subject: [PATCH 064/147] Delete translation without default: progressive_load_interval_default --- app/src/main/res/values-hr/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 4d428ff34..bc35866e3 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -703,7 +703,6 @@ Biblioteka „LeakCanary” nije dostupna Obavijesti o novim streamovima Potrebna mrežna veza - Zadano za ExoPlayer Primaj obavijesti Za ovu radnju nije pronađen odgovarajući upravljač datoteka. \nInstaliraj upravljač datoteka ili pokušaj onemogućiti „%s” u postavkama preuzimanja From 1ac62541a8b601c15816065ba5d4a2b8702afa8b Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Fri, 9 Dec 2022 12:01:59 +0100 Subject: [PATCH 065/147] Formatting, renaming and small fixes --- .../playlist/model/PlaylistEntity.java | 18 +++++++++--------- .../local/bookmark/BookmarkFragment.java | 16 +++++++--------- .../local/playlist/LocalPlaylistFragment.java | 13 +++++++------ .../local/playlist/LocalPlaylistManager.java | 7 ++++--- app/src/main/res/values/strings.xml | 1 - 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java b/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java index a04a284da..051b7c318 100644 --- a/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java +++ b/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java @@ -15,7 +15,7 @@ public class PlaylistEntity { public static final String PLAYLIST_ID = "uid"; public static final String PLAYLIST_NAME = "name"; public static final String PLAYLIST_THUMBNAIL_URL = "thumbnail_url"; - public static final String PLAYLIST_THUMBNAIL_SET = "isThumbnailSet"; + public static final String PLAYLIST_THUMBNAIL_PERMANENT = "isThumbnailSet"; @PrimaryKey(autoGenerate = true) @ColumnInfo(name = PLAYLIST_ID) @@ -27,14 +27,14 @@ public class PlaylistEntity { @ColumnInfo(name = PLAYLIST_THUMBNAIL_URL) private String thumbnailUrl; - @ColumnInfo(name = PLAYLIST_THUMBNAIL_SET) - private boolean isThumbnailSet; + @ColumnInfo(name = PLAYLIST_THUMBNAIL_PERMANENT) + private boolean isThumbnailPermanent; public PlaylistEntity(final String name, final String thumbnailUrl, - final boolean isThumbnailSet) { + final boolean isThumbnailPermanent) { this.name = name; this.thumbnailUrl = thumbnailUrl; - this.isThumbnailSet = isThumbnailSet; + this.isThumbnailPermanent = isThumbnailPermanent; } public long getUid() { @@ -61,12 +61,12 @@ public class PlaylistEntity { this.thumbnailUrl = thumbnailUrl; } - public boolean getIsThumbnailSet() { - return isThumbnailSet; + public boolean getIsThumbnailPermanent() { + return isThumbnailPermanent; } - public void setIsThumbnailSet(final boolean isThumbnailSet) { - this.isThumbnailSet = isThumbnailSet; + public void setIsThumbnailPermanent(final boolean isThumbnailSet) { + this.isThumbnailPermanent = isThumbnailSet; } } diff --git a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java index 1ef61bf31..8cb544e0b 100644 --- a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java @@ -262,12 +262,12 @@ public final class BookmarkFragment extends BaseLocalListFragment arrayAdapter = getLocalDialogArrayAdapter(isPlaylistThumbnailSet, + final ArrayAdapter arrayAdapter = getLocalDialogArrayAdapter(isThumbnailPermanent, unsetThumbnail); arrayAdapter.addAll(rename, delete, unsetThumbnail); @@ -277,11 +277,10 @@ public final class BookmarkFragment extends BaseLocalListFragment getLocalDialogArrayAdapter(final boolean isPlaylistThumbnailSet, final String unsetThumbnail) { - return new ArrayAdapter<>(getContext(), - android.R.layout.simple_list_item_1) { + return new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1) { @Override public View getView(final int position, final View convertView, final ViewGroup parent) { diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index 78e455c78..d584ceefb 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -405,8 +405,8 @@ public class LocalPlaylistFragment extends BaseLocalListFragment { // Remove Watched, Functionality data final List notWatchedItems = new ArrayList<>(); - final boolean isThumbnailSet = playlistManager - .getIsPlaylistThumbnailSet(playlistId); + final boolean isThumbnailPermanent = playlistManager + .getIsPlaylistThumbnailPermanent(playlistId); boolean thumbnailVideoRemoved = false; if (removePartiallyWatched) { @@ -416,7 +416,7 @@ public class LocalPlaylistFragment extends BaseLocalListFragmentInstall Cancel OK - Yes Open in browser Mark as watched Open in popup mode From fedc26e3cbbb2b3737c609d75d999e0df6743899 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Fri, 9 Dec 2022 22:40:54 +0100 Subject: [PATCH 066/147] Added migration to new database --- .../newpipe/database/DatabaseMigrationTest.kt | 40 ++++++++++++++----- .../org/schabi/newpipe/NewPipeDatabase.java | 4 +- .../schabi/newpipe/database/AppDatabase.java | 4 +- .../schabi/newpipe/database/Migrations.java | 9 +++++ .../playlist/model/PlaylistEntity.java | 2 +- 5 files changed, 44 insertions(+), 15 deletions(-) diff --git a/app/src/androidTest/java/org/schabi/newpipe/database/DatabaseMigrationTest.kt b/app/src/androidTest/java/org/schabi/newpipe/database/DatabaseMigrationTest.kt index 28dea13e9..be95c8e27 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/database/DatabaseMigrationTest.kt +++ b/app/src/androidTest/java/org/schabi/newpipe/database/DatabaseMigrationTest.kt @@ -33,7 +33,8 @@ class DatabaseMigrationTest { @get:Rule val testHelper = MigrationTestHelper( InstrumentationRegistry.getInstrumentation(), - AppDatabase::class.java.canonicalName, FrameworkSQLiteOpenHelperFactory() + AppDatabase::class.java.canonicalName, + FrameworkSQLiteOpenHelperFactory() ) @Test @@ -42,7 +43,8 @@ class DatabaseMigrationTest { databaseInV2.run { insert( - "streams", SQLiteDatabase.CONFLICT_FAIL, + "streams", + SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply { put("service_id", DEFAULT_SERVICE_ID) put("url", DEFAULT_URL) @@ -54,14 +56,16 @@ class DatabaseMigrationTest { } ) insert( - "streams", SQLiteDatabase.CONFLICT_FAIL, + "streams", + SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply { put("service_id", DEFAULT_SECOND_SERVICE_ID) put("url", DEFAULT_SECOND_URL) } ) insert( - "streams", SQLiteDatabase.CONFLICT_FAIL, + "streams", + SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply { put("service_id", DEFAULT_SERVICE_ID) } @@ -70,18 +74,31 @@ class DatabaseMigrationTest { } testHelper.runMigrationsAndValidate( - AppDatabase.DATABASE_NAME, Migrations.DB_VER_3, - true, Migrations.MIGRATION_2_3 + AppDatabase.DATABASE_NAME, + Migrations.DB_VER_3, + true, + Migrations.MIGRATION_2_3 ) testHelper.runMigrationsAndValidate( - AppDatabase.DATABASE_NAME, Migrations.DB_VER_4, - true, Migrations.MIGRATION_3_4 + AppDatabase.DATABASE_NAME, + Migrations.DB_VER_4, + true, + Migrations.MIGRATION_3_4 ) testHelper.runMigrationsAndValidate( - AppDatabase.DATABASE_NAME, Migrations.DB_VER_5, - true, Migrations.MIGRATION_4_5 + AppDatabase.DATABASE_NAME, + Migrations.DB_VER_5, + true, + Migrations.MIGRATION_4_5 + ) + + testHelper.runMigrationsAndValidate( + AppDatabase.DATABASE_NAME, + Migrations.DB_VER_6, + true, + Migrations.MIGRATION_5_6 ) val migratedDatabaseV3 = getMigratedDatabase() @@ -121,7 +138,8 @@ class DatabaseMigrationTest { private fun getMigratedDatabase(): AppDatabase { val database: AppDatabase = Room.databaseBuilder( ApplicationProvider.getApplicationContext(), - AppDatabase::class.java, AppDatabase.DATABASE_NAME + AppDatabase::class.java, + AppDatabase.DATABASE_NAME ) .build() testHelper.closeWhenFinished(database) diff --git a/app/src/main/java/org/schabi/newpipe/NewPipeDatabase.java b/app/src/main/java/org/schabi/newpipe/NewPipeDatabase.java index 402d4648d..fc3423994 100644 --- a/app/src/main/java/org/schabi/newpipe/NewPipeDatabase.java +++ b/app/src/main/java/org/schabi/newpipe/NewPipeDatabase.java @@ -5,6 +5,7 @@ import static org.schabi.newpipe.database.Migrations.MIGRATION_1_2; import static org.schabi.newpipe.database.Migrations.MIGRATION_2_3; import static org.schabi.newpipe.database.Migrations.MIGRATION_3_4; import static org.schabi.newpipe.database.Migrations.MIGRATION_4_5; +import static org.schabi.newpipe.database.Migrations.MIGRATION_5_6; import android.content.Context; import android.database.Cursor; @@ -24,7 +25,8 @@ public final class NewPipeDatabase { private static AppDatabase getDatabase(final Context context) { return Room .databaseBuilder(context.getApplicationContext(), AppDatabase.class, DATABASE_NAME) - .addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5) + .addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5, + MIGRATION_5_6) .build(); } diff --git a/app/src/main/java/org/schabi/newpipe/database/AppDatabase.java b/app/src/main/java/org/schabi/newpipe/database/AppDatabase.java index 28ddc8184..563e80b17 100644 --- a/app/src/main/java/org/schabi/newpipe/database/AppDatabase.java +++ b/app/src/main/java/org/schabi/newpipe/database/AppDatabase.java @@ -1,6 +1,6 @@ package org.schabi.newpipe.database; -import static org.schabi.newpipe.database.Migrations.DB_VER_5; +import static org.schabi.newpipe.database.Migrations.DB_VER_6; import androidx.room.Database; import androidx.room.RoomDatabase; @@ -38,7 +38,7 @@ import org.schabi.newpipe.database.subscription.SubscriptionEntity; FeedEntity.class, FeedGroupEntity.class, FeedGroupSubscriptionEntity.class, FeedLastUpdatedEntity.class }, - version = DB_VER_5 + version = DB_VER_6 ) public abstract class AppDatabase extends RoomDatabase { public static final String DATABASE_NAME = "newpipe.db"; diff --git a/app/src/main/java/org/schabi/newpipe/database/Migrations.java b/app/src/main/java/org/schabi/newpipe/database/Migrations.java index 7de08442c..e301e3f1f 100644 --- a/app/src/main/java/org/schabi/newpipe/database/Migrations.java +++ b/app/src/main/java/org/schabi/newpipe/database/Migrations.java @@ -23,6 +23,7 @@ public final class Migrations { public static final int DB_VER_3 = 3; public static final int DB_VER_4 = 4; public static final int DB_VER_5 = 5; + public static final int DB_VER_6 = 6; private static final String TAG = Migrations.class.getName(); public static final boolean DEBUG = MainActivity.DEBUG; @@ -188,6 +189,14 @@ public final class Migrations { } }; + public static final Migration MIGRATION_5_6 = new Migration(DB_VER_5, DB_VER_6) { + @Override + public void migrate(@NonNull final SupportSQLiteDatabase database) { + database.execSQL("ALTER TABLE `playlists` ADD COLUMN `is_thumbnail_permanent` " + + "INTEGER NOT NULL DEFAULT 0"); + } + }; + private Migrations() { } } diff --git a/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java b/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java index 051b7c318..086362da2 100644 --- a/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java +++ b/app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java @@ -15,7 +15,7 @@ public class PlaylistEntity { public static final String PLAYLIST_ID = "uid"; public static final String PLAYLIST_NAME = "name"; public static final String PLAYLIST_THUMBNAIL_URL = "thumbnail_url"; - public static final String PLAYLIST_THUMBNAIL_PERMANENT = "isThumbnailSet"; + public static final String PLAYLIST_THUMBNAIL_PERMANENT = "is_thumbnail_permanent"; @PrimaryKey(autoGenerate = true) @ColumnInfo(name = PLAYLIST_ID) From dfd6534a1cd2c733d0ca183415d6a0fac29bd9d3 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Sat, 10 Dec 2022 17:32:02 +0100 Subject: [PATCH 067/147] Added "6.json" --- .../6.json | 737 ++++++++++++++++++ 1 file changed, 737 insertions(+) create mode 100644 app/schemas/org.schabi.newpipe.database.AppDatabase/6.json diff --git a/app/schemas/org.schabi.newpipe.database.AppDatabase/6.json b/app/schemas/org.schabi.newpipe.database.AppDatabase/6.json new file mode 100644 index 000000000..ee69363cc --- /dev/null +++ b/app/schemas/org.schabi.newpipe.database.AppDatabase/6.json @@ -0,0 +1,737 @@ +{ + "formatVersion": 1, + "database": { + "version": 6, + "identityHash": "4084aa342aef315dc7b558770a7755a9", + "entities": [ + { + "tableName": "subscriptions", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`uid` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `service_id` INTEGER NOT NULL, `url` TEXT, `name` TEXT, `avatar_url` TEXT, `subscriber_count` INTEGER, `description` TEXT, `notification_mode` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "uid", + "columnName": "uid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "serviceId", + "columnName": "service_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "avatarUrl", + "columnName": "avatar_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "subscriberCount", + "columnName": "subscriber_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "description", + "columnName": "description", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "notificationMode", + "columnName": "notification_mode", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "uid" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_subscriptions_service_id_url", + "unique": true, + "columnNames": [ + "service_id", + "url" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_subscriptions_service_id_url` ON `${TABLE_NAME}` (`service_id`, `url`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "search_history", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`creation_date` INTEGER, `service_id` INTEGER NOT NULL, `search` TEXT, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "creationDate", + "columnName": "creation_date", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "serviceId", + "columnName": "service_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "search", + "columnName": "search", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_search_history_search", + "unique": false, + "columnNames": [ + "search" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_search_history_search` ON `${TABLE_NAME}` (`search`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "streams", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`uid` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `service_id` INTEGER NOT NULL, `url` TEXT NOT NULL, `title` TEXT NOT NULL, `stream_type` TEXT NOT NULL, `duration` INTEGER NOT NULL, `uploader` TEXT NOT NULL, `uploader_url` TEXT, `thumbnail_url` TEXT, `view_count` INTEGER, `textual_upload_date` TEXT, `upload_date` INTEGER, `is_upload_date_approximation` INTEGER)", + "fields": [ + { + "fieldPath": "uid", + "columnName": "uid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "serviceId", + "columnName": "service_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "streamType", + "columnName": "stream_type", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "duration", + "columnName": "duration", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "uploader", + "columnName": "uploader", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "uploaderUrl", + "columnName": "uploader_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "thumbnailUrl", + "columnName": "thumbnail_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "viewCount", + "columnName": "view_count", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "textualUploadDate", + "columnName": "textual_upload_date", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "uploadDate", + "columnName": "upload_date", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "isUploadDateApproximation", + "columnName": "is_upload_date_approximation", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "uid" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_streams_service_id_url", + "unique": true, + "columnNames": [ + "service_id", + "url" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_streams_service_id_url` ON `${TABLE_NAME}` (`service_id`, `url`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "stream_history", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`stream_id` INTEGER NOT NULL, `access_date` INTEGER NOT NULL, `repeat_count` INTEGER NOT NULL, PRIMARY KEY(`stream_id`, `access_date`), FOREIGN KEY(`stream_id`) REFERENCES `streams`(`uid`) ON UPDATE CASCADE ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "streamUid", + "columnName": "stream_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "accessDate", + "columnName": "access_date", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "repeatCount", + "columnName": "repeat_count", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "stream_id", + "access_date" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_stream_history_stream_id", + "unique": false, + "columnNames": [ + "stream_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_stream_history_stream_id` ON `${TABLE_NAME}` (`stream_id`)" + } + ], + "foreignKeys": [ + { + "table": "streams", + "onDelete": "CASCADE", + "onUpdate": "CASCADE", + "columns": [ + "stream_id" + ], + "referencedColumns": [ + "uid" + ] + } + ] + }, + { + "tableName": "stream_state", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`stream_id` INTEGER NOT NULL, `progress_time` INTEGER NOT NULL, PRIMARY KEY(`stream_id`), FOREIGN KEY(`stream_id`) REFERENCES `streams`(`uid`) ON UPDATE CASCADE ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "streamUid", + "columnName": "stream_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "progressMillis", + "columnName": "progress_time", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "stream_id" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "streams", + "onDelete": "CASCADE", + "onUpdate": "CASCADE", + "columns": [ + "stream_id" + ], + "referencedColumns": [ + "uid" + ] + } + ] + }, + { + "tableName": "playlists", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`uid` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT, `thumbnail_url` TEXT, `is_thumbnail_permanent` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "uid", + "columnName": "uid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "thumbnailUrl", + "columnName": "thumbnail_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isThumbnailPermanent", + "columnName": "is_thumbnail_permanent", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "uid" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_playlists_name", + "unique": false, + "columnNames": [ + "name" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_playlists_name` ON `${TABLE_NAME}` (`name`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "playlist_stream_join", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`playlist_id` INTEGER NOT NULL, `stream_id` INTEGER NOT NULL, `join_index` INTEGER NOT NULL, PRIMARY KEY(`playlist_id`, `join_index`), FOREIGN KEY(`playlist_id`) REFERENCES `playlists`(`uid`) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY(`stream_id`) REFERENCES `streams`(`uid`) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED)", + "fields": [ + { + "fieldPath": "playlistUid", + "columnName": "playlist_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "streamUid", + "columnName": "stream_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "index", + "columnName": "join_index", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "playlist_id", + "join_index" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_playlist_stream_join_playlist_id_join_index", + "unique": true, + "columnNames": [ + "playlist_id", + "join_index" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_playlist_stream_join_playlist_id_join_index` ON `${TABLE_NAME}` (`playlist_id`, `join_index`)" + }, + { + "name": "index_playlist_stream_join_stream_id", + "unique": false, + "columnNames": [ + "stream_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_playlist_stream_join_stream_id` ON `${TABLE_NAME}` (`stream_id`)" + } + ], + "foreignKeys": [ + { + "table": "playlists", + "onDelete": "CASCADE", + "onUpdate": "CASCADE", + "columns": [ + "playlist_id" + ], + "referencedColumns": [ + "uid" + ] + }, + { + "table": "streams", + "onDelete": "CASCADE", + "onUpdate": "CASCADE", + "columns": [ + "stream_id" + ], + "referencedColumns": [ + "uid" + ] + } + ] + }, + { + "tableName": "remote_playlists", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`uid` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `service_id` INTEGER NOT NULL, `name` TEXT, `url` TEXT, `thumbnail_url` TEXT, `uploader` TEXT, `stream_count` INTEGER)", + "fields": [ + { + "fieldPath": "uid", + "columnName": "uid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "serviceId", + "columnName": "service_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "thumbnailUrl", + "columnName": "thumbnail_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "uploader", + "columnName": "uploader", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "streamCount", + "columnName": "stream_count", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "uid" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_remote_playlists_name", + "unique": false, + "columnNames": [ + "name" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_remote_playlists_name` ON `${TABLE_NAME}` (`name`)" + }, + { + "name": "index_remote_playlists_service_id_url", + "unique": true, + "columnNames": [ + "service_id", + "url" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_remote_playlists_service_id_url` ON `${TABLE_NAME}` (`service_id`, `url`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "feed", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`stream_id` INTEGER NOT NULL, `subscription_id` INTEGER NOT NULL, PRIMARY KEY(`stream_id`, `subscription_id`), FOREIGN KEY(`stream_id`) REFERENCES `streams`(`uid`) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY(`subscription_id`) REFERENCES `subscriptions`(`uid`) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED)", + "fields": [ + { + "fieldPath": "streamId", + "columnName": "stream_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subscriptionId", + "columnName": "subscription_id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "stream_id", + "subscription_id" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_feed_subscription_id", + "unique": false, + "columnNames": [ + "subscription_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_feed_subscription_id` ON `${TABLE_NAME}` (`subscription_id`)" + } + ], + "foreignKeys": [ + { + "table": "streams", + "onDelete": "CASCADE", + "onUpdate": "CASCADE", + "columns": [ + "stream_id" + ], + "referencedColumns": [ + "uid" + ] + }, + { + "table": "subscriptions", + "onDelete": "CASCADE", + "onUpdate": "CASCADE", + "columns": [ + "subscription_id" + ], + "referencedColumns": [ + "uid" + ] + } + ] + }, + { + "tableName": "feed_group", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`uid` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, `icon_id` INTEGER NOT NULL, `sort_order` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "uid", + "columnName": "uid", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "icon", + "columnName": "icon_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "sortOrder", + "columnName": "sort_order", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "uid" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_feed_group_sort_order", + "unique": false, + "columnNames": [ + "sort_order" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_feed_group_sort_order` ON `${TABLE_NAME}` (`sort_order`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "feed_group_subscription_join", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`group_id` INTEGER NOT NULL, `subscription_id` INTEGER NOT NULL, PRIMARY KEY(`group_id`, `subscription_id`), FOREIGN KEY(`group_id`) REFERENCES `feed_group`(`uid`) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY(`subscription_id`) REFERENCES `subscriptions`(`uid`) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED)", + "fields": [ + { + "fieldPath": "feedGroupId", + "columnName": "group_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subscriptionId", + "columnName": "subscription_id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "group_id", + "subscription_id" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_feed_group_subscription_join_subscription_id", + "unique": false, + "columnNames": [ + "subscription_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_feed_group_subscription_join_subscription_id` ON `${TABLE_NAME}` (`subscription_id`)" + } + ], + "foreignKeys": [ + { + "table": "feed_group", + "onDelete": "CASCADE", + "onUpdate": "CASCADE", + "columns": [ + "group_id" + ], + "referencedColumns": [ + "uid" + ] + }, + { + "table": "subscriptions", + "onDelete": "CASCADE", + "onUpdate": "CASCADE", + "columns": [ + "subscription_id" + ], + "referencedColumns": [ + "uid" + ] + } + ] + }, + { + "tableName": "feed_last_updated", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`subscription_id` INTEGER NOT NULL, `last_updated` INTEGER, PRIMARY KEY(`subscription_id`), FOREIGN KEY(`subscription_id`) REFERENCES `subscriptions`(`uid`) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED)", + "fields": [ + { + "fieldPath": "subscriptionId", + "columnName": "subscription_id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastUpdated", + "columnName": "last_updated", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "subscription_id" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "subscriptions", + "onDelete": "CASCADE", + "onUpdate": "CASCADE", + "columns": [ + "subscription_id" + ], + "referencedColumns": [ + "uid" + ] + } + ] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '4084aa342aef315dc7b558770a7755a9')" + ] + } +} \ No newline at end of file From 12796920a361c63831a8c2644df5a76ec9f50d90 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Sat, 10 Dec 2022 21:56:04 +0100 Subject: [PATCH 068/147] Removed the wasPlaying variable --- .../main/java/org/schabi/newpipe/player/Player.java | 8 -------- .../java/org/schabi/newpipe/player/PlayerService.java | 2 -- .../org/schabi/newpipe/player/ui/VideoPlayerUi.java | 11 +++-------- 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 99d36f66e..95520ba1e 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -216,7 +216,6 @@ public final class Player implements PlaybackListener, Listener { // minimized to background but will resume automatically to the original player type private boolean isAudioOnly = false; private boolean isPrepared = false; - private boolean wasPlaying = false; /*////////////////////////////////////////////////////////////////////////// // UIs, listeners and disposables @@ -918,13 +917,6 @@ public final class Player implements PlaybackListener, Listener { error -> Log.e(TAG, "Progress update failure: ", error)); } - public void saveWasPlaying() { - this.wasPlaying = getPlayWhenReady(); - } - - public boolean wasPlaying() { - return wasPlaying; - } //endregion diff --git a/app/src/main/java/org/schabi/newpipe/player/PlayerService.java b/app/src/main/java/org/schabi/newpipe/player/PlayerService.java index 33b024e3d..d81301205 100644 --- a/app/src/main/java/org/schabi/newpipe/player/PlayerService.java +++ b/app/src/main/java/org/schabi/newpipe/player/PlayerService.java @@ -86,8 +86,6 @@ public final class PlayerService extends Service { } if (!player.exoPlayerIsNull()) { - player.saveWasPlaying(); - // Releases wifi & cpu, disables keepScreenOn, etc. // We can't just pause the player here because it will make transition // from one stream to a new stream not smooth diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index 9fb4552b2..afdfbd81d 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -601,8 +601,6 @@ public abstract class VideoPlayerUi extends PlayerUi player.changeState(STATE_PAUSED_SEEK); } - player.saveWasPlaying(); - showControls(0); animate(binding.currentDisplaySeek, true, DEFAULT_CONTROLS_DURATION, AnimationType.SCALE_AND_ALPHA); @@ -617,7 +615,7 @@ public abstract class VideoPlayerUi extends PlayerUi } player.seekTo(seekBar.getProgress()); - if (player.wasPlaying() || player.getExoPlayer().getDuration() == seekBar.getProgress()) { + if (player.getExoPlayer().getDuration() == seekBar.getProgress()) { player.getExoPlayer().play(); } @@ -631,9 +629,8 @@ public abstract class VideoPlayerUi extends PlayerUi if (!player.isProgressLoopRunning()) { player.startProgressLoop(); } - if (player.wasPlaying()) { - showControlsThenHide(); - } + + showControlsThenHide(); } //endregion @@ -1168,8 +1165,6 @@ public abstract class VideoPlayerUi extends PlayerUi binding.qualityTextView.setText(MediaFormat.getNameById(videoStream.getFormatId()) + " " + videoStream.getResolution()); } - - player.saveWasPlaying(); } /** From eea4f0f41c14692d7c566b557813fe1078d39f40 Mon Sep 17 00:00:00 2001 From: Robin Date: Fri, 16 Dec 2022 17:53:56 +0100 Subject: [PATCH 069/147] Update ExoPlayer to 2.18.2 --- app/build.gradle | 4 +- .../gesture/PopupPlayerGestureListener.kt | 6 +- .../player/mediasource/LoadedMediaSource.java | 63 ++----------------- 3 files changed, 11 insertions(+), 62 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 72a03e063..f14513c20 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,7 +8,7 @@ plugins { } android { - compileSdk 32 + compileSdk 33 namespace 'org.schabi.newpipe' defaultConfig { @@ -102,7 +102,7 @@ ext { androidxWorkVersion = '2.7.1' icepickVersion = '3.2.0' - exoPlayerVersion = '2.18.1' + exoPlayerVersion = '2.18.2' googleAutoServiceVersion = '1.0.1' groupieVersion = '2.10.1' markwonVersion = '4.6.2' diff --git a/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt b/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt index 666ea6a46..a540c0ab0 100644 --- a/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt +++ b/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt @@ -160,15 +160,15 @@ class PopupPlayerGestureListener( } } - override fun onLongPress(e: MotionEvent?) { + override fun onLongPress(e: MotionEvent) { playerUi.updateScreenSize() playerUi.checkPopupPositionBounds() playerUi.changePopupSize(playerUi.screenWidth) } override fun onFling( - e1: MotionEvent?, - e2: MotionEvent?, + e1: MotionEvent, + e2: MotionEvent, velocityX: Float, velocityY: Float ): Boolean { diff --git a/app/src/main/java/org/schabi/newpipe/player/mediasource/LoadedMediaSource.java b/app/src/main/java/org/schabi/newpipe/player/mediasource/LoadedMediaSource.java index 95524cf69..817b048f2 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediasource/LoadedMediaSource.java +++ b/app/src/main/java/org/schabi/newpipe/player/mediasource/LoadedMediaSource.java @@ -1,27 +1,21 @@ package org.schabi.newpipe.player.mediasource; +import androidx.annotation.NonNull; + import com.google.android.exoplayer2.MediaItem; -import com.google.android.exoplayer2.Timeline; -import com.google.android.exoplayer2.source.CompositeMediaSource; -import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaSource; -import com.google.android.exoplayer2.upstream.Allocator; -import com.google.android.exoplayer2.upstream.TransferListener; +import com.google.android.exoplayer2.source.WrappingMediaSource; import org.schabi.newpipe.player.mediaitem.MediaItemTag; import org.schabi.newpipe.player.playqueue.PlayQueueItem; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -public class LoadedMediaSource extends CompositeMediaSource implements ManagedMediaSource { - private final MediaSource source; +public class LoadedMediaSource extends WrappingMediaSource implements ManagedMediaSource { private final PlayQueueItem stream; private final MediaItem mediaItem; private final long expireTimestamp; /** - * Uses a {@link CompositeMediaSource} to wrap one or more child {@link MediaSource}s + * Uses a {@link WrappingMediaSource} to wrap one child {@link MediaSource} * containing actual media. This wrapper {@link LoadedMediaSource} holds the expiration * timestamp as a {@link ManagedMediaSource} to allow explicit playlist management under * {@link ManagedMediaSourcePlaylist}. @@ -36,7 +30,7 @@ public class LoadedMediaSource extends CompositeMediaSource implements @NonNull final MediaItemTag tag, @NonNull final PlayQueueItem stream, final long expireTimestamp) { - this.source = source; + super(source); this.stream = stream; this.expireTimestamp = expireTimestamp; @@ -51,51 +45,6 @@ public class LoadedMediaSource extends CompositeMediaSource implements return System.currentTimeMillis() >= expireTimestamp; } - /** - * Delegates the preparation of child {@link MediaSource}s to the - * {@link CompositeMediaSource} wrapper. Since all {@link LoadedMediaSource}s use only - * a single child media, the child id of 0 is always used (sonar doesn't like null as id here). - * - * @param mediaTransferListener A data transfer listener that will be registered by the - * {@link CompositeMediaSource} for child source preparation. - */ - @Override - protected void prepareSourceInternal(@Nullable final TransferListener mediaTransferListener) { - super.prepareSourceInternal(mediaTransferListener); - prepareChildSource(0, source); - } - - /** - * When any child {@link MediaSource} is prepared, the refreshed {@link Timeline} can - * be listened to here. But since {@link LoadedMediaSource} has only a single child source, - * this method is called only once until {@link #releaseSourceInternal()} is called. - *

      - * On refresh, the {@link CompositeMediaSource} delegate will be notified with the - * new {@link Timeline}, otherwise {@link #createPeriod(MediaPeriodId, Allocator, long)} - * will not be called and playback may be stalled. - * - * @param id The unique id used to prepare the child source. - * @param mediaSource The child source whose source info has been refreshed. - * @param timeline The new timeline of the child source. - */ - @Override - protected void onChildSourceInfoRefreshed(final Integer id, - final MediaSource mediaSource, - final Timeline timeline) { - refreshSourceInfo(timeline); - } - - @Override - public MediaPeriod createPeriod(final MediaPeriodId id, final Allocator allocator, - final long startPositionUs) { - return source.createPeriod(id, allocator, startPositionUs); - } - - @Override - public void releasePeriod(final MediaPeriod mediaPeriod) { - source.releasePeriod(mediaPeriod); - } - @NonNull @Override public MediaItem getMediaItem() { From d255d3e3764170d05955ae8c48642799d673b90c Mon Sep 17 00:00:00 2001 From: pratyaksh1610 Date: Sat, 17 Dec 2022 17:41:57 +0530 Subject: [PATCH 070/147] added icon for play all --- app/src/main/res/layout/playlist_control.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/layout/playlist_control.xml b/app/src/main/res/layout/playlist_control.xml index 5a8856128..685082013 100644 --- a/app/src/main/res/layout/playlist_control.xml +++ b/app/src/main/res/layout/playlist_control.xml @@ -48,6 +48,8 @@ Date: Sat, 17 Dec 2022 00:38:49 +0100 Subject: [PATCH 071/147] Support audio only background for services only supporting video streams Some services may only have video streams and no separate audio streams available. This commit will add audio background playback support for those services. It uses the video source as audio source for background playback. --- .../resolver/AudioPlaybackResolver.java | 42 ++++++++++++++++--- .../player/resolver/PlaybackResolver.java | 20 +++++++++ 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/resolver/AudioPlaybackResolver.java b/app/src/main/java/org/schabi/newpipe/player/resolver/AudioPlaybackResolver.java index 934beba19..e87c93114 100644 --- a/app/src/main/java/org/schabi/newpipe/player/resolver/AudioPlaybackResolver.java +++ b/app/src/main/java/org/schabi/newpipe/player/resolver/AudioPlaybackResolver.java @@ -11,7 +11,9 @@ import androidx.annotation.Nullable; import com.google.android.exoplayer2.source.MediaSource; import org.schabi.newpipe.extractor.stream.AudioStream; +import org.schabi.newpipe.extractor.stream.Stream; import org.schabi.newpipe.extractor.stream.StreamInfo; +import org.schabi.newpipe.extractor.stream.VideoStream; import org.schabi.newpipe.player.helper.PlayerDataSource; import org.schabi.newpipe.player.mediaitem.MediaItemTag; import org.schabi.newpipe.player.mediaitem.StreamInfoTag; @@ -41,22 +43,50 @@ public class AudioPlaybackResolver implements PlaybackResolver { return liveSource; } - final List audioStreams = getNonTorrentStreams(info.getAudioStreams()); - - final int index = ListHelper.getDefaultAudioFormat(context, audioStreams); - if (index < 0 || index >= info.getAudioStreams().size()) { + final Stream stream = getAudioSource(info); + if (stream == null) { return null; } - final AudioStream audio = info.getAudioStreams().get(index); final MediaItemTag tag = StreamInfoTag.of(info); try { return PlaybackResolver.buildMediaSource( - dataSource, audio, info, PlaybackResolver.cacheKeyOf(info, audio), tag); + dataSource, stream, info, PlaybackResolver.cacheKeyOf(info, stream), tag); } catch (final ResolverException e) { Log.e(TAG, "Unable to create audio source", e); return null; } } + + /** + * Get a stream to be played as audio. If a service has no separate {@link AudioStream}s we + * use a video stream as audio source to support audio background playback. + * + * @param info of the stream + * @return the audio source to use or null if none could be found + */ + @Nullable + private Stream getAudioSource(@NonNull final StreamInfo info) { + final List audioStreams = getNonTorrentStreams(info.getAudioStreams()); + if (!audioStreams.isEmpty()) { + final int index = ListHelper.getDefaultAudioFormat(context, audioStreams); + return getStreamForIndex(index, audioStreams); + } else { + final List videoStreams = getNonTorrentStreams(info.getVideoStreams()); + if (!videoStreams.isEmpty()) { + final int index = ListHelper.getDefaultResolutionIndex(context, videoStreams); + return getStreamForIndex(index, videoStreams); + } + } + return null; + } + + @Nullable + Stream getStreamForIndex(final int index, @NonNull final List streams) { + if (index >= 0 && index < streams.size()) { + return streams.get(index); + } + return null; + } } diff --git a/app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java b/app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java index ead127250..9c8cbb8f6 100644 --- a/app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java +++ b/app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java @@ -158,6 +158,26 @@ public interface PlaybackResolver extends Resolver { return cacheKey.toString(); } + + /** + * Use common base type {@link Stream} to handle {@link AudioStream} or {@link VideoStream} + * transparently. For more info see {@link #cacheKeyOf(StreamInfo, AudioStream)} or + * {@link #cacheKeyOf(StreamInfo, VideoStream)}. + * + * @param info the {@link StreamInfo stream info}, to distinguish between streams with + * the same features but coming from different stream infos + * @param stream the {@link Stream} ({@link AudioStream} or {@link VideoStream}) + * for which the cache key should be created + * @return a key to be used to store the cache of the provided {@link Stream} + */ + static String cacheKeyOf(final StreamInfo info, final Stream stream) { + if (stream instanceof AudioStream) { + return cacheKeyOf(info, (AudioStream) stream); + } else if (stream instanceof VideoStream) { + return cacheKeyOf(info, (VideoStream) stream); + } + throw new RuntimeException("no audio or video stream. That should never happen"); + } //endregion From 5d9bf8055ebfa66c4d734ea4a75f29e03caf4a5e Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 25 Dec 2022 21:22:19 +0100 Subject: [PATCH 072/147] Translated using Weblate (French) Currently translated at 93.0% (67 of 72 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (French) Currently translated at 91.6% (66 of 72 strings) Translated using Weblate (Urdu) Currently translated at 66.9% (434 of 648 strings) Translated using Weblate (Hungarian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Portuguese (Portugal)) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Hindi) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Italian) Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (Telugu) Currently translated at 6.9% (5 of 72 strings) Translated using Weblate (Telugu) Currently translated at 66.9% (434 of 648 strings) Translated using Weblate (Russian) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (648 of 648 strings) Translated using Weblate (Tamil) Currently translated at 54.0% (350 of 648 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 100.0% (648 of 648 strings) Co-authored-by: Ahmad Raza Co-authored-by: Dan Co-authored-by: Florian Co-authored-by: Hosted Weblate Co-authored-by: Igor Nedoboy Co-authored-by: Igor Sorocean Co-authored-by: K.B.Dharun Krishna Co-authored-by: Kiss Attila Co-authored-by: Nidi Co-authored-by: Ray Co-authored-by: ShareASmile Co-authored-by: Terry Louwers Co-authored-by: Translator Co-authored-by: pjammo Co-authored-by: ssantos Co-authored-by: subba raidu Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/te/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/ Translation: NewPipe/Metadata --- app/src/main/res/values-az/strings.xml | 80 +++++++++---------- app/src/main/res/values-hi/strings.xml | 60 +++++++------- app/src/main/res/values-hu/strings.xml | 26 +++--- app/src/main/res/values-nl/strings.xml | 5 ++ app/src/main/res/values-pa/strings.xml | 30 +++---- app/src/main/res/values-pt-rPT/strings.xml | 9 ++- app/src/main/res/values-ro/strings.xml | 4 + app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-ta/strings.xml | 1 + app/src/main/res/values-te/strings.xml | 22 +++++ app/src/main/res/values-uk/strings.xml | 4 +- app/src/main/res/values-ur/strings.xml | 10 +++ app/src/main/res/values-zh-rHK/strings.xml | 4 + .../metadata/android/fr/changelogs/740.txt | 23 ++++++ .../metadata/android/fr/changelogs/991.txt | 13 +++ .../metadata/android/it/changelogs/740.txt | 2 +- .../metadata/android/te/changelogs/65.txt | 26 ++++++ .../metadata/android/uk/changelogs/951.txt | 2 +- 18 files changed, 220 insertions(+), 103 deletions(-) create mode 100644 fastlane/metadata/android/fr/changelogs/740.txt create mode 100644 fastlane/metadata/android/fr/changelogs/991.txt create mode 100644 fastlane/metadata/android/te/changelogs/65.txt diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index a4491688f..22f3ba5e5 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -5,7 +5,7 @@ Yayım oynadıcı tapılmadı. \"VLC\" yüklənilsin\? Yayım oynadıcı tapılmadı (Oynatmaq üçün VLC\'ni quraşdıra bilərsiniz). Yüklə - İmtina + Ləğv et Brauzerdə aç Paylaş Endir @@ -17,7 +17,7 @@ Xarici video oynadıcı istifadə et Bəzi qətnamələrdə səsi silir Xarici səs oynadıcı istifadə et - Abunə Olun + Abunə Ol Abunə olundu Kanal abunəliyi ləğv edildi Məlumat göstər @@ -30,7 +30,7 @@ Video faylları üçün endirmə qovluğunu seç Səs endirmə qovluğu Endirilmiş səs faylları burada saxlanılır - Səs faylları üçün endirmə qovluğunu seç + Səs faylları üçün endirmə qovluğu seç Defolt keyfiyyət Daha böyük keyfiyyət seçimləri göstər \"Kodi\" ilə Oynat @@ -40,13 +40,13 @@ Səs Defolt səs formatı Defolt video formatı - Mövzu + Tema İşıqlı Qaranlıq Qara Abunəlikdən çıxın Ani pəncərə rejimində aç - Avtomatik oynatma + Avtomatik oynat Endir Fasilələrdən sonra (məsələn, telefon zəngləri) oynatmağa davam etdir Oynatmanı davam etdir @@ -54,24 +54,24 @@ Məlumat təmizlə Siyahılarda oynatma mövqelərini göstər Siyahılardakı mövqelər - Son oynatma mövqeyinə qaytar + Son oynatma mövqeyini qaytar Oynatmanı davam etdir Baxış tarixçəsi Axtarış sorğularını yerli olaraq saxla Axtarış tarixçəsi Axtarış edərkən göstəriləcək təklifləri seç Axtarış təklifləri - Oynadıcının parlaqlığını nizamlamaq üçün jestlərdən istifadə et - Parlaqlığı jestlə nizamlama - Oynadıcının səsini nizamlamaq üçün jestlərdən istifadə et - Səsi jestlə nizamla - Avto-növbələmə - Növbəti Yayımı Avto-növbələmə + Oynadıcının parlaqlığını nizamlamaq üçün jestləri istifadə et + Parlaqlığı jestlə nizamlamaq + Oynadıcı səsini nizamlamaq üçün jestləri istifadə et + Səsi jestlə idarə etmək + Avto-növbələ + Növbəti Yayımı Avto-növbələ Üst məlumat keşi silindi Keşlənmiş bütün veb-səhifə məlumatlarını sil Keşlənmiş üst məlumatı təmizlə Şəkil keşi silindi - Şərhləri gizlətmək üçün söndür + Şərhləri gizlətmək üçün bağla Şərhləri göstər Aktiv oynadıcının növbəsi dəyişdiriləcək Bir oynadıcıdan digərinə keçid növbənizi dəyişdirə bilər @@ -94,7 +94,7 @@ Ani Pəncərə Paneli Seç Abunəliyi yeniləmək alınmadı - Abunəliyi dəyişdirmək alınmadı + Abunəliyi dəyişmək alınmadı Nəticələr göstərilir: %s Kanallar %s tərəfindən @@ -102,8 +102,8 @@ Yaş həddi səbəbiylə (məsələn, 18+) uşaqlar üçün uyğun olmayan məzmunu göstər Yaş məhdudiyyətli məzmunu göstər Məzmun - Ani pəncərədə oynadılır - Arxa fonda oynadılır + Ani pəncərə rejimində oynadılır + Fonda oynadılır Yeniləmələr Sazlama Görünüş @@ -115,7 +115,7 @@ Defolt məzmun ölkəsi URL\'i tanımaq olmadı. Başqa tətbiqlə açılsın\? Dəstəklənməyən URL\'i - \"Növbəyə əlavə etmək üçün basılı saxla\" ipucusun göstər + \"Növbələmək üçün basılı saxla\" tövsiyəsin göstər \"Növbəti\" və \"Bənzər\" videoları göstər Tarixçəni, abunəlikləri, pleylistləri və tənzimləmələri ixrac edin Cari tarixçənizi, abunəliklərinizi, pleylistlərinizi və (könüllü) tənzimləmələrinizi etibarsız edir @@ -179,7 +179,7 @@ Xəta Axtarış tarixçəsi silindi Bütün axtarış tarixçəsi silinsin\? - Axtarışdakı açar sözlərin tarixçəsini silir + Açar sözləri axtarışının tarixçəsini silir Axtarış tarixçəsini silin Oynatma mövqeləri silindi Bütün oynatma mövqeləri silinsin\? @@ -208,7 +208,7 @@ Mobil internet istifadə edərkən görüntü keyfiyyətini məhdudlaşdır Limitsiz 1 element silindi. - Server əlavə edin + Nümunə əlavə et Sevimli \"PeerTube\" nümunələrinizi seçin Endirilmiş faylları silin Endirmə tarixçənizi təmizləmək və ya endirilmiş bütün faylları silmək istəyirsiniz\? @@ -217,7 +217,7 @@ Endirmələri dayandır Haraya endiriləcəyini soruş Sizdən hər endirmənin harada saxlanılacağı soruşulacaq. -\nXarici SD karta yükləmək istəyirsinizsə, sistem qovluğu seçicisini (SAF) aktiv edin +\nXarici SD karta endirmək istəyirsinizsə, sistem qovluğu seçicisini (SAF) aktiv edin
      \'Yaddaş Giriş Çərçivəsi \' xarici SD karta endirməyə imkan verir Sistem defoltu Tətbiq dili @@ -262,7 +262,7 @@ Xarici yaddaş əlçatan deyil Oynadılmış yayımlar tarixçəsini və oynatma mövqelərini silir Üst məlumatı göstər - Video açıqlamasını və əlavə məlumatı gizlətmək üçün söndürün + Video açıqlamasını və əlavə məlumatı gizlətmək üçün bağla Açıqlamanı göstər Bildirişi rəngləndir Belə qovluq yoxdur @@ -270,10 +270,10 @@ Xarici oynadıcılar bu cür linkləri dəstəkləmir Yerli axtarış təklifləri Video - Əlaqədar yayımlar + Əlaqəli elementlər Baxılmış kimi işarələ ilə aç - Gecə Mövzusu + Gecə Teması Ani pəncərə xüsusiyyətlərini xatırla Ani pəncərənin son ölçüsü və mövqeyini xatırla Video yayımı tapılmadı @@ -292,7 +292,7 @@ Digər tətbiqlərin üzərində göstərməyə icazə ver İlkin tənzimləmələri qaytarmaq istəyirsiniz\? Miniatürlərin yüklənməsini, dataya qənaət etmək və yaddaşdan istifadəni azaltmaq üçün söndürün. Dəyişikliklər həm yaddaşdaxili, həm də diskdə olan təsvir keşini təmizləyir - Növbətini sıraya salın + Növbətini növbələ Yenidən Cəhd Et Cari oynatma yayımı bildirişini konfiqurasiya et Bildirişlər @@ -302,7 +302,7 @@ Fayl adı boş ola bilməz Yadda saxlanmış tabları oxumaq mümkün olmadı, buna görə defolt tablardan istifadə edin NewPipe xəta ilə qarşılaşdı, bildirmək üçün toxun - Bağışlayın, belə olmamalı idi. + Bağışlayın, o baş verməməli idi. Bu xətanı e-poçt vasitəsilə bildirin GitHub\'da Hesabat Ver Zəhmət olmasa, xətanızı müzakirə edən məsələnin mövcud olub-olmadığını yoxlayın. Dublikat biletləri yaradarkən, bizdən faktiki səhvi düzəltməyə sərf edəcəyimiz vaxt alırsınız. @@ -324,7 +324,7 @@ Video yoxdur Şərhlər qeyri-aktivdir Başlat - Dayandır + Fasilə Təsdiqləmə İmtina Xəta @@ -386,7 +386,7 @@ Avtomatik yaradıldı Altyazılar LeakCanary yoxdur - Yaddaş sızmasının monitorinqi yığın boşaltma zamanı tətbiqin cavab verməməsinə səbəb ola bilər + Yaddaş sızma monitorinqi yığın boşaltma zamanı tətbiqin cavab verməməsinə səbəb ola bilər Yaddaş sızmalarını göstər Utilizasiyadan sonra fraqment və ya fəaliyyətin yaşam dövründən kənarda çatdırıla bilməyən Rx istisnaları barədə hesabat verməyə məcbur et Xidmətlərdən alınmış orijinal mətnlər yayım elementlərində görünəcək @@ -430,8 +430,8 @@ Ən Yeni Bu məzmun ölkənizdə mövcud deyil. Bu məzmun yalnız ödəniş etmiş istifadəçilər üçün əlçatandır, ona görə də NewPipe tərəfindən yayımlana və ya endirilə bilməz. - Avtomatik (cihaz mövzusu) - Sevimli gecə mövzunuzu seçin — %s + Avtomatik (cihaz teması) + Sevimli gecə temanızı seçin — %s Sabitlənmiş şərh Bildirişlər deaktiv edilib Bildiriş al @@ -464,7 +464,7 @@ Sizdən hər endirmənin harada saxlanılacağı soruşulacaq \"Yaddaş Giriş Çərçivəsi\"yalnız Android 10\'dan başlayaraq dəstəklənir Kanalın avatar miniatürü - Sevdiyiniz gecə mövzusunu aşağıda seçə bilərsiniz + Sevdiyiniz gecə temasını aşağıda seçə bilərsiniz Android\'in bildiriş rəngini miniatürdəki əsas rəngə uyğun fərdiləşdirməsini təmin et (qeyd edək ki, bu, bütün cihazlarda mövcud deyil) GitHub\'da Bax İanə Et @@ -498,10 +498,10 @@ Miniatürü 1:1 görünüş nisbətinə kəs Yükləmə intervalının həcmini dəyişdir (hazırda %s). Daha aşağı dəyər ilkin video yükləməni sürətləndirə bilər. Dəyişikliklər oynadıcının yenidən başladılmasını tələb edir Yayım yaradıcısı, məzmunu və ya axtarış sorğusu haqqında əlavə məlumat olan üst məlumat qutularını gizlətmək üçün söndürün - Əlaqədar yayımı əlavə etməklə (təkrarlanmayan) sonlanacaq oynatma sırasını davam etdir + Əlaqəli yayımı əlavə etməklə (təkrarlanmayan) sonlanacaq oynatma növbəsini davam etdir Kənar axtarış təklifləri - Server artıq mövcuddur - Videoları mini oynadıcıda başlatma, avtomatik fırlatma kilidlidirsə, birbaşa tam ekran rejiminə keçid. Siz hələ də tam ekran rejimindən çıxmaqla mini pleyerə daxil ola bilərsiniz + Nümunə artıq mövcuddur + Videoları mini oynadıcıda başlatma, avtomatik fırlatma kilidlidirsə, birbaşa tam ekran rejiminə keçid. Siz hələ də tam ekrandan çıxmaqla mini oynadıcıya daxil ola bilərsiniz 100+ video ∞ video Şərhlər yoxdur @@ -548,7 +548,7 @@ Yarımton Endirmə tamamlandı - %s endirmələr tamamlandı + %s endirmə tamamlandı Defolt ExoPlayer Mövcud olduqda xüsusi axından al @@ -605,11 +605,11 @@ Nə:\\nTələb:\\nMəzmun Dili:\\nMəzmun Ölkəsi:\\nTətbiq Dili:\\nXidmət:\\nGMT Saatı:\\nPaket:\\nVersiya:\\nƏS versiyası: Bağışlayın, nəsə xəta baş verdi. Formatlanmış hesabatı kopyala - Server URL\'sini daxil edin - Serveri doğrulamaq mümkün olmadı + Nümunə URL\'sini daxil et + Nümunəni doğrulamaq mümkün olmadı %s-də bəyəndiyiniz nümunələri tapın Video \"Təfsilatlar:\"səhifəsində fon və ya ani pəncərə düyməsini basarkən ipucu göstər - Oynadıcı altyazı miqyasını və arxa fon üslublarını dəyişdirin. Effektiv olması üçün tətbiqin yenidən başladılması tələb olunur + Oynadıcı altyazı mətn miqyasını və arxa fon üslublarını dəyişdirin. Effektiv olması üçün tətbiqi yenidən başlatmaq tələb olunur Xəta baş verdi: %1$s Fayl mövcud deyil, yaxud oxumaq və ya yazmaq icazəsi yoxdur Veb saytı təhlil etmək alınmadı @@ -654,7 +654,7 @@ Video URL\'i imzasının şifrəsi qırılmadı Endirmək üçün heç bir yayım yoxdur Xəta baş verdi, bildirişə baxın - Şərhiniz (İngilis dilində): + Şərhiniz (İngiliscə): Video oynat, müddət: Zəhmət olmasa, daha sonra tənzimləmələrdə endirmə qovluğunu təyin et NewPipe Endirilir @@ -704,8 +704,8 @@ \nZəhmət olmasa ,Yaddaş Giriş Çərçivəsinə uyğun fayl menecerini quraşdırın
      Bu video yalnız YouTube Music Premium üzvləri üçün əlçatandır, ona görə də NewPipe tərəfindən yayımlamaq və ya endirmək mümkün deyil. İndi açıqlamadakı mətni seçə bilərsiniz. Nəzərə alın ki, seçim rejimində səhifə titrəyə və keçidlər kliklənməyə bilər. - Bildirişdə göstərilən video miniatürünü 16:9-dan 1:1 nisbətinə qədər kəs - Aşağıdakı bildiriş fəaliyyətini hər birinin üzərinə toxunaraq redaktə edin. Sağdakı təsdiq qutularından istifadə edərək yığcam bildirişdə göstərilməsi üçün onlardan üçə qədərini seç + Bildirişdə göstərilən video miniatürünü 16:9-dan 1:1 görünüş nisbətinə qədər kəs + Aşağıdakı bildiriş fəaliyyətini hər birinin üzərinə toxunaraq redaktə edin. Sağdakı təsdiq qutularından istifadə edərək yığcam bildirişdə göstərilməsi üçün onların üçə qədərini seç Belə fayl/məzmun mənbəyi yoxdur Seçilmiş yayım xarici oynadıcılar tərəfindən dəstəklənmir Yükləyici tərəfindən hələ dəstəklənməyən yayımlar göstərilmir diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index df6d3f3d3..b4f9fadc0 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -18,7 +18,7 @@ ध्वनि रौशनी काला - देखे हुए विडियोज का इतिहास + देखे हुए वीडियोज़ का इतिहास डाउनलोड करे वीडियो और ऑडियो इतिहास और कैश @@ -29,7 +29,7 @@ तृतीय-पक्ष लाइसेंस ऐप के बारे में और सामान्य प्रश्न लाइसेंस - GitHub में देखें + गिटहब में देखें न्यूपाइप का लाइसेंस लाइसेंस पढ़ें योगदान करें @@ -41,12 +41,12 @@ रद्द करें क्या आप का मतलब \"%1$s\" था\? के साथ शेयर करे - कोई दूसरा विडियो चालक प्रयोग करें - कुछ विडियो गुणवत्ता स्तर पर ध्वनि हट सकती है + कोई दूसरा वीडियो चालक प्रयोग करें + कुछ वीडियो गुणवत्ता स्तर पर ध्वनि हट सकती है कोई दूसरा ध्वनि चालक उपयोग करें सब्सक्रिप्शन बदली नहीं जा सकी सब्सक्रिप्शन अपडेट नहीं किया जा सका - देखे की क्या नया है + देखें कि क्या नया है वीडियो डाउनलोड का फ़ोल्डर डाउनलोड की गई वीडियो फ़ाइलें यहां संग्रहीत हैं वीडियो फ़ाइलों के लिए डाउनलोड फ़ोल्डर चुनें @@ -56,33 +56,33 @@ प्रथम स्थापित गुणवत्ता स्तर पॉपअप का प्रथम स्थापित गुणवत्ता स्तर उच्च गुणवत्ता स्तर दिखाएं - केवल कुछ ही यंत्र 2K/4K मे विडियो चला सकते हैं + केवल कुछ ही यंत्र 2K/4K मे वीडियो चला सकते हैं Kodi मे चलाए Kore ऐप नहीं मिली, इसे स्थापित करें\? \"Kodi मे चलाएं\" वाला विकल्प दिखाएँ - Kodi मीडिया सेंटर से विडियो चलने के लिए विकल्प प्रदर्शित करें + कोडी मीडिया सेंटर से वीडियो चलने के लिए विकल्प प्रदर्शित करें प्रथम स्थापित ध्वनि फॉर्मेट - प्रथम स्थापित विडियो फॉर्मेट + प्रथम स्थापित वीडियो फॉर्मेट ऐप थीम गहरा - विडियो पॉपअप का आकर और उसकी स्थति को याद रखे - विडियो पॉपअप की अंतिम स्थिति और आकर को याद रखे + वीडियो पॉपअप का आकार और उसकी स्थिति को याद रखें + वीडियो पॉपअप की अंतिम स्थिति और आकार को याद रखें खोज में सुझाव खोज के दौरान दिखाये जाने वाले सुझाव चुने खोज का इतिहास खोज के डेटा को सिर्फ डिवाइस मेमोरी में रखे - देखे गए विडियोज की सूची रखे + देखे गए वीडियोज़ की सूची रखें प्लेबैक फिर से शुरू करें - रूकावटे खत्म होने के बाद विडियो प्ले करे (जैसे - फ़ोन कॉल) + रुकावटें खत्म होने के बाद वीडियो प्ले करें (जैसे - फ़ोन कॉल) \'अगला\' और \'समान\' वीडियो दिखाए \"कतार में जोड़ने के लिए स्पर्श बनाये रखें\" दिखाएं - जब बैकग्राउंड और पॉपअप बटन विडियो के विवरण पन्ने में दबाई जाए तो सलाह दिखाएं + जब बैकग्राउंड और पॉपअप बटन वीडियो के विवरण पन्ने में दबाई जाए तो सलाह दिखाएं असमर्थित URL डिफ़ॉल्ट विषय की भाषा प्लेयर चाल चलन दिखावट - विडियो पॉपअप के अंदाज में चल रहा + वीडियो पॉपअप के अंदाज में चल रहा विषयवस्तु आयु प्रतिबंधित सामग्री दिखाएं लाइव @@ -92,23 +92,23 @@ सारे बंद करे साफ़ - बेहतर विडियो की क्वालिटी - वापस जाए + बेहतर वीडियो की क्वालिटी + वापस जाएँ सारे प्ले करे NewPipe की सूचनापत्र - न्यूपाइप के बैकग्राउंड में चल रहे विडियो और पॉपअप विडियो के लिए सूचनापत्र + न्यूपाइप के बैकग्राउंड में चल रहे वीडियो और पॉपअप वीडियो के लिए सूचनापत्र [नहीं जानते] त्रुटी नेटवर्क में त्रुटी सारे thumbnail(फोटो जो फ़ोन की मेमोरी में है ) भरे नहीं जा सकते - विडियो के URL signature को decrypt नहीं कर सकते + वीडियो के URL हस्ताक्षर को डीऑबफस्केट नहीं कर सकते इस website का निरंक्षण नहीं कर सकते विषय वस्तु उपलब्ध नहीं है डाउनलोड मेनू को स्थापित नहीं कर सकते APP/UI टूट गया - इस विडियो को चलाने में असफल हुए - कभी ठीक न होने वाले विडियो प्लेयर की त्रुटी आ रही है - विडियो प्लेयर त्रुटी से ठीक हो रहा है + इस वीडियो को चलाने में असफल हुए + कभी ठीक न होने वाले वीडियो प्लेयर की त्रुटी आ रही है + वीडियो प्लेयर त्रुटी से ठीक हो रहा है खेद है की, ऐसा होना नहीं चाहिए था. त्रुटी की रिपोर्ट को ईमेल से भेजे माफ़ करे , कुछ त्रुटियाँ हो रही है @@ -124,7 +124,7 @@ नापसंद कोई परिणाम नहीं मिला यहां के खालीपन को दूर करने के लिए कुछ सर्च करें या किसी चैनल को सब्सक्राइब करें - विडियो + वीडियो ऑडियो फिर से कोशिश करे हज़ार @@ -146,7 +146,7 @@ शुरू रोकें मिटाएँ - checksum + चेकसम ठीक है फाइल का नाम मेसेज के thread @@ -187,10 +187,10 @@ स्ट्रीमिंग करने के लिए कोई चालक उपलब्ध नहीं है (आप इसे चलाने के लिए VLC चालक स्थापित कर सकते हैं)। स्ट्रीम फाइल डाउनलोड करें जानकारी दिखाएं - बुकमार्क किये गए प्लेलिस्टस + बुकमार्क की गई प्लेलिस्टें में शामिल करें डिफ़ॉल्ट देश का विषय - हमेशा के लिए + हमेशा सिर्फ एक बार के लिए बैकग्राउंड में स्विच करें पॉपअप मोड में जाएं @@ -208,7 +208,7 @@ नाम बदलें दान करें न्यूपाइप स्वयंसेवकों द्वारा विकसित किया जाता है जो आपको अच्छा अनुभव देने के लिए अपना खाली समय व्यतीत करते हैं। स्वयंसेवको को मदद भेजे, ताकि वह न्यूपाइप को और अच्छा बना सके। - वापस दे + वापस दें वेबसाइट अधिक जानकारी और खबरों के लिए न्यूपाइप की वेबसाइट पर जाएं। पिछला चलाया गया @@ -281,7 +281,7 @@ \nन्यूपाइप की गोपनीयता नीति विस्तार से समज़ाती है कि कोनसा डेटा भेजा या संग्रह किया जाता है जब आप क्रेश विवरण भेजते है।
      गोपनीयता नीति पढ़े क्या आप सेटिंग्स भी आयात करना चाहते है? - पसंदीदा \'खोलने\' कि प्रक्रिया + पसंदीदा \'खोलने\' की प्रक्रिया सामग्री खोलते समय डिफ़ॉल्ट कारवाही — %s अनुशीर्षक प्लेयर अनुशीर्षक के शब्दों का परिमाण और पृष्ठभूमि शैलियों को बदले। लागू करने के लिए ऐप को पुनः प्रारम्भ करना जरूरी है @@ -321,7 +321,7 @@ ऐप बदलते समय उसे मिनिमाइज करे मुख्य वीडियो चालक से दूसरी ऐप पर जाने पर — %s कोई नही - पृष्ठभूमि प्लेयर में बदले + बैकग्राउंड प्लेयर में बदले पॉप अप प्लेयर में बदले न्यूपाइप एक काॅपीलेफ़्ट फ़्री साॅफ़्टवेर है: इसे आप अपनी इच्छा के अनुसार इस्तेमाल, जाँच, बाँट तथा और बेहतर बना सकते है। खास तौर पर आप इसे फ़्री साॅफ़्टवेर फ़ाउंडेशन के द्वारा जारी जीएनयू जनरल पब्लिक लाइसेंस के तीसरे या उसके बाद आने वाले कोई भी वर्णन के शर्तों के मुताबिक फिर से बाँट या बदल सकते हैं। अनसब्सक्राईब करें @@ -690,7 +690,7 @@ आइटम्स का असल अपलोड समय दिखाएं सेवाओं से मूल पाठ स्ट्रीम आइटम में दिखाई देंगे प्लेलिस्ट में जोड़े गए पहले और बाद में देखे गए वीडियो हटा दिए जाएंगे। -\nक्या आपको यकीन है\? इसे असंपादित नहीं किया जा सकेगा! +\nक्या यक़ीनन आप ऐसा चाह्ते हैं\? इसे असंपादित नहीं किया जा सकेगा!
      %d मिनट %d मिनट @@ -712,7 +712,7 @@ निर्माता द्वारा दिया दिल टैबलेट मोड आपने इस चैनल को अब सब्सक्राइब किया है - बाहरी प्लेयरस के लिए कोई विडियो स्ट्रीम उपलब्ध नहीं है + बाहरी प्लेयरस के लिए कोई वीडियो स्ट्रीम उपलब्ध नहीं है बाहरी प्लेयरस के लिए कोई ऑडियो स्ट्रीम उपलब्ध नहीं है कुछ सेवाओं में उपलब्ध, यह आमतौर पर बहुत तेज होता है लेकिन सीमित मात्रा में आइटम और अक्सर अधूरी जानकारी (जैसे कोई अवधि नहीं, आइटम प्रकार, कोई लाइव स्थिति नहीं) लौटा सकता है इस क्रिया के लिए कोई उपयुक्त फ़ाइल प्रबंधक नहीं मिला। diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 6db9216a7..8a518bda6 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -135,9 +135,9 @@ Közvetítési fájl letöltése Hozzáadás ehhez Gyorsabb, de pontatlan tekerés használata - A pontatlan tekerés lehetővé teszi, hogy gyorsabban ugorjon a pozíciókra, de kisebb pontossággal. Az 5, 15, vagy 25 másodperces tekerés nem működik ebben a módban. + A pontatlan tekerés lehetővé teszi, hogy gyorsabban ugorjon a pozíciókra, de kisebb pontossággal. Az 5, 15, vagy 25 másodperces tekerés nem működik ebben a módban Bélyegképek betöltése - Kapcsolja ki, hogy a megelőzze a bélyegképek betöltését, így csökkentve az adat- és memóriahasználatot. A megváltoztatása törli a memóriában és a meghajtón lévő képgyorsítótárat. + Kapcsolja ki, hogy a megelőzze a bélyegképek betöltését, így csökkentve az adat- és memóriahasználatot. A megváltoztatása törli a memóriában és a meghajtón lévő képgyorsítótárat A bélyegkép gyorsítótár törölve Gyorsítótárazott metaadatok törlése Minden gyorsítótárazott weboldaladat törlése @@ -266,7 +266,7 @@ Nagyítás Automatikusan létrehozott Feliratok - Feliratok méretének és hátterének stílusbeli módosítása. A módosítások életbe lépésehez az alkalmazás újraindítása szükséges. + Feliratok méretének és hátterének stílusbeli módosítása. A módosítások életbe lépésehez az alkalmazás újraindítása szükséges Importálás Importálás a következőből Exportálás a következőbe @@ -491,7 +491,7 @@ Frissítési értesítés megjelenítése, amikor egy új verzió érhető el Frissítések Az Android igazítsa az értesítés színét a bélyegkép meghatározó színéhez (nem minden eszközön érhető el) - Legfeljebb három művelet jeleníthető meg a kompakt értesítésben. + Legfeljebb három művelet jeleníthető meg a kompakt értesítésben! Koppintással szerkesztheti az egyes értesítéseken megjelenő műveleteket. Válasszon ki legfeljebb hármat a jobb oldali jelölőnégyzetekkel, amelyek a kompakt értesítéseken is megjelennek. Ötödik műveletgomb Negyedik műveletgomb @@ -568,13 +568,13 @@ Helyi keresési javaslatok Távoli keresési javaslatok A fő lejátszó teljes képernyős indítása - A videókat ne a kis lejátszóban indítsa el, hanem kapcsolja be a teljes képernyős módot, ha az automatikus forgatás zárolva van. Továbbra is elérheti a kis lejátszót, ha kilép a teljes képernyőből. + A videókat ne a kis lejátszóban indítsa el, hanem kapcsolja be a teljes képernyős módot, ha az automatikus forgatás zárolva van. Továbbra is elérheti a kis lejátszót, ha kilép a teljes képernyőből Szolgáltatás be/ki, jelenleg kiválasztott: A megjegyzések ki vannak kapcsolva Húzza oldalra az elemeket az eltávolításukhoz A következő sorba állítása A következő sorba állítva - Feldolgozás… Ez eltarthat egy ideig. + Feldolgozás… Ez eltarthat egy ideig Az eltávolítás utáni, fragment vagy activity életcikluson kívüli, nem kézbesíthető Rx kivételek jelentésének kényszerítése Eredeti „ennyi ideje” megjelenítése az elemeken Tiltsa le a médiacsatornázást, ha fekete képernyőt vagy akadozást tapasztal videólejátszáskor @@ -617,7 +617,7 @@ Nem listázott Ki Nem található megfelelő fájlkezelő ehhez a művelethez. -\nTelepítsen egy fájlkezelőt, vagy próbálja meg letiltani a következőt a letöltési beállításokban: „%s”. +\nTelepítsen egy fájlkezelőt, vagy próbálja meg letiltani a következőt a letöltési beállításokban: „%s” Letöltés befejezve %s letöltés befejezve @@ -656,7 +656,7 @@ Frissítések keresése… Készítette: %s Nem található megfelelő fájlkezelő ehhez a művelethez. -\nTelepítsen egy olyan fájlkezelőt, amely kompatibilis a Storage Access Frameworkkel. +\nTelepítsen egy olyan fájlkezelőt, amely kompatibilis a Storage Access Frameworkkel
      Szöveg kijelölésének engedélyezése a leírásban Kategória Címkék @@ -664,7 +664,7 @@ Gyors mód letiltása Igen, és távolítsa el a részben megnézett videókat is A videók, melyeket már megnézett miután a lejátszási listához adta őket, el lesznek távolítva. -\nBiztos benne\? Ez nem vonható vissza. +\nBiztos benne\? Ez nem vonható vissza!
      A szolgáltatásokból származó eredeti szövegek láthatók lesznek a közvetítési elemeken Lejátszó összeomlasztása Képjelölők megjelenítése @@ -682,7 +682,7 @@ Rögzített megjegyzés LeakCanary nem elérhető Lejátszó értesítés - Módosítsa a betöltési intervallum méretét (jelenleg %s). Az alacsonyabb érték felgyorsíthatja a videó kezdeti betöltését. A változtatásokhoz a lejátszó újraindítása szükséges. + Módosítsa a betöltési intervallum méretét (jelenleg %s). Az alacsonyabb érték felgyorsíthatja a videó kezdeti betöltését. A változtatásokhoz a lejátszó újraindítása szükséges Az aktuális lejátszás konfigurálása értesítés Értesítések Új élő közvetítések @@ -720,6 +720,10 @@ Gyakran ismételt kérdések Megtekintés a weboldalon Rendezés - Ha problémája van az alkalmazás használatával, akkor nézze meg az ezekre a gyakori kérdésekre adott válaszokat. + Ha problémája van az alkalmazás használatával, akkor nézze meg az ezekre a gyakori kérdésekre adott válaszokat! Megnézett elemek elrejtése + Gyors mód + Feliratkozások importálása vagy exportálása a 3 pontos menüből + Ön a Newpipe legfrissebb verzióját futtatja + Nyomjon a %s letöltéséhez \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index f0e510bfd..2390f8e69 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -721,4 +721,9 @@ Veelgestelde vragen Als u problemen ondervindt bij het gebruik van de app, bekijk dan deze antwoorden op veelgestelde vragen! Bekijk op de website + Sorteer + Snelle modus + Importeer of exporteer abonnementen vanuit het 3-punten menu + U heeft de laatste versie van NewPipe + Klik om %s te downloaden \ No newline at end of file diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 7be904b99..08c7e47c9 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -16,7 +16,7 @@ ਕੀ ਤੁਹਾਡਾ ਮਤਲਬ ਸੀ \"%1$s\"\? ਇਸ ਨਾਲ਼ ਸਾਂਝਾ ਕਰੋ ਬਾਹਰੀ ਵੀਡੀਓ ਪਲੇਅਰ ਵਰਤੋ - ਕੁਝ ਰੈਜ਼ੋਲੂਸ਼ਨਾਂ \'ਤੇ ਆਵਾਜ਼ ਨੂੰ ਹਟਾ ਦਿੰਦਾ ਹੈ + ਕੁਝ ਰੈਜ਼ੋਲਿਊਸ਼ਨਾਂ \'ਤੇ ਆਵਾਜ਼ ਨੂੰ ਹਟਾ ਦਿੰਦਾ ਹੈ ਬਾਹਰੀ ਆਡੀਓ ਪਲੇਅਰ ਵਰਤੋ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ ਸਬਸਕ੍ਰਾਈਬ ਹੈ @@ -36,9 +36,9 @@ ਆਡੀਓ ਲਈ ਡਾਊਨਲੋਡ ਫ਼ੋਲਡਰ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਆਡੀਓ ਇੱਥੇ ਜਮ੍ਹਾਂ ਹੁੰਦੀਆਂ ਹਨ ਆਡੀਓ ਫ਼ਾਈਲਾਂ ਲਈ ਡਾਊਨਲੋਡ ਫ਼ੋਲਡਰ ਚੁਣੋ - ਡਿਫ਼ਾਲਟ ਰੈਜ਼ੋਲੂਸ਼ਨ - ਪੌਪ-ਅਪ ਲਈ ਡਿਫ਼ਾਲਟ ਰੈਜ਼ੋਲੂਸ਼ਨ - ਵੱਡੀਆਂ ਰੈਜ਼ੋਲੂਸ਼ਨਾਂ ਦਿਖਾਓ + ਡਿਫ਼ਾਲਟ ਰੈਜ਼ੋਲਿਊਸ਼ਨ + ਪੌਪ-ਅਪ ਲਈ ਡਿਫ਼ਾਲਟ ਰੈਜ਼ੋਲਿਊਸ਼ਨ + ਵੱਡੀਆਂ ਰੈਜ਼ੋਲਿਊਸ਼ਨਜ਼ ਦਿਖਾਓ ਸਿਰਫ਼ ਕੁਝ ਹੀ ਡਿਵਾਈਸ 2K/4K ਵੀਡੀਓ ਨੂੰ ਚਲਾ ਸਕਦੇ ਹਨ Kodi ਵਿੱਚ ਚਲਾਓ Kodi ਐਪ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ\? @@ -53,13 +53,13 @@ ਕਾਲ੍ਹਾ ਪੌਪ-ਅਪ ਦਾ ਆਕਾਰ ਅਤੇ ਸਥਿਤੀ ਯਾਦ ਰੱਖੋ ਪੌਪ-ਅਪ ਦਾ ਆਖਰੀ ਅਕਾਰ ਅਤੇ ਸਥਿਤੀ ਯਾਦ ਰੱਖੋ - ਤੇਜ਼ ਪਰ inexact seek ਵਰਤੋ - Inexact seek ਵੀਡੀਓ ਨੂੰ ਤੇਜ਼ ਪਰ ਅਣ-ਸਟੀਕ ਢੰਗ ਨਾਲ ਅੱਗੇ-ਪਿੱਛੇ ਲਿਜਾਂਦਾ ਹੈ । ਇਸ ਨਾਲ ਅੱਗੇ-ਪਿੱਛੇ 5,15 ਜਾਂ 25 ਸਕਿੰਟ ਜਾਣਾ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ + ਤੇਜ਼ ਪਰ ਅਸਪੱਸ਼ਟ ਸੀਕ ਵਰਤੋ + ਅਸਪੱਸ਼ਟ ਸੀਕ ਵੀਡੀਓ ਨੂੰ ਤੇਜ਼ ਪਰ ਅਣ-ਸਟੀਕ ਢੰਗ ਨਾਲ ਅੱਗੇ-ਪਿੱਛੇ ਲਿਜਾਂਦਾ ਹੈ । ਇਸ ਨਾਲ ਅੱਗੇ-ਪਿੱਛੇ 5,15 ਜਾਂ 25 ਸਕਿੰਟ ਜਾਣਾ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ ਥੰਮਨੇਲ ਲੋਡ ਕਰੋ ਥੰਮਨੇਲ ਲੋਡ, ਡਾਟਾ ਦੀ ਬੱਚਤ ਅਤੇ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਰੋਕਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ। ਇਸ ਵਿਚ ਤਬਦੀਲੀ ਕਰਨ ਨਾਲ ਇਨ-ਮੈਮੋਰੀ ਅਤੇ ਆਨ-ਡਿਸਕ ਚਿੱਤਰ cache ਦੋਵੇਂ ਮਿਟ ਜਾਣਗੇ ਚਿੱਤਰ cache ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ - Cached ਮੈਟਾ-ਡਾਟਾ ਮਿਟਾਓ - ਸਾਰੇ cached ਵੈੱਬ-ਪੇਜਾਂ ਦਾ ਡਾਟਾ ਮਿਟਾਓ + ਕੈਸ਼ ਕੀਤਾ ਮੈਟਾ-ਡਾਟਾ ਮਿਟਾਓ + ਸਾਰੇ ਕੈਸ਼ ਕੀਤੇ ਵੈੱਬ-ਪੇਜਾਂ ਦਾ ਡਾਟਾ ਮਿਟਾਓ ਮੈਟਾ-ਡਾਟਾ cache ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ ਅਗਲੀ ਸਟ੍ਰੀਮ ਨੂੰ ਆਟੋ-ਕਤਾਰਬੱਧ ਕਰੋ ਇੱਕ ਮੁੱਕਣ ਵਾਲੀ ਪਰ ਨਾ-ਦੁਹਰਾਉਣ ਵਾਲੀ ਕਤਾਰ ਨੂੰ, ਸੰਬੰਧਤ ਸਟ੍ਰੀਮ ਜੋੜਦਿਆਂ, ਚਲਾਉਂਦੇ ਜਾਓ @@ -94,7 +94,7 @@ ਸਾਰੇ ਬੰਦ ਕੀਤਾ ਮਿਟਾਓ - ਵਧੀਆ ਰੈਜ਼ੋਲੂਸ਼ਨ + ਵਧੀਆ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਵਾਪਿਸ ਸਾਰੇ ਚਲਾਓ ਹਮੇਸ਼ਾ @@ -110,7 +110,7 @@ ਡਾਟਾਬੇਸ ਨਿਰਯਾਤ ਕਰੋ ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਇਤਿਹਾਸ, ਸਬਸਕ੍ਰਿਪਸ਼ਨਜ਼, ਪਲੇਸੂਚੀ ਅਤੇ (ਆਪਨਸ਼ਨਲੀ) ਸੈਟਿੰਗਾਂ ਨੂੰ ਨਵਿਆਂ ਨਾਲ਼ ਬਦਲ ਦਿੰਦਾ ਹੈ ਇਤਿਹਾਸ, ਸੁਬਸਕ੍ਰਿਪਸ਼ਨਜ਼, ਪਲੇ-ਸੂਚੀ ਅਤੇ ਸੈਟਿੰਗਾਂ ਦਰਾਮਦ ਕਰੋ - ਦੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦੀ ਸੂਚੀ ਮਿਟਾਓ + ਵੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦੀ ਸੂਚੀ ਮਿਟਾਓ ਚਲਾਏ ਗਏ ਵੀਡੀਓਜ਼ ਦੇ ਇਤਿਹਾਸ ਅਤੇ ਪਲੇ-ਸਥਿਤੀਆਂ ਨੂੰ ਮਿਟਾਉਂਦਾ ਹੈ ਕੀ ਵੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇ\? ਖੋਜ ਸੂਚੀ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾਓ @@ -318,7 +318,7 @@ ਸਵੀਕਾਰ ਕਰੋ ਅਸਵੀਕਾਰ ਕੋਈ ਸੀਮਾ ਨਹੀਂ - ਮੋਬਾਈਲ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਰੈਜ਼ੋਲੂਸ਼ਨ ਨੂੰ ਸੀਮਿਤ ਕਰੋ + ਮੋਬਾਈਲ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਨੂੰ ਸੀਮਿਤ ਕਰੋ ਐਪ ਸਵਿੱਚ ਕਰਨ ਤੇ ਮਿਨੀਮਾਈਜ਼ ਕਰੋ ਮੁੱਖ ਵੀਡੀਓ ਪਲੇਅਰ ਤੋਂ ਦੂਜੇ ਐਪ \'ਤੇ ਜਾਣ ਵੇਲ਼ੇ ਕਾਰਵਾਈ — %s ਕੋਈ ਨਹੀਂ @@ -327,7 +327,7 @@ ਚੁੱਪ ਦੌਰਾਨ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਕਰੋ ਕਦਮ ਰੀਸੈੱਟ - ਚੈਨਲਾਂ + ਚੈਨਲ ਪਲੇ ਸੂਚੀਆਂ ਟਰੈਕਸ ਯੂਜ਼ਰਸ @@ -575,11 +575,11 @@ ਸਾਰੀਆਂ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਉਣੀਆਂ ਹਨ\? ਸਾਰੀਆਂ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਉਂਦਾ ਹੈ ਪਲੇ-ਸਥਿਤੀਆਂ ਮਿਟਾਓ - ਵੀਡੀਉ ਹੈਸ਼ ਇਤਲਾਹ + ਵੀਡੀਓ ਹੈਸ਼ ਇਤਲਾਹ ਐਲਬਮਾਂ ਕਲਾਕਾਰ ਗੀਤ - ਵਿਡੀਉ + ਵੀਡੀਓ ਇਹ ਵੀਡੀਓ ਉਮਰ-ਪਾਬੰਦੀਸ਼ੁਦਾ ਹੈ। \n \nਜੇ ਤੁਸੀਂ ਇਸਨੂੰ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਸੈਟਿੰਗਾਂ ਵਿੱਚੋਂ \"%1$s\" ਚਾਲੂ ਕਰੋ। @@ -598,7 +598,7 @@ ਆਪ-ਮੁਖ਼ਤਾਰ ਕਤਾਰ ਕਰੋ ਸਟ੍ਰੀਮ ਦੇ ਕਰਤਾ, ਸਮੱਗਰੀ ਜਾਂ ਖੋਜ ਬੇਨਤੀ ਵਾਲੇ ਵਾਧੂ ਜਾਣਕਾਰੀ ਬਕਸਿਆਂ ਵਾਲ਼ੀ ਮੈਟਾ ਜਾਣਕਾਰੀ ਲੁਕਾਉਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰ ਦਿਓ ਮੈਟਾ ਜਾਣਕਾਰੀ ਦਿਖਾਓ - ਵੀਡੀਉ ਵੇਰਵਾ ਅਤੇ ਵਾਧੂ ਜਾਣਕਾਰੀ ਲੁਕਾਉਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ + ਵੀਡੀਓ ਵੇਰਵਾ ਅਤੇ ਵਾਧੂ ਜਾਣਕਾਰੀ ਲੁਕਾਉਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ ਵੇਰਵਾ ਦਿਖਾਓ ਸਰਗਰਮ ਪਲੇਅਰ ਕਤਾਰ ਬਦਲ ਜਾਵੇਗੀ ਪਲੇਅਰ ਬਦਲਣ ਨਾਲ ਤੁਹਾਡੀ ਕਤਾਰ ਬਦਲ ਸਕਦੀ ਹੈ diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 25a3f6e70..0a2205eee 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -493,7 +493,7 @@ Conteúdo indisponível Subscrito Cache de imagens limpa - Acerca + Sobre e FAQ Contagem de subscrições indisponível Ação padrão ao abrir o conteúdo — %s Repor @@ -716,9 +716,14 @@ Selecione a qualidade para reprodutores externos Tamanho do intervalo de carregamento da reprodução Mostrar artigos futuros - Ocultar artigos vistos + Ocultar itens reproduzidos Ocultar artigos futuros Perguntas frequentes Se tem problemas a usar a app, veja estas respostas para perguntas frequentes! Ver no sítio web + Modo rápido + Importar ou exportar subscrições do menu de 3 pontos + Já está a executar a versão mais recente do NewPipe + Toque para descarregar %s + Ordenação \ No newline at end of file diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index a8d49d46d..636c617b2 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -735,4 +735,8 @@ Dacă întâmpinați probleme cu utilizarea aplicației, nu uitați să consultați aceste răspunsuri la întrebări frecvente! Întrebări puse frecvent Sortează + Modul rapid + Importați sau exportați abonamente din meniul cu 3 puncte + Rulați cea mai recentă versiune NewPipe + Atingeți pentru a descărca %s \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index e611059e1..159b27a2a 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -716,7 +716,7 @@ Закреплённый комментарий LeakCanary недоступна Стандартное значение ExoPlayer - Изменить размер предварительной загрузки (сейчас %s). Меньшее значение может ускорить загрузку видео. При изменении требуется перезапуск плеера + Изменить интервал загрузки (сейчас %s). Меньшее значение может ускорить запуск видео. Нужен перезапуск плеера Загрузка сведений о трансляции… Проверить наличие новых трансляций Удалить все загруженные файлы\? diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 7aec8a4e9..3b8bff427 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -373,4 +373,5 @@ சந்தாவுக்கான புதிய ஸ்ட்ரீம்கள் பற்றிய அறிவிப்புகள் இந்த வீடியோ வயது வரம்புக்குட்பட்டது. \nவயது வரம்புக்குட்பட்ட வீடியோக்கள் கொண்ட புதிய YouTube கொள்கைகள் காரணமாக, NewPipe ஆல் அதன் எந்த வீடியோ ஸ்ட்ரீம்களையும் அணுக முடியாது, இதனால் அதை இயக்க முடியவில்லை. + வேகமான பயன்முறை \ No newline at end of file diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index bc310bf2a..ac34a316e 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -449,4 +449,26 @@ అడుగు నిశ్శబ్ద సమయంలో వేగంగా ముందుకు వెళ్లుము ప్లేబ్యాక్ స్పీడ్ నియంత్రణలు + ఏమిలేదు + మీరు బ్లాక్ స్క్రీన్ లేదా చలనచిత్రం ప్లేబ్యాక్‌లో అంతరాయాన్ని అనుభవిస్తే మీడియా టన్నెలింగ్‌ను నిలిపివేయండి + చిత్రాల మూలాన్ని సూచించే విధంగా వాటి పైభాగంలో పికాసో రంగు రిబ్బన్‌లను చూపండి: నెట్‌వర్క్ కోసం ఎరుపు, డిస్క్ కోసం నీలం మరియు మెమరీ కోసం ఆకుపచ్చ + లోపం స్నాక్‌బార్‌ని చూపండి + మీరు NewPipe యొక్క తాజా సంస్కరణను అమలు చేస్తున్నారు + NewPipe నవీకరణ అందుబాటులో ఉంది! + పూర్తయింది + వేలాడుతున్న + సర్వీస్‌ల నుండి ఒరిజినల్ టెక్స్ట్‌లు స్ట్రీమ్ ఐటెమ్‌లలో కనిపిస్తాయి + \"ప్లేయర్ పతనం\" చూపించు + ప్లేయర్‌ని ఉపయోగిస్తున్నప్పుడు పతనం ఎంపికను చూపుము + యాప్‌ను పతనం చేయండి + తక్కువ నాణ్యత (చిన్నది) + చూపించవద్దు + మీడియా టన్నెలింగ్‌ని నిలిపివేయండి + చిత్ర సూచికలను చూపు + కొత్త స్ట్రీమ్‌ల కోసం తనిఖీని అమలు చేయండి + ఎర్రర్ నోటిఫికేషన్‌ను సృష్టించండి + దిగుమతి + ఆగిపోయింది + క్రమం + %sని డౌన్‌లోడ్ చేయడానికి నొక్కండి \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index a2b392324..9c4ec3957 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -321,7 +321,7 @@ Імпортувати разом з налаштуваннями\? Політика приватності NewPipe Проєкт NewPipe дуже серйозно ставиться до вашої приватності. Тому застосунок не збирає ніяких даних без вашої згоди. -\nПолітика приватності докладно NewPipe пояснює, які дані надсилаються і зберігаються у звіті про збій програми. +\nПолітика приватності докладно NewPipe пояснює, які дані надсилаються і зберігаються у звіті про збій.
      Читати політику приватності З метою дотримання Загального регламенту про захист даних ЄС (General Data Protection Regulation, GDPR) ми звертаємо вашу увагу на політику приватності NewPipe. Будь ласка, прочитайте уважно. \nВи маєте прийняти її, аби надіслати нам звіт про помилку. @@ -578,7 +578,7 @@ Повʼязані елементи Коментарі Налаштувати повідомлення про відтворюваний наразі потік - Не розпізнано URL. Відкрити через іншу програму\? + Не розпізнано URL. Відкрити через інший застосунок\? Автоматична черга Показувати метадані Показувати описи diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 0a105c5a8..686644fd9 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -498,4 +498,14 @@ کے ساتھ کھولیں ویڈیو پلیئر کو کریش کریں دیکھے ہوئے کو نشان لگائیں + مقامی تلاش کی سفارشات + اطلاعات + مین پلیئر کو مکمل سکرین سے شروع کریں + غلطی کی دستاویزات کی اطلاع + غلطی کی حبر کی اطلاعات + جب ٹھیک ہو جائے تو \"Done\" دبائیں + حل کریں + زیادہ تر پوچھے گئے سوالات + اگر آپ کو یہ ایپ استعمال کرنے میں دشواری آ رہی ہو تو ان عام سوالات کے جوابات کو ضرور دیکھیں! + ویب سائٹ پر دیکھیں \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 8dd8684b5..ab902d373 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -709,4 +709,8 @@ 排序 常見問題 若然您用呢個 app 有疑問,然而「亦有些難啟齒」,不妨睇下常見問題集,話唔定會發現「有場舞還未發表」! + 快速模式 + 右上角嘅選單有得匯入或匯出訂閱 + 您已經用緊最新版本嘅 NewPipe + 撳一下去下載 %s \ No newline at end of file diff --git a/fastlane/metadata/android/fr/changelogs/740.txt b/fastlane/metadata/android/fr/changelogs/740.txt new file mode 100644 index 000000000..da4bdc2f8 --- /dev/null +++ b/fastlane/metadata/android/fr/changelogs/740.txt @@ -0,0 +1,23 @@ +

      Améliorations

      +
        +
      • Rendre les liens dans les commentaires cliquables, augmenter la taille du texte
      • +
      • Rechercher en cliquant sur les liens d'horodatage dans les commentaires
      • +
      • Afficher l'onglet préféré en fonction de l'état récemment sélectionné
      • +
      • Ajouter la liste de lecture à la file d'attente lors d'un clic long sur 'Arrière-plan' dans la fenêtre de la liste de lecture
      • +
      • Rechercher le texte partagé lorsqu'il ne s'agit pas d'une URL
      • +
      • Ajouter "partager à l'heure actuelle" bouton au lecteur vidéo principal lecteur vidéo principal
      • +
      • Ajouter un bouton de fermeture du lecteur principal lorsque la file d'attente vidéo est terminée
      • +
      • Ajouter "jouer directement en arrière-plan" au menu longpress pour les éléments de la liste vidéo
      • +
      • Améliorer les traductions en anglais des commandes Play/Enqueue
      • +
      • Petites améliorations des performances
      • +
      • Supprimer les fichiers inutilisés
      • +
      • Mise à jour ExoPlayer à 2.9.6
      • +
      • Ajouter le support pour les liens Invidious
      • +
      +

      Corrections

      +
        +
      • Défilement avec les commentaires et les flux associés désactivés
      • +
      • CheckForNewAppVersionTask qui est exécuté alors qu'il ne devrait pas l'être'
      • +
      • Importation des abonnements YouTube : ignorer ceux dont l’URL est invalide et conserver ceux dont le titre est vide
      • +
      • URL YouTube invalide : le nom de la balise signature n'est pas toujours "signature", ce qui empêche le chargement des flux.
      • +
      diff --git a/fastlane/metadata/android/fr/changelogs/991.txt b/fastlane/metadata/android/fr/changelogs/991.txt new file mode 100644 index 000000000..59a34f25e --- /dev/null +++ b/fastlane/metadata/android/fr/changelogs/991.txt @@ -0,0 +1,13 @@ +Nouveautés +• Ajout du bouton « Ouvrir dans un navigateur » dans le paneau d'erreur +• Ajout de la possibilité d'afficher les groupes de chaîne en liste +• [YouTube] Appuis long sur le segment d'un flux pour partager l'URL avec l'horodatage +• Ajout d'un bouton sur le lecteur reduit + +Améliorations +• Ajout de la traduction en islandais et mise à jour de d'autre langues +• De nombreuses améliorations internes + +Corrections +• Correction de plantages +• [YouTube] Correction du chargement des chaînes diff --git a/fastlane/metadata/android/it/changelogs/740.txt b/fastlane/metadata/android/it/changelogs/740.txt index 785280b90..297ff9a3c 100644 --- a/fastlane/metadata/android/it/changelogs/740.txt +++ b/fastlane/metadata/android/it/changelogs/740.txt @@ -1,4 +1,4 @@ -
    • Miglioramenti

      +

      Miglioramenti

      • rendi cliccabili i link nei commenti, aumenta la dimensione del testo
      • cerca facendo clic sui collegamenti timestamp nei commenti
      • diff --git a/fastlane/metadata/android/te/changelogs/65.txt b/fastlane/metadata/android/te/changelogs/65.txt new file mode 100644 index 000000000..34d16b0eb --- /dev/null +++ b/fastlane/metadata/android/te/changelogs/65.txt @@ -0,0 +1,26 @@ +### మెరుగుదలలు + +- బర్గర్‌మెను ఐకాన్ యానిమేషన్ #1486ని నిలిపివేయండి +- డౌన్‌లోడ్‌ల తొలగింపును రద్దు చేయండి #1472 +- షేర్ మెను #1498లో డౌన్‌లోడ్ ఎంపిక +- లాంగ్ ట్యాప్ మెనూ #1454కి షేర్ ఆప్షన్ జోడించబడింది +- నిష్క్రమణ #1354లో ప్రధాన ప్లేయర్‌ని తగ్గించండి +- లైబ్రరీ వెర్షన్ అప్‌డేట్ మరియు డేటాబేస్ బ్యాకప్ ఫిక్స్ #1510 +- ExoPlayer 2.8.2 నవీకరణ #1392 + - వేగవంతమైన స్పీడ్ మార్పు కోసం వివిధ దశల పరిమాణాలకు మద్దతు ఇవ్వడానికి ప్లేబ్యాక్ స్పీడ్ కంట్రోల్ డైలాగ్‌ని మళ్లీ రూపొందించారు. + - ప్లేబ్యాక్ స్పీడ్ కంట్రోల్‌లో నిశ్శబ్దం సమయంలో ఫాస్ట్-ఫార్వర్డ్ చేయడానికి టోగుల్ జోడించబడింది. ఇది ఆడియోబుక్‌లు మరియు నిర్దిష్ట సంగీత శైలులకు సహాయకరంగా ఉండాలి మరియు నిజమైన అతుకులు లేని అనుభవాన్ని అందించగలదు (మరియు అనేక నిశ్శబ్దాలతో పాటను విచ్ఛిన్నం చేయవచ్చు =\\). + - మాన్యువల్‌గా కాకుండా ప్లేయర్‌లో అంతర్గతంగా మీడియాతో పాటు మెటాడేటాను పాస్ చేయడానికి రీఫ్యాక్టర్డ్ మీడియా సోర్స్ రిజల్యూషన్. ఇప్పుడు మేము మెటాడేటా యొక్క ఒకే మూలాన్ని కలిగి ఉన్నాము మరియు ప్లేబ్యాక్ ప్రారంభమైనప్పుడు నేరుగా అందుబాటులో ఉంటుంది. + - ప్లేజాబితా భాగాన్ని తెరిచినప్పుడు కొత్త మెటాడేటా అందుబాటులో ఉన్నప్పుడు స్థిర రిమోట్ ప్లేజాబితా మెటాడేటా నవీకరించబడదు. + - వివిధ UI పరిష్కారాలు: #1383, బ్యాక్‌గ్రౌండ్ ప్లేయర్ నోటిఫికేషన్ నియంత్రణలు ఇప్పుడు ఎల్లప్పుడూ తెల్లగా ఉంటాయి, ఫ్లింగ్ ద్వారా పాప్‌అప్ ప్లేయర్‌ని షట్‌డౌన్ చేయడం సులభం +- మల్టీసర్వీస్ కోసం రీఫ్యాక్టర్డ్ ఆర్కిటెక్చర్‌తో కొత్త ఎక్స్‌ట్రాక్టర్‌ని ఉపయోగించండి + +### పరిష్కారాలు + +- #1440 బ్రోకెన్ వీడియో ఇన్ఫో లేఅవుట్ #1491ని పరిష్కరించండి +- చరిత్ర పరిష్కారాన్ని వీక్షించండి #1497 + - #1495, యూజర్ ప్లేజాబితాను యాక్సెస్ చేసిన వెంటనే మెటాడేటా (థంబ్‌నెయిల్, టైటిల్ మరియు వీడియో కౌంట్) అప్‌డేట్ చేయడం ద్వారా. + - #1475, వినియోగదారు వివరాలు ఫ్రాగ్‌మెంట్‌పై బాహ్య ప్లేయర్‌లో వీడియోను ప్రారంభించినప్పుడు డేటాబేస్‌లో వీక్షణను నమోదు చేయడం ద్వారా. +- పాప్అప్ మోడ్ విషయంలో స్క్రీన్ సమయం ముగియడాన్ని పరిష్కరించండి. #1463 (స్థిర #640) +- ప్రధాన వీడియో ప్లేయర్ ఫిక్స్ #1509 + - [#1412] ప్లేయర్ యాక్టివిటీ బ్యాక్‌గ్రౌండ్‌లో ఉన్నప్పుడు కొత్త ఉద్దేశం వచ్చినప్పుడు ప్లేయర్ NPEకి కారణమయ్యే ఫిక్స్డ్ రిపీట్ మోడ్. + - పాప్‌అప్‌కి ప్లేయర్‌ని కనిష్టీకరించడం అనేది పాప్‌అప్ అనుమతి ఇవ్వనప్పుడు ప్లేయర్‌ను నాశనం చేయదు. diff --git a/fastlane/metadata/android/uk/changelogs/951.txt b/fastlane/metadata/android/uk/changelogs/951.txt index 1cd68b0b8..37ebfd318 100644 --- a/fastlane/metadata/android/uk/changelogs/951.txt +++ b/fastlane/metadata/android/uk/changelogs/951.txt @@ -5,7 +5,7 @@ •Швид.перемот.вперед/назад у фоні/вікні програв.черги •Показ порад пошуку: мали на увазі й показ результ. для Покр. -•Вил.запис метадан.програми в зміш.файли +•Вил.запис метадан.застосунку в зміш.файли •Не вилуч.невдалі потоки з черги •Оновл.колір пан.стану відповідно до коль.пан.засобів Випр. From c13b858f0246bc7b8ca9dcfd922ed5f5bf0a5758 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Fri, 23 Dec 2022 00:51:25 +0100 Subject: [PATCH 073/147] Add Nynorsk (nn) to the language chooser --- app/src/main/res/values/settings_keys.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 9244f05c4..17ed547a0 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -441,6 +441,7 @@ hu nl no + nn uz pl pt-PT @@ -519,6 +520,7 @@ Magyar Nederlands Norsk + Nynorsk O‘zbek Polski Português From fb1360b72a8359355b25e136eeacc07b2d6673bc Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Thu, 18 Aug 2022 20:42:29 +0530 Subject: [PATCH 074/147] Use ListAdapter in NotificationModeConfigAdapter. --- .../NotificationModeConfigAdapter.kt | 118 +++++++----------- .../NotificationModeConfigFragment.kt | 82 ++++++------ 2 files changed, 81 insertions(+), 119 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigAdapter.kt b/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigAdapter.kt index 6ae264bb5..f61aa72ab 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigAdapter.kt +++ b/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigAdapter.kt @@ -1,15 +1,13 @@ package org.schabi.newpipe.settings.notifications import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import android.widget.CheckedTextView -import androidx.recyclerview.widget.AsyncListDiffer import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import org.schabi.newpipe.R import org.schabi.newpipe.database.subscription.NotificationMode import org.schabi.newpipe.database.subscription.SubscriptionEntity +import org.schabi.newpipe.databinding.ItemNotificationConfigBinding import org.schabi.newpipe.settings.notifications.NotificationModeConfigAdapter.SubscriptionHolder /** @@ -19,85 +17,46 @@ import org.schabi.newpipe.settings.notifications.NotificationModeConfigAdapter.S */ class NotificationModeConfigAdapter( private val listener: ModeToggleListener -) : RecyclerView.Adapter() { - - private val differ = AsyncListDiffer(this, DiffCallback()) - - init { - setHasStableIds(true) - } - - override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): SubscriptionHolder { - val view = LayoutInflater.from(viewGroup.context) - .inflate(R.layout.item_notification_config, viewGroup, false) - return SubscriptionHolder(view, listener) - } - - override fun onBindViewHolder(subscriptionHolder: SubscriptionHolder, i: Int) { - subscriptionHolder.bind(differ.currentList[i]) - } - - fun getItem(position: Int): SubscriptionItem = differ.currentList[position] - - override fun getItemCount() = differ.currentList.size - - override fun getItemId(position: Int): Long { - return differ.currentList[position].id - } - - fun getCurrentList(): List = differ.currentList - - fun update(newData: List) { - differ.submitList( - newData.map { - SubscriptionItem( - id = it.uid, - title = it.name, - notificationMode = it.notificationMode, - serviceId = it.serviceId, - url = it.url - ) - } +) : ListAdapter(DiffCallback) { + override fun onCreateViewHolder(parent: ViewGroup, i: Int): SubscriptionHolder { + return SubscriptionHolder( + ItemNotificationConfigBinding + .inflate(LayoutInflater.from(parent.context), parent, false) ) } - data class SubscriptionItem( - val id: Long, - val title: String, - @NotificationMode - val notificationMode: Int, - val serviceId: Int, - val url: String - ) + override fun onBindViewHolder(holder: SubscriptionHolder, position: Int) { + holder.bind(currentList[position]) + } - class SubscriptionHolder( - itemView: View, - private val listener: ModeToggleListener - ) : RecyclerView.ViewHolder(itemView), View.OnClickListener { - - private val checkedTextView = itemView as CheckedTextView + fun update(newData: List) { + val items = newData.map { + SubscriptionItem(it.uid, it.name, it.notificationMode, it.serviceId, it.url) + } + submitList(items) + } + inner class SubscriptionHolder( + private val itemBinding: ItemNotificationConfigBinding + ) : RecyclerView.ViewHolder(itemBinding.root) { init { - itemView.setOnClickListener(this) + itemView.setOnClickListener { + val mode = if (itemBinding.root.isChecked) { + NotificationMode.DISABLED + } else { + NotificationMode.ENABLED + } + listener.onModeChange(bindingAdapterPosition, mode) + } } fun bind(data: SubscriptionItem) { - checkedTextView.text = data.title - checkedTextView.isChecked = data.notificationMode != NotificationMode.DISABLED - } - - override fun onClick(v: View) { - val mode = if (checkedTextView.isChecked) { - NotificationMode.DISABLED - } else { - NotificationMode.ENABLED - } - listener.onModeChange(bindingAdapterPosition, mode) + itemBinding.root.text = data.title + itemBinding.root.isChecked = data.notificationMode != NotificationMode.DISABLED } } - private class DiffCallback : DiffUtil.ItemCallback() { - + private object DiffCallback : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: SubscriptionItem, newItem: SubscriptionItem): Boolean { return oldItem.id == newItem.id } @@ -107,18 +66,27 @@ class NotificationModeConfigAdapter( } override fun getChangePayload(oldItem: SubscriptionItem, newItem: SubscriptionItem): Any? { - if (oldItem.notificationMode != newItem.notificationMode) { - return newItem.notificationMode + return if (oldItem.notificationMode != newItem.notificationMode) { + newItem.notificationMode } else { - return super.getChangePayload(oldItem, newItem) + super.getChangePayload(oldItem, newItem) } } } - interface ModeToggleListener { + fun interface ModeToggleListener { /** * Triggered when the UI representation of a notification mode is changed. */ fun onModeChange(position: Int, @NotificationMode mode: Int) } } + +data class SubscriptionItem( + val id: Long, + val title: String, + @NotificationMode + val notificationMode: Int, + val serviceId: Int, + val url: String +) diff --git a/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigFragment.kt b/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigFragment.kt index 9021fd68c..7050bec6c 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigFragment.kt @@ -1,5 +1,6 @@ package org.schabi.newpipe.settings.notifications +import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.Menu @@ -8,30 +9,36 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment -import androidx.recyclerview.widget.RecyclerView import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.disposables.CompositeDisposable import io.reactivex.rxjava3.disposables.Disposable import io.reactivex.rxjava3.schedulers.Schedulers import org.schabi.newpipe.R import org.schabi.newpipe.database.subscription.NotificationMode +import org.schabi.newpipe.databinding.FragmentChannelsNotificationsBinding import org.schabi.newpipe.local.subscription.SubscriptionManager -import org.schabi.newpipe.settings.notifications.NotificationModeConfigAdapter.ModeToggleListener /** * [NotificationModeConfigFragment] is a settings fragment * which allows changing the [NotificationMode] of all subscribed channels. * The [NotificationMode] can either be changed one by one or toggled for all channels. */ -class NotificationModeConfigFragment : Fragment(), ModeToggleListener { +class NotificationModeConfigFragment : Fragment() { + private var _binding: FragmentChannelsNotificationsBinding? = null + private val binding get() = _binding!! - private lateinit var updaters: CompositeDisposable + private val updaters = CompositeDisposable() private var loader: Disposable? = null - private var adapter: NotificationModeConfigAdapter? = null + private lateinit var adapter: NotificationModeConfigAdapter + private lateinit var subscriptionManager: SubscriptionManager + + override fun onAttach(context: Context) { + super.onAttach(context) + subscriptionManager = SubscriptionManager(context) + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - updaters = CompositeDisposable() setHasOptionsMenu(true) } @@ -39,23 +46,29 @@ class NotificationModeConfigFragment : Fragment(), ModeToggleListener { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, - ): View = inflater.inflate(R.layout.fragment_channels_notifications, container, false) + ): View { + _binding = FragmentChannelsNotificationsBinding.inflate(inflater, container, false) + return binding.root + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val recyclerView: RecyclerView = view.findViewById(R.id.recycler_view) - adapter = NotificationModeConfigAdapter(this) - recyclerView.adapter = adapter + adapter = NotificationModeConfigAdapter { position, mode -> + // Notification mode has been changed via the UI. + // Now change it in the database. + updaters.add(updateNotificationMode(adapter.currentList[position], mode)) + } + binding.recyclerView.adapter = adapter loader?.dispose() - loader = SubscriptionManager(requireContext()) - .subscriptions() + loader = subscriptionManager.subscriptions() .observeOn(AndroidSchedulers.mainThread()) - .subscribe { newData -> adapter?.update(newData) } + .subscribe(adapter::update) } override fun onDestroyView() { loader?.dispose() loader = null + _binding = null super.onDestroyView() } @@ -79,41 +92,22 @@ class NotificationModeConfigFragment : Fragment(), ModeToggleListener { } } - override fun onModeChange(position: Int, @NotificationMode mode: Int) { - // Notification mode has been changed via the UI. - // Now change it in the database. - val subscription = adapter?.getItem(position) ?: return - updaters.add( - SubscriptionManager(requireContext()) - .updateNotificationMode( - subscription.serviceId, - subscription.url, - mode - ) - .subscribeOn(Schedulers.io()) - .subscribe() - ) - } - private fun toggleAll() { - val subscriptions = adapter?.getCurrentList() ?: return - val mode = subscriptions.firstOrNull()?.notificationMode ?: return + val mode = adapter.currentList.firstOrNull()?.notificationMode ?: return val newMode = when (mode) { NotificationMode.DISABLED -> NotificationMode.ENABLED else -> NotificationMode.DISABLED } - val subscriptionManager = SubscriptionManager(requireContext()) - updaters.add( - CompositeDisposable( - subscriptions.map { item -> - subscriptionManager.updateNotificationMode( - serviceId = item.serviceId, - url = item.url, - mode = newMode - ).subscribeOn(Schedulers.io()) - .subscribe() - } - ) - ) + val disposables = adapter.currentList.map { updateNotificationMode(it, newMode) } + updaters.add(CompositeDisposable(disposables)) + } + + private fun updateNotificationMode( + item: SubscriptionItem, + @NotificationMode mode: Int + ): Disposable { + return subscriptionManager.updateNotificationMode(item.serviceId, item.url, mode) + .subscribeOn(Schedulers.io()) + .subscribe() } } From 413a1b504a1fe423c83f654428a5b68cb8230bf6 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sat, 31 Dec 2022 17:47:57 +0100 Subject: [PATCH 075/147] Refactor constrolsTouchListener code --- .../fragments/detail/VideoDetailFragment.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) 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 784b24619..2aa0e6ad2 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 @@ -14,6 +14,7 @@ import static org.schabi.newpipe.util.NavigationHelper.openPlayQueue; import static org.schabi.newpipe.util.NavigationHelper.playWithKore; import android.animation.ValueAnimator; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; @@ -617,6 +618,7 @@ public final class VideoDetailFragment } @Override + @SuppressLint("ClickableViewAccessibility") protected void initListeners() { super.initListeners(); @@ -624,16 +626,12 @@ public final class VideoDetailFragment setOnLongClickListeners(); final View.OnTouchListener controlsTouchListener = (view, motionEvent) -> { - if (!PreferenceManager.getDefaultSharedPreferences(activity) + if (motionEvent.getAction() == MotionEvent.ACTION_DOWN + && PreferenceManager.getDefaultSharedPreferences(activity) .getBoolean(getString(R.string.show_hold_to_append_key), true)) { - return false; - } - if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { - animate(binding.touchAppendDetail, true, 250, AnimationType.ALPHA, - 0, () -> - animate(binding.touchAppendDetail, false, 1500, - AnimationType.ALPHA, 1000)); + animate(binding.touchAppendDetail, true, 250, AnimationType.ALPHA, 0, () -> + animate(binding.touchAppendDetail, false, 1500, AnimationType.ALPHA, 1000)); } return false; }; From 97978033dddac988a724c59fb83b574eead438fb Mon Sep 17 00:00:00 2001 From: Stypox Date: Sat, 31 Dec 2022 17:49:10 +0100 Subject: [PATCH 076/147] Activate on click listeners only when not loading For consistency with long click listeners, in VideoDetailFragment --- .../schabi/newpipe/fragments/detail/VideoDetailFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 2aa0e6ad2..2fb62413f 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 @@ -523,7 +523,7 @@ public final class VideoDetailFragment private View.OnClickListener makeOnClickListener(final Consumer consumer) { return v -> { - if (currentInfo != null) { + if (!isLoading.get() && currentInfo != null) { consumer.accept(currentInfo); } }; From b3bfec9505ac956883dd62cc5db410568ef1bb1b Mon Sep 17 00:00:00 2001 From: Stypox Date: Sat, 31 Dec 2022 19:31:24 +0100 Subject: [PATCH 077/147] Use correct fragment manager for download dialog Tapping download on the long-press menu of queue items when the queue is shown inside the player would crash otherwise --- .../main/java/org/schabi/newpipe/QueueItemMenuUtil.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java index 66c19f86d..3255489b0 100644 --- a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java +++ b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java @@ -8,7 +8,6 @@ import android.view.ContextThemeWrapper; import android.view.View; import android.widget.PopupMenu; -import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.FragmentManager; import org.schabi.newpipe.database.stream.model.StreamEntity; @@ -79,12 +78,11 @@ public final class QueueItemMenuUtil { item.getThumbnailUrl()); return true; case R.id.menu_item_download: - fetchStreamInfoAndSaveToDatabase(context, item.getServiceId(), - item.getUrl(), info -> { + fetchStreamInfoAndSaveToDatabase(context, item.getServiceId(), item.getUrl(), + info -> { final DownloadDialog downloadDialog = new DownloadDialog(context, info); - downloadDialog.show(((AppCompatActivity) context) - .getSupportFragmentManager(), "downloadDialog"); + downloadDialog.show(fragmentManager, "downloadDialog"); }); return true; } From d21fac658b018cf3f06f8ace07ffae67a82a480e Mon Sep 17 00:00:00 2001 From: Stypox Date: Sat, 31 Dec 2022 23:30:12 +0100 Subject: [PATCH 078/147] Remove playlist details toasts --- .../fragments/list/playlist/PlaylistFragment.java | 13 ++----------- app/src/main/res/values/strings.xml | 1 - 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java index 899534793..a3150a773 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java @@ -13,7 +13,6 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -231,13 +230,8 @@ public class PlaylistFragment extends BaseListInfoFragment dialog.show(getFM(), TAG) )); - } else { - Toast.makeText(getContext(), getString(R.string.playlist_loading_message), - Toast.LENGTH_SHORT).show(); } break; default: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d72fd4217..76b828746 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -241,7 +241,6 @@ Restore defaults Do you want to restore defaults? Give permission to display over other apps - Playlist loading… NewPipe encountered an error, tap to report An error occurred, see the notification From 56800c24b937416d7c22d71db09b2a81df650c28 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 1 Jan 2023 12:46:56 +0100 Subject: [PATCH 079/147] Update rxandroid from 3.0.0 to 3.0.2 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 582f61618..c577b3426 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -266,7 +266,7 @@ dependencies { // Reactive extensions for Java VM implementation "io.reactivex.rxjava3:rxjava:3.1.5" - implementation "io.reactivex.rxjava3:rxandroid:3.0.0" + implementation "io.reactivex.rxjava3:rxandroid:3.0.2" // RxJava binding APIs for Android UI widgets implementation "com.jakewharton.rxbinding4:rxbinding:4.0.0" From f4a5b3bcbf2e04ee860a9b906f8471f65eb69468 Mon Sep 17 00:00:00 2001 From: evermind Date: Sun, 1 Jan 2023 21:47:47 +0100 Subject: [PATCH 080/147] set 'playback in background button' visible if there are videostreams --- .../schabi/newpipe/fragments/detail/VideoDetailFragment.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 bf0b63e4b..705427c23 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 @@ -1666,8 +1666,9 @@ public final class VideoDetailFragment binding.detailControlsDownload.setVisibility( StreamTypeUtil.isLiveStream(info.getStreamType()) ? View.GONE : View.VISIBLE); - binding.detailControlsBackground.setVisibility(info.getAudioStreams().isEmpty() - ? View.GONE : View.VISIBLE); + binding.detailControlsBackground.setVisibility( + info.getAudioStreams().isEmpty() && info.getVideoStreams().isEmpty() + ? View.GONE : View.VISIBLE); final boolean noVideoStreams = info.getVideoStreams().isEmpty() && info.getVideoOnlyStreams().isEmpty(); From 7988fe0c5a34afd11aa5a3bd0d4027566f69883f Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sat, 13 Aug 2022 09:51:55 +0530 Subject: [PATCH 081/147] Use new NewPipe Extractor Utils methods. --- app/build.gradle | 2 +- .../java/org/schabi/newpipe/error/ReCaptchaActivity.java | 6 +++--- .../schabi/newpipe/settings/DownloadSettingsFragment.java | 5 ++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 806a2bea5..fc074472b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -187,7 +187,7 @@ dependencies { // name and the commit hash with the commit hash of the (pushed) commit you want to test // This works thanks to JitPack: https://jitpack.io/ implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751' - implementation 'com.github.TeamNewPipe:NewPipeExtractor:eb07d70a2ce03bee3cc74fc33b2e4173e1c21436' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:2211a24b6934a8a8cdf5547ea1b52daa4cb5de6c' implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0' /** Checkstyle **/ diff --git a/app/src/main/java/org/schabi/newpipe/error/ReCaptchaActivity.java b/app/src/main/java/org/schabi/newpipe/error/ReCaptchaActivity.java index e2780d215..3c14cfe4c 100644 --- a/app/src/main/java/org/schabi/newpipe/error/ReCaptchaActivity.java +++ b/app/src/main/java/org/schabi/newpipe/error/ReCaptchaActivity.java @@ -20,14 +20,14 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.NavUtils; import androidx.preference.PreferenceManager; -import org.schabi.newpipe.databinding.ActivityRecaptchaBinding; import org.schabi.newpipe.DownloaderImpl; import org.schabi.newpipe.MainActivity; import org.schabi.newpipe.R; +import org.schabi.newpipe.databinding.ActivityRecaptchaBinding; +import org.schabi.newpipe.extractor.utils.Utils; import org.schabi.newpipe.util.ThemeHelper; import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; /* * Created by beneth on 06.12.16. @@ -188,7 +188,7 @@ public class ReCaptchaActivity extends AppCompatActivity { try { String abuseCookie = url.substring(abuseStart + 13, abuseEnd); - abuseCookie = URLDecoder.decode(abuseCookie, "UTF-8"); + abuseCookie = Utils.decodeUrlUtf8(abuseCookie); handleCookies(abuseCookie); } catch (UnsupportedEncodingException | StringIndexOutOfBoundsException e) { if (MainActivity.DEBUG) { diff --git a/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java index 5a4300cdd..782b7b906 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java @@ -1,5 +1,6 @@ package org.schabi.newpipe.settings; +import static org.schabi.newpipe.extractor.utils.Utils.decodeUrlUtf8; import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; import android.app.Activity; @@ -31,8 +32,6 @@ import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URI; -import java.net.URLDecoder; -import java.nio.charset.StandardCharsets; public class DownloadSettingsFragment extends BasePreferenceFragment { public static final boolean IGNORE_RELEASE_ON_OLD_PATH = true; @@ -125,7 +124,7 @@ public class DownloadSettingsFragment extends BasePreferenceFragment { } try { - rawUri = URLDecoder.decode(rawUri, StandardCharsets.UTF_8.name()); + rawUri = decodeUrlUtf8(rawUri); } catch (final UnsupportedEncodingException e) { // nothing to do } From 50269d0f5ebd3653f3498c78020792294762827f Mon Sep 17 00:00:00 2001 From: pratyaksh1610 Date: Mon, 2 Jan 2023 16:23:45 +0530 Subject: [PATCH 082/147] updated caption file name and clean code --- .../org/schabi/newpipe/download/DownloadDialog.java | 10 +++++----- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index c54fd5173..7777f87fe 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -568,16 +568,16 @@ public class DownloadDialog extends DialogFragment private void onItemSelectedSetFileName() { final String setSubtitleLanguageCode = subtitleStreamsAdapter.getItem(selectedSubtitleIndex) .getLanguageTag(); + final String fileName = FilenameUtils.createFilename(getContext(), + currentInfo.getName()); switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) { case R.id.audio_button: case R.id.video_button: - dialogBinding.fileName.setText(FilenameUtils.createFilename(getContext(), - currentInfo.getName())); + dialogBinding.fileName.setText(fileName); break; case R.id.subtitle_button: - dialogBinding.fileName.setText(FilenameUtils.createFilename(getContext(), - currentInfo.getName() + getString( - R.string.caption_file_name, setSubtitleLanguageCode))); + dialogBinding.fileName.setText(fileName + getString( + R.string.caption_file_name, fileName, setSubtitleLanguageCode)); break; } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fefba2c77..f9d1361a8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -452,7 +452,7 @@ Zoom Auto-generated - -%s + %1$s-%2$s Captions Modify player caption text scale and background styles. Requires app restart to take effect From b1d9080a0feb671ea1ce7fbeedcdf3a5dbf1f1b0 Mon Sep 17 00:00:00 2001 From: Stypox Date: Mon, 2 Jan 2023 14:45:11 +0100 Subject: [PATCH 083/147] Simplify disposables handling in notification mode settings --- .../NotificationModeConfigFragment.kt | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigFragment.kt b/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigFragment.kt index 7050bec6c..581768c30 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/settings/notifications/NotificationModeConfigFragment.kt @@ -27,7 +27,7 @@ class NotificationModeConfigFragment : Fragment() { private var _binding: FragmentChannelsNotificationsBinding? = null private val binding get() = _binding!! - private val updaters = CompositeDisposable() + private val disposables = CompositeDisposable() private var loader: Disposable? = null private lateinit var adapter: NotificationModeConfigAdapter private lateinit var subscriptionManager: SubscriptionManager @@ -56,7 +56,7 @@ class NotificationModeConfigFragment : Fragment() { adapter = NotificationModeConfigAdapter { position, mode -> // Notification mode has been changed via the UI. // Now change it in the database. - updaters.add(updateNotificationMode(adapter.currentList[position], mode)) + updateNotificationMode(adapter.currentList[position], mode) } binding.recyclerView.adapter = adapter loader?.dispose() @@ -73,7 +73,7 @@ class NotificationModeConfigFragment : Fragment() { } override fun onDestroy() { - updaters.dispose() + disposables.dispose() super.onDestroy() } @@ -98,16 +98,14 @@ class NotificationModeConfigFragment : Fragment() { NotificationMode.DISABLED -> NotificationMode.ENABLED else -> NotificationMode.DISABLED } - val disposables = adapter.currentList.map { updateNotificationMode(it, newMode) } - updaters.add(CompositeDisposable(disposables)) + adapter.currentList.forEach { updateNotificationMode(it, newMode) } } - private fun updateNotificationMode( - item: SubscriptionItem, - @NotificationMode mode: Int - ): Disposable { - return subscriptionManager.updateNotificationMode(item.serviceId, item.url, mode) - .subscribeOn(Schedulers.io()) - .subscribe() + private fun updateNotificationMode(item: SubscriptionItem, @NotificationMode mode: Int) { + disposables.add( + subscriptionManager.updateNotificationMode(item.serviceId, item.url, mode) + .subscribeOn(Schedulers.io()) + .subscribe() + ) } } From 3e15c77a05209b76215fb0ef080930f19cfd62e8 Mon Sep 17 00:00:00 2001 From: pratyaksh1610 Date: Tue, 3 Jan 2023 14:07:28 +0530 Subject: [PATCH 084/147] move string to donottranslate.xml and fix nits --- .../java/org/schabi/newpipe/download/DownloadDialog.java | 6 +++--- app/src/main/res/values/donottranslate.xml | 1 + app/src/main/res/values/strings.xml | 1 - 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index 7777f87fe..77bb48a81 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -566,8 +566,6 @@ public class DownloadDialog extends DialogFragment } private void onItemSelectedSetFileName() { - final String setSubtitleLanguageCode = subtitleStreamsAdapter.getItem(selectedSubtitleIndex) - .getLanguageTag(); final String fileName = FilenameUtils.createFilename(getContext(), currentInfo.getName()); switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) { @@ -576,7 +574,9 @@ public class DownloadDialog extends DialogFragment dialogBinding.fileName.setText(fileName); break; case R.id.subtitle_button: - dialogBinding.fileName.setText(fileName + getString( + final String setSubtitleLanguageCode = subtitleStreamsAdapter + .getItem(selectedSubtitleIndex).getLanguageTag(); + dialogBinding.fileName.setText(getString( R.string.caption_file_name, fileName, setSubtitleLanguageCode)); break; } diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index d28f794c0..09bf9080c 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -27,4 +27,5 @@ SoundCloud @string/app_name LeakCanary + %1$s-%2$s diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f9d1361a8..3fa37155a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -452,7 +452,6 @@ Zoom Auto-generated - %1$s-%2$s Captions Modify player caption text scale and background styles. Requires app restart to take effect From f10d591462bdcc68ff58e18cb8f5eba82a45064d Mon Sep 17 00:00:00 2001 From: Robin Date: Tue, 3 Jan 2023 10:06:46 +0100 Subject: [PATCH 085/147] Samsung DeX should only be checked on Samsung devices Co-authored-by: opusforlife2 <53176348+opusforlife2@users.noreply.github.com> --- .../main/java/org/schabi/newpipe/util/DeviceUtils.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index 46ab6da51..4b08cfcb5 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -1,5 +1,7 @@ package org.schabi.newpipe.util; +import static android.content.Context.INPUT_SERVICE; + import android.annotation.SuppressLint; import android.app.UiModeManager; import android.content.Context; @@ -27,11 +29,10 @@ import org.schabi.newpipe.R; import java.lang.reflect.Method; -import static android.content.Context.INPUT_SERVICE; - public final class DeviceUtils { private static final String AMAZON_FEATURE_FIRE_TV = "amazon.hardware.fire_tv"; + private static final boolean SAMSUNG = Build.MANUFACTURER.equals("samsung"); private static Boolean isTV = null; private static Boolean isFireTV = null; @@ -120,6 +121,10 @@ public final class DeviceUtils { return true; } + if (!SAMSUNG) { + return false; + // DeX is Samsung-specific, skip the checks below on non-Samsung devices + } // DeX check for standalone and multi-window mode, from: // https://developer.samsung.com/samsung-dex/modify-optimizing.html try { From fd55d85bbf050bd0da7b6e1fd81f52a5a584613f Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Wed, 2 Nov 2022 20:39:33 +0530 Subject: [PATCH 086/147] Remove SimplifyOptionalCallChains. --- .../fragments/detail/VideoDetailFragment.java | 20 ++-- .../org/schabi/newpipe/player/Player.java | 90 ++++++++-------- .../player/playback/MediaSourceManager.java | 2 +- .../SeekbarPreviewThumbnailHelper.java | 19 ++-- .../newpipe/player/ui/MainPlayerUi.java | 10 +- .../newpipe/player/ui/VideoPlayerUi.java | 101 ++++++++---------- 6 files changed, 109 insertions(+), 133 deletions(-) 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 679084bdf..abb995ecd 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 @@ -255,11 +255,8 @@ public final class VideoDetailFragment playerUi.ifPresent(MainPlayerUi::toggleFullscreen); } - //noinspection SimplifyOptionalCallChains - if (playAfterConnect - || (currentInfo != null - && isAutoplayEnabled() - && !playerUi.isPresent())) { + if (playAfterConnect || (currentInfo != null && isAutoplayEnabled() + && playerUi.isEmpty())) { autoPlayEnabled = true; // forcefully start playing openVideoPlayerAutoFullscreen(); } @@ -1174,16 +1171,15 @@ public final class VideoDetailFragment * be reused in a few milliseconds and the flickering would be annoying. */ private void hideMainPlayerOnLoadingNewStream() { - //noinspection SimplifyOptionalCallChains - if (!isPlayerServiceAvailable() || !getRoot().isPresent() - || !player.videoPlayerSelected()) { + final var root = getRoot(); + if (!isPlayerServiceAvailable() || root.isEmpty() || !player.videoPlayerSelected()) { return; } removeVideoPlayerView(); if (isAutoplayEnabled()) { playerService.stopForImmediateReusing(); - getRoot().ifPresent(view -> view.setVisibility(View.GONE)); + root.ifPresent(view -> view.setVisibility(View.GONE)); } else { playerHolder.stopService(); } @@ -1887,10 +1883,8 @@ public final class VideoDetailFragment @Override public void onFullscreenStateChanged(final boolean fullscreen) { setupBrightness(); - //noinspection SimplifyOptionalCallChains - if (!isPlayerAndPlayerServiceAvailable() - || !player.UIs().get(MainPlayerUi.class).isPresent() - || getRoot().map(View::getParent).orElse(null) == null) { + if (!isPlayerAndPlayerServiceAvailable() || player.UIs().get(MainPlayerUi.class).isEmpty() + || getRoot().map(View::getParent).isEmpty()) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 95520ba1e..da337b394 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -1695,26 +1695,25 @@ public final class Player implements PlaybackListener, Listener { } private void saveStreamProgressState(final long progressMillis) { - //noinspection SimplifyOptionalCallChains - if (!getCurrentStreamInfo().isPresent() - || !prefs.getBoolean(context.getString(R.string.enable_watch_history_key), true)) { - return; - } - if (DEBUG) { - Log.d(TAG, "saveStreamProgressState() called with: progressMillis=" + progressMillis - + ", currentMetadata=[" + getCurrentStreamInfo().get().getName() + "]"); - } + getCurrentStreamInfo().ifPresent(info -> { + if (!prefs.getBoolean(context.getString(R.string.enable_watch_history_key), true)) { + return; + } + if (DEBUG) { + Log.d(TAG, "saveStreamProgressState() called with: progressMillis=" + progressMillis + + ", currentMetadata=[" + info.getName() + "]"); + } - databaseUpdateDisposable - .add(recordManager.saveStreamState(getCurrentStreamInfo().get(), progressMillis) - .observeOn(AndroidSchedulers.mainThread()) - .doOnError(e -> { - if (DEBUG) { - e.printStackTrace(); - } - }) - .onErrorComplete() - .subscribe()); + databaseUpdateDisposable.add(recordManager.saveStreamState(info, progressMillis) + .observeOn(AndroidSchedulers.mainThread()) + .doOnError(e -> { + if (DEBUG) { + e.printStackTrace(); + } + }) + .onErrorComplete() + .subscribe()); + }); } public void saveStreamProgressState() { @@ -2036,40 +2035,35 @@ public final class Player implements PlaybackListener, Listener { // in livestreams) so we will be not able to execute the block below. // Reload the play queue manager in this case, which is the behavior when we don't know the // index of the video renderer or playQueueManagerReloadingNeeded returns true. - final Optional optCurrentStreamInfo = getCurrentStreamInfo(); - if (!optCurrentStreamInfo.isPresent()) { - reloadPlayQueueManager(); - setRecovery(); - return; - } + getCurrentStreamInfo().ifPresentOrElse(info -> { + // In the case we don't know the source type, fallback to the one with video with audio + // or audio-only source. + final SourceType sourceType = videoResolver.getStreamSourceType() + .orElse(SourceType.VIDEO_WITH_AUDIO_OR_AUDIO_ONLY); - final StreamInfo info = optCurrentStreamInfo.get(); + if (playQueueManagerReloadingNeeded(sourceType, info, getVideoRendererIndex())) { + reloadPlayQueueManager(); + } else { + if (StreamTypeUtil.isAudio(info.getStreamType())) { + // Nothing to do more than setting the recovery position + setRecovery(); + return; + } - // In the case we don't know the source type, fallback to the one with video with audio or - // audio-only source. - final SourceType sourceType = videoResolver.getStreamSourceType().orElse( - SourceType.VIDEO_WITH_AUDIO_OR_AUDIO_ONLY); + final var parametersBuilder = trackSelector.buildUponParameters(); - if (playQueueManagerReloadingNeeded(sourceType, info, getVideoRendererIndex())) { - reloadPlayQueueManager(); - } else { - if (StreamTypeUtil.isAudio(info.getStreamType())) { - // Nothing to do more than setting the recovery position - setRecovery(); - return; + // Enable/disable the video track and the ability to select subtitles + parametersBuilder.setTrackTypeDisabled(C.TRACK_TYPE_TEXT, !videoEnabled); + parametersBuilder.setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, !videoEnabled); + + trackSelector.setParameters(parametersBuilder); } - final DefaultTrackSelector.Parameters.Builder parametersBuilder = - trackSelector.buildUponParameters(); - - // Enable/disable the video track and the ability to select subtitles - parametersBuilder.setTrackTypeDisabled(C.TRACK_TYPE_TEXT, !videoEnabled); - parametersBuilder.setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, !videoEnabled); - - trackSelector.setParameters(parametersBuilder); - } - - setRecovery(); + setRecovery(); + }, () -> { + reloadPlayQueueManager(); + setRecovery(); + }); } /** diff --git a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java index 9b13bb3d7..f58aa6e91 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java @@ -423,7 +423,7 @@ public class MediaSourceManager { private Single getLoadedMediaSource(@NonNull final PlayQueueItem stream) { return stream.getStream().map(streamInfo -> { final MediaSource source = playbackListener.sourceOf(stream, streamInfo); - if (source == null || !MediaItemTag.from(source.getMediaItem()).isPresent()) { + if (source == null || MediaItemTag.from(source.getMediaItem()).isEmpty()) { final String message = "Unable to resolve source from stream info. " + "URL: " + stream.getUrl() + ", " + "audio count: " + streamInfo.getAudioStreams().size() + ", " diff --git a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java index 9eea89e78..b7441c272 100644 --- a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java +++ b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java @@ -8,6 +8,7 @@ import android.widget.ImageView; import androidx.annotation.IntDef; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.core.graphics.BitmapCompat; import androidx.core.math.MathUtils; import androidx.preference.PreferenceManager; @@ -16,7 +17,6 @@ import org.schabi.newpipe.R; import org.schabi.newpipe.util.DeviceUtils; import java.lang.annotation.Retention; -import java.util.Optional; import java.util.function.IntSupplier; import static java.lang.annotation.RetentionPolicy.SOURCE; @@ -66,21 +66,19 @@ public final class SeekbarPreviewThumbnailHelper { public static void tryResizeAndSetSeekbarPreviewThumbnail( @NonNull final Context context, - @NonNull final Optional optPreviewThumbnail, + @Nullable final Bitmap previewThumbnail, @NonNull final ImageView currentSeekbarPreviewThumbnail, @NonNull final IntSupplier baseViewWidthSupplier) { - - if (!optPreviewThumbnail.isPresent()) { + if (previewThumbnail == null) { currentSeekbarPreviewThumbnail.setVisibility(View.GONE); return; } currentSeekbarPreviewThumbnail.setVisibility(View.VISIBLE); - final Bitmap srcBitmap = optPreviewThumbnail.get(); // Resize original bitmap try { - final int srcWidth = srcBitmap.getWidth() > 0 ? srcBitmap.getWidth() : 1; + final int srcWidth = previewThumbnail.getWidth() > 0 ? previewThumbnail.getWidth() : 1; final int newWidth = MathUtils.clamp( // Use 1/4 of the width for the preview Math.round(baseViewWidthSupplier.getAsInt() / 4f), @@ -90,15 +88,16 @@ public final class SeekbarPreviewThumbnailHelper { Math.round(srcWidth * 2.5f)); final float scaleFactor = (float) newWidth / srcWidth; - final int newHeight = (int) (srcBitmap.getHeight() * scaleFactor); + final int newHeight = (int) (previewThumbnail.getHeight() * scaleFactor); - currentSeekbarPreviewThumbnail.setImageBitmap(BitmapCompat.createScaledBitmap(srcBitmap, - newWidth, newHeight, null, true)); + currentSeekbarPreviewThumbnail.setImageBitmap( + BitmapCompat.createScaledBitmap(previewThumbnail, newWidth, newHeight, null, + true)); } catch (final Exception ex) { Log.e(TAG, "Failed to resize and set seekbar preview thumbnail", ex); currentSeekbarPreviewThumbnail.setVisibility(View.GONE); } finally { - srcBitmap.recycle(); + previewThumbnail.recycle(); } } } diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java index 6226900f6..eadb1ac99 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java @@ -74,6 +74,7 @@ import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.external_communication.KoreUtils; import org.schabi.newpipe.util.external_communication.ShareUtils; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -746,15 +747,10 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh } private int getNearestStreamSegmentPosition(final long playbackPosition) { - //noinspection SimplifyOptionalCallChains - if (!player.getCurrentStreamInfo().isPresent()) { - return 0; - } - int nearestPosition = 0; final List segments = player.getCurrentStreamInfo() - .get() - .getStreamSegments(); + .map(StreamInfo::getStreamSegments) + .orElse(Collections.emptyList()); for (int i = 0; i < segments.size(); i++) { if (segments.get(i).getStartTimeSeconds() * 1000L > playbackPosition) { diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index bce75d77f..896bb4e70 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -566,7 +566,7 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa SeekbarPreviewThumbnailHelper .tryResizeAndSetSeekbarPreviewThumbnail( player.getContext(), - seekbarPreviewThumbnailHolder.getBitmapAt(progress), + seekbarPreviewThumbnailHolder.getBitmapAt(progress).orElse(null), binding.currentSeekbarPreviewThumbnail, binding.subtitleView::getWidth); @@ -982,61 +982,56 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa } private void updateStreamRelatedViews() { - //noinspection SimplifyOptionalCallChains - if (!player.getCurrentStreamInfo().isPresent()) { - return; - } - final StreamInfo info = player.getCurrentStreamInfo().get(); + player.getCurrentStreamInfo().ifPresent(info -> { + binding.qualityTextView.setVisibility(View.GONE); + binding.playbackSpeed.setVisibility(View.GONE); - binding.qualityTextView.setVisibility(View.GONE); - binding.playbackSpeed.setVisibility(View.GONE); + binding.playbackEndTime.setVisibility(View.GONE); + binding.playbackLiveSync.setVisibility(View.GONE); - binding.playbackEndTime.setVisibility(View.GONE); - binding.playbackLiveSync.setVisibility(View.GONE); - - switch (info.getStreamType()) { - case AUDIO_STREAM: - case POST_LIVE_AUDIO_STREAM: - binding.surfaceView.setVisibility(View.GONE); - binding.endScreen.setVisibility(View.VISIBLE); - binding.playbackEndTime.setVisibility(View.VISIBLE); - break; - - case AUDIO_LIVE_STREAM: - binding.surfaceView.setVisibility(View.GONE); - binding.endScreen.setVisibility(View.VISIBLE); - binding.playbackLiveSync.setVisibility(View.VISIBLE); - break; - - case LIVE_STREAM: - binding.surfaceView.setVisibility(View.VISIBLE); - binding.endScreen.setVisibility(View.GONE); - binding.playbackLiveSync.setVisibility(View.VISIBLE); - break; - - case VIDEO_STREAM: - case POST_LIVE_STREAM: - //noinspection SimplifyOptionalCallChains - if (player.getCurrentMetadata() != null - && !player.getCurrentMetadata().getMaybeQuality().isPresent() - || (info.getVideoStreams().isEmpty() - && info.getVideoOnlyStreams().isEmpty())) { + switch (info.getStreamType()) { + case AUDIO_STREAM: + case POST_LIVE_AUDIO_STREAM: + binding.surfaceView.setVisibility(View.GONE); + binding.endScreen.setVisibility(View.VISIBLE); + binding.playbackEndTime.setVisibility(View.VISIBLE); break; - } - buildQualityMenu(); + case AUDIO_LIVE_STREAM: + binding.surfaceView.setVisibility(View.GONE); + binding.endScreen.setVisibility(View.VISIBLE); + binding.playbackLiveSync.setVisibility(View.VISIBLE); + break; - binding.qualityTextView.setVisibility(View.VISIBLE); - binding.surfaceView.setVisibility(View.VISIBLE); - // fallthrough - default: - binding.endScreen.setVisibility(View.GONE); - binding.playbackEndTime.setVisibility(View.VISIBLE); - break; - } + case LIVE_STREAM: + binding.surfaceView.setVisibility(View.VISIBLE); + binding.endScreen.setVisibility(View.GONE); + binding.playbackLiveSync.setVisibility(View.VISIBLE); + break; - buildPlaybackSpeedMenu(); - binding.playbackSpeed.setVisibility(View.VISIBLE); + case VIDEO_STREAM: + case POST_LIVE_STREAM: + if (player.getCurrentMetadata() != null + && player.getCurrentMetadata().getMaybeQuality().isEmpty() + || (info.getVideoStreams().isEmpty() + && info.getVideoOnlyStreams().isEmpty())) { + break; + } + + buildQualityMenu(); + + binding.qualityTextView.setVisibility(View.VISIBLE); + binding.surfaceView.setVisibility(View.VISIBLE); + // fallthrough + default: + binding.endScreen.setVisibility(View.GONE); + binding.playbackEndTime.setVisibility(View.VISIBLE); + break; + } + + buildPlaybackSpeedMenu(); + binding.playbackSpeed.setVisibility(View.VISIBLE); + }); } //endregion @@ -1198,8 +1193,7 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa if (menuItem.getGroupId() == POPUP_MENU_ID_QUALITY) { final int menuItemIndex = menuItem.getItemId(); @Nullable final MediaItemTag currentMetadata = player.getCurrentMetadata(); - //noinspection SimplifyOptionalCallChains - if (currentMetadata == null || !currentMetadata.getMaybeQuality().isPresent()) { + if (currentMetadata == null || currentMetadata.getMaybeQuality().isEmpty()) { return true; } @@ -1300,9 +1294,8 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa // Build UI buildCaptionMenu(availableLanguages); - //noinspection SimplifyOptionalCallChains if (player.getTrackSelector().getParameters().getRendererDisabled( - player.getCaptionRendererIndex()) || !selectedTracks.isPresent()) { + player.getCaptionRendererIndex()) || selectedTracks.isEmpty()) { binding.captionTextView.setText(R.string.caption_none); } else { binding.captionTextView.setText(selectedTracks.get().language); From e3062d7c6622a665b734eaf3caaaaf37199d7a3c Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Thu, 3 Nov 2022 06:00:51 +0530 Subject: [PATCH 087/147] Use Optional chaining. --- .../fragments/detail/VideoDetailFragment.java | 13 +++---- .../org/schabi/newpipe/player/Player.java | 21 +++++------- .../player/mediaitem/MediaItemTag.java | 11 +++--- .../player/playback/MediaSourceManager.java | 34 ++++++++++--------- .../SeekbarPreviewThumbnailHelper.java | 5 ++- .../newpipe/player/ui/MainPlayerUi.java | 33 ++++++++---------- 6 files changed, 53 insertions(+), 64 deletions(-) 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 abb995ecd..d32b694d7 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 @@ -2423,23 +2423,20 @@ public final class VideoDetailFragment // helpers to check the state of player and playerService boolean isPlayerAvailable() { - return (player != null); + return player != null; } boolean isPlayerServiceAvailable() { - return (playerService != null); + return playerService != null; } boolean isPlayerAndPlayerServiceAvailable() { - return (player != null && playerService != null); + return player != null && playerService != null; } public Optional getRoot() { - if (player == null) { - return Optional.empty(); - } - - return player.UIs().get(VideoPlayerUi.class) + return Optional.ofNullable(player) + .flatMap(player1 -> player1.UIs().get(VideoPlayerUi.class)) .map(playerUi -> playerUi.getBinding().getRoot()); } diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index da337b394..cc95d6be3 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -1877,21 +1877,16 @@ public final class Player implements PlaybackListener, Listener { @Nullable public VideoStream getSelectedVideoStream() { - @Nullable final MediaItemTag.Quality quality = Optional.ofNullable(currentMetadata) + return Optional.ofNullable(currentMetadata) .flatMap(MediaItemTag::getMaybeQuality) + .filter(quality -> { + final int selectedStreamIndex = quality.getSelectedVideoStreamIndex(); + return selectedStreamIndex >= 0 + && selectedStreamIndex < quality.getSortedVideoStreams().size(); + }) + .map(quality -> quality.getSortedVideoStreams() + .get(quality.getSelectedVideoStreamIndex())) .orElse(null); - if (quality == null) { - return null; - } - - final List availableStreams = quality.getSortedVideoStreams(); - final int selectedStreamIndex = quality.getSelectedVideoStreamIndex(); - - if (selectedStreamIndex >= 0 && availableStreams.size() > selectedStreamIndex) { - return availableStreams.get(selectedStreamIndex); - } else { - return null; - } } //endregion diff --git a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java index d23dd4574..f08086287 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java +++ b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java @@ -61,12 +61,11 @@ public interface MediaItemTag { @NonNull static Optional from(@Nullable final MediaItem mediaItem) { - if (mediaItem == null || mediaItem.localConfiguration == null - || !(mediaItem.localConfiguration.tag instanceof MediaItemTag)) { - return Optional.empty(); - } - - return Optional.of((MediaItemTag) mediaItem.localConfiguration.tag); + return Optional.ofNullable(mediaItem) + .map(item -> item.localConfiguration) + .map(localConfiguration -> localConfiguration.tag) + .filter(MediaItemTag.class::isInstance) + .map(MediaItemTag.class::cast); } @NonNull diff --git a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java index f58aa6e91..6d9fb8a1c 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java @@ -7,8 +7,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.collection.ArraySet; -import com.google.android.exoplayer2.source.MediaSource; - import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; import org.schabi.newpipe.extractor.exceptions.ExtractionException; @@ -27,6 +25,7 @@ import org.schabi.newpipe.util.ServiceHelper; import java.util.Collection; import java.util.Collections; +import java.util.Optional; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -422,21 +421,24 @@ public class MediaSourceManager { private Single getLoadedMediaSource(@NonNull final PlayQueueItem stream) { return stream.getStream().map(streamInfo -> { - final MediaSource source = playbackListener.sourceOf(stream, streamInfo); - if (source == null || MediaItemTag.from(source.getMediaItem()).isEmpty()) { - final String message = "Unable to resolve source from stream info. " - + "URL: " + stream.getUrl() + ", " - + "audio count: " + streamInfo.getAudioStreams().size() + ", " - + "video count: " + streamInfo.getVideoOnlyStreams().size() + ", " - + streamInfo.getVideoStreams().size(); - return (ManagedMediaSource) - FailedMediaSource.of(stream, new MediaSourceResolutionException(message)); - } + final var source = playbackListener.sourceOf(stream, streamInfo); - final MediaItemTag tag = MediaItemTag.from(source.getMediaItem()).get(); - final long expiration = System.currentTimeMillis() - + ServiceHelper.getCacheExpirationMillis(streamInfo.getServiceId()); - return new LoadedMediaSource(source, tag, stream, expiration); + return Optional.ofNullable(source) + .flatMap(source1 -> MediaItemTag.from(source1.getMediaItem())) + .map(tag -> { + final long expiration = System.currentTimeMillis() + + ServiceHelper.getCacheExpirationMillis(streamInfo.getServiceId()); + return new LoadedMediaSource(source, tag, stream, expiration); + }) + .orElseGet(() -> { + final String message = "Unable to resolve source from stream info. " + + "URL: " + stream.getUrl() + ", " + + "audio count: " + streamInfo.getAudioStreams().size() + ", " + + "video count: " + streamInfo.getVideoOnlyStreams().size() + ", " + + streamInfo.getVideoStreams().size(); + return FailedMediaSource.of(stream, new MediaSourceResolutionException( + message)); + }); }).onErrorReturn(throwable -> { if (throwable instanceof ExtractionException) { return FailedMediaSource.of(stream, new StreamInfoLoadException(throwable)); diff --git a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java index b7441c272..28856d606 100644 --- a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java +++ b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java @@ -90,9 +90,8 @@ public final class SeekbarPreviewThumbnailHelper { final float scaleFactor = (float) newWidth / srcWidth; final int newHeight = (int) (previewThumbnail.getHeight() * scaleFactor); - currentSeekbarPreviewThumbnail.setImageBitmap( - BitmapCompat.createScaledBitmap(previewThumbnail, newWidth, newHeight, null, - true)); + currentSeekbarPreviewThumbnail.setImageBitmap(BitmapCompat + .createScaledBitmap(previewThumbnail, newWidth, newHeight, null, true)); } catch (final Exception ex) { Log.e(TAG, "Failed to resize and set seekbar preview thumbnail", ex); currentSeekbarPreviewThumbnail.setVisibility(View.GONE); diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java index eadb1ac99..683629c25 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java @@ -862,14 +862,11 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh @Override protected void onPlaybackSpeedClicked() { - final AppCompatActivity activity = getParentActivity().orElse(null); - if (activity == null) { - return; - } - - PlaybackParameterDialog.newInstance(player.getPlaybackSpeed(), player.getPlaybackPitch(), - player.getPlaybackSkipSilence(), player::setPlaybackParameters) - .show(activity.getSupportFragmentManager(), null); + getParentActivity().ifPresent(activity -> + PlaybackParameterDialog.newInstance(player.getPlaybackSpeed(), + player.getPlaybackPitch(), player.getPlaybackSkipSilence(), + player::setPlaybackParameters) + .show(activity.getSupportFragmentManager(), null)); } @Override @@ -969,22 +966,22 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh //////////////////////////////////////////////////////////////////////////*/ //region Getters + private Optional getParentContext() { + return Optional.ofNullable(binding.getRoot().getParent()) + .filter(ViewGroup.class::isInstance) + .map(parent -> ((ViewGroup) parent).getContext()); + } + public Optional getParentActivity() { - final ViewParent rootParent = binding.getRoot().getParent(); - if (rootParent instanceof ViewGroup) { - final Context activity = ((ViewGroup) rootParent).getContext(); - if (activity instanceof AppCompatActivity) { - return Optional.of((AppCompatActivity) activity); - } - } - return Optional.empty(); + return getParentContext() + .filter(AppCompatActivity.class::isInstance) + .map(AppCompatActivity.class::cast); } public boolean isLandscape() { // DisplayMetrics from activity context knows about MultiWindow feature // while DisplayMetrics from app context doesn't - return DeviceUtils.isLandscape( - getParentActivity().map(Context.class::cast).orElse(player.getService())); + return DeviceUtils.isLandscape(getParentContext().orElse(player.getService())); } //endregion } From e8216b2e80868f3dd3baaa91efccda39cf486cf1 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Wed, 4 Jan 2023 05:42:09 +0530 Subject: [PATCH 088/147] Apply code review suggestions. --- .../org/schabi/newpipe/player/Player.java | 1 + .../player/playback/MediaSourceManager.java | 63 ++++++++++--------- 2 files changed, 35 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index cc95d6be3..1b60f80c9 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -2056,6 +2056,7 @@ public final class Player implements PlaybackListener, Listener { setRecovery(); }, () -> { + // This is executed when the current stream info is not available. reloadPlayQueueManager(); setRecovery(); }); diff --git a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java index 6d9fb8a1c..88d7145bc 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java @@ -21,7 +21,6 @@ import org.schabi.newpipe.player.playqueue.events.MoveEvent; import org.schabi.newpipe.player.playqueue.events.PlayQueueEvent; import org.schabi.newpipe.player.playqueue.events.RemoveEvent; import org.schabi.newpipe.player.playqueue.events.ReorderEvent; -import org.schabi.newpipe.util.ServiceHelper; import java.util.Collection; import java.util.Collections; @@ -42,6 +41,7 @@ import io.reactivex.rxjava3.subjects.PublishSubject; import static org.schabi.newpipe.player.mediasource.FailedMediaSource.MediaSourceResolutionException; import static org.schabi.newpipe.player.mediasource.FailedMediaSource.StreamInfoLoadException; import static org.schabi.newpipe.player.playqueue.PlayQueue.DEBUG; +import static org.schabi.newpipe.util.ServiceHelper.getCacheExpirationMillis; public class MediaSourceManager { @NonNull @@ -420,34 +420,39 @@ public class MediaSourceManager { } private Single getLoadedMediaSource(@NonNull final PlayQueueItem stream) { - return stream.getStream().map(streamInfo -> { - final var source = playbackListener.sourceOf(stream, streamInfo); - - return Optional.ofNullable(source) - .flatMap(source1 -> MediaItemTag.from(source1.getMediaItem())) - .map(tag -> { - final long expiration = System.currentTimeMillis() - + ServiceHelper.getCacheExpirationMillis(streamInfo.getServiceId()); - return new LoadedMediaSource(source, tag, stream, expiration); - }) - .orElseGet(() -> { - final String message = "Unable to resolve source from stream info. " - + "URL: " + stream.getUrl() + ", " - + "audio count: " + streamInfo.getAudioStreams().size() + ", " - + "video count: " + streamInfo.getVideoOnlyStreams().size() + ", " - + streamInfo.getVideoStreams().size(); - return FailedMediaSource.of(stream, new MediaSourceResolutionException( - message)); - }); - }).onErrorReturn(throwable -> { - if (throwable instanceof ExtractionException) { - return FailedMediaSource.of(stream, new StreamInfoLoadException(throwable)); - } - // Non-source related error expected here (e.g. network), - // should allow retry shortly after the error. - return FailedMediaSource.of(stream, new Exception(throwable), - /*allowRetryIn=*/TimeUnit.MILLISECONDS.convert(3, TimeUnit.SECONDS)); - }); + return stream.getStream() + .map(streamInfo -> Optional + .ofNullable(playbackListener.sourceOf(stream, streamInfo)) + .flatMap(source -> + MediaItemTag.from(source.getMediaItem()) + .map(tag -> { + final int serviceId = streamInfo.getServiceId(); + final long expiration = System.currentTimeMillis() + + getCacheExpirationMillis(serviceId); + return new LoadedMediaSource(source, tag, stream, + expiration); + }) + ) + .orElseGet(() -> { + final String message = "Unable to resolve source from stream info. " + + "URL: " + stream.getUrl() + + ", audio count: " + streamInfo.getAudioStreams().size() + + ", video count: " + streamInfo.getVideoOnlyStreams().size() + + ", " + streamInfo.getVideoStreams().size(); + return FailedMediaSource.of(stream, + new MediaSourceResolutionException(message)); + }) + ) + .onErrorReturn(throwable -> { + if (throwable instanceof ExtractionException) { + return FailedMediaSource.of(stream, new StreamInfoLoadException(throwable)); + } + // Non-source related error expected here (e.g. network), + // should allow retry shortly after the error. + final long allowRetryIn = TimeUnit.MILLISECONDS.convert(3, + TimeUnit.SECONDS); + return FailedMediaSource.of(stream, new Exception(throwable), allowRetryIn); + }); } private void onMediaSourceReceived(@NonNull final PlayQueueItem item, From 2679a4bf1e712f82bf6bcb40b4eacd973c7206c7 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Wed, 4 Jan 2023 16:21:16 +0100 Subject: [PATCH 089/147] Removed the "Unset Thumbnail" item if you can't use this feature --- .../local/bookmark/BookmarkFragment.java | 52 ++++++------------- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 17 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java index 8cb544e0b..e2f493a8a 100644 --- a/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/bookmark/BookmarkFragment.java @@ -8,8 +8,6 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -34,6 +32,7 @@ import org.schabi.newpipe.local.playlist.RemotePlaylistManager; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.OnClickGesture; +import java.util.ArrayList; import java.util.List; import icepick.State; @@ -267,49 +266,30 @@ public final class BookmarkFragment extends BaseLocalListFragment arrayAdapter = getLocalDialogArrayAdapter(isThumbnailPermanent, - unsetThumbnail); - arrayAdapter.addAll(rename, delete, unsetThumbnail); + final ArrayList items = new ArrayList<>(); + items.add(rename); + items.add(delete); + if (isThumbnailPermanent) { + items.add(unsetThumbnail); + } - final DialogInterface.OnClickListener action = (dialog, index) -> { - if (index == arrayAdapter.getPosition(rename)) { + final DialogInterface.OnClickListener action = (d, index) -> { + if (items.get(index).equals(rename)) { showRenameDialog(selectedItem); - } else if (index == arrayAdapter.getPosition(delete)) { - showDeleteDialog(selectedItem.name, localPlaylistManager - .deletePlaylist(selectedItem.uid)); - } else if (isThumbnailPermanent) { + } else if (items.get(index).equals(delete)) { + showDeleteDialog(selectedItem.name, + localPlaylistManager.deletePlaylist(selectedItem.uid)); + } else if (isThumbnailPermanent && items.get(index).equals(unsetThumbnail)) { final String thumbnailUrl = localPlaylistManager .getAutomaticPlaylistThumbnail(selectedItem.uid); - localPlaylistManager.changePlaylistThumbnail(selectedItem.uid, thumbnailUrl, false) + localPlaylistManager + .changePlaylistThumbnail(selectedItem.uid, thumbnailUrl, false) .observeOn(AndroidSchedulers.mainThread()) .subscribe(); } }; - builder.setAdapter(arrayAdapter, action) - .create() - .show(); - } - - private ArrayAdapter getLocalDialogArrayAdapter(final boolean isPlaylistThumbnailSet, - final String unsetThumbnail) { - return new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1) { - @Override - public View getView(final int position, final View convertView, - final ViewGroup parent) { - final View v = super.getView(position, convertView, parent); - final TextView textView = v.findViewById(android.R.id.text1); - - // If the PlaylistThumbnail is not set permanently, the unset option is disabled. - if (!isPlaylistThumbnailSet && textView.getText().equals(unsetThumbnail)) { - textView.setEnabled(false); - return v; - } - - textView.setEnabled(true); - return v; - } - }; + builder.setItems(items.toArray(new String[0]), action).create().show(); } private void showRenameDialog(final PlaylistMetadataEntry selectedItem) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 85f82e60c..dd30aaefa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -438,7 +438,7 @@ Mute Unmute Set as playlist thumbnail - Unset thumbnail + Unset permanent thumbnail Bookmark Playlist Remove Bookmark Delete this playlist\? From 9c19e9813a879209edf87c29a665054cc792468c Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Sun, 8 Jan 2023 11:53:42 +0100 Subject: [PATCH 090/147] Fixed a bug that caused multiple empty playlists to be not shown. --- .../schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java b/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java index 4941d9395..09355deed 100644 --- a/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java +++ b/app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java @@ -80,7 +80,7 @@ public interface PlaylistStreamDAO extends BasicDAO { + " FROM " + PLAYLIST_TABLE + " LEFT JOIN " + PLAYLIST_STREAM_JOIN_TABLE + " ON " + PLAYLIST_ID + " = " + JOIN_PLAYLIST_ID - + " GROUP BY " + JOIN_PLAYLIST_ID + + " GROUP BY " + PLAYLIST_ID + " ORDER BY " + PLAYLIST_NAME + " COLLATE NOCASE ASC") Flowable> getPlaylistMetadata(); } From edff696ecc503c4a0e964636bbabef71ad1d6def Mon Sep 17 00:00:00 2001 From: petlyh <88139840+petlyh@users.noreply.github.com> Date: Tue, 10 Jan 2023 13:57:36 +0100 Subject: [PATCH 091/147] Ask for permission when enqueuing in a popup --- .../main/java/org/schabi/newpipe/util/NavigationHelper.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java index 13413e89d..483f5067a 100644 --- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java @@ -183,6 +183,11 @@ public final class NavigationHelper { public static void enqueueOnPlayer(final Context context, final PlayQueue queue, final PlayerType playerType) { + if ((playerType == PlayerType.POPUP) && !PermissionHelper.isPopupEnabled(context)) { + PermissionHelper.showPopupEnablementToast(context); + return; + } + Toast.makeText(context, R.string.enqueued, Toast.LENGTH_SHORT).show(); final Intent intent = getPlayerEnqueueIntent(context, PlayerService.class, queue); From 9c7ed80662dd8feb63ccb0cbc70852044e34fbcc Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 11 Jan 2023 14:47:53 +0100 Subject: [PATCH 092/147] Use Optional.map correctly and other improvements --- .../fragments/detail/VideoDetailFragment.java | 9 +++++--- .../org/schabi/newpipe/player/Player.java | 6 ++--- .../player/mediaitem/MediaItemTag.java | 4 ++-- .../newpipe/player/ui/VideoPlayerUi.java | 23 ++++++++----------- 4 files changed, 19 insertions(+), 23 deletions(-) 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 d32b694d7..1fb6b5859 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 @@ -255,7 +255,9 @@ public final class VideoDetailFragment playerUi.ifPresent(MainPlayerUi::toggleFullscreen); } - if (playAfterConnect || (currentInfo != null && isAutoplayEnabled() + if (playAfterConnect + || (currentInfo != null + && isAutoplayEnabled() && playerUi.isEmpty())) { autoPlayEnabled = true; // forcefully start playing openVideoPlayerAutoFullscreen(); @@ -1883,8 +1885,9 @@ public final class VideoDetailFragment @Override public void onFullscreenStateChanged(final boolean fullscreen) { setupBrightness(); - if (!isPlayerAndPlayerServiceAvailable() || player.UIs().get(MainPlayerUi.class).isEmpty() - || getRoot().map(View::getParent).isEmpty()) { + if (!isPlayerAndPlayerServiceAvailable() + || player.UIs().get(MainPlayerUi.class).isEmpty() + || getRoot().flatMap(v -> Optional.ofNullable(v.getParent())).isEmpty()) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 1b60f80c9..b6098a1ef 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -1875,8 +1875,7 @@ public final class Player implements PlaybackListener, Listener { loadController.disablePreloadingOfCurrentTrack(); } - @Nullable - public VideoStream getSelectedVideoStream() { + public Optional getSelectedVideoStream() { return Optional.ofNullable(currentMetadata) .flatMap(MediaItemTag::getMaybeQuality) .filter(quality -> { @@ -1885,8 +1884,7 @@ public final class Player implements PlaybackListener, Listener { && selectedStreamIndex < quality.getSortedVideoStreams().size(); }) .map(quality -> quality.getSortedVideoStreams() - .get(quality.getSelectedVideoStreamIndex())) - .orElse(null); + .get(quality.getSelectedVideoStreamIndex())); } //endregion diff --git a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java index f08086287..4f808caac 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java +++ b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java @@ -62,8 +62,8 @@ public interface MediaItemTag { @NonNull static Optional from(@Nullable final MediaItem mediaItem) { return Optional.ofNullable(mediaItem) - .map(item -> item.localConfiguration) - .map(localConfiguration -> localConfiguration.tag) + .flatMap(item -> Optional.ofNullable(item.localConfiguration)) + .flatMap(localConfiguration -> Optional.ofNullable(localConfiguration.tag)) .filter(MediaItemTag.class::isInstance) .map(MediaItemTag.class::cast); } diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index 896bb4e70..e4f5b05e1 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -1060,12 +1060,11 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa qualityPopupMenu.getMenu().add(POPUP_MENU_ID_QUALITY, i, Menu.NONE, MediaFormat .getNameById(videoStream.getFormatId()) + " " + videoStream.getResolution()); } - final VideoStream selectedVideoStream = player.getSelectedVideoStream(); - if (selectedVideoStream != null) { - binding.qualityTextView.setText(selectedVideoStream.getResolution()); - } qualityPopupMenu.setOnMenuItemClickListener(this); qualityPopupMenu.setOnDismissListener(this); + + player.getSelectedVideoStream() + .ifPresent(s -> binding.qualityTextView.setText(s.getResolution())); } private void buildPlaybackSpeedMenu() { @@ -1171,12 +1170,9 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa qualityPopupMenu.show(); isSomePopupMenuVisible = true; - final VideoStream videoStream = player.getSelectedVideoStream(); - if (videoStream != null) { - //noinspection SetTextI18n - binding.qualityTextView.setText(MediaFormat.getNameById(videoStream.getFormatId()) - + " " + videoStream.getResolution()); - } + player.getSelectedVideoStream() + .map(s -> MediaFormat.getNameById(s.getFormatId()) + " " + s.getResolution()) + .ifPresent(binding.qualityTextView::setText); } /** @@ -1232,10 +1228,9 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa Log.d(TAG, "onDismiss() called with: menu = [" + menu + "]"); } isSomePopupMenuVisible = false; //TODO check if this works - final VideoStream selectedVideoStream = player.getSelectedVideoStream(); - if (selectedVideoStream != null) { - binding.qualityTextView.setText(selectedVideoStream.getResolution()); - } + player.getSelectedVideoStream() + .ifPresent(s -> binding.qualityTextView.setText(s.getResolution())); + if (player.isPlaying()) { hideControls(DEFAULT_CONTROLS_DURATION, 0); hideSystemUIIfNeeded(); From 400ee808e08055fcbec4304a5488dbe38afa8a04 Mon Sep 17 00:00:00 2001 From: devlearner Date: Sat, 15 Oct 2022 23:34:39 +0800 Subject: [PATCH 093/147] Set up theme/locale before super.create() This seems to solve a bug where the Open action menu dialog does not appear the first time on cold start on older Android (8.0). This is also the order of things in MainActivity and probably good practice. --- .../main/java/org/schabi/newpipe/RouterActivity.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 936beecff..b012be109 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -114,6 +114,11 @@ public class RouterActivity extends AppCompatActivity { @Override protected void onCreate(final Bundle savedInstanceState) { + ThemeHelper.setDayNightMode(this); + setTheme(ThemeHelper.isLightThemeSelected(this) + ? R.style.RouterActivityThemeLight : R.style.RouterActivityThemeDark); + Localization.assureCorrectAppLanguage(this); + super.onCreate(savedInstanceState); Icepick.restoreInstanceState(this, savedInstanceState); @@ -125,11 +130,6 @@ public class RouterActivity extends AppCompatActivity { finish(); } } - - ThemeHelper.setDayNightMode(this); - setTheme(ThemeHelper.isLightThemeSelected(this) - ? R.style.RouterActivityThemeLight : R.style.RouterActivityThemeDark); - Localization.assureCorrectAppLanguage(this); } @Override From 73e32889b674d9344306b7494247529d0a3925d6 Mon Sep 17 00:00:00 2001 From: devlearner Date: Sun, 16 Oct 2022 01:01:19 +0800 Subject: [PATCH 094/147] Don't finish() to allow recreate when orientation change is on foot --- app/src/main/java/org/schabi/newpipe/RouterActivity.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index b012be109..5892d9766 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -161,6 +161,14 @@ public class RouterActivity extends AppCompatActivity { disposables.clear(); } + @Override + public void finish() { + // allow the activity to recreate in case orientation changes + if (!isChangingConfigurations()) { + super.finish(); + } + } + private void handleUrl(final String url) { disposables.add(Observable .fromCallable(() -> { From b175774ad882eaec1530d329ddcc104c5500aca8 Mon Sep 17 00:00:00 2001 From: devlearner Date: Sun, 16 Oct 2022 02:32:41 +0800 Subject: [PATCH 095/147] Try to amicably handle DialogFragment in FragmentManager when recreated from orientation change - Handle finish() call instead of passing around callbacks to setOnDismissListener() - Don't start over again if returning to DialogFragment before orientation change --- .../org/schabi/newpipe/RouterActivity.java | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 5892d9766..0c4cff8d1 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -31,6 +31,7 @@ import androidx.appcompat.content.res.AppCompatResources; import androidx.core.app.NotificationCompat; import androidx.core.app.ServiceCompat; import androidx.core.math.MathUtils; +import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.preference.PreferenceManager; @@ -151,7 +152,32 @@ public class RouterActivity extends AppCompatActivity { protected void onStart() { super.onStart(); - handleUrl(currentUrl); + // FragmentManager will take care to recreate DialogFragments when screen rotates + // currently that's namely PlaylistDialog or DownloadDialog + // We used to .setOnDismissListener(dialog ->finish()); when creating those Dialogs + // but those callbacks won't survive a config change + // Try an alternate approach to hook into FragmentManager instead, to that effect + // (courtesy of https://stackoverflow.com/a/44028453) + final FragmentManager fm = getSupportFragmentManager(); + fm.registerFragmentLifecycleCallbacks(new FragmentManager.FragmentLifecycleCallbacks() { + @Override + public void onFragmentViewDestroyed(@NonNull final FragmentManager fm, + @NonNull final Fragment f) { + super.onFragmentViewDestroyed(fm, f); + if (fm.getFragments().isEmpty()) { + // No more Dialog, we're done + finish(); + } + } + }, false); + + // Don't overlap the DialogFragment after rotating the screen + // If there's no DialogFragment, we're either starting afresh + // or we didn't make it to PlaylistDialog or DownloadDialog before the orientation change + if (fm.getFragments().isEmpty()) { + // Start over from scratch + handleUrl(currentUrl); + } } @Override @@ -659,12 +685,12 @@ public class RouterActivity extends AppCompatActivity { getThemeWrapperContext(), List.of(new StreamEntity(info)), playlistDialog -> { - playlistDialog.setOnDismissListener(dialog -> finish()); + // to be handled by FragmentManager + // playlistDialog.setOnDismissListener(dialog ->finish()); - playlistDialog.show( - this.getSupportFragmentManager(), - "addToPlaylistDialog" - ); + final FragmentManager fm = getSupportFragmentManager(); + playlistDialog.show(fm, "addToPlaylistDialog"); + fm.executePendingTransactions(); } ), throwable -> handleError(this, new ErrorInfo( @@ -684,7 +710,8 @@ public class RouterActivity extends AppCompatActivity { .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { final DownloadDialog downloadDialog = new DownloadDialog(this, result); - downloadDialog.setOnDismissListener(dialog -> finish()); + // to be handled by FragmentManager since listener would be gone when recreated + // playlistDialog.setOnDismissListener(dialog ->finish()); final FragmentManager fm = getSupportFragmentManager(); downloadDialog.show(fm, "downloadDialog"); From c1f37d85919686ea5ee1eef6cba695f63146d3fd Mon Sep 17 00:00:00 2001 From: devlearner Date: Sun, 16 Oct 2022 02:47:53 +0800 Subject: [PATCH 096/147] Also show toast in openDownloadDialog() and lengthened a bit to inform user to wait... --- .../org/schabi/newpipe/RouterActivity.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 0c4cff8d1..4a26a7905 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -669,13 +669,7 @@ public class RouterActivity extends AppCompatActivity { } private void openAddToPlaylistDialog() { - // Getting the stream info usually takes a moment - // Notifying the user here to ensure that no confusion arises - Toast.makeText( - getApplicationContext(), - getString(R.string.processing_may_take_a_moment), - Toast.LENGTH_SHORT) - .show(); + pleaseWait(); disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, false) .subscribeOn(Schedulers.io()) @@ -705,6 +699,8 @@ public class RouterActivity extends AppCompatActivity { @SuppressLint("CheckResult") private void openDownloadDialog() { + pleaseWait(); + disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, true) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -719,6 +715,16 @@ public class RouterActivity extends AppCompatActivity { }, throwable -> showUnsupportedUrlDialog(currentUrl))); } + private void pleaseWait() { + // Getting the stream info usually takes a moment + // Notifying the user here to ensure that no confusion arises + Toast.makeText( + getApplicationContext(), + getString(R.string.processing_may_take_a_moment), + Toast.LENGTH_LONG) + .show(); + } + @Override public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, From 391830558e4eb8261447d5e69e2fbe83afab90ea Mon Sep 17 00:00:00 2001 From: devlearner Date: Sun, 16 Oct 2022 03:10:37 +0800 Subject: [PATCH 097/147] Ensure our transparent activity doesn't block touch events to underlying windows so we won't hold up UI while fetching media info for Add to Playlist or Download actions lest user might think it freezes when in fact a network request is underway --- app/src/main/java/org/schabi/newpipe/RouterActivity.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 4a26a7905..3f3eb1670 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -16,6 +16,7 @@ import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; @@ -120,6 +121,14 @@ public class RouterActivity extends AppCompatActivity { ? R.style.RouterActivityThemeLight : R.style.RouterActivityThemeDark); Localization.assureCorrectAppLanguage(this); + // Pass-through touch events to background activities + // so that our transparent window won't lock UI in the mean time + // network request is underway before showing PlaylistDialog or DownloadDialog + // (courtesy of https://stackoverflow.com/a/10606141) + getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE + | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL + | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); + super.onCreate(savedInstanceState); Icepick.restoreInstanceState(this, savedInstanceState); From f860392ae9e67cf82eb82ee10dc9ed03c4ec2e33 Mon Sep 17 00:00:00 2001 From: devlearner Date: Fri, 2 Dec 2022 06:13:54 +0000 Subject: [PATCH 098/147] Address LayoutParams.FLAG_NOT_TOUCHABLE restriction on Andriod 12+ --- .../main/java/org/schabi/newpipe/RouterActivity.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 3f3eb1670..afc4321c1 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -124,11 +124,21 @@ public class RouterActivity extends AppCompatActivity { // Pass-through touch events to background activities // so that our transparent window won't lock UI in the mean time // network request is underway before showing PlaylistDialog or DownloadDialog - // (courtesy of https://stackoverflow.com/a/10606141) + // (ref: https://stackoverflow.com/a/10606141) getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); + // Android never fails to impress us with a list of new restrictions per API. + // Starting with S (Android 12) one of the prerequisite conditions has to be met + // before the FLAG_NOT_TOUCHABLE flag is allowed to kick in: + // @see WindowManager.LayoutParams#FLAG_NOT_TOUCHABLE + // For our present purpose it seems we can just set LayoutParams.alpha to 0 + // on the strength of "4. Fully transparent windows" without affecting the scrim of dialogs + final WindowManager.LayoutParams params = getWindow().getAttributes(); + params.alpha = 0f; + getWindow().setAttributes(params); + super.onCreate(savedInstanceState); Icepick.restoreInstanceState(this, savedInstanceState); From 0f9c20c986d8a58f48990fff57c03323b6e9ca70 Mon Sep 17 00:00:00 2001 From: devlearner Date: Fri, 2 Dec 2022 09:25:06 +0000 Subject: [PATCH 099/147] Improve (un)registering FragmentLifecycleCallbacks to avoid adding it multiple times and ensure proper cleanup --- .../org/schabi/newpipe/RouterActivity.java | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index afc4321c1..35bb8612f 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -32,6 +32,7 @@ import androidx.appcompat.content.res.AppCompatResources; import androidx.core.app.NotificationCompat; import androidx.core.app.ServiceCompat; import androidx.core.math.MathUtils; +import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.preference.PreferenceManager; @@ -113,6 +114,7 @@ public class RouterActivity extends AppCompatActivity { private boolean selectionIsDownload = false; private boolean selectionIsAddToPlaylist = false; private AlertDialog alertDialogChoice = null; + private FragmentManager.FragmentLifecycleCallbacks dismissListener = null; @Override protected void onCreate(final Bundle savedInstanceState) { @@ -142,6 +144,27 @@ public class RouterActivity extends AppCompatActivity { super.onCreate(savedInstanceState); Icepick.restoreInstanceState(this, savedInstanceState); + // FragmentManager will take care to recreate (Playlist|Download)Dialog when screen rotates + // We used to .setOnDismissListener(dialog -> finish()); when creating these DialogFragments + // but those callbacks won't survive a config change + // Try an alternate approach to hook into FragmentManager instead, to that effect + // (ref: https://stackoverflow.com/a/44028453) + final FragmentManager fm = getSupportFragmentManager(); + if (dismissListener == null) { + dismissListener = new FragmentManager.FragmentLifecycleCallbacks() { + @Override + public void onFragmentDestroyed(@NonNull final FragmentManager fm, + @NonNull final Fragment f) { + super.onFragmentDestroyed(fm, f); + if (f instanceof DialogFragment && fm.getFragments().isEmpty()) { + // No more DialogFragments, we're done + finish(); + } + } + }; + } + fm.registerFragmentLifecycleCallbacks(dismissListener, false); + if (TextUtils.isEmpty(currentUrl)) { currentUrl = getUrl(getIntent()); @@ -171,29 +194,10 @@ public class RouterActivity extends AppCompatActivity { protected void onStart() { super.onStart(); - // FragmentManager will take care to recreate DialogFragments when screen rotates - // currently that's namely PlaylistDialog or DownloadDialog - // We used to .setOnDismissListener(dialog ->finish()); when creating those Dialogs - // but those callbacks won't survive a config change - // Try an alternate approach to hook into FragmentManager instead, to that effect - // (courtesy of https://stackoverflow.com/a/44028453) - final FragmentManager fm = getSupportFragmentManager(); - fm.registerFragmentLifecycleCallbacks(new FragmentManager.FragmentLifecycleCallbacks() { - @Override - public void onFragmentViewDestroyed(@NonNull final FragmentManager fm, - @NonNull final Fragment f) { - super.onFragmentViewDestroyed(fm, f); - if (fm.getFragments().isEmpty()) { - // No more Dialog, we're done - finish(); - } - } - }, false); - // Don't overlap the DialogFragment after rotating the screen // If there's no DialogFragment, we're either starting afresh // or we didn't make it to PlaylistDialog or DownloadDialog before the orientation change - if (fm.getFragments().isEmpty()) { + if (getSupportFragmentManager().getFragments().isEmpty()) { // Start over from scratch handleUrl(currentUrl); } @@ -203,6 +207,9 @@ public class RouterActivity extends AppCompatActivity { protected void onDestroy() { super.onDestroy(); + if (dismissListener != null) { + getSupportFragmentManager().unregisterFragmentLifecycleCallbacks(dismissListener); + } disposables.clear(); } From 585bfff11da4edecc9b68ac2d2f408ef272d4c27 Mon Sep 17 00:00:00 2001 From: devlearner Date: Fri, 2 Dec 2022 14:22:00 +0000 Subject: [PATCH 100/147] Utilize a retained fragment to safekeep network requests in flight pending result for openAddToPlaylistDialog() and openDownloadDialog() Despite marked deprecated, setRetainInstance(true) is probably our best bet (since a ViewModel is probably too overkill for our present purpose) --- .../org/schabi/newpipe/RouterActivity.java | 203 ++++++++++++++---- 1 file changed, 163 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 35bb8612f..e61f1f738 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -83,9 +83,11 @@ import org.schabi.newpipe.util.urlfinder.UrlFinder; import org.schabi.newpipe.views.FocusOverlayView; import java.io.Serializable; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Vector; import icepick.Icepick; import icepick.State; @@ -300,7 +302,7 @@ public class RouterActivity extends AppCompatActivity { } } - private void showUnsupportedUrlDialog(final String url) { + protected void showUnsupportedUrlDialog(final String url) { final Context context = getThemeWrapperContext(); new AlertDialog.Builder(context) .setTitle(R.string.unsupported_url) @@ -587,7 +589,7 @@ public class RouterActivity extends AppCompatActivity { return returnedItems; } - private Context getThemeWrapperContext() { + protected Context getThemeWrapperContext() { return new ContextThemeWrapper(this, ThemeHelper.isLightThemeSelected(this) ? R.style.LightTheme : R.style.DarkTheme); } @@ -694,54 +696,175 @@ public class RouterActivity extends AppCompatActivity { return playerType == null || playerType == PlayerType.MAIN; } + public static class PersistentFragment extends Fragment { + private WeakReference context; + private boolean isPaused = true; + private final Vector buffer = new Vector<>(); + private final CompositeDisposable disposables = new CompositeDisposable(); + + public interface ResultRunnable { + void run(AppCompatActivity context); + } + + @Override + public void onAttach(@NonNull final Context activityContext) { + super.onAttach(activityContext); + context = new WeakReference<>((AppCompatActivity) activityContext); + } + + @SuppressWarnings("deprecation") + @Override + public void onCreate(final Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setRetainInstance(true); + } + + @Override + public void onDestroy() { + super.onDestroy(); + disposables.clear(); + } + + @Override + public void onPause() { + isPaused = true; + super.onPause(); + } + + @Override + public void onResume() { + isPaused = false; + playback(); + super.onResume(); + } + + private AppCompatActivity getActivityContext() { + return context == null ? null : context.get(); + } + + // guard against IllegalStateException in calling DialogFragment.show() whilst in background + // (which could happen, say, when the user pressed the home button while waiting for + // the network request to return) when it internally calls FragmentTransaction.commit() + // after the FragmentManager has saved its states (isStateSaved() == true) + // (ref: https://stackoverflow.com/a/39813506) + private void playback() { + if (activityGone()) { + done(); + } + if (buffer.size() == 0 || isPaused) { + return; + } + while (buffer.size() > 0) { + final ResultRunnable runnable = buffer.elementAt(0); + buffer.removeElementAt(0); + getActivityContext().runOnUiThread(() -> { + // execute queued task with new context, in case activity has been recreated + runnable.run(getActivityContext()); + }); + } + done(); + } + private boolean activityGone() { + return getActivityContext() == null || getActivityContext().isFinishing(); + } + + // a DefaultLifecycleObserver is probably a good candidate here, but for now + // let's stick with a vanilla approach to avoid pulling in an extra artifact just for this + private void runOnVisible(final ResultRunnable runnable) { + if (activityGone()) { + done(); + } + if (isPaused) { + buffer.add(runnable); + if (!getActivityContext().isChangingConfigurations()) { + // try to bring the activity back to front if minimised + final Intent i = new Intent(getActivityContext(), RouterActivity.class); + i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + startActivity(i); + } + } else { + getActivityContext().runOnUiThread(() -> { + runnable.run(getActivityContext()); + done(); + }); + } + } + + private void done() { + if (getActivityContext() != null) { + getActivityContext().getSupportFragmentManager() + .beginTransaction().remove(this).commit(); + } + } + + @SuppressLint("CheckResult") + protected void openDownloadDialog(final int currentServiceId, final String currentUrl) { + disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, true) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(result -> + runOnVisible(ctx -> { + final FragmentManager fm = ctx.getSupportFragmentManager(); + final DownloadDialog downloadDialog = new DownloadDialog(ctx, result); + // dismiss listener to be handled by FragmentManager + downloadDialog.show(fm, "downloadDialog"); + } + ), throwable -> runOnVisible(ctx -> + ((RouterActivity) ctx).showUnsupportedUrlDialog(currentUrl)))); + } + + private void openAddToPlaylistDialog(final int currentServiceId, final String currentUrl) { + disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, false) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + info -> runOnVisible(ctx -> + PlaylistDialog.createCorrespondingDialog( + ((RouterActivity) ctx).getThemeWrapperContext(), + List.of(new StreamEntity(info)), + playlistDialog -> { + // dismiss listener to be handled by FragmentManager + final FragmentManager fm = ctx.getSupportFragmentManager(); + playlistDialog.show(fm, "addToPlaylistDialog"); + } + )), + throwable -> runOnVisible(ctx -> handleError(ctx, new ErrorInfo( + throwable, + UserAction.REQUESTED_STREAM, + "Tried to add " + currentUrl + " to a playlist", + ((RouterActivity) ctx).currentService.getServiceId()) + )) + ) + ); + } + } + private void openAddToPlaylistDialog() { pleaseWait(); - disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, false) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - info -> PlaylistDialog.createCorrespondingDialog( - getThemeWrapperContext(), - List.of(new StreamEntity(info)), - playlistDialog -> { - // to be handled by FragmentManager - // playlistDialog.setOnDismissListener(dialog ->finish()); - - final FragmentManager fm = getSupportFragmentManager(); - playlistDialog.show(fm, "addToPlaylistDialog"); - fm.executePendingTransactions(); - } - ), - throwable -> handleError(this, new ErrorInfo( - throwable, - UserAction.REQUESTED_STREAM, - "Tried to add " + currentUrl + " to a playlist", - currentService.getServiceId()) - ) - ) - ); + getPersistFragment().openAddToPlaylistDialog(currentServiceId, currentUrl); } - @SuppressLint("CheckResult") private void openDownloadDialog() { pleaseWait(); - disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, true) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(result -> { - final DownloadDialog downloadDialog = new DownloadDialog(this, result); - // to be handled by FragmentManager since listener would be gone when recreated - // playlistDialog.setOnDismissListener(dialog ->finish()); - - final FragmentManager fm = getSupportFragmentManager(); - downloadDialog.show(fm, "downloadDialog"); - fm.executePendingTransactions(); - }, throwable -> showUnsupportedUrlDialog(currentUrl))); + getPersistFragment().openDownloadDialog(currentServiceId, currentUrl); } - private void pleaseWait() { + private PersistentFragment getPersistFragment() { + final FragmentManager fm = getSupportFragmentManager(); + PersistentFragment persistFragment = + (PersistentFragment) fm.findFragmentByTag("PERSIST_FRAGMENT"); + if (persistFragment == null) { + persistFragment = new PersistentFragment(); + fm.beginTransaction() + .add(persistFragment, "PERSIST_FRAGMENT") + .commitNow(); + } + return persistFragment; + } + + protected void pleaseWait() { // Getting the stream info usually takes a moment // Notifying the user here to ensure that no confusion arises Toast.makeText( From de7057ac3a6f188a9c54348432330b01b9d4b087 Mon Sep 17 00:00:00 2001 From: devlearner Date: Fri, 2 Dec 2022 17:31:01 +0000 Subject: [PATCH 101/147] Skip REORDER_TO_FRONT trick which doesn't seem to work on newer Androids probably due to background restrictions on Android 10+ --- app/src/main/java/org/schabi/newpipe/RouterActivity.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index e61f1f738..1a33c0ca4 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -10,6 +10,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.view.ContextThemeWrapper; @@ -776,7 +777,10 @@ public class RouterActivity extends AppCompatActivity { } if (isPaused) { buffer.add(runnable); - if (!getActivityContext().isChangingConfigurations()) { + // this trick doesn't seem to work on Android 10+ (API 29) + // which places restrictions on starting activities from the background + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q + && !getActivityContext().isChangingConfigurations()) { // try to bring the activity back to front if minimised final Intent i = new Intent(getActivityContext(), RouterActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); From c744f6756b75814243fae93924ea7fc62b0d885e Mon Sep 17 00:00:00 2001 From: devlearner Date: Fri, 2 Dec 2022 17:41:43 +0000 Subject: [PATCH 102/147] Fix Sonar reported code smell --- app/src/main/java/org/schabi/newpipe/RouterActivity.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 1a33c0ca4..432bbcdaa 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -758,10 +758,10 @@ public class RouterActivity extends AppCompatActivity { while (buffer.size() > 0) { final ResultRunnable runnable = buffer.elementAt(0); buffer.removeElementAt(0); - getActivityContext().runOnUiThread(() -> { + getActivityContext().runOnUiThread(() -> // execute queued task with new context, in case activity has been recreated - runnable.run(getActivityContext()); - }); + runnable.run(getActivityContext()) + ); } done(); } From 61da167b4f52d0732d23396c8d131faeb596f5af Mon Sep 17 00:00:00 2001 From: devlearner Date: Sat, 3 Dec 2022 13:23:36 +0800 Subject: [PATCH 103/147] Oops, added back missing return; --- app/src/main/java/org/schabi/newpipe/RouterActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 432bbcdaa..dc7c8a77e 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -751,6 +751,7 @@ public class RouterActivity extends AppCompatActivity { private void playback() { if (activityGone()) { done(); + return; } if (buffer.size() == 0 || isPaused) { return; @@ -774,6 +775,7 @@ public class RouterActivity extends AppCompatActivity { private void runOnVisible(final ResultRunnable runnable) { if (activityGone()) { done(); + return; } if (isPaused) { buffer.add(runnable); From 40442f3f828e449dbbc4795f84756ddf43c528ea Mon Sep 17 00:00:00 2001 From: devlearner Date: Wed, 7 Dec 2022 13:43:27 +0000 Subject: [PATCH 104/147] Utilize Lifecycle observer I thought it would have required an extra dependency; apparently that doesn't seem to be the case... --- .../org/schabi/newpipe/RouterActivity.java | 103 ++++++++---------- 1 file changed, 46 insertions(+), 57 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index dc7c8a77e..87d402654 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -36,6 +36,9 @@ import androidx.core.math.MathUtils; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; +import androidx.lifecycle.DefaultLifecycleObserver; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleOwner; import androidx.preference.PreferenceManager; import org.schabi.newpipe.database.stream.model.StreamEntity; @@ -88,7 +91,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Vector; import icepick.Icepick; import icepick.State; @@ -213,6 +215,7 @@ public class RouterActivity extends AppCompatActivity { if (dismissListener != null) { getSupportFragmentManager().unregisterFragmentLifecycleCallbacks(dismissListener); } + disposables.clear(); } @@ -699,9 +702,20 @@ public class RouterActivity extends AppCompatActivity { public static class PersistentFragment extends Fragment { private WeakReference context; - private boolean isPaused = true; - private final Vector buffer = new Vector<>(); private final CompositeDisposable disposables = new CompositeDisposable(); + private int running = 0; + + private synchronized void inFlight(final boolean started) { + if (started) { + running++; + } else { + running--; + if (running <= 0 && getActivityContext() != null) { + getActivityContext().getSupportFragmentManager() + .beginTransaction().remove(this).commit(); + } + } + } public interface ResultRunnable { void run(AppCompatActivity context); @@ -726,59 +740,44 @@ public class RouterActivity extends AppCompatActivity { disposables.clear(); } - @Override - public void onPause() { - isPaused = true; - super.onPause(); - } - - @Override - public void onResume() { - isPaused = false; - playback(); - super.onResume(); - } - private AppCompatActivity getActivityContext() { return context == null ? null : context.get(); } + private boolean activityGone() { + return getActivityContext() == null || getActivityContext().isFinishing(); + } + // guard against IllegalStateException in calling DialogFragment.show() whilst in background // (which could happen, say, when the user pressed the home button while waiting for // the network request to return) when it internally calls FragmentTransaction.commit() // after the FragmentManager has saved its states (isStateSaved() == true) // (ref: https://stackoverflow.com/a/39813506) - private void playback() { - if (activityGone()) { - done(); - return; - } - if (buffer.size() == 0 || isPaused) { - return; - } - while (buffer.size() > 0) { - final ResultRunnable runnable = buffer.elementAt(0); - buffer.removeElementAt(0); - getActivityContext().runOnUiThread(() -> - // execute queued task with new context, in case activity has been recreated - runnable.run(getActivityContext()) - ); - } - done(); - } - private boolean activityGone() { - return getActivityContext() == null || getActivityContext().isFinishing(); - } - - // a DefaultLifecycleObserver is probably a good candidate here, but for now - // let's stick with a vanilla approach to avoid pulling in an extra artifact just for this private void runOnVisible(final ResultRunnable runnable) { if (activityGone()) { - done(); + inFlight(false); return; } - if (isPaused) { - buffer.add(runnable); + if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) { + getActivityContext().runOnUiThread(() -> { + runnable.run(getActivityContext()); + inFlight(false); + }); + } else { + getLifecycle().addObserver(new DefaultLifecycleObserver() { + @Override + public void onResume(@NonNull final LifecycleOwner owner) { + getLifecycle().removeObserver(this); + if (activityGone()) { + inFlight(false); + return; + } + getActivityContext().runOnUiThread(() -> { + runnable.run(getActivityContext()); + inFlight(false); + }); + } + }); // this trick doesn't seem to work on Android 10+ (API 29) // which places restrictions on starting activities from the background if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q @@ -788,23 +787,12 @@ public class RouterActivity extends AppCompatActivity { i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i); } - } else { - getActivityContext().runOnUiThread(() -> { - runnable.run(getActivityContext()); - done(); - }); - } - } - - private void done() { - if (getActivityContext() != null) { - getActivityContext().getSupportFragmentManager() - .beginTransaction().remove(this).commit(); } } @SuppressLint("CheckResult") - protected void openDownloadDialog(final int currentServiceId, final String currentUrl) { + private void openDownloadDialog(final int currentServiceId, final String currentUrl) { + inFlight(true); disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, true) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -820,6 +808,7 @@ public class RouterActivity extends AppCompatActivity { } private void openAddToPlaylistDialog(final int currentServiceId, final String currentUrl) { + inFlight(true); disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, false) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -870,7 +859,7 @@ public class RouterActivity extends AppCompatActivity { return persistFragment; } - protected void pleaseWait() { + private void pleaseWait() { // Getting the stream info usually takes a moment // Notifying the user here to ensure that no confusion arises Toast.makeText( From 28109fef38b2f00a8759cd34ad1473af83db50bf Mon Sep 17 00:00:00 2001 From: devlearner Date: Sun, 11 Dec 2022 18:10:00 +0000 Subject: [PATCH 105/147] Improve showing of toast We provide visual feedback via a toast to the user that, well, they're supposed to wait; but with the benefit of the cache openAddToPlaylistDialog() may return (almost) immediately, which would render the toast otiose (if not a bit confusing). This commit improves that by cancelling the toast once the wait's over ... (by 'abusing' RxJava's ambWith(); ref on compose() and Transformer: https://blog.danlew.net/2015/03/02/dont-break-the-chain/ and for me, first time laying my hands at RxJava so kindly bear with me; open for suggestions) --- .../org/schabi/newpipe/RouterActivity.java | 57 ++++++++++++------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 87d402654..d660b6f3d 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -97,6 +97,7 @@ import icepick.State; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Single; +import io.reactivex.rxjava3.core.SingleTransformer; import io.reactivex.rxjava3.disposables.CompositeDisposable; import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.functions.Consumer; @@ -790,12 +791,32 @@ public class RouterActivity extends AppCompatActivity { } } + SingleTransformer pleaseWait() { + return single -> single + // 'abuse' ambWith() here to cancel the toast for us when the wait is over + .ambWith(Single.create(emitter -> { + if (!activityGone()) { + getActivityContext().runOnUiThread(() -> { + // Getting the stream info usually takes a moment + // Notifying the user here to ensure that no confusion arises + final Toast t = Toast.makeText( + getActivityContext().getApplicationContext(), + getString(R.string.processing_may_take_a_moment), + Toast.LENGTH_LONG); + t.show(); + emitter.setCancellable(t::cancel); + }); + } + })); + } + @SuppressLint("CheckResult") private void openDownloadDialog(final int currentServiceId, final String currentUrl) { inFlight(true); disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, true) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) + .compose(pleaseWait()) .subscribe(result -> runOnVisible(ctx -> { final FragmentManager fm = ctx.getSupportFragmentManager(); @@ -812,17 +833,23 @@ public class RouterActivity extends AppCompatActivity { disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, false) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) + .compose(pleaseWait()) .subscribe( - info -> runOnVisible(ctx -> + info -> { + if (!activityGone()) { PlaylistDialog.createCorrespondingDialog( - ((RouterActivity) ctx).getThemeWrapperContext(), + getActivityContext(), List.of(new StreamEntity(info)), - playlistDialog -> { - // dismiss listener to be handled by FragmentManager - final FragmentManager fm = ctx.getSupportFragmentManager(); - playlistDialog.show(fm, "addToPlaylistDialog"); - } - )), + playlistDialog -> + runOnVisible(ctx -> { + // dismiss listener to be handled by FragmentManager + final FragmentManager fm = + ctx.getSupportFragmentManager(); + playlistDialog.show(fm, "addToPlaylistDialog"); + }) + ); + } + }, throwable -> runOnVisible(ctx -> handleError(ctx, new ErrorInfo( throwable, UserAction.REQUESTED_STREAM, @@ -835,14 +862,10 @@ public class RouterActivity extends AppCompatActivity { } private void openAddToPlaylistDialog() { - pleaseWait(); - getPersistFragment().openAddToPlaylistDialog(currentServiceId, currentUrl); } private void openDownloadDialog() { - pleaseWait(); - getPersistFragment().openDownloadDialog(currentServiceId, currentUrl); } @@ -859,16 +882,6 @@ public class RouterActivity extends AppCompatActivity { return persistFragment; } - private void pleaseWait() { - // Getting the stream info usually takes a moment - // Notifying the user here to ensure that no confusion arises - Toast.makeText( - getApplicationContext(), - getString(R.string.processing_may_take_a_moment), - Toast.LENGTH_LONG) - .show(); - } - @Override public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, From 944e295ae70a9641c43494b7fda1ce340cb28589 Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 11 Jan 2023 15:08:10 +0100 Subject: [PATCH 106/147] Use Optional for simpler code --- .../org/schabi/newpipe/RouterActivity.java | 160 +++++++++--------- 1 file changed, 77 insertions(+), 83 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index d660b6f3d..010f35bc3 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -91,16 +91,16 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Optional; +import java.util.function.Consumer; import icepick.Icepick; import icepick.State; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Single; -import io.reactivex.rxjava3.core.SingleTransformer; import io.reactivex.rxjava3.disposables.CompositeDisposable; import io.reactivex.rxjava3.disposables.Disposable; -import io.reactivex.rxjava3.functions.Consumer; import io.reactivex.rxjava3.schedulers.Schedulers; /** @@ -702,7 +702,7 @@ public class RouterActivity extends AppCompatActivity { } public static class PersistentFragment extends Fragment { - private WeakReference context; + private WeakReference weakContext; private final CompositeDisposable disposables = new CompositeDisposable(); private int running = 0; @@ -711,21 +711,23 @@ public class RouterActivity extends AppCompatActivity { running++; } else { running--; - if (running <= 0 && getActivityContext() != null) { - getActivityContext().getSupportFragmentManager() - .beginTransaction().remove(this).commit(); + if (running <= 0) { + getActivityContext().ifPresent(context -> context.getSupportFragmentManager() + .beginTransaction().remove(this).commit()); } } } - public interface ResultRunnable { - void run(AppCompatActivity context); - } - @Override public void onAttach(@NonNull final Context activityContext) { super.onAttach(activityContext); - context = new WeakReference<>((AppCompatActivity) activityContext); + weakContext = new WeakReference<>((AppCompatActivity) activityContext); + } + + @Override + public void onDetach() { + super.onDetach(); + weakContext = null; } @SuppressWarnings("deprecation") @@ -741,12 +743,13 @@ public class RouterActivity extends AppCompatActivity { disposables.clear(); } - private AppCompatActivity getActivityContext() { - return context == null ? null : context.get(); - } - - private boolean activityGone() { - return getActivityContext() == null || getActivityContext().isFinishing(); + /** + * @return the activity context, if there is one and the activity is not finishing + */ + private Optional getActivityContext() { + return Optional.ofNullable(weakContext) + .flatMap(context -> Optional.ofNullable(context.get())) + .filter(context -> !context.isFinishing()); } // guard against IllegalStateException in calling DialogFragment.show() whilst in background @@ -754,60 +757,56 @@ public class RouterActivity extends AppCompatActivity { // the network request to return) when it internally calls FragmentTransaction.commit() // after the FragmentManager has saved its states (isStateSaved() == true) // (ref: https://stackoverflow.com/a/39813506) - private void runOnVisible(final ResultRunnable runnable) { - if (activityGone()) { - inFlight(false); - return; - } - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) { - getActivityContext().runOnUiThread(() -> { - runnable.run(getActivityContext()); - inFlight(false); - }); - } else { - getLifecycle().addObserver(new DefaultLifecycleObserver() { - @Override - public void onResume(@NonNull final LifecycleOwner owner) { - getLifecycle().removeObserver(this); - if (activityGone()) { - inFlight(false); - return; + private void runOnVisible(final Consumer runnable) { + getActivityContext().ifPresentOrElse(context -> { + if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) { + context.runOnUiThread(() -> { + runnable.accept(context); + inFlight(false); + }); + } else { + getLifecycle().addObserver(new DefaultLifecycleObserver() { + @Override + public void onResume(@NonNull final LifecycleOwner owner) { + getLifecycle().removeObserver(this); + getActivityContext().ifPresentOrElse(context -> + context.runOnUiThread(() -> { + runnable.accept(context); + inFlight(false); + }), + () -> inFlight(false) + ); } - getActivityContext().runOnUiThread(() -> { - runnable.run(getActivityContext()); - inFlight(false); - }); + }); + // this trick doesn't seem to work on Android 10+ (API 29) + // which places restrictions on starting activities from the background + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q + && !context.isChangingConfigurations()) { + // try to bring the activity back to front if minimised + final Intent i = new Intent(context, RouterActivity.class); + i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + startActivity(i); } - }); - // this trick doesn't seem to work on Android 10+ (API 29) - // which places restrictions on starting activities from the background - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q - && !getActivityContext().isChangingConfigurations()) { - // try to bring the activity back to front if minimised - final Intent i = new Intent(getActivityContext(), RouterActivity.class); - i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - startActivity(i); } - } + + }, () -> { + // this branch is executed if there is no activity context + inFlight(false); + }); } - SingleTransformer pleaseWait() { - return single -> single - // 'abuse' ambWith() here to cancel the toast for us when the wait is over - .ambWith(Single.create(emitter -> { - if (!activityGone()) { - getActivityContext().runOnUiThread(() -> { - // Getting the stream info usually takes a moment - // Notifying the user here to ensure that no confusion arises - final Toast t = Toast.makeText( - getActivityContext().getApplicationContext(), - getString(R.string.processing_may_take_a_moment), - Toast.LENGTH_LONG); - t.show(); - emitter.setCancellable(t::cancel); - }); - } - })); + Single pleaseWait(final Single single) { + // 'abuse' ambWith() here to cancel the toast for us when the wait is over + return single.ambWith(Single.create(emitter -> getActivityContext().ifPresent(context -> + context.runOnUiThread(() -> { + // Getting the stream info usually takes a moment + // Notifying the user here to ensure that no confusion arises + final Toast toast = Toast.makeText(context, + getString(R.string.processing_may_take_a_moment), + Toast.LENGTH_LONG); + toast.show(); + emitter.setCancellable(toast::cancel); + })))); } @SuppressLint("CheckResult") @@ -816,7 +815,7 @@ public class RouterActivity extends AppCompatActivity { disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, true) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .compose(pleaseWait()) + .compose(this::pleaseWait) .subscribe(result -> runOnVisible(ctx -> { final FragmentManager fm = ctx.getSupportFragmentManager(); @@ -833,23 +832,18 @@ public class RouterActivity extends AppCompatActivity { disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, false) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .compose(pleaseWait()) + .compose(this::pleaseWait) .subscribe( - info -> { - if (!activityGone()) { - PlaylistDialog.createCorrespondingDialog( - getActivityContext(), - List.of(new StreamEntity(info)), - playlistDialog -> - runOnVisible(ctx -> { - // dismiss listener to be handled by FragmentManager - final FragmentManager fm = - ctx.getSupportFragmentManager(); - playlistDialog.show(fm, "addToPlaylistDialog"); - }) - ); - } - }, + info -> getActivityContext().ifPresent(context -> + PlaylistDialog.createCorrespondingDialog(context, + List.of(new StreamEntity(info)), + playlistDialog -> runOnVisible(ctx -> { + // dismiss listener to be handled by FragmentManager + final FragmentManager fm = + ctx.getSupportFragmentManager(); + playlistDialog.show(fm, "addToPlaylistDialog"); + }) + )), throwable -> runOnVisible(ctx -> handleError(ctx, new ErrorInfo( throwable, UserAction.REQUESTED_STREAM, From ad605e2c5a38e57af1b0ec7d4c991a9a9240dfff Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 11 Jan 2023 15:26:46 +0100 Subject: [PATCH 107/147] Actually there is no need to use flatMap `null` values returned in the lambda are converted to empty `Optional`s in the `map` method: https://developer.android.com/reference/java/util/Optional#map(java.util.function.Function%3C?%20super%20T,%20?%20extends%20U%3E) --- app/src/main/java/org/schabi/newpipe/RouterActivity.java | 3 ++- .../schabi/newpipe/fragments/detail/VideoDetailFragment.java | 2 +- .../org/schabi/newpipe/player/mediaitem/MediaItemTag.java | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 010f35bc3..2567df993 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -87,6 +87,7 @@ import org.schabi.newpipe.util.urlfinder.UrlFinder; import org.schabi.newpipe.views.FocusOverlayView; import java.io.Serializable; +import java.lang.ref.Reference; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; @@ -748,7 +749,7 @@ public class RouterActivity extends AppCompatActivity { */ private Optional getActivityContext() { return Optional.ofNullable(weakContext) - .flatMap(context -> Optional.ofNullable(context.get())) + .map(Reference::get) .filter(context -> !context.isFinishing()); } 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 1fb6b5859..601135cbb 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 @@ -1887,7 +1887,7 @@ public final class VideoDetailFragment setupBrightness(); if (!isPlayerAndPlayerServiceAvailable() || player.UIs().get(MainPlayerUi.class).isEmpty() - || getRoot().flatMap(v -> Optional.ofNullable(v.getParent())).isEmpty()) { + || getRoot().map(View::getParent).isEmpty()) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java index 4f808caac..f08086287 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java +++ b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java @@ -62,8 +62,8 @@ public interface MediaItemTag { @NonNull static Optional from(@Nullable final MediaItem mediaItem) { return Optional.ofNullable(mediaItem) - .flatMap(item -> Optional.ofNullable(item.localConfiguration)) - .flatMap(localConfiguration -> Optional.ofNullable(localConfiguration.tag)) + .map(item -> item.localConfiguration) + .map(localConfiguration -> localConfiguration.tag) .filter(MediaItemTag.class::isInstance) .map(MediaItemTag.class::cast); } From 0a64eac7783fa8127b9a14781e14b2846384ab36 Mon Sep 17 00:00:00 2001 From: ge78fug Date: Wed, 11 Jan 2023 16:06:11 +0100 Subject: [PATCH 108/147] Added the "What's New"-section to the default tabs --- .../java/org/schabi/newpipe/settings/tabs/TabsJsonHelper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/org/schabi/newpipe/settings/tabs/TabsJsonHelper.java b/app/src/main/java/org/schabi/newpipe/settings/tabs/TabsJsonHelper.java index 32f25ccbd..30676477c 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/tabs/TabsJsonHelper.java +++ b/app/src/main/java/org/schabi/newpipe/settings/tabs/TabsJsonHelper.java @@ -20,6 +20,7 @@ public final class TabsJsonHelper { private static final List FALLBACK_INITIAL_TABS_LIST = List.of( Tab.Type.DEFAULT_KIOSK.getTab(), + Tab.Type.FEED.getTab(), Tab.Type.SUBSCRIPTIONS.getTab(), Tab.Type.BOOKMARKS.getTab()); From 2afbe58722215494e5eea8de148cd42d8970715e Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 11 Jan 2023 19:45:55 +0100 Subject: [PATCH 109/147] UX improvements: keep user edits & do not reset cursor --- .../newpipe/download/DownloadDialog.java | 42 +++++++++++++------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index 77bb48a81..208d27bb2 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -75,6 +75,7 @@ import java.io.IOException; import java.util.List; import java.util.Locale; import java.util.Objects; +import java.util.Optional; import icepick.Icepick; import icepick.State; @@ -566,19 +567,34 @@ public class DownloadDialog extends DialogFragment } private void onItemSelectedSetFileName() { - final String fileName = FilenameUtils.createFilename(getContext(), - currentInfo.getName()); - switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) { - case R.id.audio_button: - case R.id.video_button: - dialogBinding.fileName.setText(fileName); - break; - case R.id.subtitle_button: - final String setSubtitleLanguageCode = subtitleStreamsAdapter - .getItem(selectedSubtitleIndex).getLanguageTag(); - dialogBinding.fileName.setText(getString( - R.string.caption_file_name, fileName, setSubtitleLanguageCode)); - break; + final String fileName = FilenameUtils.createFilename(getContext(), currentInfo.getName()); + final String prevFileName = Optional.ofNullable(dialogBinding.fileName.getText()) + .map(Object::toString) + .orElse(""); + + if (prevFileName.isEmpty() + || prevFileName.equals(fileName) + || prevFileName.startsWith(getString(R.string.caption_file_name, fileName, ""))) { + // only update the file name field if it was not edited by the user + + switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) { + case R.id.audio_button: + case R.id.video_button: + if (!prevFileName.equals(fileName)) { + // since the user might have switched between audio and video, the correct + // text might already be in place, so avoid resetting the cursor position + dialogBinding.fileName.setText(fileName); + } + break; + + case R.id.subtitle_button: + final String setSubtitleLanguageCode = subtitleStreamsAdapter + .getItem(selectedSubtitleIndex).getLanguageTag(); + // this will reset the cursor position, which is bad UX, but it can't be avoided + dialogBinding.fileName.setText(getString( + R.string.caption_file_name, fileName, setSubtitleLanguageCode)); + break; + } } } From b6e6d39985b34ac318258ce5e894ae06abf51208 Mon Sep 17 00:00:00 2001 From: Stypox Date: Thu, 12 Jan 2023 11:39:25 +0100 Subject: [PATCH 110/147] Fix toast crash on API 33 You shouldn't call getView() on toasts. Also simplified some duplicate code. --- .../org/schabi/newpipe/RouterActivity.java | 3 +- .../fragments/detail/VideoDetailFragment.java | 3 +- .../newpipe/player/PlayQueueActivity.java | 4 +-- .../schabi/newpipe/util/NavigationHelper.java | 6 ++-- .../schabi/newpipe/util/PermissionHelper.java | 29 ++++++++++--------- 5 files changed, 20 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 2567df993..e9c19a22d 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -631,8 +631,7 @@ public class RouterActivity extends AppCompatActivity { } if (selectedChoiceKey.equals(getString(R.string.popup_player_key)) - && !PermissionHelper.isPopupEnabled(this)) { - PermissionHelper.showPopupEnablementToast(this); + && !PermissionHelper.isPopupEnabledElseAsk(this)) { finish(); return; } 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 601135cbb..6f4439ee9 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 @@ -1066,8 +1066,7 @@ public final class VideoDetailFragment } private void openPopupPlayer(final boolean append) { - if (!PermissionHelper.isPopupEnabled(activity)) { - PermissionHelper.showPopupEnablementToast(activity); + if (!PermissionHelper.isPopupEnabledElseAsk(activity)) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java index 94de7fef3..9ce99c15b 100644 --- a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java +++ b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java @@ -143,11 +143,9 @@ public final class PlayQueueActivity extends AppCompatActivity NavigationHelper.playOnMainPlayer(this, player.getPlayQueue(), true); return true; case R.id.action_switch_popup: - if (PermissionHelper.isPopupEnabled(this)) { + if (PermissionHelper.isPopupEnabledElseAsk(this)) { this.player.setRecovery(); NavigationHelper.playOnPopupPlayer(this, player.getPlayQueue(), true); - } else { - PermissionHelper.showPopupEnablementToast(this); } return true; case R.id.action_switch_background: diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java index 483f5067a..b4556507c 100644 --- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java @@ -156,8 +156,7 @@ public final class NavigationHelper { public static void playOnPopupPlayer(final Context context, final PlayQueue queue, final boolean resumePlayback) { - if (!PermissionHelper.isPopupEnabled(context)) { - PermissionHelper.showPopupEnablementToast(context); + if (!PermissionHelper.isPopupEnabledElseAsk(context)) { return; } @@ -183,8 +182,7 @@ public final class NavigationHelper { public static void enqueueOnPlayer(final Context context, final PlayQueue queue, final PlayerType playerType) { - if ((playerType == PlayerType.POPUP) && !PermissionHelper.isPopupEnabled(context)) { - PermissionHelper.showPopupEnablementToast(context); + if (playerType == PlayerType.POPUP && !PermissionHelper.isPopupEnabledElseAsk(context)) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java index f47494770..55193599e 100644 --- a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java @@ -9,8 +9,6 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.provider.Settings; -import android.view.Gravity; -import android.widget.TextView; import android.widget.Toast; import androidx.annotation.RequiresApi; @@ -128,18 +126,21 @@ public final class PermissionHelper { } } - public static boolean isPopupEnabled(final Context context) { - return Build.VERSION.SDK_INT < Build.VERSION_CODES.M - || checkSystemAlertWindowPermission(context); - } - - public static void showPopupEnablementToast(final Context context) { - final Toast toast = - Toast.makeText(context, R.string.msg_popup_permission, Toast.LENGTH_LONG); - final TextView messageView = toast.getView().findViewById(android.R.id.message); - if (messageView != null) { - messageView.setGravity(Gravity.CENTER); + /** + * Determines whether the popup is enabled, and if it is not, starts the system activity to + * request the permission with {@link #checkSystemAlertWindowPermission(Context)} and shows a + * toast to the user explaining why the permission is needed. + * + * @param context the Android context + * @return whether the popup is enabled + */ + public static boolean isPopupEnabledElseAsk(final Context context) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M + || checkSystemAlertWindowPermission(context)) { + return true; + } else { + Toast.makeText(context, R.string.msg_popup_permission, Toast.LENGTH_LONG).show(); + return false; } - toast.show(); } } From 9514316be3f392f6cd84b94af6d68f4650707486 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sat, 27 Aug 2022 11:55:31 +0530 Subject: [PATCH 111/147] Remove Runnable variables for Handlers. --- .../gesture/BasePlayerGestureListener.kt | 22 +++++++------ .../giga/ui/adapter/MissionAdapter.java | 19 ++++++----- .../us/shandian/giga/ui/common/Deleter.java | 33 +++++++++---------- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/gesture/BasePlayerGestureListener.kt b/app/src/main/java/org/schabi/newpipe/player/gesture/BasePlayerGestureListener.kt index 555c34f96..0453f297a 100644 --- a/app/src/main/java/org/schabi/newpipe/player/gesture/BasePlayerGestureListener.kt +++ b/app/src/main/java/org/schabi/newpipe/player/gesture/BasePlayerGestureListener.kt @@ -6,6 +6,7 @@ import android.util.Log import android.view.GestureDetector import android.view.MotionEvent import android.view.View +import androidx.core.os.postDelayed import org.schabi.newpipe.databinding.PlayerBinding import org.schabi.newpipe.player.Player import org.schabi.newpipe.player.ui.VideoPlayerUi @@ -132,13 +133,6 @@ abstract class BasePlayerGestureListener( private var doubleTapDelay = DOUBLE_TAP_DELAY private val doubleTapHandler: Handler = Handler(Looper.getMainLooper()) - private val doubleTapRunnable = Runnable { - if (DEBUG) - Log.d(TAG, "doubleTapRunnable called") - - isDoubleTapping = false - doubleTapControls?.onDoubleTapFinished() - } private fun startMultiDoubleTap(e: MotionEvent) { if (!isDoubleTapping) { @@ -155,8 +149,15 @@ abstract class BasePlayerGestureListener( Log.d(TAG, "keepInDoubleTapMode called") isDoubleTapping = true - doubleTapHandler.removeCallbacks(doubleTapRunnable) - doubleTapHandler.postDelayed(doubleTapRunnable, doubleTapDelay) + doubleTapHandler.removeCallbacksAndMessages(DOUBLE_TAP) + doubleTapHandler.postDelayed(DOUBLE_TAP_DELAY, DOUBLE_TAP) { + if (DEBUG) { + Log.d(TAG, "doubleTapRunnable called") + } + + isDoubleTapping = false + doubleTapControls?.onDoubleTapFinished() + } } fun endMultiDoubleTap() { @@ -164,7 +165,7 @@ abstract class BasePlayerGestureListener( Log.d(TAG, "endMultiDoubleTap called") isDoubleTapping = false - doubleTapHandler.removeCallbacks(doubleTapRunnable) + doubleTapHandler.removeCallbacksAndMessages(DOUBLE_TAP) doubleTapControls?.onDoubleTapFinished() } @@ -181,6 +182,7 @@ abstract class BasePlayerGestureListener( private const val TAG = "BasePlayerGestListener" private val DEBUG = Player.DEBUG + private const val DOUBLE_TAP = "doubleTap" private const val DOUBLE_TAP_DELAY = 550L } } diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index 26eb2f3b0..bfb6a15e2 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -48,6 +48,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.core.app.NotificationCompat; import androidx.core.content.ContextCompat; import androidx.core.content.FileProvider; +import androidx.core.os.HandlerCompat; import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView.Adapter; @@ -91,6 +92,10 @@ public class MissionAdapter extends Adapter implements Handler.Callb private static final String UNDEFINED_PROGRESS = "--.-%"; private static final String DEFAULT_MIME_TYPE = "*/*"; private static final String UNDEFINED_ETA = "--:--"; + + private static final String UPDATER = "updater"; + private static final String DELETE = "deleteFinishedDownloads"; + private static final int HASH_NOTIFICATION_ID = 123790; private final Context mContext; @@ -110,9 +115,6 @@ public class MissionAdapter extends Adapter implements Handler.Callb private final ArrayList mHidden; private Snackbar mSnackbar; - private final Runnable rUpdater = this::updater; - private final Runnable rDelete = this::deleteFinishedDownloads; - private final CompositeDisposable compositeDisposable = new CompositeDisposable(); public MissionAdapter(Context context, @NonNull DownloadManager downloadManager, View emptyMessage, View root) { @@ -595,12 +597,12 @@ public class MissionAdapter extends Adapter implements Handler.Callb i.remove(); } applyChanges(); - mHandler.removeCallbacks(rDelete); + mHandler.removeCallbacksAndMessages(DELETE); }); mSnackbar.setActionTextColor(Color.YELLOW); mSnackbar.show(); - mHandler.postDelayed(rDelete, 5000); + HandlerCompat.postDelayed(mHandler, this::deleteFinishedDownloads, DELETE, 5000); } else if (!delete) { mDownloadManager.forgetFinishedDownloads(); applyChanges(); @@ -786,15 +788,14 @@ public class MissionAdapter extends Adapter implements Handler.Callb public void onResume() { mDeleter.resume(); - mHandler.post(rUpdater); + HandlerCompat.postDelayed(mHandler, this::updater, UPDATER, 0); } public void onPaused() { mDeleter.pause(); - mHandler.removeCallbacks(rUpdater); + mHandler.removeCallbacksAndMessages(UPDATER); } - public void recoverMission(DownloadMission mission) { ViewHolderItem h = getViewHolder(mission); if (h == null) return; @@ -817,7 +818,7 @@ public class MissionAdapter extends Adapter implements Handler.Callb updateProgress(h); } - mHandler.postDelayed(rUpdater, 1000); + HandlerCompat.postDelayed(mHandler, this::updater, UPDATER, 1000); } private boolean isNotFinite(double value) { diff --git a/app/src/main/java/us/shandian/giga/ui/common/Deleter.java b/app/src/main/java/us/shandian/giga/ui/common/Deleter.java index c554766ff..1902076d6 100644 --- a/app/src/main/java/us/shandian/giga/ui/common/Deleter.java +++ b/app/src/main/java/us/shandian/giga/ui/common/Deleter.java @@ -6,6 +6,8 @@ import android.graphics.Color; import android.os.Handler; import android.view.View; +import androidx.core.os.HandlerCompat; + import com.google.android.material.snackbar.Snackbar; import org.schabi.newpipe.R; @@ -19,6 +21,10 @@ import us.shandian.giga.service.DownloadManager.MissionIterator; import us.shandian.giga.ui.adapter.MissionAdapter; public class Deleter { + private static final String COMMIT = "commit"; + private static final String NEXT = "next"; + private static final String SHOW = "show"; + private static final int TIMEOUT = 5000;// ms private static final int DELAY = 350;// ms private static final int DELAY_RESUME = 400;// ms @@ -34,10 +40,6 @@ public class Deleter { private final Handler mHandler; private final View mView; - private final Runnable rShow; - private final Runnable rNext; - private final Runnable rCommit; - public Deleter(View v, Context c, MissionAdapter a, DownloadManager d, MissionIterator i, Handler h) { mView = v; mContext = c; @@ -46,21 +48,15 @@ public class Deleter { mIterator = i; mHandler = h; - // use variables to know the reference of the lambdas - rShow = this::show; - rNext = this::next; - rCommit = this::commit; - items = new ArrayList<>(2); } public void append(Mission item) { - /* If a mission is removed from the list while the Snackbar for a previously * removed item is still showing, commit the action for the previous item * immediately. This prevents Snackbars from stacking up in reverse order. */ - mHandler.removeCallbacks(rCommit); + mHandler.removeCallbacksAndMessages(COMMIT); commit(); mIterator.hide(item); @@ -82,7 +78,7 @@ public class Deleter { pause(); running = true; - mHandler.postDelayed(rNext, DELAY); + HandlerCompat.postDelayed(mHandler, this::next, NEXT, DELAY); } private void next() { @@ -95,7 +91,7 @@ public class Deleter { snackbar.setActionTextColor(Color.YELLOW); snackbar.show(); - mHandler.postDelayed(rCommit, TIMEOUT); + HandlerCompat.postDelayed(mHandler, this::commit, COMMIT, TIMEOUT); } private void commit() { @@ -124,15 +120,16 @@ public class Deleter { public void pause() { running = false; - mHandler.removeCallbacks(rNext); - mHandler.removeCallbacks(rShow); - mHandler.removeCallbacks(rCommit); + mHandler.removeCallbacksAndMessages(NEXT); + mHandler.removeCallbacksAndMessages(SHOW); + mHandler.removeCallbacksAndMessages(COMMIT); if (snackbar != null) snackbar.dismiss(); } public void resume() { - if (running) return; - mHandler.postDelayed(rShow, DELAY_RESUME); + if (!running) { + HandlerCompat.postDelayed(mHandler, this::show, SHOW, DELAY_RESUME); + } } public void dispose() { From 38c4a1ed859b67d753a81a4611e259dc65495769 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Tue, 22 Nov 2022 15:36:57 +0100 Subject: [PATCH 112/147] Fixed the "Remove Watched" bug Reverted changes and fixed bug in a different way --- .../local/playlist/LocalPlaylistFragment.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index d584ceefb..68a35e72b 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -404,7 +404,7 @@ public class LocalPlaylistFragment extends BaseLocalListFragment { // Remove Watched, Functionality data - final List notWatchedItems = new ArrayList<>(); + final List itemsToKeep = new ArrayList<>(); final boolean isThumbnailPermanent = playlistManager .getIsPlaylistThumbnailPermanent(playlistId); boolean thumbnailVideoRemoved = false; @@ -415,7 +415,7 @@ public class LocalPlaylistFragment extends BaseLocalListFragment(notWatchedItems, thumbnailVideoRemoved); + return new Pair<>(itemsToKeep, thumbnailVideoRemoved); }); disposables.add(streamsMaybe.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(flow -> { - final List notWatchedItems = flow.first; + final List itemsToKeep = flow.first; final boolean thumbnailVideoRemoved = flow.second; itemListAdapter.clearStreamItemList(); - itemListAdapter.addItems(notWatchedItems); + itemListAdapter.addItems(itemsToKeep); saveChanges(); if (thumbnailVideoRemoved) { From 5e3caf68a54b0b30808a31499049600800f6df39 Mon Sep 17 00:00:00 2001 From: ge78fug Date: Fri, 13 Jan 2023 16:33:45 +0100 Subject: [PATCH 113/147] Chenged the What's New icon --- app/src/main/java/org/schabi/newpipe/MainActivity.java | 2 +- .../schabi/newpipe/local/subscription/FeedGroupIcon.kt | 3 ++- .../newpipe/local/subscription/SubscriptionFragment.kt | 4 ++-- .../java/org/schabi/newpipe/settings/tabs/Tab.java | 2 +- app/src/main/res/drawable/ic_whats_new.xml | 10 ++++++++++ 5 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable/ic_whats_new.xml diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index 73a81450e..d05f3616d 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -235,7 +235,7 @@ public class MainActivity extends AppCompatActivity { .setIcon(R.drawable.ic_tv); drawerLayoutBinding.navigation.getMenu() .add(R.id.menu_tabs_group, ITEM_ID_FEED, ORDER, R.string.fragment_feed_title) - .setIcon(R.drawable.ic_rss_feed); + .setIcon(R.drawable.ic_whats_new); drawerLayoutBinding.navigation.getMenu() .add(R.id.menu_tabs_group, ITEM_ID_BOOKMARKS, ORDER, R.string.tab_bookmarks) .setIcon(R.drawable.ic_bookmark); diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/FeedGroupIcon.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/FeedGroupIcon.kt index ac7197b48..23718fa53 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/FeedGroupIcon.kt +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/FeedGroupIcon.kt @@ -51,7 +51,8 @@ enum class FeedGroupIcon( WORLD(34, R.drawable.ic_public), STAR(35, R.drawable.ic_stars), SUN(36, R.drawable.ic_wb_sunny), - RSS(37, R.drawable.ic_rss_feed); + RSS(37, R.drawable.ic_rss_feed), + WHATS_NEW(38, R.drawable.ic_whats_new); @DrawableRes fun getDrawableRes(): Int { 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 9e1e19fff..7146a18d6 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 @@ -433,10 +433,10 @@ class SubscriptionFragment : BaseStateFragment() { clear() if (listViewMode) { add(FeedGroupAddNewItem()) - add(FeedGroupCardItem(GROUP_ALL_ID, getString(R.string.all), FeedGroupIcon.RSS)) + add(FeedGroupCardItem(GROUP_ALL_ID, getString(R.string.all), FeedGroupIcon.WHATS_NEW)) } else { add(FeedGroupAddNewGridItem()) - add(FeedGroupCardGridItem(GROUP_ALL_ID, getString(R.string.all), FeedGroupIcon.RSS)) + add(FeedGroupCardGridItem(GROUP_ALL_ID, getString(R.string.all), FeedGroupIcon.WHATS_NEW)) } addAll(groups) } diff --git a/app/src/main/java/org/schabi/newpipe/settings/tabs/Tab.java b/app/src/main/java/org/schabi/newpipe/settings/tabs/Tab.java index 6b1d70a86..a08fe6ef6 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/tabs/Tab.java +++ b/app/src/main/java/org/schabi/newpipe/settings/tabs/Tab.java @@ -248,7 +248,7 @@ public abstract class Tab { @DrawableRes @Override public int getTabIconRes(final Context context) { - return R.drawable.ic_rss_feed; + return R.drawable.ic_whats_new; } @Override diff --git a/app/src/main/res/drawable/ic_whats_new.xml b/app/src/main/res/drawable/ic_whats_new.xml new file mode 100644 index 000000000..f2ac7bec2 --- /dev/null +++ b/app/src/main/res/drawable/ic_whats_new.xml @@ -0,0 +1,10 @@ + + + From 223150aa423fdb988dbd3233f11770459d110c2d Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sat, 14 Jan 2023 11:00:00 +0530 Subject: [PATCH 114/147] Update desugar_jdk_libs to 2.0.0. --- app/build.gradle | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6066bce43..79e07a190 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -179,7 +179,7 @@ sonar { dependencies { /** Desugaring **/ - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.8' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.0' /** NewPipe libraries **/ // You can use a local version by uncommenting a few lines in settings.gradle diff --git a/build.gradle b/build.gradle index d2f1dc4c5..1384d0a9c 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.3.1' + classpath 'com.android.tools.build:gradle:7.4.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong From 31396a632fb1693a6413a30ed9f0c7fd15b37de7 Mon Sep 17 00:00:00 2001 From: ge78fug Date: Sat, 14 Jan 2023 09:21:37 +0100 Subject: [PATCH 115/147] Chenged the name of the icon --- app/src/main/java/org/schabi/newpipe/MainActivity.java | 2 +- .../java/org/schabi/newpipe/local/subscription/FeedGroupIcon.kt | 2 +- app/src/main/java/org/schabi/newpipe/settings/tabs/Tab.java | 2 +- .../res/drawable/{ic_whats_new.xml => ic_subscriptions.xml} | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename app/src/main/res/drawable/{ic_whats_new.xml => ic_subscriptions.xml} (100%) diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index d05f3616d..ee2bb3f05 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -235,7 +235,7 @@ public class MainActivity extends AppCompatActivity { .setIcon(R.drawable.ic_tv); drawerLayoutBinding.navigation.getMenu() .add(R.id.menu_tabs_group, ITEM_ID_FEED, ORDER, R.string.fragment_feed_title) - .setIcon(R.drawable.ic_whats_new); + .setIcon(R.drawable.ic_subscriptions); drawerLayoutBinding.navigation.getMenu() .add(R.id.menu_tabs_group, ITEM_ID_BOOKMARKS, ORDER, R.string.tab_bookmarks) .setIcon(R.drawable.ic_bookmark); diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/FeedGroupIcon.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/FeedGroupIcon.kt index 23718fa53..1fa70e4d8 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/FeedGroupIcon.kt +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/FeedGroupIcon.kt @@ -52,7 +52,7 @@ enum class FeedGroupIcon( STAR(35, R.drawable.ic_stars), SUN(36, R.drawable.ic_wb_sunny), RSS(37, R.drawable.ic_rss_feed), - WHATS_NEW(38, R.drawable.ic_whats_new); + WHATS_NEW(38, R.drawable.ic_subscriptions); @DrawableRes fun getDrawableRes(): Int { diff --git a/app/src/main/java/org/schabi/newpipe/settings/tabs/Tab.java b/app/src/main/java/org/schabi/newpipe/settings/tabs/Tab.java index a08fe6ef6..7e3f5d0c8 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/tabs/Tab.java +++ b/app/src/main/java/org/schabi/newpipe/settings/tabs/Tab.java @@ -248,7 +248,7 @@ public abstract class Tab { @DrawableRes @Override public int getTabIconRes(final Context context) { - return R.drawable.ic_whats_new; + return R.drawable.ic_subscriptions; } @Override diff --git a/app/src/main/res/drawable/ic_whats_new.xml b/app/src/main/res/drawable/ic_subscriptions.xml similarity index 100% rename from app/src/main/res/drawable/ic_whats_new.xml rename to app/src/main/res/drawable/ic_subscriptions.xml From f766ef2033f9e9f43c59feb0bb70d3a61620c96a Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 28 Aug 2022 06:41:38 +0530 Subject: [PATCH 116/147] Replace the system UI visibility flags with WindowCompat calls. --- .../fragments/detail/VideoDetailFragment.java | 55 ++++++++----------- .../newpipe/player/ui/MainPlayerUi.java | 11 ++-- 2 files changed, 29 insertions(+), 37 deletions(-) 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 679084bdf..df0e0e537 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 @@ -27,7 +27,6 @@ import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -55,6 +54,9 @@ import androidx.appcompat.content.res.AppCompatResources; import androidx.appcompat.widget.Toolbar; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.content.ContextCompat; +import androidx.core.view.WindowCompat; +import androidx.core.view.WindowInsetsCompat; +import androidx.core.view.WindowInsetsControllerCompat; import androidx.preference.PreferenceManager; import com.google.android.exoplayer2.PlaybackException; @@ -1962,15 +1964,17 @@ public final class VideoDetailFragment return; } - // Prevent jumping of the player on devices with cutout - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - activity.getWindow().getAttributes().layoutInDisplayCutoutMode = - WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT; - } - activity.getWindow().getDecorView().setSystemUiVisibility(0); - activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); - activity.getWindow().setStatusBarColor(ThemeHelper.resolveColorFromAttr( - requireContext(), android.R.attr.colorPrimary)); + final var window = activity.getWindow(); + final var windowInsetsController = WindowCompat.getInsetsController(window, + window.getDecorView()); + + WindowCompat.setDecorFitsSystemWindows(window, true); + windowInsetsController.setSystemBarsBehavior(WindowInsetsControllerCompat + .BEHAVIOR_SHOW_BARS_BY_TOUCH); + windowInsetsController.show(WindowInsetsCompat.Type.systemBars()); + + window.setStatusBarColor(ThemeHelper.resolveColorFromAttr(requireContext(), + android.R.attr.colorPrimary)); } private void hideSystemUi() { @@ -1982,30 +1986,19 @@ public final class VideoDetailFragment return; } - // Prevent jumping of the player on devices with cutout - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - activity.getWindow().getAttributes().layoutInDisplayCutoutMode = - WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; - } - int visibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + final var window = activity.getWindow(); + final var windowInsetsController = WindowCompat.getInsetsController(window, + window.getDecorView()); - // In multiWindow mode status bar is not transparent for devices with cutout - // if I include this flag. So without it is better in this case - final boolean isInMultiWindow = DeviceUtils.isInMultiWindow(activity); - if (!isInMultiWindow) { - visibility |= View.SYSTEM_UI_FLAG_FULLSCREEN; - } - activity.getWindow().getDecorView().setSystemUiVisibility(visibility); + WindowCompat.setDecorFitsSystemWindows(window, false); + windowInsetsController.setSystemBarsBehavior(WindowInsetsControllerCompat + .BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE); + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()); - if (isInMultiWindow || isFullscreen()) { - activity.getWindow().setStatusBarColor(Color.TRANSPARENT); - activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); + if (DeviceUtils.isInMultiWindow(activity) || isFullscreen()) { + window.setStatusBarColor(Color.TRANSPARENT); + window.setNavigationBarColor(Color.TRANSPARENT); } - activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } // Listener implementation diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java index 6226900f6..58729ace2 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java @@ -32,7 +32,6 @@ import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; -import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.LinearLayout; @@ -40,6 +39,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.content.res.AppCompatResources; +import androidx.core.view.WindowCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; @@ -451,11 +452,9 @@ public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutCh getParentActivity().map(Activity::getWindow).ifPresent(window -> { window.setStatusBarColor(Color.TRANSPARENT); window.setNavigationBarColor(Color.TRANSPARENT); - final int visibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; - window.getDecorView().setSystemUiVisibility(visibility); - window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + WindowCompat.setDecorFitsSystemWindows(window, false); + WindowCompat.getInsetsController(window, window.getDecorView()) + .show(WindowInsetsCompat.Type.systemBars()); }); } } From 764b6aa2b1284b8c48a9280eb93c17254cceeb37 Mon Sep 17 00:00:00 2001 From: ge78fug Date: Sat, 17 Dec 2022 00:01:18 +0100 Subject: [PATCH 117/147] Made the channel-images in the grid list bigger Also improved the handling of additional information (expanded description, video count, subscriber count) --- .../holder/ChannelInfoItemHolder.java | 38 -------------- .../holder/ChannelMiniInfoItemHolder.java | 50 ++++++++++++++++--- .../res/layout/list_channel_grid_item.xml | 16 +++++- app/src/main/res/values/dimens.xml | 2 +- 4 files changed, 57 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelInfoItemHolder.java b/app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelInfoItemHolder.java index cf1ed255b..f8133d3de 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelInfoItemHolder.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelInfoItemHolder.java @@ -1,14 +1,9 @@ package org.schabi.newpipe.info_list.holder; import android.view.ViewGroup; -import android.widget.TextView; import org.schabi.newpipe.R; -import org.schabi.newpipe.extractor.InfoItem; -import org.schabi.newpipe.extractor.channel.ChannelInfoItem; import org.schabi.newpipe.info_list.InfoItemBuilder; -import org.schabi.newpipe.local.history.HistoryRecordManager; -import org.schabi.newpipe.util.Localization; /* * Created by Christian Schabesberger on 12.02.17. @@ -31,40 +26,7 @@ import org.schabi.newpipe.util.Localization; */ public class ChannelInfoItemHolder extends ChannelMiniInfoItemHolder { - private final TextView itemChannelDescriptionView; - public ChannelInfoItemHolder(final InfoItemBuilder infoItemBuilder, final ViewGroup parent) { super(infoItemBuilder, R.layout.list_channel_item, parent); - itemChannelDescriptionView = itemView.findViewById(R.id.itemChannelDescriptionView); - } - - @Override - public void updateFromItem(final InfoItem infoItem, - final HistoryRecordManager historyRecordManager) { - super.updateFromItem(infoItem, historyRecordManager); - - if (!(infoItem instanceof ChannelInfoItem)) { - return; - } - final ChannelInfoItem item = (ChannelInfoItem) infoItem; - - itemChannelDescriptionView.setText(item.getDescription()); - } - - @Override - protected String getDetailLine(final ChannelInfoItem item) { - String details = super.getDetailLine(item); - - if (item.getStreamCount() >= 0) { - final String formattedVideoAmount = Localization.localizeStreamCount( - itemBuilder.getContext(), item.getStreamCount()); - - if (!details.isEmpty()) { - details += " • " + formattedVideoAmount; - } else { - details = formattedVideoAmount; - } - } - return details; } } diff --git a/app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelMiniInfoItemHolder.java b/app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelMiniInfoItemHolder.java index 89398a1e5..c625c3c5c 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelMiniInfoItemHolder.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelMiniInfoItemHolder.java @@ -1,21 +1,26 @@ package org.schabi.newpipe.info_list.holder; +import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.schabi.newpipe.R; import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.channel.ChannelInfoItem; +import org.schabi.newpipe.extractor.utils.Utils; import org.schabi.newpipe.info_list.InfoItemBuilder; import org.schabi.newpipe.local.history.HistoryRecordManager; import org.schabi.newpipe.util.PicassoHelper; import org.schabi.newpipe.util.Localization; public class ChannelMiniInfoItemHolder extends InfoItemHolder { - public final ImageView itemThumbnailView; - public final TextView itemTitleView; + private final ImageView itemThumbnailView; + private final TextView itemTitleView; private final TextView itemAdditionalDetailView; + private final TextView itemChannelDescriptionView; ChannelMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, final int layoutId, final ViewGroup parent) { @@ -24,6 +29,7 @@ public class ChannelMiniInfoItemHolder extends InfoItemHolder { itemThumbnailView = itemView.findViewById(R.id.itemThumbnailView); itemTitleView = itemView.findViewById(R.id.itemTitleView); itemAdditionalDetailView = itemView.findViewById(R.id.itemAdditionalDetails); + itemChannelDescriptionView = itemView.findViewById(R.id.itemChannelDescriptionView); } public ChannelMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, @@ -40,7 +46,14 @@ public class ChannelMiniInfoItemHolder extends InfoItemHolder { final ChannelInfoItem item = (ChannelInfoItem) infoItem; itemTitleView.setText(item.getName()); - itemAdditionalDetailView.setText(getDetailLine(item)); + + final String detailLine = getDetailLine(item); + if (detailLine == null) { + itemAdditionalDetailView.setVisibility(View.GONE); + } else { + itemAdditionalDetailView.setVisibility(View.VISIBLE); + itemAdditionalDetailView.setText(getDetailLine(item)); + } PicassoHelper.loadAvatar(item.getThumbnailUrl()).into(itemThumbnailView); @@ -56,14 +69,35 @@ public class ChannelMiniInfoItemHolder extends InfoItemHolder { } return true; }); + + if (itemChannelDescriptionView != null) { + // itemChannelDescriptionView will be null in the mini variant + if (Utils.isBlank(item.getDescription())) { + itemChannelDescriptionView.setVisibility(View.GONE); + } else { + itemChannelDescriptionView.setVisibility(View.VISIBLE); + itemChannelDescriptionView.setText(item.getDescription()); + itemChannelDescriptionView.setMaxLines(detailLine == null ? 3 : 2); + } + } } - protected String getDetailLine(final ChannelInfoItem item) { - String details = ""; - if (item.getSubscriberCount() >= 0) { - details += Localization.shortSubscriberCount(itemBuilder.getContext(), + @Nullable + private String getDetailLine(final ChannelInfoItem item) { + if (item.getStreamCount() >= 0 && item.getSubscriberCount() >= 0) { + return Localization.concatenateStrings( + Localization.shortSubscriberCount(itemBuilder.getContext(), + item.getSubscriberCount()), + Localization.localizeStreamCount(itemBuilder.getContext(), + item.getStreamCount())); + } else if (item.getStreamCount() >= 0) { + return Localization.localizeStreamCount(itemBuilder.getContext(), + item.getStreamCount()); + } else if (item.getSubscriberCount() >= 0) { + return Localization.shortSubscriberCount(itemBuilder.getContext(), item.getSubscriberCount()); + } else { + return null; } - return details; } } diff --git a/app/src/main/res/layout/list_channel_grid_item.xml b/app/src/main/res/layout/list_channel_grid_item.xml index 3112a849f..0aec4e6e0 100644 --- a/app/src/main/res/layout/list_channel_grid_item.xml +++ b/app/src/main/res/layout/list_channel_grid_item.xml @@ -39,12 +39,24 @@ android:id="@+id/itemAdditionalDetails" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_below="@+id/itemTitleView" + android:layout_below="@id/itemTitleView" android:layout_centerHorizontal="true" android:lines="1" android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="@dimen/video_item_search_upload_date_text_size" tools:ignore="RtlHardcoded" - tools:text="10M subscribers" /> + tools:text="10M subscribers • 100 videos" /> + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 9f7e50c19..5693ec7c4 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -30,7 +30,7 @@ 164dp 92dp - 42dp + 92dp 128dp 96dp From cdd5e89b863a86ad1425883589946c5c35bb20ee Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Sat, 16 Jul 2022 13:33:25 +0200 Subject: [PATCH 118/147] Add ability to copy hashtags, URLs and timestamps in descriptions on long-press This commit adds the ability to copy to clipboard hashtags, URLs and timestamps when long-pressing them. Some changes in our TextView class related to text setting have been required and metadata items are now using a NewPipeTextView instead of a standard TextView. Six new classes have been added: - a custom LinkMovementMethod class; - a custom ClickableSpan class, LongPressClickableSpan, in order to set a long press event; - a class to avoid code duplication in CommentTextOnTouchListener, TouchUtils; - three implementations of LongPressClickableSpan used when linkifying text: - HashtagLongPressClickableSpan for hashtags; - TimestampLongPressClickableSpan for timestamps; - UrlLongPressClickableSpan for URLs. --- .../fragments/detail/DescriptionFragment.java | 45 +-- .../util/CommentTextOnTouchListener.java | 26 +- .../org/schabi/newpipe/util/TouchUtils.java | 38 ++ .../HashtagLongPressClickableSpan.java | 38 ++ .../external_communication/ShareUtils.java | 13 +- .../external_communication/TextLinkifier.java | 337 +++++++++--------- .../TimestampExtractor.java | 20 +- .../TimestampLongPressClickableSpan.java | 75 ++++ .../UrlLongPressClickableSpan.java | 41 +++ .../newpipe/views/LongPressClickableSpan.java | 12 + .../views/LongPressLinkMovementMethod.java | 77 ++++ .../schabi/newpipe/views/NewPipeEditText.java | 5 +- .../schabi/newpipe/views/NewPipeTextView.java | 17 +- app/src/main/res/layout/item_metadata.xml | 4 +- app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 16 files changed, 524 insertions(+), 226 deletions(-) create mode 100644 app/src/main/java/org/schabi/newpipe/util/TouchUtils.java create mode 100644 app/src/main/java/org/schabi/newpipe/util/external_communication/HashtagLongPressClickableSpan.java create mode 100644 app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampLongPressClickableSpan.java create mode 100644 app/src/main/java/org/schabi/newpipe/util/external_communication/UrlLongPressClickableSpan.java create mode 100644 app/src/main/java/org/schabi/newpipe/views/LongPressClickableSpan.java create mode 100644 app/src/main/java/org/schabi/newpipe/views/LongPressLinkMovementMethod.java diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java index bf7f8fa5d..96e01c622 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java @@ -3,6 +3,7 @@ package org.schabi.newpipe.fragments.detail; import static android.text.TextUtils.isEmpty; import static org.schabi.newpipe.extractor.stream.StreamExtractor.NO_AGE_LIMIT; import static org.schabi.newpipe.extractor.utils.Utils.isBlank; +import static org.schabi.newpipe.util.Localization.getAppLocale; import android.os.Bundle; import android.view.LayoutInflater; @@ -134,7 +135,8 @@ public class DescriptionFragment extends BaseFragment { TextLinkifier.createLinksFromMarkdownText(binding.detailDescriptionView, description.getContent(), streamInfo, descriptionDisposables); break; - case Description.PLAIN_TEXT: default: + case Description.PLAIN_TEXT: + default: TextLinkifier.createLinksFromPlainText(binding.detailDescriptionView, description.getContent(), streamInfo, descriptionDisposables); break; @@ -144,30 +146,30 @@ public class DescriptionFragment extends BaseFragment { private void setupMetadata(final LayoutInflater inflater, final LinearLayout layout) { - addMetadataItem(inflater, layout, false, - R.string.metadata_category, streamInfo.getCategory()); + addMetadataItem(inflater, layout, false, R.string.metadata_category, + streamInfo.getCategory()); - addMetadataItem(inflater, layout, false, - R.string.metadata_licence, streamInfo.getLicence()); + addMetadataItem(inflater, layout, false, R.string.metadata_licence, + streamInfo.getLicence()); addPrivacyMetadataItem(inflater, layout); if (streamInfo.getAgeLimit() != NO_AGE_LIMIT) { - addMetadataItem(inflater, layout, false, - R.string.metadata_age_limit, String.valueOf(streamInfo.getAgeLimit())); + addMetadataItem(inflater, layout, false, R.string.metadata_age_limit, + String.valueOf(streamInfo.getAgeLimit())); } if (streamInfo.getLanguageInfo() != null) { - addMetadataItem(inflater, layout, false, - R.string.metadata_language, streamInfo.getLanguageInfo().getDisplayLanguage()); + addMetadataItem(inflater, layout, false, R.string.metadata_language, + streamInfo.getLanguageInfo().getDisplayLanguage(getAppLocale(getContext()))); } - addMetadataItem(inflater, layout, true, - R.string.metadata_support, streamInfo.getSupportInfo()); - addMetadataItem(inflater, layout, true, - R.string.metadata_host, streamInfo.getHost()); - addMetadataItem(inflater, layout, true, - R.string.metadata_thumbnail_url, streamInfo.getThumbnailUrl()); + addMetadataItem(inflater, layout, true, R.string.metadata_support, + streamInfo.getSupportInfo()); + addMetadataItem(inflater, layout, true, R.string.metadata_host, + streamInfo.getHost()); + addMetadataItem(inflater, layout, true, R.string.metadata_thumbnail_url, + streamInfo.getThumbnailUrl()); addTagsMetadataItem(inflater, layout); } @@ -191,12 +193,14 @@ public class DescriptionFragment extends BaseFragment { }); if (linkifyContent) { - TextLinkifier.createLinksFromPlainText(itemBinding.metadataContentView, content, null, - descriptionDisposables); + TextLinkifier.createLinksFromPlainText(itemBinding.metadataContentView, content, + null, descriptionDisposables); } else { itemBinding.metadataContentView.setText(content); } + itemBinding.metadataContentView.setClickable(true); + layout.addView(itemBinding.getRoot()); } @@ -245,14 +249,15 @@ public class DescriptionFragment extends BaseFragment { case INTERNAL: contentRes = R.string.metadata_privacy_internal; break; - case OTHER: default: + case OTHER: + default: contentRes = 0; break; } if (contentRes != 0) { - addMetadataItem(inflater, layout, false, - R.string.metadata_privacy, getString(contentRes)); + addMetadataItem(inflater, layout, false, R.string.metadata_privacy, + getString(contentRes)); } } } diff --git a/app/src/main/java/org/schabi/newpipe/util/CommentTextOnTouchListener.java b/app/src/main/java/org/schabi/newpipe/util/CommentTextOnTouchListener.java index 7c87e664b..ff8875e5a 100644 --- a/app/src/main/java/org/schabi/newpipe/util/CommentTextOnTouchListener.java +++ b/app/src/main/java/org/schabi/newpipe/util/CommentTextOnTouchListener.java @@ -1,6 +1,7 @@ package org.schabi.newpipe.util; -import android.text.Layout; +import static org.schabi.newpipe.util.TouchUtils.getOffsetForHorizontalLine; + import android.text.Selection; import android.text.Spannable; import android.text.Spanned; @@ -30,23 +31,9 @@ public class CommentTextOnTouchListener implements View.OnTouchListener { final int action = event.getAction(); - if (action == MotionEvent.ACTION_UP - || action == MotionEvent.ACTION_DOWN) { - int x = (int) event.getX(); - int y = (int) event.getY(); - - x -= widget.getTotalPaddingLeft(); - y -= widget.getTotalPaddingTop(); - - x += widget.getScrollX(); - y += widget.getScrollY(); - - final Layout layout = widget.getLayout(); - final int line = layout.getLineForVertical(y); - final int off = layout.getOffsetForHorizontal(line, x); - - final ClickableSpan[] link = buffer.getSpans(off, off, - ClickableSpan.class); + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) { + final int offset = getOffsetForHorizontalLine(widget, event); + final ClickableSpan[] link = buffer.getSpans(offset, offset, ClickableSpan.class); if (link.length != 0) { if (action == MotionEvent.ACTION_UP) { @@ -58,8 +45,7 @@ public class CommentTextOnTouchListener implements View.OnTouchListener { } } } else if (action == MotionEvent.ACTION_DOWN) { - Selection.setSelection(buffer, - buffer.getSpanStart(link[0]), + Selection.setSelection(buffer, buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0])); } return true; diff --git a/app/src/main/java/org/schabi/newpipe/util/TouchUtils.java b/app/src/main/java/org/schabi/newpipe/util/TouchUtils.java new file mode 100644 index 000000000..23bc5a401 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/TouchUtils.java @@ -0,0 +1,38 @@ +package org.schabi.newpipe.util; + +import android.text.Layout; +import android.view.MotionEvent; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +public final class TouchUtils { + + private TouchUtils() { + } + + /** + * Get the character offset on the closest line to the position pressed by the user of a + * {@link TextView} from a {@link MotionEvent} which was fired on this {@link TextView}. + * + * @param textView the {@link TextView} on which the {@link MotionEvent} was fired + * @param event the {@link MotionEvent} which was fired + * @return the character offset on the closest line to the position pressed by the user + */ + public static int getOffsetForHorizontalLine(@NonNull final TextView textView, + @NonNull final MotionEvent event) { + + int x = (int) event.getX(); + int y = (int) event.getY(); + + x -= textView.getTotalPaddingLeft(); + y -= textView.getTotalPaddingTop(); + + x += textView.getScrollX(); + y += textView.getScrollY(); + + final Layout layout = textView.getLayout(); + final int line = layout.getLineForVertical(y); + return layout.getOffsetForHorizontal(line, x); + } +} diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/HashtagLongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/HashtagLongPressClickableSpan.java new file mode 100644 index 000000000..9acedc12b --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/HashtagLongPressClickableSpan.java @@ -0,0 +1,38 @@ +package org.schabi.newpipe.util.external_communication; + +import android.content.Context; +import android.view.View; + +import androidx.annotation.NonNull; + +import org.schabi.newpipe.extractor.Info; +import org.schabi.newpipe.util.NavigationHelper; +import org.schabi.newpipe.views.LongPressClickableSpan; + +final class HashtagLongPressClickableSpan extends LongPressClickableSpan { + + @NonNull + private final Context context; + @NonNull + private final String parsedHashtag; + @NonNull + private final Info relatedInfo; + + HashtagLongPressClickableSpan(@NonNull final Context context, + @NonNull final String parsedHashtag, + @NonNull final Info relatedInfo) { + this.context = context; + this.parsedHashtag = parsedHashtag; + this.relatedInfo = relatedInfo; + } + + @Override + public void onClick(@NonNull final View view) { + NavigationHelper.openSearch(context, relatedInfo.getServiceId(), parsedHashtag); + } + + @Override + public void onLongClick(@NonNull final View view) { + ShareUtils.copyToClipboard(context, parsedHashtag); + } +} diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java index 9829ddd2e..332298b22 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java @@ -313,10 +313,15 @@ public final class ShareUtils { return; } - clipboardManager.setPrimaryClip(ClipData.newPlainText(null, text)); - if (Build.VERSION.SDK_INT < 33) { - // Android 13 has its own "copied to clipboard" dialog - Toast.makeText(context, R.string.msg_copied, Toast.LENGTH_SHORT).show(); + try { + clipboardManager.setPrimaryClip(ClipData.newPlainText(null, text)); + if (Build.VERSION.SDK_INT < 33) { + // Android 13 has its own "copied to clipboard" dialog + Toast.makeText(context, R.string.msg_copied, Toast.LENGTH_SHORT).show(); + } + } catch (final Exception e) { + Log.e(TAG, "Error when trying to copy text to clipboard", e); + Toast.makeText(context, R.string.msg_failed_to_copy, Toast.LENGTH_SHORT).show(); } } 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 8b8eb265b..1bbd37cf5 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 @@ -2,8 +2,6 @@ package org.schabi.newpipe.util.external_communication; import android.content.Context; import android.text.SpannableStringBuilder; -import android.text.method.LinkMovementMethod; -import android.text.style.ClickableSpan; import android.text.style.URLSpan; import android.text.util.Linkify; import android.util.Log; @@ -17,6 +15,8 @@ import androidx.core.text.HtmlCompat; import org.schabi.newpipe.extractor.Info; import org.schabi.newpipe.extractor.stream.StreamInfo; import org.schabi.newpipe.util.NavigationHelper; +import org.schabi.newpipe.views.LongPressClickableSpan; +import org.schabi.newpipe.views.LongPressLinkMovementMethod; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -28,27 +28,26 @@ import io.reactivex.rxjava3.core.Single; import io.reactivex.rxjava3.disposables.CompositeDisposable; import io.reactivex.rxjava3.schedulers.Schedulers; -import static org.schabi.newpipe.util.external_communication.InternalUrlsHandler.playOnPopup; - public final class TextLinkifier { public static final String TAG = TextLinkifier.class.getSimpleName(); // 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 static final Pattern HASHTAGS_PATTERN = Pattern.compile("(#[\\p{L}0-9_]+)"); private TextLinkifier() { } /** - * Create web links for contents with an HTML description. - *

        - * This will call {@link TextLinkifier#changeIntentsOfDescriptionLinks(TextView, CharSequence, - * Info, CompositeDisposable)} after having linked the URLs with - * {@link HtmlCompat#fromHtml(String, int)}. + * Create links for contents with an HTML description. * - * @param textView the TextView to set the htmlBlock linked - * @param htmlBlock the htmlBlock to be linked + *

        + * This method will call {@link #changeIntentsOfDescriptionLinks(TextView, CharSequence, Info, + * CompositeDisposable)} after having linked the URLs with + * {@link HtmlCompat#fromHtml(String, int)}. + *

        + * + * @param textView the {@link TextView} to set the the HTML string block linked + * @param htmlBlock the HTML string block to be linked * @param htmlCompatFlag the int flag to be set when {@link HtmlCompat#fromHtml(String, int)} * will be called * @param relatedInfo if given, handle timestamps to open the stream in the popup player at @@ -58,50 +57,55 @@ public final class TextLinkifier { * should be handled by the calling class */ public static void createLinksFromHtmlBlock(@NonNull final TextView textView, - final String htmlBlock, + @NonNull final String htmlBlock, final int htmlCompatFlag, @Nullable final Info relatedInfo, - final CompositeDisposable disposables) { - changeIntentsOfDescriptionLinks( - textView, HtmlCompat.fromHtml(htmlBlock, htmlCompatFlag), relatedInfo, disposables); + @NonNull final CompositeDisposable disposables) { + changeIntentsOfDescriptionLinks(textView, HtmlCompat.fromHtml(htmlBlock, htmlCompatFlag), + relatedInfo, disposables); } /** - * Create web links for contents with a plain text description. - *

        - * This will call {@link TextLinkifier#changeIntentsOfDescriptionLinks(TextView, CharSequence, - * Info, CompositeDisposable)} after having linked the URLs with - * {@link TextView#setAutoLinkMask(int)} and - * {@link TextView#setText(CharSequence, TextView.BufferType)}. + * Create links for contents with a plain text description. * - * @param textView the TextView to set the plain text block linked + *

        + * This method will call {@link #changeIntentsOfDescriptionLinks(TextView, CharSequence, Info, + * CompositeDisposable)} after having linked the URLs with {@link TextView#setAutoLinkMask(int)} + * and {@link TextView#setText(CharSequence, TextView.BufferType)}. + *

        + * + * @param textView the {@link TextView} to set the plain text block linked * @param plainTextBlock the block of plain text to be linked - * @param relatedInfo if given, handle timestamps to open the stream in the popup player at - * the specific time, and hashtags to search for the term in the correct + * @param relatedInfo if given, handle timestamps to open the stream in the popup player, at + * the specified time, and hashtags to search for the term in the correct * service * @param disposables disposables created by the method are added here and their lifecycle * should be handled by the calling class */ public static void createLinksFromPlainText(@NonNull final TextView textView, - final String plainTextBlock, + @NonNull final String plainTextBlock, @Nullable final Info relatedInfo, - final CompositeDisposable disposables) { + @NonNull final CompositeDisposable disposables) { textView.setAutoLinkMask(Linkify.WEB_URLS); textView.setText(plainTextBlock, TextView.BufferType.SPANNABLE); - changeIntentsOfDescriptionLinks(textView, textView.getText(), relatedInfo, disposables); + changeIntentsOfDescriptionLinks(textView, textView.getText(), relatedInfo, disposables + ); } /** - * Create web links for contents with a markdown description. - *

        - * This will call {@link TextLinkifier#changeIntentsOfDescriptionLinks(TextView, CharSequence, - * Info, CompositeDisposable)} after creating an {@link Markwon} object and using - * {@link Markwon#setMarkdown(TextView, String)}. + * Create links for contents with a markdown description. * - * @param textView the TextView to set the plain text block linked + *

        + * This method will call {@link #changeIntentsOfDescriptionLinks(TextView, CharSequence, Info, + * CompositeDisposable)} after creating a {@link Markwon} object and using + * {@link Markwon#setMarkdown(TextView, String)}. + *

        + * + * @param textView the {@link TextView} to set the plain text block linked * @param markdownBlock the block of markdown text to be linked * @param relatedInfo if given, handle timestamps to open the stream in the popup player at * the specific time, and hashtags to search for the term in the correct + * service * @param disposables disposables created by the method are added here and their lifecycle * should be handled by the calling class */ @@ -115,161 +119,78 @@ public final class TextLinkifier { disposables); } - /** - * Add click listeners which opens a search on hashtags in a plain text. - *

        - * This method finds all timestamps in the {@link SpannableStringBuilder} of the description - * using a regular expression, adds for each a {@link ClickableSpan} which opens - * {@link NavigationHelper#openSearch(Context, int, String)} and makes a search on the hashtag, - * in the service of the content. - * - * @param context the context to use - * @param spannableDescription the SpannableStringBuilder with the text of the - * content description - * @param relatedInfo used to search for the term in the correct service - */ - private static void addClickListenersOnHashtags(final Context context, - @NonNull final SpannableStringBuilder - spannableDescription, - final Info relatedInfo) { - final String descriptionText = spannableDescription.toString(); - final Matcher hashtagsMatches = HASHTAGS_PATTERN.matcher(descriptionText); - - while (hashtagsMatches.find()) { - final int hashtagStart = hashtagsMatches.start(1); - final int hashtagEnd = hashtagsMatches.end(1); - final String parsedHashtag = descriptionText.substring(hashtagStart, hashtagEnd); - - // don't add a ClickableSpan if there is already one, which should be a part of an URL, - // already parsed before - if (spannableDescription.getSpans(hashtagStart, hashtagEnd, - ClickableSpan.class).length == 0) { - spannableDescription.setSpan(new ClickableSpan() { - @Override - public void onClick(@NonNull final View view) { - NavigationHelper.openSearch(context, relatedInfo.getServiceId(), - parsedHashtag); - } - }, hashtagStart, hashtagEnd, 0); - } - } - } - - /** - * Add click listeners which opens the popup player on timestamps in a plain text. - *

        - * This method finds all timestamps in the {@link SpannableStringBuilder} of the description - * using a regular expression, adds for each a {@link ClickableSpan} which opens the popup - * player at the time indicated in the timestamps. - * - * @param context the context to use - * @param spannableDescription the SpannableStringBuilder with the text of the - * content description - * @param relatedInfo what to open in the popup player when timestamps are clicked - * @param disposables disposables created by the method are added here and their - * lifecycle should be handled by the calling class - */ - private static void addClickListenersOnTimestamps(final Context context, - @NonNull final SpannableStringBuilder - spannableDescription, - final Info relatedInfo, - final CompositeDisposable disposables) { - final String descriptionText = spannableDescription.toString(); - final Matcher timestampsMatches = - TimestampExtractor.TIMESTAMPS_PATTERN.matcher(descriptionText); - - while (timestampsMatches.find()) { - final TimestampExtractor.TimestampMatchDTO timestampMatchDTO = - TimestampExtractor.getTimestampFromMatcher( - timestampsMatches, - descriptionText); - - if (timestampMatchDTO == null) { - continue; - } - - spannableDescription.setSpan( - new ClickableSpan() { - @Override - public void onClick(@NonNull final View view) { - playOnPopup( - context, - relatedInfo.getUrl(), - relatedInfo.getService(), - timestampMatchDTO.seconds(), - disposables); - } - }, - timestampMatchDTO.timestampStart(), - timestampMatchDTO.timestampEnd(), - 0); - } - } - /** * Change links generated by libraries in the description of a content to a custom link action * and add click listeners on timestamps in this description. + * *

        * Instead of using an {@link android.content.Intent#ACTION_VIEW} intent in the description of * a content, this method will parse the {@link CharSequence} and replace all current web links * with {@link ShareUtils#openUrlInBrowser(Context, String, boolean)}. + *

        + * + *

        * This method will also add click listeners on timestamps in this description, which will play * the content in the popup player at the time indicated in the timestamp, by using - * {@link TextLinkifier#addClickListenersOnTimestamps(Context, SpannableStringBuilder, Info, - * CompositeDisposable)} method and click listeners on hashtags, by using - * {@link TextLinkifier#addClickListenersOnHashtags(Context, SpannableStringBuilder, Info)}, + * {@link TextLinkifier#addClickListenersOnTimestamps(Context, SpannableStringBuilder, + * StreamInfo, CompositeDisposable)} method and click listeners on hashtags, by using + * {@link TextLinkifier#addClickListenersOnHashtags(Context, SpannableStringBuilder, Info)})}, * which will open a search on the current service with the hashtag. + *

        + * *

        * This method is required in order to intercept links and e.g. show a confirmation dialog * before opening a web link. + *

        * - * @param textView the TextView in which the converted CharSequence will be applied - * @param chars the CharSequence to be parsed - * @param relatedInfo if given, handle timestamps to open the stream in the popup player at - * the specific time, and hashtags to search for the term in the correct - * service + * @param textView the {@link TextView} in which the converted {@link CharSequence} will be + * applied + * @param chars the {@link CharSequence} to be parsed + * @param relatedInfo if given, handle timestamps to open the stream in the popup player at the + * specific time, and hashtags to search for the term in the correct service * @param disposables disposables created by the method are added here and their lifecycle * should be handled by the calling class */ - private static void changeIntentsOfDescriptionLinks(final TextView textView, - final CharSequence chars, - @Nullable final Info relatedInfo, - final CompositeDisposable disposables) { + private static void changeIntentsOfDescriptionLinks( + @NonNull final TextView textView, + @NonNull final CharSequence chars, + @Nullable final Info relatedInfo, + @NonNull final CompositeDisposable disposables) { + textView.setMovementMethod(LongPressLinkMovementMethod.getInstance()); disposables.add(Single.fromCallable(() -> { - final Context context = textView.getContext(); + final Context context = textView.getContext(); - // add custom click actions on web links - final SpannableStringBuilder textBlockLinked = new SpannableStringBuilder(chars); - final URLSpan[] urls = textBlockLinked.getSpans(0, chars.length(), URLSpan.class); + // add custom click actions on web links + final SpannableStringBuilder textBlockLinked = + new SpannableStringBuilder(chars); + final URLSpan[] urls = textBlockLinked.getSpans(0, chars.length(), + URLSpan.class); - for (final URLSpan span : urls) { - final String url = span.getURL(); - final ClickableSpan clickableSpan = new ClickableSpan() { - public void onClick(@NonNull final View view) { - if (!InternalUrlsHandler.handleUrlDescriptionTimestamp( - new CompositeDisposable(), context, url)) { - ShareUtils.openUrlInBrowser(context, url, false); - } + for (final URLSpan span : urls) { + final String url = span.getURL(); + final LongPressClickableSpan longPressClickableSpan = + new UrlLongPressClickableSpan(context, disposables, url); + + textBlockLinked.setSpan(longPressClickableSpan, + textBlockLinked.getSpanStart(span), + textBlockLinked.getSpanEnd(span), + textBlockLinked.getSpanFlags(span)); + textBlockLinked.removeSpan(span); } - }; - textBlockLinked.setSpan(clickableSpan, textBlockLinked.getSpanStart(span), - textBlockLinked.getSpanEnd(span), textBlockLinked.getSpanFlags(span)); - textBlockLinked.removeSpan(span); - } + if (relatedInfo != null) { + // add click actions on plain text timestamps only for description of + // contents, unneeded for meta-info or other TextViews + if (relatedInfo instanceof StreamInfo) { + addClickListenersOnTimestamps(context, textBlockLinked, + (StreamInfo) relatedInfo, disposables); + } - // add click actions on plain text timestamps only for description of contents, - // unneeded for meta-info or other TextViews - if (relatedInfo != null) { - if (relatedInfo instanceof StreamInfo) { - addClickListenersOnTimestamps(context, textBlockLinked, relatedInfo, - disposables); - } - addClickListenersOnHashtags(context, textBlockLinked, relatedInfo); - } + addClickListenersOnHashtags(context, textBlockLinked, relatedInfo); + } - return textBlockLinked; - }).subscribeOn(Schedulers.computation()) + return textBlockLinked; + }).subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( textBlockLinked -> setTextViewCharSequence(textView, textBlockLinked), @@ -280,10 +201,90 @@ public final class TextLinkifier { })); } + /** + * Add click listeners which opens a search on hashtags in a plain text. + * + *

        + * This method finds all timestamps in the {@link SpannableStringBuilder} of the description + * using a regular expression, adds for each a {@link LongPressClickableSpan} which opens + * {@link NavigationHelper#openSearch(Context, int, String)} and makes a search on the hashtag, + * in the service of the content when pressed, and copy the hashtag to clipboard when + * long-pressed, if allowed by the caller method (parameter {@code addLongClickCopyListener}). + *

        + * + * @param context the {@link Context} to use + * @param spannableDescription the {@link SpannableStringBuilder} with the text of the + * content description + * @param relatedInfo used to search for the term in the correct service + */ + private static void addClickListenersOnHashtags( + @NonNull final Context context, + @NonNull final SpannableStringBuilder spannableDescription, + @NonNull final Info relatedInfo) { + final String descriptionText = spannableDescription.toString(); + final Matcher hashtagsMatches = HASHTAGS_PATTERN.matcher(descriptionText); + + while (hashtagsMatches.find()) { + final int hashtagStart = hashtagsMatches.start(1); + final int hashtagEnd = hashtagsMatches.end(1); + final String parsedHashtag = descriptionText.substring(hashtagStart, hashtagEnd); + + // Don't add a LongPressClickableSpan if there is already one, which should be a part + // of an URL, already parsed before + if (spannableDescription.getSpans(hashtagStart, hashtagEnd, + LongPressClickableSpan.class).length == 0) { + spannableDescription.setSpan( + new HashtagLongPressClickableSpan(context, parsedHashtag, relatedInfo), + hashtagStart, hashtagEnd, 0); + } + } + } + + /** + * Add click listeners which opens the popup player on timestamps in a plain text. + * + *

        + * This method finds all timestamps in the {@link SpannableStringBuilder} of the description + * using a regular expression, adds for each a {@link LongPressClickableSpan} which opens the + * popup player at the time indicated in the timestamps and copy the timestamp in clipboard + * when long-pressed. + *

        + * + * @param context the {@link Context} to use + * @param spannableDescription the {@link SpannableStringBuilder} with the text of the + * content description + * @param streamInfo what to open in the popup player when timestamps are clicked + * @param disposables disposables created by the method are added here and their + * lifecycle should be handled by the calling class + */ + private static void addClickListenersOnTimestamps( + @NonNull final Context context, + @NonNull final SpannableStringBuilder spannableDescription, + @NonNull final StreamInfo streamInfo, + @NonNull final CompositeDisposable disposables) { + final String descriptionText = spannableDescription.toString(); + final Matcher timestampsMatches = TimestampExtractor.TIMESTAMPS_PATTERN.matcher( + descriptionText); + + while (timestampsMatches.find()) { + final TimestampExtractor.TimestampMatchDTO timestampMatchDTO = + TimestampExtractor.getTimestampFromMatcher(timestampsMatches, descriptionText); + + if (timestampMatchDTO == null) { + continue; + } + + spannableDescription.setSpan(new TimestampLongPressClickableSpan( + context, descriptionText, disposables, streamInfo, timestampMatchDTO), + timestampMatchDTO.timestampStart(), + timestampMatchDTO.timestampEnd(), + 0); + } + } + private static void setTextViewCharSequence(@NonNull final TextView textView, - final CharSequence charSequence) { + @Nullable final CharSequence charSequence) { textView.setText(charSequence); - textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampExtractor.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampExtractor.java index a13c66402..d0862b750 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampExtractor.java @@ -1,5 +1,8 @@ package org.schabi.newpipe.util.external_communication; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -15,17 +18,18 @@ public final class TimestampExtractor { } /** - * Get's a single timestamp from a matcher. + * Gets a single timestamp from a matcher. * - * @param timestampMatches The matcher which was created using {@link #TIMESTAMPS_PATTERN} - * @param baseText The text where the pattern was applied to / - * where the matcher is based upon - * @return If a match occurred: a {@link TimestampMatchDTO} filled with information.
        - * If not null. + * @param timestampMatches the matcher which was created using {@link #TIMESTAMPS_PATTERN} + * @param baseText the text where the pattern was applied to / where the matcher is + * based upon + * @return if a match occurred, a {@link TimestampMatchDTO} filled with information, otherwise + * {@code null}. */ + @Nullable public static TimestampMatchDTO getTimestampFromMatcher( - final Matcher timestampMatches, - final String baseText) { + @NonNull final Matcher timestampMatches, + @NonNull final String baseText) { int timestampStart = timestampMatches.start(1); if (timestampStart == -1) { timestampStart = timestampMatches.start(2); diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampLongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampLongPressClickableSpan.java new file mode 100644 index 000000000..0ecbc8367 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampLongPressClickableSpan.java @@ -0,0 +1,75 @@ +package org.schabi.newpipe.util.external_communication; + +import static org.schabi.newpipe.util.external_communication.InternalUrlsHandler.playOnPopup; + +import android.content.Context; +import android.view.View; + +import androidx.annotation.NonNull; + +import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.StreamingService; +import org.schabi.newpipe.extractor.stream.StreamInfo; +import org.schabi.newpipe.views.LongPressClickableSpan; + +import io.reactivex.rxjava3.disposables.CompositeDisposable; + +final class TimestampLongPressClickableSpan extends LongPressClickableSpan { + + @NonNull + private final Context context; + @NonNull + private final String descriptionText; + @NonNull + private final CompositeDisposable disposables; + @NonNull + private final StreamInfo streamInfo; + @NonNull + private final TimestampExtractor.TimestampMatchDTO timestampMatchDTO; + + TimestampLongPressClickableSpan( + @NonNull final Context context, + @NonNull final String descriptionText, + @NonNull final CompositeDisposable disposables, + @NonNull final StreamInfo streamInfo, + @NonNull final TimestampExtractor.TimestampMatchDTO timestampMatchDTO) { + this.context = context; + this.descriptionText = descriptionText; + this.disposables = disposables; + this.streamInfo = streamInfo; + this.timestampMatchDTO = timestampMatchDTO; + } + + @Override + public void onClick(@NonNull final View view) { + playOnPopup(context, streamInfo.getUrl(), streamInfo.getService(), + timestampMatchDTO.seconds(), disposables); + } + + @Override + public void onLongClick(@NonNull final View view) { + ShareUtils.copyToClipboard(context, + getTimestampTextToCopy(streamInfo, descriptionText, timestampMatchDTO)); + } + + @NonNull + private static String getTimestampTextToCopy( + @NonNull final StreamInfo relatedInfo, + @NonNull final String descriptionText, + @NonNull final TimestampExtractor.TimestampMatchDTO timestampMatchDTO) { + // TODO: use extractor methods to get timestamps when this feature will be implemented in it + final StreamingService streamingService = relatedInfo.getService(); + if (streamingService == ServiceList.YouTube) { + return relatedInfo.getUrl() + "&t=" + timestampMatchDTO.seconds(); + } else if (streamingService == ServiceList.SoundCloud + || streamingService == ServiceList.MediaCCC) { + return relatedInfo.getUrl() + "#t=" + timestampMatchDTO.seconds(); + } else if (streamingService == ServiceList.PeerTube) { + return relatedInfo.getUrl() + "?start=" + timestampMatchDTO.seconds(); + } + + // Return timestamp text for other services + return descriptionText.subSequence(timestampMatchDTO.timestampStart(), + timestampMatchDTO.timestampEnd()).toString(); + } +} diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/UrlLongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/UrlLongPressClickableSpan.java new file mode 100644 index 000000000..f6cee708f --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/UrlLongPressClickableSpan.java @@ -0,0 +1,41 @@ +package org.schabi.newpipe.util.external_communication; + +import android.content.Context; +import android.view.View; + +import androidx.annotation.NonNull; + +import org.schabi.newpipe.views.LongPressClickableSpan; + +import io.reactivex.rxjava3.disposables.CompositeDisposable; + +final class UrlLongPressClickableSpan extends LongPressClickableSpan { + + @NonNull + private final Context context; + @NonNull + private final CompositeDisposable disposables; + @NonNull + private final String url; + + UrlLongPressClickableSpan(@NonNull final Context context, + @NonNull final CompositeDisposable disposables, + @NonNull final String url) { + this.context = context; + this.disposables = disposables; + this.url = url; + } + + @Override + public void onClick(@NonNull final View view) { + if (!InternalUrlsHandler.handleUrlDescriptionTimestamp( + disposables, context, url)) { + ShareUtils.openUrlInBrowser(context, url, false); + } + } + + @Override + public void onLongClick(@NonNull final View view) { + ShareUtils.copyToClipboard(context, url); + } +} diff --git a/app/src/main/java/org/schabi/newpipe/views/LongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/views/LongPressClickableSpan.java new file mode 100644 index 000000000..d6b927a30 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/views/LongPressClickableSpan.java @@ -0,0 +1,12 @@ +package org.schabi.newpipe.views; + +import android.text.style.ClickableSpan; +import android.view.View; + +import androidx.annotation.NonNull; + +public abstract class LongPressClickableSpan extends ClickableSpan { + + public abstract void onLongClick(@NonNull View view); + +} diff --git a/app/src/main/java/org/schabi/newpipe/views/LongPressLinkMovementMethod.java b/app/src/main/java/org/schabi/newpipe/views/LongPressLinkMovementMethod.java new file mode 100644 index 000000000..5f90284fc --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/views/LongPressLinkMovementMethod.java @@ -0,0 +1,77 @@ +package org.schabi.newpipe.views; + +import static org.schabi.newpipe.util.TouchUtils.getOffsetForHorizontalLine; + +import android.os.Handler; +import android.os.Looper; +import android.text.Selection; +import android.text.Spannable; +import android.text.method.LinkMovementMethod; +import android.text.method.MovementMethod; +import android.view.MotionEvent; +import android.view.ViewConfiguration; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +// Class adapted from https://stackoverflow.com/a/31786969 + +public class LongPressLinkMovementMethod extends LinkMovementMethod { + + private static final int LONG_PRESS_TIME = ViewConfiguration.getLongPressTimeout(); + + private static LongPressLinkMovementMethod instance; + + private Handler longClickHandler; + private boolean isLongPressed = false; + + @Override + public boolean onTouchEvent(@NonNull final TextView widget, + @NonNull final Spannable buffer, + @NonNull final MotionEvent event) { + final int action = event.getAction(); + + if (action == MotionEvent.ACTION_CANCEL && longClickHandler != null) { + longClickHandler.removeCallbacksAndMessages(null); + } + + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) { + final int offset = getOffsetForHorizontalLine(widget, event); + final LongPressClickableSpan[] link = buffer.getSpans(offset, offset, + LongPressClickableSpan.class); + + if (link.length != 0) { + if (action == MotionEvent.ACTION_UP) { + if (longClickHandler != null) { + longClickHandler.removeCallbacksAndMessages(null); + } + if (!isLongPressed) { + link[0].onClick(widget); + } + isLongPressed = false; + } else { + Selection.setSelection(buffer, buffer.getSpanStart(link[0]), + buffer.getSpanEnd(link[0])); + if (longClickHandler != null) { + longClickHandler.postDelayed(() -> { + link[0].onLongClick(widget); + isLongPressed = true; + }, LONG_PRESS_TIME); + } + } + return true; + } + } + + return super.onTouchEvent(widget, buffer, event); + } + + public static MovementMethod getInstance() { + if (instance == null) { + instance = new LongPressLinkMovementMethod(); + instance.longClickHandler = new Handler(Looper.myLooper()); + } + + return instance; + } +} diff --git a/app/src/main/java/org/schabi/newpipe/views/NewPipeEditText.java b/app/src/main/java/org/schabi/newpipe/views/NewPipeEditText.java index 2adc28d0e..f0993055e 100644 --- a/app/src/main/java/org/schabi/newpipe/views/NewPipeEditText.java +++ b/app/src/main/java/org/schabi/newpipe/views/NewPipeEditText.java @@ -13,9 +13,10 @@ import org.schabi.newpipe.util.external_communication.ShareUtils; /** * An {@link AppCompatEditText} which uses {@link ShareUtils#shareText(Context, String, String)} * when sharing selected text by using the {@code Share} command of the floating actions. + * *

        - * This allows NewPipe to show Android share sheet instead of EMUI share sheet when sharing text - * from {@link AppCompatEditText} on EMUI devices. + * This class allows NewPipe to show Android share sheet instead of EMUI share sheet when sharing + * text from {@link AppCompatEditText} on EMUI devices. *

        */ public class NewPipeEditText extends AppCompatEditText { diff --git a/app/src/main/java/org/schabi/newpipe/views/NewPipeTextView.java b/app/src/main/java/org/schabi/newpipe/views/NewPipeTextView.java index 8fdac32db..dd3f20f40 100644 --- a/app/src/main/java/org/schabi/newpipe/views/NewPipeTextView.java +++ b/app/src/main/java/org/schabi/newpipe/views/NewPipeTextView.java @@ -1,6 +1,7 @@ package org.schabi.newpipe.views; import android.content.Context; +import android.text.method.MovementMethod; import android.util.AttributeSet; import androidx.annotation.NonNull; @@ -13,9 +14,11 @@ import org.schabi.newpipe.util.external_communication.ShareUtils; /** * An {@link AppCompatTextView} which uses {@link ShareUtils#shareText(Context, String, String)} * when sharing selected text by using the {@code Share} command of the floating actions. + * *

        - * This allows NewPipe to show Android share sheet instead of EMUI share sheet when sharing text - * from {@link AppCompatTextView} on EMUI devices. + * This class allows NewPipe to show Android share sheet instead of EMUI share sheet when sharing + * text from {@link AppCompatTextView} on EMUI devices and also to keep movement method set when a + * text change occurs, if the text cannot be selected and text links are clickable. *

        */ public class NewPipeTextView extends AppCompatTextView { @@ -34,6 +37,16 @@ public class NewPipeTextView extends AppCompatTextView { super(context, attrs, defStyleAttr); } + @Override + public void setText(final CharSequence text, final BufferType type) { + // We need to set again the movement method after a text change because Android resets the + // movement method to the default one in the case where the text cannot be selected and + // text links are clickable (which is the default case in NewPipe). + final MovementMethod movementMethod = this.getMovementMethod(); + super.setText(text, type); + setMovementMethod(movementMethod); + } + @Override public boolean onTextContextMenuItem(final int id) { if (id == android.R.id.shareText) { diff --git a/app/src/main/res/layout/item_metadata.xml b/app/src/main/res/layout/item_metadata.xml index 31dedd880..251b9e832 100644 --- a/app/src/main/res/layout/item_metadata.xml +++ b/app/src/main/res/layout/item_metadata.xml @@ -6,7 +6,7 @@ android:layout_height="wrap_content" android:paddingVertical="6dp"> - - Importer ou exporter des abonnements à partir du menu
        Vous utilisez la dernière version de NewPipe Appuyez pour télécharger %s + Échec de la copie dans le presse-papiers \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c9e0bb492..2deb14d8d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -327,6 +327,7 @@ Calculating hash Please wait… Copied to clipboard + Failed to copy to clipboard Please define a download folder later in settings No download folder set yet, choose the default download folder now This permission is needed to\nopen in popup mode From 22c201be3967cf98e9c9a0a0f9463d5ec3737e0f Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 15 Jan 2023 11:51:07 +0100 Subject: [PATCH 119/147] Create text subpackage in util --- .../newpipe/fragments/detail/DescriptionFragment.java | 2 +- .../info_list/holder/CommentsMiniInfoItemHolder.java | 4 ++-- .../java/org/schabi/newpipe/util/ExtractorHelper.java | 2 +- .../util/{ => text}/CommentTextOnTouchListener.java | 5 ++--- .../HashtagLongPressClickableSpan.java | 4 ++-- .../InternalUrlsHandler.java | 2 +- .../{views => util/text}/LongPressClickableSpan.java | 2 +- .../{views => util/text}/LongPressLinkMovementMethod.java | 4 ++-- .../{external_communication => text}/TextLinkifier.java | 8 +++----- .../TimestampExtractor.java | 2 +- .../TimestampLongPressClickableSpan.java | 6 +++--- .../org/schabi/newpipe/util/{ => text}/TouchUtils.java | 2 +- .../UrlLongPressClickableSpan.java | 4 ++-- .../external_communication/TimestampExtractorTest.java | 1 + 14 files changed, 23 insertions(+), 25 deletions(-) rename app/src/main/java/org/schabi/newpipe/util/{ => text}/CommentTextOnTouchListener.java (91%) rename app/src/main/java/org/schabi/newpipe/util/{external_communication => text}/HashtagLongPressClickableSpan.java (90%) rename app/src/main/java/org/schabi/newpipe/util/{external_communication => text}/InternalUrlsHandler.java (99%) rename app/src/main/java/org/schabi/newpipe/{views => util/text}/LongPressClickableSpan.java (86%) rename app/src/main/java/org/schabi/newpipe/{views => util/text}/LongPressLinkMovementMethod.java (95%) rename app/src/main/java/org/schabi/newpipe/util/{external_communication => text}/TextLinkifier.java (98%) rename app/src/main/java/org/schabi/newpipe/util/{external_communication => text}/TimestampExtractor.java (98%) rename app/src/main/java/org/schabi/newpipe/util/{external_communication => text}/TimestampLongPressClickableSpan.java (93%) rename app/src/main/java/org/schabi/newpipe/util/{ => text}/TouchUtils.java (96%) rename app/src/main/java/org/schabi/newpipe/util/{external_communication => text}/UrlLongPressClickableSpan.java (90%) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java index 96e01c622..ea89424ec 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java @@ -29,7 +29,7 @@ import org.schabi.newpipe.extractor.stream.StreamInfo; import org.schabi.newpipe.util.Localization; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.external_communication.ShareUtils; -import org.schabi.newpipe.util.external_communication.TextLinkifier; +import org.schabi.newpipe.util.text.TextLinkifier; import icepick.State; import io.reactivex.rxjava3.disposables.CompositeDisposable; diff --git a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java b/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java index 92e37afd8..69aba8c4f 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java @@ -20,13 +20,13 @@ import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.comments.CommentsInfoItem; import org.schabi.newpipe.info_list.InfoItemBuilder; import org.schabi.newpipe.local.history.HistoryRecordManager; -import org.schabi.newpipe.util.CommentTextOnTouchListener; +import org.schabi.newpipe.util.text.CommentTextOnTouchListener; import org.schabi.newpipe.util.DeviceUtils; import org.schabi.newpipe.util.Localization; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.PicassoHelper; import org.schabi.newpipe.util.external_communication.ShareUtils; -import org.schabi.newpipe.util.external_communication.TimestampExtractor; +import org.schabi.newpipe.util.text.TimestampExtractor; import java.util.Objects; diff --git a/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java b/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java index 27009efd1..2123010aa 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java @@ -51,7 +51,7 @@ import org.schabi.newpipe.extractor.search.SearchInfo; import org.schabi.newpipe.extractor.stream.StreamInfo; import org.schabi.newpipe.extractor.stream.StreamInfoItem; import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor; -import org.schabi.newpipe.util.external_communication.TextLinkifier; +import org.schabi.newpipe.util.text.TextLinkifier; import java.util.Collections; import java.util.List; diff --git a/app/src/main/java/org/schabi/newpipe/util/CommentTextOnTouchListener.java b/app/src/main/java/org/schabi/newpipe/util/text/CommentTextOnTouchListener.java similarity index 91% rename from app/src/main/java/org/schabi/newpipe/util/CommentTextOnTouchListener.java rename to app/src/main/java/org/schabi/newpipe/util/text/CommentTextOnTouchListener.java index ff8875e5a..4ced4be77 100644 --- a/app/src/main/java/org/schabi/newpipe/util/CommentTextOnTouchListener.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/CommentTextOnTouchListener.java @@ -1,6 +1,6 @@ -package org.schabi.newpipe.util; +package org.schabi.newpipe.util.text; -import static org.schabi.newpipe.util.TouchUtils.getOffsetForHorizontalLine; +import static org.schabi.newpipe.util.text.TouchUtils.getOffsetForHorizontalLine; import android.text.Selection; import android.text.Spannable; @@ -12,7 +12,6 @@ import android.view.View; import android.widget.TextView; import org.schabi.newpipe.util.external_communication.ShareUtils; -import org.schabi.newpipe.util.external_communication.InternalUrlsHandler; import io.reactivex.rxjava3.disposables.CompositeDisposable; diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/HashtagLongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/util/text/HashtagLongPressClickableSpan.java similarity index 90% rename from app/src/main/java/org/schabi/newpipe/util/external_communication/HashtagLongPressClickableSpan.java rename to app/src/main/java/org/schabi/newpipe/util/text/HashtagLongPressClickableSpan.java index 9acedc12b..4ca6c326e 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/HashtagLongPressClickableSpan.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/HashtagLongPressClickableSpan.java @@ -1,4 +1,4 @@ -package org.schabi.newpipe.util.external_communication; +package org.schabi.newpipe.util.text; import android.content.Context; import android.view.View; @@ -7,7 +7,7 @@ import androidx.annotation.NonNull; import org.schabi.newpipe.extractor.Info; import org.schabi.newpipe.util.NavigationHelper; -import org.schabi.newpipe.views.LongPressClickableSpan; +import org.schabi.newpipe.util.external_communication.ShareUtils; final class HashtagLongPressClickableSpan extends LongPressClickableSpan { diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/InternalUrlsHandler.java b/app/src/main/java/org/schabi/newpipe/util/text/InternalUrlsHandler.java similarity index 99% rename from app/src/main/java/org/schabi/newpipe/util/external_communication/InternalUrlsHandler.java rename to app/src/main/java/org/schabi/newpipe/util/text/InternalUrlsHandler.java index c46e6636d..b87618922 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/InternalUrlsHandler.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/InternalUrlsHandler.java @@ -1,4 +1,4 @@ -package org.schabi.newpipe.util.external_communication; +package org.schabi.newpipe.util.text; import android.content.Context; import android.util.Log; diff --git a/app/src/main/java/org/schabi/newpipe/views/LongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/util/text/LongPressClickableSpan.java similarity index 86% rename from app/src/main/java/org/schabi/newpipe/views/LongPressClickableSpan.java rename to app/src/main/java/org/schabi/newpipe/util/text/LongPressClickableSpan.java index d6b927a30..5c94a5850 100644 --- a/app/src/main/java/org/schabi/newpipe/views/LongPressClickableSpan.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/LongPressClickableSpan.java @@ -1,4 +1,4 @@ -package org.schabi.newpipe.views; +package org.schabi.newpipe.util.text; import android.text.style.ClickableSpan; import android.view.View; diff --git a/app/src/main/java/org/schabi/newpipe/views/LongPressLinkMovementMethod.java b/app/src/main/java/org/schabi/newpipe/util/text/LongPressLinkMovementMethod.java similarity index 95% rename from app/src/main/java/org/schabi/newpipe/views/LongPressLinkMovementMethod.java rename to app/src/main/java/org/schabi/newpipe/util/text/LongPressLinkMovementMethod.java index 5f90284fc..bd57621cb 100644 --- a/app/src/main/java/org/schabi/newpipe/views/LongPressLinkMovementMethod.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/LongPressLinkMovementMethod.java @@ -1,6 +1,6 @@ -package org.schabi.newpipe.views; +package org.schabi.newpipe.util.text; -import static org.schabi.newpipe.util.TouchUtils.getOffsetForHorizontalLine; +import static org.schabi.newpipe.util.text.TouchUtils.getOffsetForHorizontalLine; import android.os.Handler; import android.os.Looper; diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java b/app/src/main/java/org/schabi/newpipe/util/text/TextLinkifier.java similarity index 98% rename from app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java rename to app/src/main/java/org/schabi/newpipe/util/text/TextLinkifier.java index 1bbd37cf5..b7220d22f 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/TextLinkifier.java @@ -1,4 +1,4 @@ -package org.schabi.newpipe.util.external_communication; +package org.schabi.newpipe.util.text; import android.content.Context; import android.text.SpannableStringBuilder; @@ -15,8 +15,7 @@ import androidx.core.text.HtmlCompat; import org.schabi.newpipe.extractor.Info; import org.schabi.newpipe.extractor.stream.StreamInfo; import org.schabi.newpipe.util.NavigationHelper; -import org.schabi.newpipe.views.LongPressClickableSpan; -import org.schabi.newpipe.views.LongPressLinkMovementMethod; +import org.schabi.newpipe.util.external_communication.ShareUtils; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -88,8 +87,7 @@ public final class TextLinkifier { @NonNull final CompositeDisposable disposables) { textView.setAutoLinkMask(Linkify.WEB_URLS); textView.setText(plainTextBlock, TextView.BufferType.SPANNABLE); - changeIntentsOfDescriptionLinks(textView, textView.getText(), relatedInfo, disposables - ); + changeIntentsOfDescriptionLinks(textView, textView.getText(), relatedInfo, disposables); } /** diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampExtractor.java b/app/src/main/java/org/schabi/newpipe/util/text/TimestampExtractor.java similarity index 98% rename from app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampExtractor.java rename to app/src/main/java/org/schabi/newpipe/util/text/TimestampExtractor.java index d0862b750..be603f41a 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/TimestampExtractor.java @@ -1,4 +1,4 @@ -package org.schabi.newpipe.util.external_communication; +package org.schabi.newpipe.util.text; import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampLongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/util/text/TimestampLongPressClickableSpan.java similarity index 93% rename from app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampLongPressClickableSpan.java rename to app/src/main/java/org/schabi/newpipe/util/text/TimestampLongPressClickableSpan.java index 0ecbc8367..48110312d 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/TimestampLongPressClickableSpan.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/TimestampLongPressClickableSpan.java @@ -1,6 +1,6 @@ -package org.schabi.newpipe.util.external_communication; +package org.schabi.newpipe.util.text; -import static org.schabi.newpipe.util.external_communication.InternalUrlsHandler.playOnPopup; +import static org.schabi.newpipe.util.text.InternalUrlsHandler.playOnPopup; import android.content.Context; import android.view.View; @@ -10,7 +10,7 @@ import androidx.annotation.NonNull; import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.stream.StreamInfo; -import org.schabi.newpipe.views.LongPressClickableSpan; +import org.schabi.newpipe.util.external_communication.ShareUtils; import io.reactivex.rxjava3.disposables.CompositeDisposable; diff --git a/app/src/main/java/org/schabi/newpipe/util/TouchUtils.java b/app/src/main/java/org/schabi/newpipe/util/text/TouchUtils.java similarity index 96% rename from app/src/main/java/org/schabi/newpipe/util/TouchUtils.java rename to app/src/main/java/org/schabi/newpipe/util/text/TouchUtils.java index 23bc5a401..5c0db20a3 100644 --- a/app/src/main/java/org/schabi/newpipe/util/TouchUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/TouchUtils.java @@ -1,4 +1,4 @@ -package org.schabi.newpipe.util; +package org.schabi.newpipe.util.text; import android.text.Layout; import android.view.MotionEvent; diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/UrlLongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/util/text/UrlLongPressClickableSpan.java similarity index 90% rename from app/src/main/java/org/schabi/newpipe/util/external_communication/UrlLongPressClickableSpan.java rename to app/src/main/java/org/schabi/newpipe/util/text/UrlLongPressClickableSpan.java index f6cee708f..eb0d7425e 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/UrlLongPressClickableSpan.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/UrlLongPressClickableSpan.java @@ -1,11 +1,11 @@ -package org.schabi.newpipe.util.external_communication; +package org.schabi.newpipe.util.text; import android.content.Context; import android.view.View; import androidx.annotation.NonNull; -import org.schabi.newpipe.views.LongPressClickableSpan; +import org.schabi.newpipe.util.external_communication.ShareUtils; import io.reactivex.rxjava3.disposables.CompositeDisposable; diff --git a/app/src/test/java/org/schabi/newpipe/util/external_communication/TimestampExtractorTest.java b/app/src/test/java/org/schabi/newpipe/util/external_communication/TimestampExtractorTest.java index 10e23883f..47853bd7f 100644 --- a/app/src/test/java/org/schabi/newpipe/util/external_communication/TimestampExtractorTest.java +++ b/app/src/test/java/org/schabi/newpipe/util/external_communication/TimestampExtractorTest.java @@ -3,6 +3,7 @@ package org.schabi.newpipe.util.external_communication; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; +import org.schabi.newpipe.util.text.TimestampExtractor; import java.time.Duration; import java.util.Arrays; From 7924bb5b6b039509931d5035c172645495f5391d Mon Sep 17 00:00:00 2001 From: Mahendran Date: Thu, 3 Nov 2022 00:26:10 +0530 Subject: [PATCH 120/147] Thumbnails used in NewPipe are small (list/grid) mode. This PR facilitates full width thumbnails and dubbed as card mode. --- .../fragments/list/BaseListFragment.java | 31 +++--- .../list/comments/CommentsFragment.java | 5 +- .../list/playlist/PlaylistFragment.java | 2 + .../list/videos/RelatedItemsFragment.java | 10 +- .../newpipe/info_list/InfoListAdapter.java | 46 +++++++-- .../newpipe/info_list/ItemViewMode.java | 23 +++++ .../holder/PlaylistCardInfoItemHolder.java | 17 ++++ .../holder/StreamCardInfoItemHolder.java | 16 +++ .../newpipe/local/BaseLocalListFragment.java | 24 +++-- .../newpipe/local/LocalItemListAdapter.java | 69 ++++++++++--- .../schabi/newpipe/local/feed/FeedFragment.kt | 11 ++- .../newpipe/local/feed/item/StreamItem.kt | 3 +- .../holder/LocalPlaylistCardItemHolder.java | 17 ++++ .../LocalPlaylistStreamCardItemHolder.java | 17 ++++ .../LocalStatisticStreamCardItemHolder.java | 13 +++ .../holder/RemotePlaylistCardItemHolder.java | 17 ++++ .../org/schabi/newpipe/util/ThemeHelper.java | 47 ++++++--- .../res/layout/list_playlist_card_item.xml | 92 +++++++++++++++++ .../main/res/layout/list_stream_card_item.xml | 99 +++++++++++++++++++ .../layout/list_stream_playlist_card_item.xml | 96 ++++++++++++++++++ app/src/main/res/values-w820dp/dimens.xml | 3 + app/src/main/res/values/dimens.xml | 8 ++ app/src/main/res/values/settings_keys.xml | 3 + app/src/main/res/values/strings.xml | 1 + 24 files changed, 601 insertions(+), 69 deletions(-) create mode 100644 app/src/main/java/org/schabi/newpipe/info_list/ItemViewMode.java create mode 100644 app/src/main/java/org/schabi/newpipe/info_list/holder/PlaylistCardInfoItemHolder.java create mode 100644 app/src/main/java/org/schabi/newpipe/info_list/holder/StreamCardInfoItemHolder.java create mode 100644 app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistCardItemHolder.java create mode 100644 app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistStreamCardItemHolder.java create mode 100644 app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamCardItemHolder.java create mode 100644 app/src/main/java/org/schabi/newpipe/local/holder/RemotePlaylistCardItemHolder.java create mode 100644 app/src/main/res/layout/list_playlist_card_item.xml create mode 100644 app/src/main/res/layout/list_stream_card_item.xml create mode 100644 app/src/main/res/layout/list_stream_playlist_card_item.xml diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java index 1212cf4ad..0b0acff86 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java @@ -26,6 +26,7 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem; import org.schabi.newpipe.fragments.BaseStateFragment; import org.schabi.newpipe.fragments.OnScrollBelowItemsListener; import org.schabi.newpipe.info_list.InfoListAdapter; +import org.schabi.newpipe.info_list.ItemViewMode; import org.schabi.newpipe.info_list.dialog.InfoItemDialog; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.OnClickGesture; @@ -91,11 +92,7 @@ public abstract class BaseListFragment extends BaseStateFragment if (updateFlags != 0) { if ((updateFlags & LIST_MODE_UPDATE_FLAG) != 0) { - final boolean useGrid = isGridLayout(); - itemsList.setLayoutManager(useGrid - ? getGridLayoutManager() : getListLayoutManager()); - infoListAdapter.setUseGridVariant(useGrid); - infoListAdapter.notifyDataSetChanged(); + refreshItemViewMode(); } updateFlags = 0; } @@ -221,15 +218,23 @@ public abstract class BaseListFragment extends BaseStateFragment return lm; } + /** + * Updates the item view mode based on user preference. + */ + private void refreshItemViewMode() { + final ItemViewMode itemViewMode = getItemViewMode(); + itemsList.setLayoutManager((itemViewMode == ItemViewMode.GRID) + ? getGridLayoutManager() : getListLayoutManager()); + infoListAdapter.setItemViewMode(itemViewMode); + infoListAdapter.notifyDataSetChanged(); + } + @Override protected void initViews(final View rootView, final Bundle savedInstanceState) { super.initViews(rootView, savedInstanceState); - final boolean useGrid = isGridLayout(); itemsList = rootView.findViewById(R.id.items_list); - itemsList.setLayoutManager(useGrid ? getGridLayoutManager() : getListLayoutManager()); - - infoListAdapter.setUseGridVariant(useGrid); + refreshItemViewMode(); final Supplier listHeaderSupplier = getListHeaderSupplier(); if (listHeaderSupplier != null) { @@ -474,7 +479,11 @@ public abstract class BaseListFragment extends BaseStateFragment } } - protected boolean isGridLayout() { - return ThemeHelper.shouldUseGridLayout(activity); + /** + * Returns preferred item view mode. + * @return ItemViewMode + */ + protected ItemViewMode getItemViewMode() { + return ThemeHelper.getItemViewMode(requireContext()); } } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/comments/CommentsFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/comments/CommentsFragment.java index 3b092cc28..5a5f84968 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/comments/CommentsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/comments/CommentsFragment.java @@ -17,6 +17,7 @@ import org.schabi.newpipe.extractor.ListExtractor; import org.schabi.newpipe.extractor.comments.CommentsInfo; import org.schabi.newpipe.extractor.comments.CommentsInfoItem; import org.schabi.newpipe.fragments.list.BaseListInfoFragment; +import org.schabi.newpipe.info_list.ItemViewMode; import org.schabi.newpipe.ktx.ViewUtils; import org.schabi.newpipe.util.ExtractorHelper; @@ -106,7 +107,7 @@ public class CommentsFragment extends BaseListInfoFragment headerSupplier = null; public InfoListAdapter(final Context context) { @@ -114,8 +119,8 @@ public class InfoListAdapter extends RecyclerView.Adapter data) { @@ -234,14 +239,33 @@ public class InfoListAdapter extends RecyclerView.Adapter extends BaseStateFragment super.onResume(); if (updateFlags != 0) { if ((updateFlags & LIST_MODE_UPDATE_FLAG) != 0) { - final boolean useGrid = shouldUseGridLayout(requireContext()); - itemsList.setLayoutManager( - useGrid ? getGridLayoutManager() : getListLayoutManager()); - itemListAdapter.setUseGridVariant(useGrid); - itemListAdapter.notifyDataSetChanged(); + refreshItemViewMode(); } updateFlags = 0; } } + /** + * Updates the item view mode based on user preference. + */ + private void refreshItemViewMode() { + final ItemViewMode itemViewMode = getItemViewMode(requireContext()); + itemsList.setLayoutManager((itemViewMode == ItemViewMode.GRID) + ? getGridLayoutManager() : getListLayoutManager()); + itemListAdapter.setItemViewMode(itemViewMode); + itemListAdapter.notifyDataSetChanged(); + } + /*////////////////////////////////////////////////////////////////////////// // Lifecycle - View //////////////////////////////////////////////////////////////////////////*/ @@ -120,11 +128,9 @@ public abstract class BaseLocalListFragment extends BaseStateFragment itemListAdapter = new LocalItemListAdapter(activity); - final boolean useGrid = shouldUseGridLayout(requireContext()); itemsList = rootView.findViewById(R.id.items_list); - itemsList.setLayoutManager(useGrid ? getGridLayoutManager() : getListLayoutManager()); + refreshItemViewMode(); - itemListAdapter.setUseGridVariant(useGrid); headerRootBinding = getListHeader(); if (headerRootBinding != null) { itemListAdapter.setHeader(headerRootBinding.getRoot()); diff --git a/app/src/main/java/org/schabi/newpipe/local/LocalItemListAdapter.java b/app/src/main/java/org/schabi/newpipe/local/LocalItemListAdapter.java index 05e2fdac0..b9409cb9d 100644 --- a/app/src/main/java/org/schabi/newpipe/local/LocalItemListAdapter.java +++ b/app/src/main/java/org/schabi/newpipe/local/LocalItemListAdapter.java @@ -12,14 +12,19 @@ import androidx.recyclerview.widget.RecyclerView; import org.schabi.newpipe.database.LocalItem; import org.schabi.newpipe.database.stream.model.StreamStateEntity; +import org.schabi.newpipe.info_list.ItemViewMode; import org.schabi.newpipe.local.history.HistoryRecordManager; import org.schabi.newpipe.local.holder.LocalItemHolder; +import org.schabi.newpipe.local.holder.LocalPlaylistCardItemHolder; import org.schabi.newpipe.local.holder.LocalPlaylistGridItemHolder; import org.schabi.newpipe.local.holder.LocalPlaylistItemHolder; +import org.schabi.newpipe.local.holder.LocalPlaylistStreamCardItemHolder; import org.schabi.newpipe.local.holder.LocalPlaylistStreamGridItemHolder; import org.schabi.newpipe.local.holder.LocalPlaylistStreamItemHolder; +import org.schabi.newpipe.local.holder.LocalStatisticStreamCardItemHolder; import org.schabi.newpipe.local.holder.LocalStatisticStreamGridItemHolder; import org.schabi.newpipe.local.holder.LocalStatisticStreamItemHolder; +import org.schabi.newpipe.local.holder.RemotePlaylistCardItemHolder; import org.schabi.newpipe.local.holder.RemotePlaylistGridItemHolder; import org.schabi.newpipe.local.holder.RemotePlaylistItemHolder; import org.schabi.newpipe.util.FallbackViewHolder; @@ -61,11 +66,17 @@ public class LocalItemListAdapter extends RecyclerView.Adapter localItems; @@ -73,9 +84,9 @@ public class LocalItemListAdapter extends RecyclerView.Adapter() { @SuppressLint("StringFormatMatches") private fun handleLoadedState(loadedState: FeedState.LoadedState) { - - val itemVersion = if (shouldUseGridLayout(context)) { - StreamItem.ItemVersion.GRID - } else { - StreamItem.ItemVersion.NORMAL + val itemVersion = when (getItemViewMode(requireContext())) { + ItemViewMode.GRID -> StreamItem.ItemVersion.GRID + ItemViewMode.CARD -> StreamItem.ItemVersion.CARD + else -> StreamItem.ItemVersion.NORMAL } loadedState.items.forEach { it.itemVersion = itemVersion } diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/item/StreamItem.kt b/app/src/main/java/org/schabi/newpipe/local/feed/item/StreamItem.kt index 96d395aa5..d795dcb08 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/item/StreamItem.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/item/StreamItem.kt @@ -42,12 +42,13 @@ data class StreamItem( override fun getId(): Long = stream.uid - enum class ItemVersion { NORMAL, MINI, GRID } + enum class ItemVersion { NORMAL, MINI, GRID, CARD } override fun getLayout(): Int = when (itemVersion) { ItemVersion.NORMAL -> R.layout.list_stream_item ItemVersion.MINI -> R.layout.list_stream_mini_item ItemVersion.GRID -> R.layout.list_stream_grid_item + ItemVersion.CARD -> R.layout.list_stream_card_item } override fun initializeViewBinding(view: View) = ListStreamItemBinding.bind(view) diff --git a/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistCardItemHolder.java b/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistCardItemHolder.java new file mode 100644 index 000000000..33418ec98 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistCardItemHolder.java @@ -0,0 +1,17 @@ +package org.schabi.newpipe.local.holder; + +import android.view.ViewGroup; + +import org.schabi.newpipe.R; +import org.schabi.newpipe.local.LocalItemBuilder; + +/** + * Playlist card layout. + */ +public class LocalPlaylistCardItemHolder extends LocalPlaylistItemHolder { + + public LocalPlaylistCardItemHolder(final LocalItemBuilder infoItemBuilder, + final ViewGroup parent) { + super(infoItemBuilder, R.layout.list_playlist_card_item, parent); + } +} diff --git a/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistStreamCardItemHolder.java b/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistStreamCardItemHolder.java new file mode 100644 index 000000000..7f81a527f --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistStreamCardItemHolder.java @@ -0,0 +1,17 @@ +package org.schabi.newpipe.local.holder; + +import android.view.ViewGroup; + +import org.schabi.newpipe.R; +import org.schabi.newpipe.local.LocalItemBuilder; + +/** + * Local playlist stream UI. This also includes a handle to rearrange the videos. + */ +public class LocalPlaylistStreamCardItemHolder extends LocalPlaylistStreamItemHolder { + + public LocalPlaylistStreamCardItemHolder(final LocalItemBuilder infoItemBuilder, + final ViewGroup parent) { + super(infoItemBuilder, R.layout.list_stream_playlist_card_item, parent); + } +} diff --git a/app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamCardItemHolder.java b/app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamCardItemHolder.java new file mode 100644 index 000000000..4e03d5fb1 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamCardItemHolder.java @@ -0,0 +1,13 @@ +package org.schabi.newpipe.local.holder; + +import android.view.ViewGroup; + +import org.schabi.newpipe.R; +import org.schabi.newpipe.local.LocalItemBuilder; + +public class LocalStatisticStreamCardItemHolder extends LocalStatisticStreamItemHolder { + public LocalStatisticStreamCardItemHolder(final LocalItemBuilder infoItemBuilder, + final ViewGroup parent) { + super(infoItemBuilder, R.layout.list_stream_card_item, parent); + } +} diff --git a/app/src/main/java/org/schabi/newpipe/local/holder/RemotePlaylistCardItemHolder.java b/app/src/main/java/org/schabi/newpipe/local/holder/RemotePlaylistCardItemHolder.java new file mode 100644 index 000000000..74a67c3db --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/local/holder/RemotePlaylistCardItemHolder.java @@ -0,0 +1,17 @@ +package org.schabi.newpipe.local.holder; + +import android.view.ViewGroup; + +import org.schabi.newpipe.R; +import org.schabi.newpipe.local.LocalItemBuilder; + +/** + * Playlist card UI for list item. + */ +public class RemotePlaylistCardItemHolder extends RemotePlaylistItemHolder { + + public RemotePlaylistCardItemHolder(final LocalItemBuilder infoItemBuilder, + final ViewGroup parent) { + super(infoItemBuilder, R.layout.list_playlist_card_item, parent); + } +} diff --git a/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java b/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java index ea22e9368..ab74e0305 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java @@ -41,6 +41,7 @@ import org.schabi.newpipe.R; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.exceptions.ExtractionException; +import org.schabi.newpipe.info_list.ItemViewMode; public final class ThemeHelper { private ThemeHelper() { @@ -332,7 +333,6 @@ public final class ThemeHelper { } } - /** * Returns whether the grid layout or the list layout should be used. If the user set "auto" * mode in settings, decides based on screen orientation (landscape) and size. @@ -341,19 +341,8 @@ public final class ThemeHelper { * @return true:use grid layout, false:use list layout */ public static boolean shouldUseGridLayout(final Context context) { - final String listMode = PreferenceManager.getDefaultSharedPreferences(context) - .getString(context.getString(R.string.list_view_mode_key), - context.getString(R.string.list_view_mode_value)); - - if (listMode.equals(context.getString(R.string.list_view_mode_list_key))) { - return false; - } else if (listMode.equals(context.getString(R.string.list_view_mode_grid_key))) { - return true; - } else /* listMode.equals("auto") */ { - final Configuration configuration = context.getResources().getConfiguration(); - return configuration.orientation == Configuration.ORIENTATION_LANDSCAPE - && configuration.isLayoutSizeAtLeast(Configuration.SCREENLAYOUT_SIZE_LARGE); - } + final ItemViewMode mode = getItemViewMode(context); + return mode == ItemViewMode.GRID; } /** @@ -367,6 +356,36 @@ public final class ThemeHelper { context.getResources().getDimensionPixelSize(R.dimen.channel_item_grid_min_width)); } + /** + * Returns item view mode. + * @param context to read preference and parse string + * @return Returns one of ItemViewMode + */ + public static ItemViewMode getItemViewMode(final Context context) { + final String listMode = PreferenceManager.getDefaultSharedPreferences(context) + .getString(context.getString(R.string.list_view_mode_key), + context.getString(R.string.list_view_mode_value)); + final ItemViewMode result; + if (listMode.equals(context.getString(R.string.list_view_mode_list_key))) { + result = ItemViewMode.LIST; + } else if (listMode.equals(context.getString(R.string.list_view_mode_grid_key))) { + result = ItemViewMode.GRID; + } else if (listMode.equals(context.getString(R.string.list_view_mode_card_key))) { + result = ItemViewMode.CARD; + } else { + // Auto mode - evaluate whether to use Grid based on screen real estate. + final Configuration configuration = context.getResources().getConfiguration(); + final boolean useGrid = configuration.orientation == Configuration.ORIENTATION_LANDSCAPE + && configuration.isLayoutSizeAtLeast(Configuration.SCREENLAYOUT_SIZE_LARGE); + if (useGrid) { + result = ItemViewMode.GRID; + } else { + result = ItemViewMode.LIST; + } + } + return result; + } + /** * Calculates the number of grid stream info items that can fit horizontally on the screen. The * width of a grid stream info item is obtained from the thumbnail width plus the right and left diff --git a/app/src/main/res/layout/list_playlist_card_item.xml b/app/src/main/res/layout/list_playlist_card_item.xml new file mode 100644 index 000000000..c7dd4f17c --- /dev/null +++ b/app/src/main/res/layout/list_playlist_card_item.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/list_stream_card_item.xml b/app/src/main/res/layout/list_stream_card_item.xml new file mode 100644 index 000000000..968dca082 --- /dev/null +++ b/app/src/main/res/layout/list_stream_card_item.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/list_stream_playlist_card_item.xml b/app/src/main/res/layout/list_stream_playlist_card_item.xml new file mode 100644 index 000000000..9cc6b326c --- /dev/null +++ b/app/src/main/res/layout/list_stream_playlist_card_item.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml index 63fc81644..817cd8f85 100644 --- a/app/src/main/res/values-w820dp/dimens.xml +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -3,4 +3,7 @@ (such as screen margins) for screens with more than 820dp of available width. This would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> 64dp + + 280dp + 160dp diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 5693ec7c4..679dc05eb 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,5 +1,13 @@ + + 16dp + 8dp + 32dp + 8dp + 4dp + 2dp + 120dp 16dp diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 17ed547a0..1a711ad17 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -1263,16 +1263,19 @@ auto list grid + card @string/list_view_mode_auto_key @string/list_view_mode_list_key @string/list_view_mode_grid_key + @string/list_view_mode_card_key @string/auto @string/list @string/grid + @string/card tablet_mode diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2deb14d8d..5a4ce92f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -550,6 +550,7 @@ List view mode List Grid + Card Auto Seekbar thumbnail preview From 489df0ed7deb3f3f008e9d74e194d381f3b5880b Mon Sep 17 00:00:00 2001 From: Stypox Date: Thu, 5 Jan 2023 19:01:38 +0100 Subject: [PATCH 121/147] Update NewPipeExtractor and properly linkify comments --- app/build.gradle | 2 +- .../fragments/detail/DescriptionFragment.java | 31 +-- .../holder/CommentsMiniInfoItemHolder.java | 134 +++++----- .../schabi/newpipe/util/ExtractorHelper.java | 6 +- .../util/text/CommentTextOnTouchListener.java | 30 +-- .../text/HashtagLongPressClickableSpan.java | 10 +- .../newpipe/util/text/TextLinkifier.java | 247 ++++++++++++------ .../text/TimestampLongPressClickableSpan.java | 35 +-- 8 files changed, 278 insertions(+), 217 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6066bce43..a76d986fb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -187,7 +187,7 @@ dependencies { // name and the commit hash with the commit hash of the (pushed) commit you want to test // This works thanks to JitPack: https://jitpack.io/ implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751' - implementation 'com.github.TeamNewPipe:NewPipeExtractor:2211a24b6934a8a8cdf5547ea1b52daa4cb5de6c' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:ff94e9f30bc5d7831734cc85ecebe7d30ac9c040' implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0' /** Checkstyle **/ diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java index ea89424ec..d364c0c0f 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java @@ -4,6 +4,7 @@ import static android.text.TextUtils.isEmpty; import static org.schabi.newpipe.extractor.stream.StreamExtractor.NO_AGE_LIMIT; import static org.schabi.newpipe.extractor.utils.Utils.isBlank; import static org.schabi.newpipe.util.Localization.getAppLocale; +import static org.schabi.newpipe.util.text.TextLinkifier.SET_LINK_MOVEMENT_METHOD; import android.os.Bundle; import android.view.LayoutInflater; @@ -112,7 +113,10 @@ public class DescriptionFragment extends BaseFragment { private void disableDescriptionSelection() { // show description content again, otherwise some links are not clickable - loadDescriptionContent(); + TextLinkifier.fromDescription(binding.detailDescriptionView, + streamInfo.getDescription(), HtmlCompat.FROM_HTML_MODE_LEGACY, + streamInfo.getService(), streamInfo.getUrl(), + descriptionDisposables, SET_LINK_MOVEMENT_METHOD); binding.detailDescriptionNoteView.setVisibility(View.GONE); binding.detailDescriptionView.setTextIsSelectable(false); @@ -123,27 +127,6 @@ public class DescriptionFragment extends BaseFragment { binding.detailSelectDescriptionButton.setImageResource(R.drawable.ic_select_all); } - private void loadDescriptionContent() { - final Description description = streamInfo.getDescription(); - switch (description.getType()) { - case Description.HTML: - TextLinkifier.createLinksFromHtmlBlock(binding.detailDescriptionView, - description.getContent(), HtmlCompat.FROM_HTML_MODE_LEGACY, streamInfo, - descriptionDisposables); - break; - case Description.MARKDOWN: - TextLinkifier.createLinksFromMarkdownText(binding.detailDescriptionView, - description.getContent(), streamInfo, descriptionDisposables); - break; - case Description.PLAIN_TEXT: - default: - TextLinkifier.createLinksFromPlainText(binding.detailDescriptionView, - description.getContent(), streamInfo, descriptionDisposables); - break; - } - } - - private void setupMetadata(final LayoutInflater inflater, final LinearLayout layout) { addMetadataItem(inflater, layout, false, R.string.metadata_category, @@ -193,8 +176,8 @@ public class DescriptionFragment extends BaseFragment { }); if (linkifyContent) { - TextLinkifier.createLinksFromPlainText(itemBinding.metadataContentView, content, - null, descriptionDisposables); + TextLinkifier.fromPlainText(itemBinding.metadataContentView, content, null, null, + descriptionDisposables, SET_LINK_MOVEMENT_METHOD); } else { itemBinding.metadataContentView.setText(content); } diff --git a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java b/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java index 69aba8c4f..fe04ac7ee 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java @@ -1,9 +1,10 @@ package org.schabi.newpipe.info_list.holder; +import android.graphics.Paint; +import android.text.Layout; import android.text.TextUtils; import android.text.method.LinkMovementMethod; import android.text.style.URLSpan; -import android.text.util.Linkify; import android.util.Log; import android.view.View; import android.view.ViewGroup; @@ -11,33 +12,43 @@ import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; +import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; -import androidx.core.text.util.LinkifyCompat; +import androidx.core.text.HtmlCompat; import org.schabi.newpipe.R; import org.schabi.newpipe.error.ErrorUtil; import org.schabi.newpipe.extractor.InfoItem; +import org.schabi.newpipe.extractor.NewPipe; +import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.comments.CommentsInfoItem; +import org.schabi.newpipe.extractor.exceptions.ExtractionException; +import org.schabi.newpipe.extractor.stream.Description; import org.schabi.newpipe.info_list.InfoItemBuilder; import org.schabi.newpipe.local.history.HistoryRecordManager; -import org.schabi.newpipe.util.text.CommentTextOnTouchListener; import org.schabi.newpipe.util.DeviceUtils; import org.schabi.newpipe.util.Localization; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.PicassoHelper; import org.schabi.newpipe.util.external_communication.ShareUtils; -import org.schabi.newpipe.util.text.TimestampExtractor; +import org.schabi.newpipe.util.text.CommentTextOnTouchListener; +import org.schabi.newpipe.util.text.TextLinkifier; -import java.util.Objects; +import java.util.function.Consumer; + +import io.reactivex.rxjava3.disposables.CompositeDisposable; public class CommentsMiniInfoItemHolder extends InfoItemHolder { private static final String TAG = "CommentsMiniIIHolder"; + private static final String ELLIPSIS = "…"; private static final int COMMENT_DEFAULT_LINES = 2; private static final int COMMENT_EXPANDED_LINES = 1000; private final int commentHorizontalPadding; private final int commentVerticalPadding; + private final float ellipsisWidthPx; private final RelativeLayout itemRoot; private final ImageView itemThumbnailView; @@ -45,7 +56,9 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder { private final TextView itemLikesCountView; private final TextView itemPublishedTime; - private String commentText; + private final CompositeDisposable disposables = new CompositeDisposable(); + private Description commentText; + private StreamingService streamService; private String streamUrl; CommentsMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, final int layoutId, @@ -62,6 +75,10 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder { .getResources().getDimension(R.dimen.comments_horizontal_padding); commentVerticalPadding = (int) infoItemBuilder.getContext() .getResources().getDimension(R.dimen.comments_vertical_padding); + + final Paint paint = new Paint(); + paint.setTextSize(itemContentView.getTextSize()); + ellipsisWidthPx = paint.measureText(ELLIPSIS); } public CommentsMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, @@ -91,18 +108,20 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder { itemThumbnailView.setOnClickListener(view -> openCommentAuthor(item)); - streamUrl = item.getUrl(); - - itemContentView.setLines(COMMENT_DEFAULT_LINES); - commentText = item.getCommentText(); - itemContentView.setText(commentText, TextView.BufferType.SPANNABLE); - itemContentView.setOnTouchListener(CommentTextOnTouchListener.INSTANCE); - - if (itemContentView.getLineCount() == 0) { - itemContentView.post(this::ellipsize); - } else { - ellipsize(); + try { + streamService = NewPipe.getService(item.getServiceId()); + } catch (final ExtractionException e) { + // should never happen + ErrorUtil.showUiErrorSnackbar(itemBuilder.getContext(), "Getting StreamingService", e); + Log.w(TAG, "Cannot obtain service from comment service id, defaulting to YouTube", e); + streamService = ServiceList.YouTube; } + streamUrl = item.getUrl(); + commentText = item.getCommentText(); + ellipsize(); + + //noinspection ClickableViewAccessibility + itemContentView.setOnTouchListener(CommentTextOnTouchListener.INSTANCE); if (item.getLikeCount() >= 0) { itemLikesCountView.setText( @@ -132,7 +151,8 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder { if (DeviceUtils.isTv(itemBuilder.getContext())) { openCommentAuthor(item); } else { - ShareUtils.copyToClipboard(itemBuilder.getContext(), commentText); + ShareUtils.copyToClipboard(itemBuilder.getContext(), + itemContentView.getText().toString()); } return true; }); @@ -172,7 +192,7 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder { return urls != null && urls.length != 0; } - private void determineLinkFocus() { + private void determineMovementMethod() { if (shouldFocusLinks()) { allowLinkFocus(); } else { @@ -181,63 +201,51 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder { } private void ellipsize() { - boolean hasEllipsis = false; + linkifyCommentContentView(v -> { + boolean hasEllipsis = false; - if (itemContentView.getLineCount() > COMMENT_DEFAULT_LINES) { - final int endOfLastLine = itemContentView - .getLayout() - .getLineEnd(COMMENT_DEFAULT_LINES - 1); - int end = itemContentView.getText().toString().lastIndexOf(' ', endOfLastLine - 2); - if (end == -1) { - end = Math.max(endOfLastLine - 2, 0); + if (itemContentView.getLineCount() > COMMENT_DEFAULT_LINES) { + final int endOfLastLine = itemContentView + .getLayout() + .getLineEnd(COMMENT_DEFAULT_LINES - 1); + int end = itemContentView.getText().toString().lastIndexOf(' ', endOfLastLine - 2); + if (end == -1) { + end = Math.max(endOfLastLine - 2, 0); + } + final String newVal = itemContentView.getText().subSequence(0, end) + " …"; + itemContentView.setText(newVal); + hasEllipsis = true; } - final String newVal = itemContentView.getText().subSequence(0, end) + " …"; - itemContentView.setText(newVal); - hasEllipsis = true; - } - linkify(); - - if (hasEllipsis) { - denyLinkFocus(); - } else { - determineLinkFocus(); - } + itemContentView.setMaxLines(COMMENT_DEFAULT_LINES); + if (hasEllipsis) { + denyLinkFocus(); + } else { + determineMovementMethod(); + } + }); } private void toggleEllipsize() { - if (itemContentView.getText().toString().equals(commentText)) { - if (itemContentView.getLineCount() > COMMENT_DEFAULT_LINES) { - ellipsize(); - } - } else { + final CharSequence text = itemContentView.getText(); + if (text.charAt(text.length() - 1) == ELLIPSIS.charAt(0)) { expand(); + } else if (itemContentView.getLineCount() > COMMENT_DEFAULT_LINES) { + ellipsize(); } } private void expand() { itemContentView.setMaxLines(COMMENT_EXPANDED_LINES); - itemContentView.setText(commentText); - linkify(); - determineLinkFocus(); + linkifyCommentContentView(v -> determineMovementMethod()); } - private void linkify() { - LinkifyCompat.addLinks(itemContentView, Linkify.WEB_URLS); - LinkifyCompat.addLinks(itemContentView, TimestampExtractor.TIMESTAMPS_PATTERN, null, null, - (match, url) -> { - try { - final var timestampMatch = TimestampExtractor - .getTimestampFromMatcher(match, commentText); - if (timestampMatch == null) { - return url; - } - return streamUrl + url.replace(Objects.requireNonNull(match.group(0)), - "#timestamp=" + timestampMatch.seconds()); - } catch (final Exception ex) { - Log.e(TAG, "Unable to process url='" + url + "' as timestampLink", ex); - return url; - } - }); + private void linkifyCommentContentView(@Nullable final Consumer onCompletion) { + disposables.clear(); + if (commentText != null) { + TextLinkifier.fromDescription(itemContentView, commentText, + HtmlCompat.FROM_HTML_MODE_LEGACY, streamService, streamUrl, disposables, + onCompletion); + } } } diff --git a/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java b/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java index 2123010aa..d5d472d6f 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java @@ -20,6 +20,7 @@ package org.schabi.newpipe.util; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.util.text.TextLinkifier.SET_LINK_MOVEMENT_METHOD; import android.content.Context; import android.util.Log; @@ -319,8 +320,9 @@ public final class ExtractorHelper { } metaInfoSeparator.setVisibility(View.VISIBLE); - TextLinkifier.createLinksFromHtmlBlock(metaInfoTextView, stringBuilder.toString(), - HtmlCompat.FROM_HTML_SEPARATOR_LINE_BREAK_HEADING, null, disposables); + TextLinkifier.fromHtml(metaInfoTextView, stringBuilder.toString(), + HtmlCompat.FROM_HTML_SEPARATOR_LINE_BREAK_HEADING, null, null, disposables, + SET_LINK_MOVEMENT_METHOD); } } diff --git a/app/src/main/java/org/schabi/newpipe/util/text/CommentTextOnTouchListener.java b/app/src/main/java/org/schabi/newpipe/util/text/CommentTextOnTouchListener.java index 4ced4be77..5018a6120 100644 --- a/app/src/main/java/org/schabi/newpipe/util/text/CommentTextOnTouchListener.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/CommentTextOnTouchListener.java @@ -2,51 +2,37 @@ package org.schabi.newpipe.util.text; import static org.schabi.newpipe.util.text.TouchUtils.getOffsetForHorizontalLine; -import android.text.Selection; -import android.text.Spannable; +import android.annotation.SuppressLint; import android.text.Spanned; import android.text.style.ClickableSpan; -import android.text.style.URLSpan; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; -import org.schabi.newpipe.util.external_communication.ShareUtils; - -import io.reactivex.rxjava3.disposables.CompositeDisposable; - public class CommentTextOnTouchListener implements View.OnTouchListener { public static final CommentTextOnTouchListener INSTANCE = new CommentTextOnTouchListener(); + @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouch(final View v, final MotionEvent event) { if (!(v instanceof TextView)) { return false; } final TextView widget = (TextView) v; - final Object text = widget.getText(); + final CharSequence text = widget.getText(); if (text instanceof Spanned) { - final Spannable buffer = (Spannable) text; - + final Spanned buffer = (Spanned) text; final int action = event.getAction(); if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) { final int offset = getOffsetForHorizontalLine(widget, event); - final ClickableSpan[] link = buffer.getSpans(offset, offset, ClickableSpan.class); + final ClickableSpan[] links = buffer.getSpans(offset, offset, ClickableSpan.class); - if (link.length != 0) { + if (links.length != 0) { if (action == MotionEvent.ACTION_UP) { - if (link[0] instanceof URLSpan) { - final String url = ((URLSpan) link[0]).getURL(); - if (!InternalUrlsHandler.handleUrlCommentsTimestamp( - new CompositeDisposable(), v.getContext(), url)) { - ShareUtils.openUrlInBrowser(v.getContext(), url, false); - } - } - } else if (action == MotionEvent.ACTION_DOWN) { - Selection.setSelection(buffer, buffer.getSpanStart(link[0]), - buffer.getSpanEnd(link[0])); + links[0].onClick(widget); } + // we handle events that intersect links, so return true return true; } } diff --git a/app/src/main/java/org/schabi/newpipe/util/text/HashtagLongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/util/text/HashtagLongPressClickableSpan.java index 4ca6c326e..8a0363ecb 100644 --- a/app/src/main/java/org/schabi/newpipe/util/text/HashtagLongPressClickableSpan.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/HashtagLongPressClickableSpan.java @@ -5,7 +5,6 @@ import android.view.View; import androidx.annotation.NonNull; -import org.schabi.newpipe.extractor.Info; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.external_communication.ShareUtils; @@ -15,20 +14,19 @@ final class HashtagLongPressClickableSpan extends LongPressClickableSpan { private final Context context; @NonNull private final String parsedHashtag; - @NonNull - private final Info relatedInfo; + private final int relatedInfoServiceId; HashtagLongPressClickableSpan(@NonNull final Context context, @NonNull final String parsedHashtag, - @NonNull final Info relatedInfo) { + final int relatedInfoServiceId) { this.context = context; this.parsedHashtag = parsedHashtag; - this.relatedInfo = relatedInfo; + this.relatedInfoServiceId = relatedInfoServiceId; } @Override public void onClick(@NonNull final View view) { - NavigationHelper.openSearch(context, relatedInfo.getServiceId(), parsedHashtag); + NavigationHelper.openSearch(context, relatedInfoServiceId, parsedHashtag); } @Override diff --git a/app/src/main/java/org/schabi/newpipe/util/text/TextLinkifier.java b/app/src/main/java/org/schabi/newpipe/util/text/TextLinkifier.java index b7220d22f..e59a3dc05 100644 --- a/app/src/main/java/org/schabi/newpipe/util/text/TextLinkifier.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/TextLinkifier.java @@ -12,11 +12,12 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.text.HtmlCompat; -import org.schabi.newpipe.extractor.Info; -import org.schabi.newpipe.extractor.stream.StreamInfo; +import org.schabi.newpipe.extractor.StreamingService; +import org.schabi.newpipe.extractor.stream.Description; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.external_communication.ShareUtils; +import java.util.function.Consumer; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -33,88 +34,155 @@ public final class TextLinkifier { // 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_]+)"); + public static final Consumer SET_LINK_MOVEMENT_METHOD = + v -> v.setMovementMethod(LongPressLinkMovementMethod.getInstance()); + private TextLinkifier() { } + /** + * Create links for contents with an {@link Description} in the various possible formats. + *

        + * This will call one of these three functions based on the format: {@link #fromHtml}, + * {@link #fromMarkdown} or {@link #fromPlainText}. + * + * @param textView the TextView to set the htmlBlock linked + * @param description the htmlBlock to be linked + * @param htmlCompatFlag the int flag to be set if {@link HtmlCompat#fromHtml(String, int)} + * will be called (not used for formats different than HTML) + * @param relatedInfoService if given, handle hashtags to search for the term in the correct + * service + * @param relatedStreamUrl if given, used alongside {@code relatedInfoService} to handle + * timestamps to open the stream in the popup player at the specific + * time + * @param disposables disposables created by the method are added here and their + * lifecycle should be handled by the calling class + * @param onCompletion will be run when setting text to the textView completes; use {@link + * #SET_LINK_MOVEMENT_METHOD} to make links clickable and focusable + */ + public static void fromDescription(@NonNull final TextView textView, + @NonNull final Description description, + final int htmlCompatFlag, + @Nullable final StreamingService relatedInfoService, + @Nullable final String relatedStreamUrl, + @NonNull final CompositeDisposable disposables, + @Nullable final Consumer onCompletion) { + switch (description.getType()) { + case Description.HTML: + TextLinkifier.fromHtml(textView, description.getContent(), htmlCompatFlag, + relatedInfoService, relatedStreamUrl, disposables, onCompletion); + break; + case Description.MARKDOWN: + TextLinkifier.fromMarkdown(textView, description.getContent(), + relatedInfoService, relatedStreamUrl, disposables, onCompletion); + break; + case Description.PLAIN_TEXT: default: + TextLinkifier.fromPlainText(textView, description.getContent(), + relatedInfoService, relatedStreamUrl, disposables, onCompletion); + break; + } + } + /** * Create links for contents with an HTML description. * *

        - * This method will call {@link #changeIntentsOfDescriptionLinks(TextView, CharSequence, Info, - * CompositeDisposable)} after having linked the URLs with + * This method will call {@link #changeLinkIntents(TextView, CharSequence, StreamingService, + * String, CompositeDisposable, Consumer)} after having linked the URLs with * {@link HtmlCompat#fromHtml(String, int)}. *

        * - * @param textView the {@link TextView} to set the the HTML string block linked - * @param htmlBlock the HTML string block to be linked - * @param htmlCompatFlag the int flag to be set when {@link HtmlCompat#fromHtml(String, int)} - * will be called - * @param relatedInfo if given, handle timestamps to open the stream in the popup player at - * the specific time, and hashtags to search for the term in the correct - * service - * @param disposables disposables created by the method are added here and their lifecycle - * should be handled by the calling class + * @param textView the {@link TextView} to set the the HTML string block linked + * @param htmlBlock the HTML string block to be linked + * @param htmlCompatFlag the int flag to be set when {@link HtmlCompat#fromHtml(String, + * int)} will be called + * @param relatedInfoService if given, handle hashtags to search for the term in the correct + * service + * @param relatedStreamUrl if given, used alongside {@code relatedInfoService} to handle + * timestamps to open the stream in the popup player at the specific + * time + * @param disposables disposables created by the method are added here and their + * lifecycle should be handled by the calling class + * @param onCompletion will be run when setting text to the textView completes; use {@link + * #SET_LINK_MOVEMENT_METHOD} to make links clickable and focusable */ - public static void createLinksFromHtmlBlock(@NonNull final TextView textView, - @NonNull final String htmlBlock, - final int htmlCompatFlag, - @Nullable final Info relatedInfo, - @NonNull final CompositeDisposable disposables) { - changeIntentsOfDescriptionLinks(textView, HtmlCompat.fromHtml(htmlBlock, htmlCompatFlag), - relatedInfo, disposables); + public static void fromHtml(@NonNull final TextView textView, + @NonNull final String htmlBlock, + final int htmlCompatFlag, + @Nullable final StreamingService relatedInfoService, + @Nullable final String relatedStreamUrl, + @NonNull final CompositeDisposable disposables, + @Nullable final Consumer onCompletion) { + changeLinkIntents( + textView, HtmlCompat.fromHtml(htmlBlock, htmlCompatFlag), relatedInfoService, + relatedStreamUrl, disposables, onCompletion); } /** * Create links for contents with a plain text description. * *

        - * This method will call {@link #changeIntentsOfDescriptionLinks(TextView, CharSequence, Info, - * CompositeDisposable)} after having linked the URLs with {@link TextView#setAutoLinkMask(int)} - * and {@link TextView#setText(CharSequence, TextView.BufferType)}. + * This method will call {@link #changeLinkIntents(TextView, CharSequence, StreamingService, + * String, CompositeDisposable, Consumer)} after having linked the URLs with + * {@link TextView#setAutoLinkMask(int)} and + * {@link TextView#setText(CharSequence, TextView.BufferType)}. *

        * - * @param textView the {@link TextView} to set the plain text block linked - * @param plainTextBlock the block of plain text to be linked - * @param relatedInfo if given, handle timestamps to open the stream in the popup player, at - * the specified time, and hashtags to search for the term in the correct - * service - * @param disposables disposables created by the method are added here and their lifecycle - * should be handled by the calling class + * @param textView the {@link TextView} to set the plain text block linked + * @param plainTextBlock the block of plain text to be linked + * @param relatedInfoService if given, handle hashtags to search for the term in the correct + * service + * @param relatedStreamUrl if given, used alongside {@code relatedInfoService} to handle + * timestamps to open the stream in the popup player at the specific + * time + * @param disposables disposables created by the method are added here and their + * lifecycle should be handled by the calling class + * @param onCompletion will be run when setting text to the textView completes; use {@link + * #SET_LINK_MOVEMENT_METHOD} to make links clickable and focusable */ - public static void createLinksFromPlainText(@NonNull final TextView textView, - @NonNull final String plainTextBlock, - @Nullable final Info relatedInfo, - @NonNull final CompositeDisposable disposables) { + public static void fromPlainText(@NonNull final TextView textView, + @NonNull final String plainTextBlock, + @Nullable final StreamingService relatedInfoService, + @Nullable final String relatedStreamUrl, + @NonNull final CompositeDisposable disposables, + @Nullable final Consumer onCompletion) { textView.setAutoLinkMask(Linkify.WEB_URLS); textView.setText(plainTextBlock, TextView.BufferType.SPANNABLE); - changeIntentsOfDescriptionLinks(textView, textView.getText(), relatedInfo, disposables); + changeLinkIntents(textView, textView.getText(), relatedInfoService, + relatedStreamUrl, disposables, onCompletion); } /** * Create links for contents with a markdown description. * *

        - * This method will call {@link #changeIntentsOfDescriptionLinks(TextView, CharSequence, Info, - * CompositeDisposable)} after creating a {@link Markwon} object and using + * This method will call {@link #changeLinkIntents(TextView, CharSequence, StreamingService, + * String, CompositeDisposable, Consumer)} after creating a {@link Markwon} object and using * {@link Markwon#setMarkdown(TextView, String)}. *

        * - * @param textView the {@link TextView} to set the plain text block linked - * @param markdownBlock the block of markdown text to be linked - * @param relatedInfo if given, handle timestamps to open the stream in the popup player at - * the specific time, and hashtags to search for the term in the correct - * service - * @param disposables disposables created by the method are added here and their lifecycle - * should be handled by the calling class + * @param textView the {@link TextView} to set the plain text block linked + * @param markdownBlock the block of markdown text to be linked + * @param relatedInfoService if given, handle hashtags to search for the term in the correct + * service + * @param relatedStreamUrl if given, used alongside {@code relatedInfoService} to handle + * timestamps to open the stream in the popup player at the specific + * time + * @param disposables disposables created by the method are added here and their + * lifecycle should be handled by the calling class + * @param onCompletion will be run when setting text to the textView completes; use {@link + * #SET_LINK_MOVEMENT_METHOD} to make links clickable and focusable */ - public static void createLinksFromMarkdownText(@NonNull final TextView textView, - final String markdownBlock, - @Nullable final Info relatedInfo, - final CompositeDisposable disposables) { + public static void fromMarkdown(@NonNull final TextView textView, + @NonNull final String markdownBlock, + @Nullable final StreamingService relatedInfoService, + @Nullable final String relatedStreamUrl, + @NonNull final CompositeDisposable disposables, + @Nullable final Consumer onCompletion) { final Markwon markwon = Markwon.builder(textView.getContext()) .usePlugin(LinkifyPlugin.create()).build(); - changeIntentsOfDescriptionLinks(textView, markwon.toMarkdown(markdownBlock), relatedInfo, - disposables); + changeLinkIntents(textView, markwon.toMarkdown(markdownBlock), + relatedInfoService, relatedStreamUrl, disposables, onCompletion); } /** @@ -131,9 +199,9 @@ public final class TextLinkifier { * This method will also add click listeners on timestamps in this description, which will play * the content in the popup player at the time indicated in the timestamp, by using * {@link TextLinkifier#addClickListenersOnTimestamps(Context, SpannableStringBuilder, - * StreamInfo, CompositeDisposable)} method and click listeners on hashtags, by using - * {@link TextLinkifier#addClickListenersOnHashtags(Context, SpannableStringBuilder, Info)})}, - * which will open a search on the current service with the hashtag. + * StreamingService, String, CompositeDisposable)} method and click listeners on hashtags, by + * using {@link TextLinkifier#addClickListenersOnHashtags(Context, SpannableStringBuilder, + * StreamingService)}, which will open a search on the current service with the hashtag. *

        * *

        @@ -141,20 +209,25 @@ public final class TextLinkifier { * before opening a web link. *

        * - * @param textView the {@link TextView} in which the converted {@link CharSequence} will be - * applied - * @param chars the {@link CharSequence} to be parsed - * @param relatedInfo if given, handle timestamps to open the stream in the popup player at the - * specific time, and hashtags to search for the term in the correct service - * @param disposables disposables created by the method are added here and their lifecycle - * should be handled by the calling class + * @param textView the {@link TextView} to which the converted {@link CharSequence} + * will be applied + * @param chars the {@link CharSequence} to be parsed + * @param relatedInfoService if given, handle hashtags to search for the term in the correct + * service + * @param relatedStreamUrl if given, used alongside {@code relatedInfoService} to handle + * timestamps to open the stream in the popup player at the specific + * time + * @param disposables disposables created by the method are added here and their + * lifecycle should be handled by the calling class + * @param onCompletion will be run when setting text to the textView completes; use {@link + * #SET_LINK_MOVEMENT_METHOD} to make links clickable and focusable */ - private static void changeIntentsOfDescriptionLinks( - @NonNull final TextView textView, - @NonNull final CharSequence chars, - @Nullable final Info relatedInfo, - @NonNull final CompositeDisposable disposables) { - textView.setMovementMethod(LongPressLinkMovementMethod.getInstance()); + private static void changeLinkIntents(@NonNull final TextView textView, + @NonNull final CharSequence chars, + @Nullable final StreamingService relatedInfoService, + @Nullable final String relatedStreamUrl, + @NonNull final CompositeDisposable disposables, + @Nullable final Consumer onCompletion) { disposables.add(Single.fromCallable(() -> { final Context context = textView.getContext(); @@ -176,26 +249,26 @@ public final class TextLinkifier { textBlockLinked.removeSpan(span); } - if (relatedInfo != null) { - // add click actions on plain text timestamps only for description of - // contents, unneeded for meta-info or other TextViews - if (relatedInfo instanceof StreamInfo) { + // add click actions on plain text timestamps only for description of contents, + // unneeded for meta-info or other TextViews + if (relatedInfoService != null) { + if (relatedStreamUrl != null) { addClickListenersOnTimestamps(context, textBlockLinked, - (StreamInfo) relatedInfo, disposables); + relatedInfoService, relatedStreamUrl, disposables); } - - addClickListenersOnHashtags(context, textBlockLinked, relatedInfo); + addClickListenersOnHashtags(context, textBlockLinked, relatedInfoService); } return textBlockLinked; }).subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( - textBlockLinked -> setTextViewCharSequence(textView, textBlockLinked), + textBlockLinked -> + setTextViewCharSequence(textView, textBlockLinked, onCompletion), throwable -> { Log.e(TAG, "Unable to linkify text", throwable); // this should never happen, but if it does, just fallback to it - setTextViewCharSequence(textView, chars); + setTextViewCharSequence(textView, chars, onCompletion); })); } @@ -213,12 +286,12 @@ public final class TextLinkifier { * @param context the {@link Context} to use * @param spannableDescription the {@link SpannableStringBuilder} with the text of the * content description - * @param relatedInfo used to search for the term in the correct service + * @param relatedInfoService used to search for the term in the correct service */ private static void addClickListenersOnHashtags( @NonNull final Context context, @NonNull final SpannableStringBuilder spannableDescription, - @NonNull final Info relatedInfo) { + @NonNull final StreamingService relatedInfoService) { final String descriptionText = spannableDescription.toString(); final Matcher hashtagsMatches = HASHTAGS_PATTERN.matcher(descriptionText); @@ -231,8 +304,9 @@ public final class TextLinkifier { // of an URL, already parsed before if (spannableDescription.getSpans(hashtagStart, hashtagEnd, LongPressClickableSpan.class).length == 0) { + final int serviceId = relatedInfoService.getServiceId(); spannableDescription.setSpan( - new HashtagLongPressClickableSpan(context, parsedHashtag, relatedInfo), + new HashtagLongPressClickableSpan(context, parsedHashtag, serviceId), hashtagStart, hashtagEnd, 0); } } @@ -251,14 +325,16 @@ public final class TextLinkifier { * @param context the {@link Context} to use * @param spannableDescription the {@link SpannableStringBuilder} with the text of the * content description - * @param streamInfo what to open in the popup player when timestamps are clicked + * @param relatedInfoService the service of the {@code relatedStreamUrl} + * @param relatedStreamUrl what to open in the popup player when timestamps are clicked * @param disposables disposables created by the method are added here and their * lifecycle should be handled by the calling class */ private static void addClickListenersOnTimestamps( @NonNull final Context context, @NonNull final SpannableStringBuilder spannableDescription, - @NonNull final StreamInfo streamInfo, + @NonNull final StreamingService relatedInfoService, + @NonNull final String relatedStreamUrl, @NonNull final CompositeDisposable disposables) { final String descriptionText = spannableDescription.toString(); final Matcher timestampsMatches = TimestampExtractor.TIMESTAMPS_PATTERN.matcher( @@ -272,8 +348,9 @@ public final class TextLinkifier { continue; } - spannableDescription.setSpan(new TimestampLongPressClickableSpan( - context, descriptionText, disposables, streamInfo, timestampMatchDTO), + spannableDescription.setSpan( + new TimestampLongPressClickableSpan(context, descriptionText, disposables, + relatedInfoService, relatedStreamUrl, timestampMatchDTO), timestampMatchDTO.timestampStart(), timestampMatchDTO.timestampEnd(), 0); @@ -281,8 +358,12 @@ public final class TextLinkifier { } private static void setTextViewCharSequence(@NonNull final TextView textView, - @Nullable final CharSequence charSequence) { + @Nullable final CharSequence charSequence, + @Nullable final Consumer onCompletion) { textView.setText(charSequence); textView.setVisibility(View.VISIBLE); + if (onCompletion != null) { + onCompletion.accept(textView); + } } } diff --git a/app/src/main/java/org/schabi/newpipe/util/text/TimestampLongPressClickableSpan.java b/app/src/main/java/org/schabi/newpipe/util/text/TimestampLongPressClickableSpan.java index 48110312d..f5864794a 100644 --- a/app/src/main/java/org/schabi/newpipe/util/text/TimestampLongPressClickableSpan.java +++ b/app/src/main/java/org/schabi/newpipe/util/text/TimestampLongPressClickableSpan.java @@ -9,7 +9,6 @@ import androidx.annotation.NonNull; import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.StreamingService; -import org.schabi.newpipe.extractor.stream.StreamInfo; import org.schabi.newpipe.util.external_communication.ShareUtils; import io.reactivex.rxjava3.disposables.CompositeDisposable; @@ -23,7 +22,9 @@ final class TimestampLongPressClickableSpan extends LongPressClickableSpan { @NonNull private final CompositeDisposable disposables; @NonNull - private final StreamInfo streamInfo; + private final StreamingService relatedInfoService; + @NonNull + private final String relatedStreamUrl; @NonNull private final TimestampExtractor.TimestampMatchDTO timestampMatchDTO; @@ -31,41 +32,43 @@ final class TimestampLongPressClickableSpan extends LongPressClickableSpan { @NonNull final Context context, @NonNull final String descriptionText, @NonNull final CompositeDisposable disposables, - @NonNull final StreamInfo streamInfo, + @NonNull final StreamingService relatedInfoService, + @NonNull final String relatedStreamUrl, @NonNull final TimestampExtractor.TimestampMatchDTO timestampMatchDTO) { this.context = context; this.descriptionText = descriptionText; this.disposables = disposables; - this.streamInfo = streamInfo; + this.relatedInfoService = relatedInfoService; + this.relatedStreamUrl = relatedStreamUrl; this.timestampMatchDTO = timestampMatchDTO; } @Override public void onClick(@NonNull final View view) { - playOnPopup(context, streamInfo.getUrl(), streamInfo.getService(), + playOnPopup(context, relatedStreamUrl, relatedInfoService, timestampMatchDTO.seconds(), disposables); } @Override public void onLongClick(@NonNull final View view) { - ShareUtils.copyToClipboard(context, - getTimestampTextToCopy(streamInfo, descriptionText, timestampMatchDTO)); + ShareUtils.copyToClipboard(context, getTimestampTextToCopy( + relatedInfoService, relatedStreamUrl, descriptionText, timestampMatchDTO)); } @NonNull private static String getTimestampTextToCopy( - @NonNull final StreamInfo relatedInfo, + @NonNull final StreamingService relatedInfoService, + @NonNull final String relatedStreamUrl, @NonNull final String descriptionText, @NonNull final TimestampExtractor.TimestampMatchDTO timestampMatchDTO) { // TODO: use extractor methods to get timestamps when this feature will be implemented in it - final StreamingService streamingService = relatedInfo.getService(); - if (streamingService == ServiceList.YouTube) { - return relatedInfo.getUrl() + "&t=" + timestampMatchDTO.seconds(); - } else if (streamingService == ServiceList.SoundCloud - || streamingService == ServiceList.MediaCCC) { - return relatedInfo.getUrl() + "#t=" + timestampMatchDTO.seconds(); - } else if (streamingService == ServiceList.PeerTube) { - return relatedInfo.getUrl() + "?start=" + timestampMatchDTO.seconds(); + if (relatedInfoService == ServiceList.YouTube) { + return relatedStreamUrl + "&t=" + timestampMatchDTO.seconds(); + } else if (relatedInfoService == ServiceList.SoundCloud + || relatedInfoService == ServiceList.MediaCCC) { + return relatedStreamUrl + "#t=" + timestampMatchDTO.seconds(); + } else if (relatedInfoService == ServiceList.PeerTube) { + return relatedStreamUrl + "?start=" + timestampMatchDTO.seconds(); } // Return timestamp text for other services From 6e73c489dee61f4364f0fa4faf0702f0d3374b34 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 15 Jan 2023 14:57:34 +0100 Subject: [PATCH 122/147] Improve ellipsizing comments --- .../holder/CommentsMiniInfoItemHolder.java | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java b/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java index fe04ac7ee..799aee8ba 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsMiniInfoItemHolder.java @@ -48,6 +48,8 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder { private final int commentHorizontalPadding; private final int commentVerticalPadding; + + private final Paint paintAtContentSize; private final float ellipsisWidthPx; private final RelativeLayout itemRoot; @@ -76,9 +78,9 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder { commentVerticalPadding = (int) infoItemBuilder.getContext() .getResources().getDimension(R.dimen.comments_vertical_padding); - final Paint paint = new Paint(); - paint.setTextSize(itemContentView.getTextSize()); - ellipsisWidthPx = paint.measureText(ELLIPSIS); + paintAtContentSize = new Paint(); + paintAtContentSize.setTextSize(itemContentView.getTextSize()); + ellipsisWidthPx = paintAtContentSize.measureText(ELLIPSIS); } public CommentsMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, @@ -201,18 +203,40 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder { } private void ellipsize() { + itemContentView.setMaxLines(COMMENT_EXPANDED_LINES); linkifyCommentContentView(v -> { boolean hasEllipsis = false; if (itemContentView.getLineCount() > COMMENT_DEFAULT_LINES) { - final int endOfLastLine = itemContentView - .getLayout() - .getLineEnd(COMMENT_DEFAULT_LINES - 1); - int end = itemContentView.getText().toString().lastIndexOf(' ', endOfLastLine - 2); - if (end == -1) { - end = Math.max(endOfLastLine - 2, 0); + // Note that converting to String removes spans (i.e. links), but that's something + // we actually want since when the text is ellipsized we want all clicks on the + // comment to expand the comment, not to open links. + final String text = itemContentView.getText().toString(); + + final Layout layout = itemContentView.getLayout(); + final float lineWidth = layout.getLineWidth(COMMENT_DEFAULT_LINES - 1); + final float layoutWidth = layout.getWidth(); + final int lineStart = layout.getLineStart(COMMENT_DEFAULT_LINES - 1); + final int lineEnd = layout.getLineEnd(COMMENT_DEFAULT_LINES - 1); + + // remove characters up until there is enough space for the ellipsis + // (also summing 2 more pixels, just to be sure to avoid float rounding errors) + int end = lineEnd; + float removedCharactersWidth = 0.0f; + while (lineWidth - removedCharactersWidth + ellipsisWidthPx + 2.0f > layoutWidth + && end >= lineStart) { + end -= 1; + // recalculate each time to account for ligatures or other similar things + removedCharactersWidth = paintAtContentSize.measureText( + text.substring(end, lineEnd)); } - final String newVal = itemContentView.getText().subSequence(0, end) + " …"; + + // remove trailing spaces and newlines + while (end > 0 && Character.isWhitespace(text.charAt(end - 1))) { + end -= 1; + } + + final String newVal = text.substring(0, end) + ELLIPSIS; itemContentView.setText(newVal); hasEllipsis = true; } From dba24ec1f95b2e1fc6aafae84aee14a9f4ef1fdb Mon Sep 17 00:00:00 2001 From: GET100PERCENT <116144024+GET100PERCENT@users.noreply.github.com> Date: Mon, 16 Jan 2023 01:54:01 +0530 Subject: [PATCH 123/147] Added Odia language to language selector (#9651) --- app/src/main/res/values/settings_keys.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 1a711ad17..c2819feea 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -443,6 +443,7 @@ no nn uz + or pl pt-PT pt @@ -522,6 +523,7 @@ Norsk Nynorsk O‘zbek + ଓଡ଼ିଆ Polski Português Português (Brasil) @@ -1129,6 +1131,7 @@ nl nl-be oc + or pa pl pt @@ -1211,6 +1214,7 @@ Nederlands (NL) Nederlands (BE) Occitan + ଓଡ଼ିଆ ਪੰਜਾਬੀ Polski Português From e4641cd427556ead9c866076bfae6e5b65f25f2d Mon Sep 17 00:00:00 2001 From: Tobi Date: Sun, 15 Jan 2023 21:53:52 +0100 Subject: [PATCH 124/147] Update translations (#9688) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Translated using Weblate (Hebrew) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Arabic) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (German) Currently translated at 100.0% (650 of 650 strings) Added translation using Weblate (Assamese) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Polish) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Arabic) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Czech) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Greek) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Korean) Currently translated at 100.0% (650 of 650 strings) Translated using Weblate (Odia) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (German) Currently translated at 72.2% (52 of 72 strings) Translated using Weblate (Danish) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Catalan) Currently translated at 95.5% (620 of 649 strings) Translated using Weblate (Persian) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Italian) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Norwegian Nynorsk) Currently translated at 10.6% (69 of 649 strings) Translated using Weblate (Polish) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Polish) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Arabic) Currently translated at 51.3% (37 of 72 strings) Translated using Weblate (Bengali) Currently translated at 89.9% (584 of 649 strings) Translated using Weblate (Sardinian) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Thai) Currently translated at 32.2% (209 of 649 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Arabic) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Italian) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Japanese) Currently translated at 99.6% (647 of 649 strings) Translated using Weblate (Odia) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (German) Currently translated at 66.6% (48 of 72 strings) Translated using Weblate (Portuguese (Portugal)) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Galician) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Hindi) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Hebrew) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Polish) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Czech) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Greek) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (French) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (German) Currently translated at 100.0% (649 of 649 strings) Translated using Weblate (Hindi) Currently translated at 19.4% (14 of 72 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (Korean) Currently translated at 100.0% (648 of 648 strings) Co-authored-by: Abhilash Co-authored-by: Agnieszka C Co-authored-by: Ahmad0a Co-authored-by: Ajeje Brazorf Co-authored-by: Alex25820 Co-authored-by: Danial Behzadi Co-authored-by: ERYpTION Co-authored-by: Edward Co-authored-by: Eric Co-authored-by: Fjuro Co-authored-by: GET100PERCENT Co-authored-by: GnuPGを使うべきだ Co-authored-by: Hoseok Seo Co-authored-by: Hosted Weblate Co-authored-by: Ihor Hordiichuk Co-authored-by: JY3 Co-authored-by: Jeff Huang Co-authored-by: Linerly Co-authored-by: Nidi Co-authored-by: Nikodem Zawirski Co-authored-by: Oymate Co-authored-by: Oğuz Ersen Co-authored-by: Priit Jõerüüt Co-authored-by: RSoulwin Co-authored-by: Retrial Co-authored-by: Rex_sa Co-authored-by: Ricardo Co-authored-by: SalusVF Co-authored-by: ShareASmile Co-authored-by: Translator Co-authored-by: Vasilis K Co-authored-by: VfBFan Co-authored-by: Yaron Shahrabani Co-authored-by: bowornsin Co-authored-by: gallegonovato Co-authored-by: nautilusx Co-authored-by: pjammo Co-authored-by: random r Co-authored-by: ssantos Co-authored-by: tryvseu Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/ Translation: NewPipe/Metadata * Translated using Weblate (Slovenian) Currently translated at 63.6% (414 of 650 strings) * Translated using Weblate (Azerbaijani) Currently translated at 100.0% (650 of 650 strings) * Translated using Weblate (Assamese) Currently translated at 3.6% (24 of 650 strings) Co-authored-by: Hosted Weblate Co-authored-by: Abhilash Co-authored-by: Agnieszka C Co-authored-by: Ahmad0a Co-authored-by: Ajeje Brazorf Co-authored-by: Alex25820 Co-authored-by: Danial Behzadi Co-authored-by: ERYpTION Co-authored-by: Edward Co-authored-by: Eric Co-authored-by: Fjuro Co-authored-by: GET100PERCENT Co-authored-by: GnuPGを使うべきだ Co-authored-by: Hoseok Seo Co-authored-by: Ihor Hordiichuk Co-authored-by: JY3 Co-authored-by: Jeff Huang Co-authored-by: Linerly Co-authored-by: Nidi Co-authored-by: Nikodem Zawirski Co-authored-by: Oymate Co-authored-by: Oğuz Ersen Co-authored-by: Priit Jõerüüt Co-authored-by: RSoulwin Co-authored-by: Retrial Co-authored-by: Rex_sa Co-authored-by: Ricardo Co-authored-by: SalusVF Co-authored-by: ShareASmile Co-authored-by: Translator Co-authored-by: Vasilis K Co-authored-by: VfBFan Co-authored-by: Yaron Shahrabani Co-authored-by: bowornsin Co-authored-by: gallegonovato Co-authored-by: nautilusx Co-authored-by: pjammo Co-authored-by: random r Co-authored-by: ssantos Co-authored-by: tryvseu Co-authored-by: HudobniVolk --- app/src/main/res/values-ar/strings.xml | 2 + app/src/main/res/values-as/strings.xml | 28 ++++ app/src/main/res/values-az/strings.xml | 2 + app/src/main/res/values-bn/strings.xml | 1 + app/src/main/res/values-ca/strings.xml | 2 + app/src/main/res/values-cs/strings.xml | 4 +- app/src/main/res/values-da/strings.xml | 134 ++++++++++++++---- app/src/main/res/values-de/strings.xml | 2 + app/src/main/res/values-el/strings.xml | 2 + app/src/main/res/values-es/strings.xml | 2 + app/src/main/res/values-et/strings.xml | 1 + app/src/main/res/values-fa/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-gl/strings.xml | 1 + app/src/main/res/values-he/strings.xml | 2 + app/src/main/res/values-hi/strings.xml | 1 + app/src/main/res/values-in/strings.xml | 2 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 11 +- app/src/main/res/values-ko/strings.xml | 6 + app/src/main/res/values-nn/strings.xml | 9 +- app/src/main/res/values-or/strings.xml | 3 +- app/src/main/res/values-pa/strings.xml | 1 + app/src/main/res/values-pl/strings.xml | 4 +- app/src/main/res/values-pt-rBR/strings.xml | 2 + app/src/main/res/values-pt-rPT/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ro/strings.xml | 25 ++-- app/src/main/res/values-sc/strings.xml | 5 + app/src/main/res/values-sl/strings.xml | 10 +- app/src/main/res/values-sv/strings.xml | 1 + app/src/main/res/values-th/strings.xml | 3 + app/src/main/res/values-tr/strings.xml | 2 + app/src/main/res/values-uk/strings.xml | 2 + app/src/main/res/values-zh-rCN/strings.xml | 4 +- app/src/main/res/values-zh-rTW/strings.xml | 1 + .../metadata/android/ar/changelogs/71.txt | 18 +-- .../metadata/android/ar/changelogs/991.txt | 13 ++ .../metadata/android/de/changelogs/975.txt | 16 +++ .../metadata/android/de/changelogs/976.txt | 10 ++ .../metadata/android/de/changelogs/977.txt | 9 ++ .../metadata/android/de/changelogs/988.txt | 2 + .../metadata/android/de/changelogs/989.txt | 3 + .../metadata/android/de/changelogs/990.txt | 15 ++ .../metadata/android/de/changelogs/991.txt | 13 ++ .../metadata/android/hi/changelogs/991.txt | 1 + .../metadata/android/pa/changelogs/65.txt | 1 + .../metadata/android/pa/changelogs/66.txt | 1 + .../metadata/android/pa/changelogs/68.txt | 1 + .../metadata/android/pa/changelogs/69.txt | 1 + .../metadata/android/pa/changelogs/70.txt | 1 + .../metadata/android/pa/changelogs/71.txt | 1 + .../metadata/android/pa/changelogs/730.txt | 2 + .../metadata/android/pa/changelogs/740.txt | 1 + .../metadata/android/pa/changelogs/750.txt | 1 + .../metadata/android/pa/changelogs/760.txt | 1 + .../metadata/android/pa/changelogs/770.txt | 4 + .../metadata/android/pa/changelogs/780.txt | 1 + .../metadata/android/pa/changelogs/790.txt | 1 + .../metadata/android/pa/changelogs/800.txt | 1 + .../metadata/android/pa/changelogs/810.txt | 1 + .../metadata/android/pa/changelogs/820.txt | 1 + .../metadata/android/pa/changelogs/830.txt | 1 + .../metadata/android/pa/changelogs/840.txt | 1 + .../metadata/android/pa/changelogs/850.txt | 1 + .../metadata/android/pa/changelogs/860.txt | 1 + .../metadata/android/pa/changelogs/870.txt | 2 + .../metadata/android/pa/changelogs/900.txt | 1 + .../metadata/android/pa/changelogs/910.txt | 1 + .../metadata/android/pa/changelogs/920.txt | 1 + .../metadata/android/pa/changelogs/930.txt | 1 + .../metadata/android/pa/changelogs/940.txt | 1 + .../metadata/android/pa/changelogs/950.txt | 4 + .../metadata/android/pa/changelogs/951.txt | 13 ++ .../metadata/android/pa/changelogs/952.txt | 7 + .../metadata/android/pa/changelogs/953.txt | 1 + .../metadata/android/pa/changelogs/954.txt | 8 ++ .../metadata/android/pa/changelogs/955.txt | 3 + .../metadata/android/pa/changelogs/956.txt | 1 + .../metadata/android/pa/changelogs/957.txt | 10 ++ .../metadata/android/pa/changelogs/958.txt | 1 + .../metadata/android/pa/changelogs/959.txt | 3 + .../metadata/android/pa/changelogs/960.txt | 4 + .../metadata/android/pa/changelogs/961.txt | 1 + .../metadata/android/pa/changelogs/962.txt | 2 + .../metadata/android/pa/changelogs/963.txt | 1 + .../metadata/android/pa/changelogs/964.txt | 1 + .../metadata/android/pa/changelogs/965.txt | 1 + .../metadata/android/pa/changelogs/966.txt | 1 + .../metadata/android/pa/changelogs/967.txt | 1 + .../metadata/android/pa/changelogs/968.txt | 1 + .../metadata/android/pa/changelogs/969.txt | 1 + .../metadata/android/pa/changelogs/970.txt | 1 + .../metadata/android/pa/changelogs/971.txt | 3 + .../metadata/android/pa/changelogs/972.txt | 13 ++ .../metadata/android/pa/changelogs/973.txt | 4 + .../metadata/android/pa/changelogs/974.txt | 5 + .../metadata/android/pa/changelogs/975.txt | 16 +++ .../metadata/android/pa/changelogs/976.txt | 10 ++ .../metadata/android/pa/changelogs/977.txt | 10 ++ .../metadata/android/pa/changelogs/978.txt | 1 + .../metadata/android/pa/changelogs/979.txt | 2 + .../metadata/android/pa/changelogs/980.txt | 12 ++ .../metadata/android/pa/changelogs/981.txt | 2 + .../metadata/android/pa/changelogs/982.txt | 1 + .../metadata/android/pa/changelogs/983.txt | 9 ++ .../metadata/android/pa/changelogs/984.txt | 7 + .../metadata/android/pa/changelogs/985.txt | 1 + .../metadata/android/pa/changelogs/986.txt | 15 ++ .../metadata/android/pa/changelogs/987.txt | 11 ++ .../metadata/android/pa/changelogs/988.txt | 2 + .../metadata/android/pa/changelogs/989.txt | 3 + .../metadata/android/pa/changelogs/990.txt | 13 ++ 113 files changed, 556 insertions(+), 61 deletions(-) create mode 100644 app/src/main/res/values-as/strings.xml create mode 100644 fastlane/metadata/android/ar/changelogs/991.txt create mode 100644 fastlane/metadata/android/de/changelogs/975.txt create mode 100644 fastlane/metadata/android/de/changelogs/976.txt create mode 100644 fastlane/metadata/android/de/changelogs/977.txt create mode 100644 fastlane/metadata/android/de/changelogs/988.txt create mode 100644 fastlane/metadata/android/de/changelogs/989.txt create mode 100644 fastlane/metadata/android/de/changelogs/990.txt create mode 100644 fastlane/metadata/android/de/changelogs/991.txt create mode 100644 fastlane/metadata/android/hi/changelogs/991.txt create mode 100644 fastlane/metadata/android/pa/changelogs/65.txt create mode 100644 fastlane/metadata/android/pa/changelogs/66.txt create mode 100644 fastlane/metadata/android/pa/changelogs/68.txt create mode 100644 fastlane/metadata/android/pa/changelogs/69.txt create mode 100644 fastlane/metadata/android/pa/changelogs/70.txt create mode 100644 fastlane/metadata/android/pa/changelogs/71.txt create mode 100644 fastlane/metadata/android/pa/changelogs/730.txt create mode 100644 fastlane/metadata/android/pa/changelogs/740.txt create mode 100644 fastlane/metadata/android/pa/changelogs/750.txt create mode 100644 fastlane/metadata/android/pa/changelogs/760.txt create mode 100644 fastlane/metadata/android/pa/changelogs/770.txt create mode 100644 fastlane/metadata/android/pa/changelogs/780.txt create mode 100644 fastlane/metadata/android/pa/changelogs/790.txt create mode 100644 fastlane/metadata/android/pa/changelogs/800.txt create mode 100644 fastlane/metadata/android/pa/changelogs/810.txt create mode 100644 fastlane/metadata/android/pa/changelogs/820.txt create mode 100644 fastlane/metadata/android/pa/changelogs/830.txt create mode 100644 fastlane/metadata/android/pa/changelogs/840.txt create mode 100644 fastlane/metadata/android/pa/changelogs/850.txt create mode 100644 fastlane/metadata/android/pa/changelogs/860.txt create mode 100644 fastlane/metadata/android/pa/changelogs/870.txt create mode 100644 fastlane/metadata/android/pa/changelogs/900.txt create mode 100644 fastlane/metadata/android/pa/changelogs/910.txt create mode 100644 fastlane/metadata/android/pa/changelogs/920.txt create mode 100644 fastlane/metadata/android/pa/changelogs/930.txt create mode 100644 fastlane/metadata/android/pa/changelogs/940.txt create mode 100644 fastlane/metadata/android/pa/changelogs/950.txt create mode 100644 fastlane/metadata/android/pa/changelogs/951.txt create mode 100644 fastlane/metadata/android/pa/changelogs/952.txt create mode 100644 fastlane/metadata/android/pa/changelogs/953.txt create mode 100644 fastlane/metadata/android/pa/changelogs/954.txt create mode 100644 fastlane/metadata/android/pa/changelogs/955.txt create mode 100644 fastlane/metadata/android/pa/changelogs/956.txt create mode 100644 fastlane/metadata/android/pa/changelogs/957.txt create mode 100644 fastlane/metadata/android/pa/changelogs/958.txt create mode 100644 fastlane/metadata/android/pa/changelogs/959.txt create mode 100644 fastlane/metadata/android/pa/changelogs/960.txt create mode 100644 fastlane/metadata/android/pa/changelogs/961.txt create mode 100644 fastlane/metadata/android/pa/changelogs/962.txt create mode 100644 fastlane/metadata/android/pa/changelogs/963.txt create mode 100644 fastlane/metadata/android/pa/changelogs/964.txt create mode 100644 fastlane/metadata/android/pa/changelogs/965.txt create mode 100644 fastlane/metadata/android/pa/changelogs/966.txt create mode 100644 fastlane/metadata/android/pa/changelogs/967.txt create mode 100644 fastlane/metadata/android/pa/changelogs/968.txt create mode 100644 fastlane/metadata/android/pa/changelogs/969.txt create mode 100644 fastlane/metadata/android/pa/changelogs/970.txt create mode 100644 fastlane/metadata/android/pa/changelogs/971.txt create mode 100644 fastlane/metadata/android/pa/changelogs/972.txt create mode 100644 fastlane/metadata/android/pa/changelogs/973.txt create mode 100644 fastlane/metadata/android/pa/changelogs/974.txt create mode 100644 fastlane/metadata/android/pa/changelogs/975.txt create mode 100644 fastlane/metadata/android/pa/changelogs/976.txt create mode 100644 fastlane/metadata/android/pa/changelogs/977.txt create mode 100644 fastlane/metadata/android/pa/changelogs/978.txt create mode 100644 fastlane/metadata/android/pa/changelogs/979.txt create mode 100644 fastlane/metadata/android/pa/changelogs/980.txt create mode 100644 fastlane/metadata/android/pa/changelogs/981.txt create mode 100644 fastlane/metadata/android/pa/changelogs/982.txt create mode 100644 fastlane/metadata/android/pa/changelogs/983.txt create mode 100644 fastlane/metadata/android/pa/changelogs/984.txt create mode 100644 fastlane/metadata/android/pa/changelogs/985.txt create mode 100644 fastlane/metadata/android/pa/changelogs/986.txt create mode 100644 fastlane/metadata/android/pa/changelogs/987.txt create mode 100644 fastlane/metadata/android/pa/changelogs/988.txt create mode 100644 fastlane/metadata/android/pa/changelogs/989.txt create mode 100644 fastlane/metadata/android/pa/changelogs/990.txt diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index d7bbcd9c0..2fbe794a3 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -778,4 +778,6 @@ انقر للتنزيل %s الوضع السريع استيراد الاشتراكات أو تصديرها من القائمة المكونة من 3 نقاط + هذا الخيار متاح فقط إذا تم تحديد %s للسمة + إلغاء تعيين الصورة المصغرة الدائمة
        \ No newline at end of file diff --git a/app/src/main/res/values-as/strings.xml b/app/src/main/res/values-as/strings.xml new file mode 100644 index 000000000..578213394 --- /dev/null +++ b/app/src/main/res/values-as/strings.xml @@ -0,0 +1,28 @@ + + + কোনো ষ্ট্ৰিম প্লেয়াৰ পোৱা নগ\'ল (আপুনি ইয়াক বজাবলৈ VLC ইনষ্টল কৰিব পাৰে)। + ইনষ্টল + বাতিল কৰক + ঠিক আছে + ব্ৰাউজাৰত খোলক + POPUP অৱস্থাত খোলক + ...ৰ সৈতে খোলক + চেয়াৰ + %1$s ত প্ৰকাশ কৰা হৈছে + কোনো ষ্ট্ৰিম প্লেয়াৰ পোৱা নগ\'ল। VLC ইনষ্টল কৰক\? + ডাউনল’ড + ষ্ট্ৰিম কৰা ফাইল ডাউনলোড কৰক + সন্ধান কৰক + ছেটিংছ + %s ৰ বাবে ফলাফল দেখুৱা হৈছে + চেয়াৰ কৰক + কিছু ৰিজ’লিউচনত অডিঅ’ আঁতৰাওক + চাবস্ক্ৰাইব কৰা হ\'ল + আনচাবস্ক্ৰাইব + আৰম্ভ কৰিবলৈ মেগনিফাইং গ্লাছৰ চিহ্নত টিপক। + চাবস্ক্ৰাইব + চোৱা হ\'ল (চিহ্নিত কৰক) + আপুনি \"%1$s\" বুজাইছিল নেকি\? + বাহ্যিক ভিডিঅ’ প্লেয়াৰ ব্যৱহাৰ কৰক + বাহ্যিক অডিঅ’ প্লেয়াৰ ব্যৱহাৰ কৰক + \ No newline at end of file diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 22f3ba5e5..cd18e8d93 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -726,4 +726,6 @@ Sürətli rejim 3 nöqtə menyudan abunələri idxal və ya ixrac et %s endirmək üçün toxun + Bu seçim yalnız tema üçün %s seçildikdə əlçatandır + Daimi miniatürü ləğv et \ No newline at end of file diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 899103c9d..46d12a8b6 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -644,4 +644,5 @@ ভুক্তি মুছতে ডানে-বামে সরাও সম্প্রচার বিষয়ক তথ্য প্রক্রিয়ারত… ভবিষ্যৎ ভুক্তি দেখাও + প্লেব্যাক লোড বিরতির আকার \ No newline at end of file diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index ae4e4f018..fc9abd891 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -701,4 +701,6 @@ Format desconegut Cualitat desconeguda Ordenar + Configura la notificació de reproducció actual. + Canvia la mida de l\'interval de càrrega (actualment %s). Un valor inferior pot accelerar la càrrega inicial del vídeo. Els canvis requereixen un reinici del jugador. \ No newline at end of file diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index fdbc81d43..637678c23 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -598,7 +598,7 @@ Vypnout pro skrytí popisu videa a doplňkové informace Zbořit aplikaci Stahování bylo zahájeno - Můžete si zvolit svůj oblíbený motiv níže + Níže si můžete zvolit svůj oblíbený motiv Zvolte si svůj oblíbený noční motiv - %s Automatický (motiv zařízení) Radio @@ -739,4 +739,6 @@ Rychlý režim Používáte nejnovější verzi NewPipe Import nebo export odběrů z 3-tečkové nabídky + Tato možnost je dostupná pouze při vybraném motivu %s + Zrušení nastavení trvalého náhledu \ No newline at end of file diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 96ae5299d..f4601ec2d 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -32,12 +32,12 @@ Baggrund Pop op Føj til - Placering af videodownloads + Mappe til download af video Downloadede videoer gemmes her - Angiv downloadmappe for videofiler - Downloadmappe for lydfiler + Angiv download-mappe for videofiler + Download-mappe for lydfiler Downloadede lydfiler gemmes her - Angiv downloadmappe for lydfiler + Angiv download-mappe for lydfiler Standardopløsning Standardopløsning for pop op Vis højere opløsninger @@ -45,7 +45,7 @@ Afspil med Kodi Installer manglede Kore-app\? Vis valgmuligheden \"Afspil med Kodi\" - Vis en knap til at afspille en video via Kodi + Vis en knap til at afspille en video via Kodi-mediecenteret Lyd Standardformat for lydfiler Standardformat for videofiler @@ -56,7 +56,7 @@ Husk størrelse og placering af pop op Husk sidste størrelse og placering af pop op-afspiller Brug hurtig og upræcis søgning - Upræcis søgning lader afspilleren finde placeringer hurtigere, men mindre præcist. Søgninger på 5, 15 eller 25 sekunder fungerer ikke med denne indstilling, slået til + Upræcis søgning lader afspilleren finde placeringer hurtigere, men mindre præcist. Søgninger på 5, 15 eller 25 sekunder fungerer ikke med denne indstilling slået til Indlæs miniaturebilleder Slå fra for at undgå indlæsning af billeder, hvorved der spares data og hukommelse. Ændringer sletter billedcachen i både ram og lager Billedcache slettet @@ -64,7 +64,7 @@ Slet alle websidedata fra cachen Metadata-cache slettet Føj automatisk næste stream til køen - Fortsæt nedlukningen af en (ikke-gentagende) playback kø ved at tilføje et relateret stream + Fortsæt en afspilningskø, der afsluttes (ikke-gentagende), ved at tilføje en lignende stream Juster lydstyrke ved hjælp af fingerbevægelser Brug fingerbevægelser til at kontrollere afspillerens lydstyrke Styr lysstyrken med fingerbevægelser @@ -101,7 +101,7 @@ Fejlrapport Alle Kanaler - Playlister + Spillelister Én video %s videoer @@ -130,7 +130,7 @@ Overskriver din nuværende historik, abonnementer, spillelister og (hvis det ønskes) indstillinger Eksporter historik, abonnementer, spillelister og indstillinger Slet visningshistorik - Sletter historikken og positioner af tidligere viste videoer + Sletter historikken over afspillede streams og afspilningspositionerne Slet hele visningshistorikken\? Visningshistorikken blev slettet Slet søgehistorik @@ -217,7 +217,7 @@ Om NewPipe Tredjepartslicenser © %1$s af %2$s under %3$s - Om + Om & Ofte stillede spørgsmål Licenser Åben letvægtsstreaming på Android. Bidrag til projektet @@ -330,7 +330,7 @@ Luk skuffe Hvad:\\nForespørgsel:\\nIndholdssprog:\\nIndholdsland:\\nAppsprog:\\nTjeneste:\\nGMT-tid:\\nPakke:\\nVersion:\\nOS-version: Standardhandling når indhold åbnes – %s - Anvend som playlistens miniature + Anvend som spillelistens miniaturebillede Bogmærk spilleliste Fjern bogmærke Føjet til spillelisten @@ -386,7 +386,7 @@ Afspil automatisk Ryd data Positioner i lister - Genopret forrige afspilningsposition + Gendan sidste afspilningsposition Fortsæt afspilning Slå fra for at skjule kommentarer Vis kommentarer @@ -398,7 +398,7 @@ Anden handlingstast Tredje handlingstast Viser resultater for: %s - Åben med + Åbn med LeakCanary er ikke tilgængelig Markér som set Beskrivelse @@ -447,7 +447,7 @@ Nye streams Notifikationer om nye streams fra abonnementer reCAPTCHA cookies er ryddet - Slet alle playback positioner\? + Slet alle afspilningspositioner\? Filen er flyttet eller slettet NewPipe stødte ind i en fejl, tryk for at rapportere Rapporter på GitHub @@ -463,9 +463,9 @@ Download fuldført %s downloads fuldført - Lav indlæsningsintervallets størrelse, (som nu ligger på %s) om. En højere værdi kan øge videoindlæsningshastigheden. Ændringer af værdien kræver genstart. + Ændr indlæsningsintervallets størrelse (som nu er på %s). En lavere værdi kan øge videoindlæsningshastigheden. Ændringer kræver en genstart af afspiller Den aktive spilleliste bliver udskiftet - At skifte fra en afspiller til en anden kan udskifte din kø + Hvis du skifter fra en spiller til en anden, kan din kø blive erstattet Vis metainformation Lokale søgeforslag Fjerne søgeforslag @@ -475,8 +475,8 @@ Notifikationer om videohashfunktioners status Fejlrapport-notifikation Notifikationer for at rapportere fejl - Slet playback positioner - Sletter alle playback positioner + Slet afspilningspositioner + Sletter alle afspilningspositioner Spørg hvor filen skal downloades Et download ad gangen Slet downloadede filer @@ -487,23 +487,23 @@ \nNewPipes fortrolighedspolitik forklarer i detaljer, hvilke data der bliver sendt og opbevaret når du sender en nedbrudsrapport.
        Kopier en formatteret rapport Giv tilladelse til at vise over andre apps - Vis playback positionsvisere i lister - Playback positioner slettet + Vis indikatorer for afspilningsposition i lister + Afspilningspositioner slettet Ryd reCAPTCHA cookies Der er en afventende download med dette navn Start downloads - Skaler miniaturebilledet til 1:1 format - Skaler notifikationsminiaturebillederne fra 16:9 til 1:1 format (dette kan medføre forvrængninger) - Rediger hver eneste varselshandling nedenunder ved at trykke på dem. Vælg op til tre af dem som bliver vist i den lille notifikation, via kasserne til højre + Beskær miniaturebillede til 1:1 format + Beskær video-miniaturebillede i notifikationen fra 16:9 til 1:1 format + Rediger hver eneste varselshandling nedenunder ved at trykke på dem. Vælg op til tre af dem som bliver vist i den lille notifikation, via afkrydsningsfelterne til højre Du kan kun vælge op til tre handlinger som kan vises i den lille notifikation! Buffer Få Android til at vælge notifikationens farve ud fra den primære farve i miniaturebilledet (virker ikke på alle enheder) - Nattetema + Nattema Frem- og tilbagesøgningstid Denne video er aldersbegrænset. \nPga. YouTubes politik om aldersbegrænsede videoer har NewPipe ikke adgang til videoen. Crash afspilleren - Spørg om bekræftelse før du tømmer en kø + Spørg om bekræftelse før du rydder en kø Forhåndsvisning af miniaturebilleder på statuslinjen Sæt i kø som næste Er sat som næste i køen @@ -514,8 +514,8 @@ Kommentarer Relaterede objekter Stryg på elementer for at fjerne dem - Vælg en playliste - Ingen playliste bogmærker endnu + Vælg en spilleliste + Ingen spilleliste-bogmærker endnu Sproget ændres når appen genstarter Spillekø Vis kanalens detaljer @@ -530,7 +530,7 @@ Alle netværk Kontrolfrekvens Notifikationer ved nye streams - Notifikationer om ny streams fra abonnomenter + Giv besked om nye streams fra abonnementer Tjek manuelt efter opdateringer Tjekker efter opdateringer… Gendanner @@ -555,8 +555,8 @@ Vis sete elementer Dette indhold er ikke tilgængeligt i dit land. Af %s - Videoer på playlisten som allerede er blevet set fjernes. -\nDette kan ikke fortrydes! + Videoer, der er blevet set før og efter, at de er blevet tilføjet til spillelisten, vil blive fjernet. +\nEr du sikker\? Dette kan ikke gøres om! Vis miniaturebillede Tags Aldersbegrænsning @@ -653,4 +653,78 @@ Vis et crash alternativ når afspilleren er i brug Vis en fejl snackbar Brug system mappevælger (SAF) + Kanalens avatar-miniaturebillede + Dette er et SoundCloud Go+-nummer, i hvert fald i dit land, så det kan ikke streames eller downloades af NewPipe. + Der blev ikke fundet nogen passende filhåndtering til denne handling. +\nInstaller en Storage Access Framework-kompatibel filhåndtering + Der blev ikke fundet nogen passende filhåndtering til denne handling. +\nInstaller et filhåndteringsprogram eller prøv at deaktivere \'%s\' i download-indstillingerne + Aktivér valg af tekst i beskrivelsen + Automatisk (enhedstema) + Deaktiver valg af tekst i beskrivelsen + Fastgjort kommentar + Du abonnerer nu på denne kanal + , + Få besked + Du vil blive spurgt, hvor du vil gemme hver enkelt download + Den er tilgængelig i nogle tjenester og er normalt meget hurtigere, men kan returnere et begrænset antal elementer og ofte ufuldstændige oplysninger (f.eks. ingen varighed, elementtype, ingen live-status) + Ukendt format + Ukendt kvalitet + Hjertemarkeret af indholdsskaberen + Intervalstørrelse for afspilningsindlæsning + ExoPlayer-standard + Tomt gruppenavn + Du vil blive spurgt, hvor du vil gemme hver enkelt download. +\nAktiver systemet mappevælger (SAF), hvis du vil downloade til et eksternt SD-kort + Originaltekster fra tjenester vil være synlige i stream-emner + Ingen videostreams er tilgængelige for eksterne afspillere + URL til miniaturebillede + Fra + Tablet-tilstand + Skjul fremtidige elementer + Denne video er kun tilgængelig for YouTube Music Premium-medlemmer, så den kan ikke streames eller downloades af NewPipe. + \"Storage Access Framework\" gør det muligt at downloade til et eksternt SD-kort + Fremtving indberetning af ikke-leverbare Rx-undtagelser uden for fragmentets eller aktivitetens livscyklus efter bortskaffelse + Tryk for at downloade %s + Fra og med Android 10 understøttes kun \"Storage Access Framework\" + Synes du, at feed-indlæsning er for langsom\? Hvis det er tilfældet, så prøv at aktivere hurtig indlæsning (du kan ændre det i indstillingerne eller ved at trykke på knappen nedenfor). +\n +\nNewPipe tilbyder to strategier til feed-indlæsning: +\n- Hentning af hele abonnementskanalen, hvilket er langsomt, men komplet. +\n- Brug af et dedikeret service endpoint, hvilket er hurtigt, men normalt ikke komplet. +\n +\nForskellen mellem de to er, at den hurtige metode normalt mangler nogle oplysninger, f.eks. elementets varighed eller type (kan ikke skelne mellem livevideoer og normale videoer), og den returnerer muligvis færre elementer. +\n +\nYouTube er et eksempel på en tjeneste, der tilbyder denne hurtige metode med sit RSS-feed. +\n +\nValget er altså et spørgsmål om, hvad du foretrækker: hastighed eller præcise oplysninger. + Den valgte stream er ikke understøttet af eksterne afspillere + Denne indstilling er kun tilgængelig, hvis %s er valgt som tema + Du kan nu vælge tekst i beskrivelsen. Bemærk, at siden kan flimre, og at links muligvis ikke kan klikkes på, mens du er i valgtilstand. + Streams, som endnu ikke understøttes af downloaderen, vises ikke + Hurtig tilstand + Importér eller eksportér abonnementer fra 3-punktsmenuen + Ofte stillede spørgsmål + Hvis du har problemer med at bruge appen, bør du tjekke disse svar på almindelige spørgsmål! + Se på hjemmeside + Vis Picasso-farvede bånd oven på billeder, der angiver deres kilde: rød for netværk, blå for disk og grøn for hukommelse + Du kører den nyeste version af NewPipe + På grund af ExoPlayer-begrænsninger blev søgetiden sat til %d sekunder + Vis kun ikke-grupperede abonnementer + Skjul sete elementer + Side med spillelister + Du kan vælge dit foretrukne nattema nedenfor + Vælg dit foretrukne nattema - %s + Support + Host + Offentlig + Ikke oplyst + Privat + Intern + Til + Skift alle + Ingen lydstreams er tilgængelige for eksterne afspillere + Vælg kvalitet til eksterne afspillere + Vis fremtidige elementer + Sortér \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 7d8e64475..d02b276cd 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -726,4 +726,6 @@ Du verwendest die neueste Version von NewPipe Antippen um %s herunterzuladen Importieren oder Exportieren von Abonnements über das 3-Punkte-Menü + Diese Option ist nur verfügbar, wenn %s als Design ausgewählt wird + Dauerhaftes Vorschaubild aufheben \ No newline at end of file diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index ae9571aa1..cf3c0576b 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -726,4 +726,6 @@ Εισάγετε ή εξάγετε συνδρομές από το μενού 3 κουκκίδων Πατήστε για λήψη %s Έχετε την πιο πρόσφατη έκδοση του NewPipe + Αυτή η επιλογή είναι διαθέσιμη μόνο εάν έχει επιλεγεί %s για Θέμα + Κατάργηση μόνιμης μικρογραφίας \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 48e96ebec..f92ad9128 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -742,4 +742,6 @@ Importa o exporta las suscripciones desde el menú con los tres puntos Está ejecutando la última versión de NewPipe Pulsa para descargar %s + Esta opción sólo está disponible si %s está seleccionado para el tema + Desactivar las miniaturas permanente \ No newline at end of file diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 7f2691b77..87beff94f 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -726,4 +726,5 @@ Kiirrežiim Tellimusi saad importida või eksportida 3 punktiga menüüst Sa kasutad NewPipe\'i uusimat versiooni + See valik on kasutusel vaid %s teema puhul \ No newline at end of file diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 123c3b201..f22200c06 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -726,4 +726,5 @@ حالت سریع ضربه برای بارگیری %s از جدیدترین نگارش نیوپایپ استفاده می‌کنید + این گزینه تنها هنگامی موجود است که %s به عنوان زمینه گزیده باشد \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index fd2f027f8..a3373ca6e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -742,4 +742,5 @@ Vous utilisez la dernière version de NewPipe Appuyez pour télécharger %s Échec de la copie dans le presse-papiers + Cette option est disponible seulement si %s est sélectionné pour le thème \ No newline at end of file diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index fcabbd95b..65d5ce204 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -726,4 +726,5 @@ Estás executandola última versión de NewPipe Toca para descargar %s Importa ou exporta subscricións dende o menú dos 3 puntos + Esta opción só está dispoñible se %s está seleccionado para o tema \ No newline at end of file diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 6d21a5943..67e6d45ad 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -752,4 +752,6 @@ נגיעה כאן תוריד את %s מצב מהיר זאת הגרסה העדכנית ביותר של NewPipe + אפשרות זאת זמינה רק אם נבחרה ערכת נושא %s + ביטול הגדרת תמונה ייצוגית קבועה \ No newline at end of file diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index b4f9fadc0..7c9ebf231 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -726,4 +726,5 @@ 3-बिंदु वाले मेन्यू से सब्सक्रिप्शनस आयात या निर्यात करें आप न्यूपाइप का नवीनतम संस्करण चला रहे हैं %s डाउनलोड करने के लिए टैप करें + यह विकल्प केवल तभी उपलब्ध होता है जब थीम के लिए %s का चयन किया जाता है \ No newline at end of file diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index a5b9a3ff2..af8781a23 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -713,4 +713,6 @@ Impor atau ekspor langganan dari menu 3 titik Anda menjalankan NewPipe versi terkini Ketuk untuk mengunduh %s + Opsi ini hanya tersedia jika %s dipilih untuk Tema + Batalkan penetapan gambar kecil permanen \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index d2b0d10fe..3304321d8 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -739,4 +739,5 @@ Premi per scaricare %s L\'ultima versione di NewPipe è già in esecuzione Importa o esporta iscrizioni dal menu a 3 punti + Questa opzione è disponibile solo se %s è selezionato come Tema \ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index fcf2d3c94..480d869e5 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -108,7 +108,7 @@ NewPipe について サードパーティー ライセンス © %1$s 作者 %2$s ライセンス %3$s - このアプリについて + バージョン情報とよくある質問 ライセンス Android 向けのフリーで軽量なストリーミング。 GitHub で表示 @@ -176,7 +176,7 @@ 一度だけ データベースをインポート データベースをエクスポート - 既存の履歴、登録リスト、プレイリストおよび (任意) 設定は上書きされます + 既存の履歴、登録チャンネル一覧、プレイリストおよび (任意) 設定は上書きされます 再生履歴、登録チャンネル一覧、プレイリストおよび設定をエクスポートします エラーから回復中です 外部プレイヤーは、これらのタイプのリンクをサポートしていません @@ -705,4 +705,11 @@ 次のアイテムを表示する 再生済みを隠す 次のアイテムを隠す + 並び替え + ウェブサイトを表示 + タップして%sをダウンロード + あなたはNewPipeの最新版を起動しています + よくある質問 + アプリの使い方に困ったときは、よくある質問に答えていますので、ぜひご覧ください! + %sがテーマに選択された場合のみ、この選択肢が利用可能です \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index d7503a941..95df1e9a4 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -709,4 +709,10 @@ 자주 묻는 질문 웹사이트에서 보기 정렬 + 빠른 모드 + 점 3개 메뉴에서 구독 가져오기 또는 내보내기 + 최신 버전의 NewPipe를 실행 중입니다. + %s를 다운로드하려면 탭하세요. + 영구 썸네일 설정 해제 + 이 옵션은 테마로 %s를 선택한 경우에만 사용할 수 있음 \ No newline at end of file diff --git a/app/src/main/res/values-nn/strings.xml b/app/src/main/res/values-nn/strings.xml index d937b6a69..f7d4eec86 100644 --- a/app/src/main/res/values-nn/strings.xml +++ b/app/src/main/res/values-nn/strings.xml @@ -14,7 +14,7 @@ Del Søk Innstillingar - Tenkte du på «%1$s»\? + Meinte du «%1$s»\? Del med Nytta ytre videospelar Tek bort ljod ved somme oppløysingar @@ -63,4 +63,11 @@ Straumar som ikkje enno er stødde av hentaren, er ikkje synlege Ukjend kvalitet Ukjend format + Forvald oppløysing + Forvald oppsprettsoppløysing + Vis eit val om å spela av ein video med mediasamlestaden Kodi + Skjer småbiletet til storleikshøvet 1:1 + Skjer videosmåbiletet som vert vist i varselet, ifrå storleikshøvet 16:9 til 1:1 + Fyrste gjerdknapp + Andre gjerdknapp \ No newline at end of file diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index 7497e5e48..0ad616d01 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -74,7 +74,7 @@ ଭିଡିଓ ବର୍ଣ୍ଣନା ଏବଂ ଅତିରିକ୍ତ ସୂଚନା ଲୁଚାଇବାକୁ ବନ୍ଦ କରନ୍ତୁ ଅଡିଓ ବାହ୍ୟ ଅଡିଓ ପ୍ଲେୟାର ବ୍ୟବହାର କରନ୍ତୁ - ସବସ୍କ୍ରାଇବ କରନ୍ତୁ + ସଦସ୍ୟତା ଯୋଡ଼ନ୍ତୁ ସଦସ୍ୟତା ଅଦ୍ୟତନ କରିପାରିଲା ନାହିଁ ଟ୍ୟାବ୍ ବାଛନ୍ତୁ ଅଡିଓ ଡାଉନଲୋଡ୍ ଫୋଲ୍ଡର୍ @@ -726,4 +726,5 @@ 3-ଡଟ୍ ମେନୁରୁ ସଦସ୍ୟତା ଆମଦାନୀ କିମ୍ବା ରପ୍ତାନି କରନ୍ତୁ ଆପଣ NewPipe ର ସର୍ବଶେଷ ସଂସ୍କରଣ ଚଳାଉଛନ୍ତି %s ଡାଉନଲୋଡ୍ କରିବାକୁ ଟ୍ୟାପ୍ କରନ୍ତୁ + ଥିମ୍ ପାଇଁ %s ଚୟନ ହେଲେ ହିଁ ଏହି ବିକଳ୍ପ ଉପଲବ୍ଧ \ No newline at end of file diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 08c7e47c9..169d45dad 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -726,4 +726,5 @@ 3-ਡੌਟ ਮੀਨੂ ਤੋਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਨੂੰ ਆਯਾਤ ਜਾਂ ਨਿਰਯਾਤ ਕਰੋ ਤੁਸੀਂ ਨਿਊਪਾਈਪ ਦਾ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਚਲਾ ਰਹੇ ਹੋ %s ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ + ਇਹ ਵਿਕਲਪ ਤਾਂ ਹੀ ਉਪਲਬਧ ਹੈ ਜੇਕਰ %s ਨੂੰ ਥੀਮ ਲਈ ਚੁਣਿਆ ਗਿਆ ਹੈ \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a24be6b94..ab1e0aa72 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -618,7 +618,7 @@ Automatyczny (motyw urządzenia) Motyw nocny Pokaż szczegóły kanału - Wyłącz tunelowanie multimediów, jeśli zaobserwowałeś czarny ekran bądź brak płynności odtwarzania wideo + Wyłącz tunelowanie multimediów, jeśli zaobserwowałeś(-aś) czarny ekran bądź brak płynności odtwarzania wideo Wyłącz tunelowanie multimediów Ograniczenie wiekowe Wyłącz zaznaczanie tekstu w opisie @@ -747,4 +747,6 @@ Tryb szybki Importuj lub eksportuj subskrypcje z menu z trzema kropkami. Używasz najnowszej wersji NewPipe + Ta opcja jest dostępna tylko wtedy, gdy %s jest wybrany jako motyw + Usuń stałą miniaturę \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index be1f732d1..1929df070 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -739,4 +739,6 @@ Importar ou exportar inscrições do menu de 3 pontos Toque para baixar %s Você está executando a versão mais recente do NewPipe + Esta opção só está disponível se %s for selecionado para Tema + Desativar miniatura permanente \ No newline at end of file diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 0a2205eee..5a0d19285 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -726,4 +726,5 @@ Já está a executar a versão mais recente do NewPipe Toque para descarregar %s Ordenação + Esta opção só está disponível se %s for selecionado como tema \ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 862d6e383..e993da934 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -739,4 +739,5 @@ Importar ou exportar subscrições do menu de 3 pontos Já está a executar a versão mais recente do NewPipe Toque para descarregar %s + Esta opção só está disponível se %s for selecionado para o tema \ No newline at end of file diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 636c617b2..2dc847daf 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -1,11 +1,11 @@ - Încărcat pe %1$s + Publicat pe %1$s Niciun player pentru streaming găsit. Instalați VLC\? Instalare Anulare Deschidere în browser - Distribuiți + Distribuire Descărcare Căutare Setări @@ -78,7 +78,7 @@ Vă rugăm așteptați… Copiat în clipboard Vă rugăm să definiți un folder de descărcare mai târziu în setări - Deschide în modul popup + Deschidere în modul popup Această permisiune este necesară pentru a \ndeschide în mod pop-up Provocare reCAPTCHA @@ -105,7 +105,7 @@ Alegeți sugestiile care vor fi afișate la căutare Ștergeți Rezoluție maximă - Abonează-te + Abonare Abonat(ă) Canal dezabonat Nu s-a putut modifica abonamentul @@ -176,9 +176,9 @@ Noi și populare Niciun player pentru streaming găsit. (Totuși, puteți instala VLC). Descărcați fișierul de flux - Arată informații + Afișare informații Playlist-uri salvate - Salvează în + Salvare în Folosește parcurgerea rapidă inexactă Derularea inexactă permite player-ului să deruleze mai rapid, cu o precizie redusă. Derularea timp de 5, 15 sau 25 de secunde nu funcționează cu aceasta Încarcă miniaturi @@ -276,7 +276,7 @@ Viteză Acceptați Refuzați - Dezabonează-te + Dezabonare Alegeți fila Controlul prin gesturi al volumului Utilizați gesturi pentru a controla volumul @@ -367,9 +367,9 @@ Faceți ca Android să personalizeze culoarea notificării în funcție de culoarea principală din miniatură (rețineți că aceasta nu este disponibilă pe toate dispozitivele) Colorează notificarea Nimic - Tamponare + Se încarcă Redare aleatorie - Repetaţi + Repetare Puteți selecta cel mult trei acțiuni pentru afișare în notificarea compactă! Modificați fiecare acțiune de notificare de mai jos, atingând-o. Selectați până la trei dintre ele pentru a fi afișate în notificarea compactă, utilizând casetele de selectare din dreapta Al cincilea buton de acțiune @@ -379,7 +379,7 @@ Primul buton de acțiune Tăiați miniatura video afișată în notificare de la raportul de aspect 16:9 la 1:1 (poate introduce distorsiuni) Tăiere miniatură la raportul de aspect 1:1 - Se arată rezultate pentru:%s + Se arată rezultate pentru: %s Nicio aplicație de pe dispozitivul dvs. nu poate deschide acesta Capitole Recente @@ -595,7 +595,7 @@ Dezactivați pentru a ascunde casetele de informații meta cu informații suplimentare despre creatorul fluxului, conținutul fluxului sau o cerere de căutare Dezactivați pentru a ascunde descrierea videoclipului și informațiile suplimentare Arată descrierea - Deschideți cu + Deschidere cu Blocați aplicația Rezolvați Evidențiate @@ -733,10 +733,11 @@ Ascunde elementele din viitor Vezi pe website Dacă întâmpinați probleme cu utilizarea aplicației, nu uitați să consultați aceste răspunsuri la întrebări frecvente! - Întrebări puse frecvent + Întrebări frecvente Sortează Modul rapid Importați sau exportați abonamente din meniul cu 3 puncte Rulați cea mai recentă versiune NewPipe Atingeți pentru a descărca %s + Această opțiune este disponibilă numai dacă %s este selectată ca temă \ No newline at end of file diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml index c3051300f..bdae4fd37 100644 --- a/app/src/main/res/values-sc/strings.xml +++ b/app/src/main/res/values-sc/strings.xml @@ -722,4 +722,9 @@ Si ses tenende problemas impreende s\'aplicatzione assegura·ti de consultare custas rispostas a preguntas fitianas! Pòmpia in su situ web Òrdina + Toca pro iscarrigare %s + Modalidade lestra + Importa o esporta iscritziones dae su menù a 3 puntos + Ses impreende s\'ùrtima versione de NewPipe + Custa optzione est a disponimentu petzi si %s est seletzionadu comente tema \ No newline at end of file diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index ea2a9dbb5..222b4b137 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -61,7 +61,7 @@ Poskusi znova Opomba (v angleščini): v živo - Začnite z iskanjem + Pritisnite lupo in začnite z iskanjem. Začni Premor Izbriši @@ -320,13 +320,13 @@ Naključno Ponovi Izberete lahko največ 3 dejanja, ki se bodo prikazala v kompaktnem obvestilu! - Uredite vsako obvestilo z klikom na obvestilo. Izberite do 3 obvestila, ki se bodo prikazala v kompaktnem obvestilu z uporabo potrditvenega polja na desni. + Uredite vsako dejanje obvestila z klikom na posamezno dejanje. Z uporabo potrditvenega polja na desni izberite do 3 dejanja obvestil, ki se bodo prikazala v kompaktnem obvestilu Gumb za peto dejanje Gumb za četrto dejanje Gumb za tretje dejanje Gumb za drugo dejanje Gumb za prvo dejanje - Povečaj sličico videa, ki je prikazana v obvestilu iz razmerja 16:9 v razmerje 1:1 (lahko pride do popačenja) + Povečaj sličico videa, ki je prikazana v obvestilu iz razmerja 16:9 v razmerje 1:1 Zruši aplikacijo Spremeni velikost besedila podnapisov in stil ozadja v predvajalniku. Zahteva ponovni zagon aplikacije, da učinkuje. Podnapisi @@ -464,4 +464,8 @@ Prikaži puščanje pomnilnika Prikaži detajle kanala Nočna tema + Povečaj sličico na razmerje 1:1 + Označi kot že ogledano + Uporabite hitro nenatančno iskanje + Sesuj predvajalnik \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 3bdb388c4..fbe793569 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -726,4 +726,5 @@ Snabbt läge Du använder den senaste versionen av NewPipe Tryck för att ladda ner %s + Det här alternativet är endast tillgängligt om %s har valts som Tema \ No newline at end of file diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index af5bb73ef..12effb9e2 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -366,4 +366,7 @@ แสดงตำแหน่งวีดิโอที่เล่นในรายการ ล้างข้อมูล กำลังแสดงผลลัพธ์สำหรับ: %s + เปิดด้วย + ทำเครื่องหมายว่าดูแล้ว + ตกลง \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 5c3d07204..c9718d0b0 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -726,4 +726,6 @@ NewPipe güncellemesi var! %s indirmek için dokunun 3-nokta menüsünden abonelikleri içe veya dışa aktarın + Bu seçenek yalnızca tema için %s seçildiğinde kullanılabilir + Kalıcı küçük resmin ayarını kaldır \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 9c4ec3957..e812e8e4f 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -743,4 +743,6 @@ Торкніться, щоб завантажити %s Імпорт або експорт підписок з 3-крапкового меню Швидкий режим + Ця опція доступна, лише якщо темою обрано %s + Прибрати постійну мініатюру \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index e43581523..c3ada7180 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -164,7 +164,7 @@ reCAPTCHA 验证 已请求新的 reCAPTCHA 验证 在悬浮窗中播放 - 默认分辨率(悬浮窗模式) + 悬浮窗默认分辨率 使用更高的分辨率 仅部分设备支持播放 2K 或 4K 视频 清除 @@ -713,4 +713,6 @@ 从三点菜单导入或导出订阅 你正在运行最新版的 NewPipe 轻按下载 %s + 只有在主题中选择了 %s 该选项才可用 + 取消设置永久缩略图 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index be81c294f..1ed552ab8 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -713,4 +713,5 @@ 輕點以下載 %s 快速模式 從三點式選單匯入或匯出訂閱 + 此選項僅在主題選擇為 %s 時可用 \ No newline at end of file diff --git a/fastlane/metadata/android/ar/changelogs/71.txt b/fastlane/metadata/android/ar/changelogs/71.txt index 6c02247bb..338ab17c5 100644 --- a/fastlane/metadata/android/ar/changelogs/71.txt +++ b/fastlane/metadata/android/ar/changelogs/71.txt @@ -1,10 +1,10 @@ -### تحسينات -* إضافة إشعار تحديث التطبيق لبناء GitHub (#1608 بواسطة krtkush) -* تحسينات مختلفة على برنامج التنزيل (# 1944 بواسطة kapodamy): - * إضافة الرموز البيضاء المفقودة واستخدام طريقة hardcored لتغيير ألوان الرمز - * تحقق مما إذا كان المكرر قد تمت تهيئته (إصلاحات #2031) - * السماح بإعادة المحاولة مع ظهور خطأ "فشلت المعالجة اللاحقة" في muxer الجديد - * MPEG-4 muxer الجديد الذي يعمل على تثبيت تدفقات الفيديو والصوت غير المتزامنة (#2039) +تحسين +*إضافة إشعار تحديث التطبيق لبناء GitHub (#1608 بواسطة krtkush) +*تحسينات مختلفة على برنامج التنزيل(#1944 بواسطة kapodamy): + *إضافة الرموز البيضاء المفقودة واستخدام طريقة hardcored لتغيير ألوان الرمز + *تحقق مما إذا كان المكرر قد تمت تهيئته(إصلاحات #2031) + *السماح بإعادة المحاولة مع ظهور خطأ "فشلت المعالجة اللاحقة" في muxer الجديد + *MPEG-4 muxer جديد يعمل على تثبيت تدفقات الفيديو والصوت غير المتزامنة(#2039) -### ثابت -* توقف البث المباشر على YouTube عن التشغيل بعد وقت قصير (#1996 by @yausername) +تصليح +*توقف البث المباشر على يوتيوب عن التشغيل بعد وقت قصير(#1996 by @yausername) diff --git a/fastlane/metadata/android/ar/changelogs/991.txt b/fastlane/metadata/android/ar/changelogs/991.txt new file mode 100644 index 000000000..5eaebe7a9 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/991.txt @@ -0,0 +1,13 @@ +جديد +• إضافة زر "فتح في المتصفح" على واجهة الخطأ +• إضافة خيار لعرض مجموعات القنوات على شكل قائمة +• [YouTube] ضغطة مطولة على مقاطع الدفق لمشاركة رابط URL مع الطابع الزمني +• إضافة زر قائمة انتظار التشغيل للمشغل الصغير + +تحسينات +• إضافة الترجمة الأيسلندية وتحديث العديد من الترجمات الأخرى +• العديد من التحسينات الداخلية + +تصليحات +• إصلاح أعطاب متعددة +• [YouTube] إصلاح مشكلات تحميل القنوات، وتحميل التغذية غير المخصصة، والتشغيل البديل في بعض البلدان diff --git a/fastlane/metadata/android/de/changelogs/975.txt b/fastlane/metadata/android/de/changelogs/975.txt new file mode 100644 index 000000000..de60202d1 --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/975.txt @@ -0,0 +1,16 @@ +Neu +- Anzeige eines Vorschaubilds während der Suche +- Deaktivierte Kommentare erkennen +- Erlaubt das Markieren eines Feed-Elements als beobachtet +- Kommentarherzen anzeigen + +Verbessert +- Verbessertes Layout von Metadaten und Tags +- Dienstfarbe auf UI-Komponenten anwenden + +Behoben +- Korrektur des Vorschaubilds im Mini-Player +- Behebung der endlosen Pufferung bei doppelten Warteschlangenelementen +- Einige Player-Fixes wie Rotation und schnelleres Schließen +- Behebung von ReCAPTCHA +... diff --git a/fastlane/metadata/android/de/changelogs/976.txt b/fastlane/metadata/android/de/changelogs/976.txt new file mode 100644 index 000000000..a70829150 --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/976.txt @@ -0,0 +1,10 @@ +- Option zum direkten Öffnen des Players im Vollbildmodus hinzugefügt +- Auswahl der anzuzeigenden Suchvorschläge möglich +- Dunkles Theme jetzt dunkler + dunkler Splash-Screen hinzugefügt +- Verbesserte Dateiauswahl, um unerwünschte Dateien auszugrauen +- Import von YouTube-Abonnements behoben +- Das Wiederholen eines Streams erfordert ein erneutes Tippen auf die Wiedergabetaste +- Behoben: Audio-Sitzung schließen +... + +Änderungen finden Sie im Changelog (und im Blogbeitrag) auf dem Links-Tab unten. diff --git a/fastlane/metadata/android/de/changelogs/977.txt b/fastlane/metadata/android/de/changelogs/977.txt new file mode 100644 index 000000000..54c3d72f6 --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/977.txt @@ -0,0 +1,9 @@ +- Die Schaltfläche "Weiter abspielen" wurde dem Langdruckmenü hinzugefügt +- YouTube Shorts Pfadpräfix zum Absichtsfilter hinzugefügt +- Import von Einstellungen behoben +- Position der Suchleiste mit Player-Schaltflächen im Warteschlangen-Bildschirm vertauscht +- Verschiedene Korrekturen im Zusammenhang mit MediasessionManager +- Die Suchleiste wurde nach dem Ende des Videos nicht abgeschlossen +... + +Weitere Änderungen finden Sie im Changelog (und im Blogbeitrag) auf der Registerkarte Links unten. diff --git a/fastlane/metadata/android/de/changelogs/988.txt b/fastlane/metadata/android/de/changelogs/988.txt new file mode 100644 index 000000000..bde54eda1 --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/988.txt @@ -0,0 +1,2 @@ +[YouTube] Fehler „Konnte keinen Stream abrufen“ behoben beim Versuch, ein Video abzuspielen +[YouTube] "Der folgende Inhalt ist in dieser App nicht verfügbar." anstelle des angeforderten Videos behoben diff --git a/fastlane/metadata/android/de/changelogs/989.txt b/fastlane/metadata/android/de/changelogs/989.txt new file mode 100644 index 000000000..40e38f43e --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/989.txt @@ -0,0 +1,3 @@ +• [YouTube] Unendliches Laden behoben beim Versuch, ein Video abzuspielen +• [YouTube] Drosselung bei einigen Videos behoben +• Aktualisierung der jsoup-Bibliothek auf 1.15.3, die einen Sicherheitsfix enthält diff --git a/fastlane/metadata/android/de/changelogs/990.txt b/fastlane/metadata/android/de/changelogs/990.txt new file mode 100644 index 000000000..f1273a211 --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/990.txt @@ -0,0 +1,15 @@ +Ab sofort entfällt die Unterstützung für Android 4.4 KitKat, die Mindestversion ist Android 5 Lollipop! + +Neu +- Herunterladen aus dem Langdruck-Menü +- Zukünftige Videos im Feed ausblenden +... + +Verbessert +- Refaktorierung des Player-Codes in kleine Komponenten: weniger RAM-Verbrauch, weniger Bugs +- Verbesserter Skalierungsmodus für Miniaturansichten +... + +Behoben +- Behebung verschiedener Probleme mit der Player-Benachrichtigung: veraltete/fehlende Medieninformationen, verzerrte Miniaturansicht +... diff --git a/fastlane/metadata/android/de/changelogs/991.txt b/fastlane/metadata/android/de/changelogs/991.txt new file mode 100644 index 000000000..3a8cae2cb --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/991.txt @@ -0,0 +1,13 @@ +Neu +- Schaltfläche "Im Browser öffnen" im Fehlerbedienfeld hinzugefügt +- Option zur Anzeige von Kanalgruppen als Liste hinzugefügt +- [YouTube] Langes Klicken auf Streamsegmente zum Teilen der Zeitstempel-URL +- Schaltfläche "Warteschlange abspielen" zum Mini-Player hinzugefügt + +Verbessert +- Isländische Lokalisierung hinzugefügt, viele Übersetzungen aktualisiert +- Viele interne Verbesserungen + +Behoben +- Mehrere Abstürze behoben +- [YouTube] Behebung von Problemen beim Laden von Kanälen... diff --git a/fastlane/metadata/android/hi/changelogs/991.txt b/fastlane/metadata/android/hi/changelogs/991.txt new file mode 100644 index 000000000..46ca2ebb6 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/991.txt @@ -0,0 +1 @@ +नया • त्रुटि पैनल में "ब्राउज़र में खोलें" बटन जोड़ें • चैनल समूहों को सूची के रूप में प्रदर्शित करने का विकल्प जोड़ें • [यूट्यूब] टाइमस्टैम्प यूआरएल साझा करने के लिए स्ट्रीम सेगमेंट पर लंबे समय तक क्लिक करें • मिनी प्लेयर में क्यू प्ले बटन जोड़ें उन्नत • आइसलैंडिक स्थानीयकरण जोड़ें और कई अन्य अनुवादों को अपडेट करें • कई आंतरिक सुधार हल किया गया • एकाधिक दुर्घटनाओं को ठीक करें • [यूट्यूब] कुछ देशों में लोडिंग चैनल, गैर-समर्पित फ़ीड और प्लेबैक समस्याओं को ठीक करें diff --git a/fastlane/metadata/android/pa/changelogs/65.txt b/fastlane/metadata/android/pa/changelogs/65.txt new file mode 100644 index 000000000..0fbf1147e --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/65.txt @@ -0,0 +1 @@ +### ਸੁਧਾਰ - ਬਰਗਰਮੇਨੂ ਆਈਕਨ ਐਨੀਮੇਸ਼ਨ #1486 ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ - ਡਾਉਨਲੋਡਸ #1472 ਨੂੰ ਮਿਟਾਉਣ ਨੂੰ ਅਨਡੂ ਕਰੋ - ਸ਼ੇਅਰ ਮੀਨੂ #1498 ਵਿੱਚ ਡਾਊਨਲੋਡ ਵਿਕਲਪ - ਲੰਬੇ ਟੈਪ ਮੀਨੂ #1454 ਵਿੱਚ ਸ਼ੇਅਰ ਵਿਕਲਪ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ - ਨਿਕਾਸ #1354 'ਤੇ ਮੁੱਖ ਪਲੇਅਰ ਨੂੰ ਛੋਟਾ ਕਰੋ - ਲਾਇਬ੍ਰੇਰੀ ਸੰਸਕਰਣ ਅਪਡੇਟ ਅਤੇ ਡੇਟਾਬੇਸ ਬੈਕਅਪ ਫਿਕਸ #1510 - ExoPlayer 2.8.2 ਅੱਪਡੇਟ #1392 - ਤੇਜ਼ ਗਤੀ ਤਬਦੀਲੀ ਲਈ ਵੱਖ-ਵੱਖ ਸਟੈਪ ਸਾਈਜ਼ ਦਾ ਸਮਰਥਨ ਕਰਨ ਲਈ ਪਲੇਬੈਕ ਸਪੀਡ ਕੰਟਰੋਲ ਡਾਇਲਾਗ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਇਆ ਗਿਆ। - ਪਲੇਬੈਕ ਸਪੀਡ ਨਿਯੰਤਰਣ ਵਿੱਚ ਚੁੱਪ ਦੌਰਾਨ ਫਾਸਟ-ਫਾਰਵਰਡ ਕਰਨ ਲਈ ਇੱਕ ਟੌਗਲ ਜੋੜਿਆ ਗਿਆ। ਇਹ ਆਡੀਓਬੁੱਕਾਂ ਅਤੇ ਕੁਝ ਸੰਗੀਤ ਸ਼ੈਲੀਆਂ ਲਈ ਮਦਦਗਾਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਸੱਚਾ ਸਹਿਜ ਅਨੁਭਵ ਲਿਆ ਸਕਦਾ ਹੈ (ਅਤੇ ਬਹੁਤ ਸਾਰੀਆਂ ਚੁੱਪ =\\ ਨਾਲ ਗੀਤ ਤੋੜ ਸਕਦਾ ਹੈ)। - ਹੱਥੀਂ ਅਜਿਹਾ ਕਰਨ ਦੀ ਬਜਾਏ, ਪਲੇਅਰ ਵਿੱਚ ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ ਮੀਡੀਆ ਦੇ ਨਾਲ-ਨਾਲ ਮੈਟਾਡੇਟਾ ਪਾਸ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਲਈ ਰੀਫੈਕਟਰਡ ਮੀਡੀਆ ਸਰੋਤ ਰੈਜ਼ੋਲਿਊਸ਼ਨ। ਹੁਣ ਸਾਡੇ ਕੋਲ ਮੈਟਾਡੇਟਾ ਦਾ ਇੱਕ ਸਿੰਗਲ ਸਰੋਤ ਹੈ ਅਤੇ ਪਲੇਬੈਕ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ ਸਿੱਧਾ ਉਪਲਬਧ ਹੁੰਦਾ ਹੈ। - ਸਥਿਰ ਰਿਮੋਟ ਪਲੇਲਿਸਟ ਮੈਟਾਡੇਟਾ ਅੱਪਡੇਟ ਨਹੀਂ ਹੋ ਰਿਹਾ ਹੈ ਜਦੋਂ ਪਲੇਲਿਸਟ ਫਰੈਗਮੈਂਟ ਖੋਲ੍ਹਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਨਵਾਂ ਮੈਟਾਡੇਟਾ ਉਪਲਬਧ ਹੁੰਦਾ ਹੈ। - ਕਈ UI ਫਿਕਸ: #1383, ਬੈਕਗਰਾਊਂਡ ਪਲੇਅਰ ਨੋਟੀਫਿਕੇਸ਼ਨ ਕੰਟਰੋਲ ਹੁਣ ਹਮੇਸ਼ਾ ਸਫੈਦ, ਫਲਿੰਗਿੰਗ ਰਾਹੀਂ ਪੌਪਅੱਪ ਪਲੇਅਰ ਨੂੰ ਬੰਦ ਕਰਨਾ ਆਸਾਨ - ਮਲਟੀਸਰਵਿਸ ਲਈ ਰੀਫੈਕਟਰਡ ਆਰਕੀਟੈਕਚਰ ਦੇ ਨਾਲ ਨਵੇਂ ਐਕਸਟਰੈਕਟਰ ਦੀ ਵਰਤੋਂ ਕਰੋ ### ਫਿਕਸ - #1440 ਟੁੱਟੇ ਹੋਏ ਵੀਡੀਓ ਜਾਣਕਾਰੀ ਲੇਆਉਟ #1491 ਨੂੰ ਠੀਕ ਕਰੋ - ਇਤਿਹਾਸ ਫਿਕਸ #1497 ਦੇਖੋ - #1495, ਜਿਵੇਂ ਹੀ ਉਪਭੋਗਤਾ ਪਲੇਲਿਸਟ ਤੱਕ ਪਹੁੰਚ ਕਰਦਾ ਹੈ, ਮੈਟਾਡੇਟਾ (ਥੰਬਨੇਲ, ਸਿਰਲੇਖ ਅਤੇ ਵੀਡੀਓ ਗਿਣਤੀ) ਨੂੰ ਅਪਡੇਟ ਕਰਕੇ। - #1475, ਜਦੋਂ ਉਪਭੋਗਤਾ ਵੇਰਵੇ ਦੇ ਟੁਕੜੇ 'ਤੇ ਬਾਹਰੀ ਪਲੇਅਰ 'ਤੇ ਵੀਡੀਓ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ ਤਾਂ ਡੇਟਾਬੇਸ ਵਿੱਚ ਇੱਕ ਦ੍ਰਿਸ਼ ਨੂੰ ਰਜਿਸਟਰ ਕਰਕੇ। - ਪੌਪਅੱਪ ਮੋਡ ਦੇ ਮਾਮਲੇ ਵਿੱਚ ਕ੍ਰੀਨ ਟਾਈਮਆਊਟ ਫਿਕਸ ਕਰੋ। #1463 (ਸਥਿਰ #640) - ਮੁੱਖ ਵੀਡੀਓ ਪਲੇਅਰ ਫਿਕਸ #1509 - [#1412] ਫਿਕਸਡ ਰੀਪੀਟ ਮੋਡ ਜਿਸ ਨਾਲ ਪਲੇਅਰ ਐਨਪੀਈ ਦਾ ਕਾਰਨ ਬਣਦਾ ਹੈ ਜਦੋਂ ਪਲੇਅਰ ਦੀ ਗਤੀਵਿਧੀ ਬੈਕਗ੍ਰਾਉਂਡ ਵਿੱਚ ਹੁੰਦੀ ਹੈ ਤਾਂ ਨਵਾਂ ਇਰਾਦਾ ਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ। - ਪੌਪਅੱਪ ਲਈ ਫਿਕਸਡ ਮਿਨੀਮਾਈਜ਼ਿੰਗ ਪਲੇਅਰ ਪਲੇਅਰ ਨੂੰ ਨਸ਼ਟ ਨਹੀਂ ਕਰਦਾ ਹੈ ਜਦੋਂ ਪੌਪਅੱਪ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ। diff --git a/fastlane/metadata/android/pa/changelogs/66.txt b/fastlane/metadata/android/pa/changelogs/66.txt new file mode 100644 index 000000000..aecf80cbc --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/66.txt @@ -0,0 +1 @@ +# v0.13.7 ਦਾ ਚੇਂਜਲਾਗ ### ਸਥਿਰ - v0.13.6 ਦੇ ਕ੍ਰਮਬੱਧ ਫਿਲਟਰ ਮੁੱਦਿਆਂ ਨੂੰ ਠੀਕ ਕਰੋ # v0.13.6 ਦਾ ਚੇਂਜਲਾਗ ### ਸੁਧਾਰ - ਬਰਗਰਮੇਨੂ ਆਈਕਨ ਐਨੀਮੇਸ਼ਨ #1486 ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ - ਡਾਉਨਲੋਡਸ #1472 ਨੂੰ ਮਿਟਾਉਣ ਨੂੰ ਅਨਡੂ ਕਰੋ - ਸ਼ੇਅਰ ਮੀਨੂ #1498 ਵਿੱਚ ਡਾਊਨਲੋਡ ਵਿਕਲਪ - ਲੰਬੇ ਟੈਪ ਮੀਨੂ #1454 ਵਿੱਚ ਸ਼ੇਅਰ ਵਿਕਲਪ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ - ਨਿਕਾਸ #1354 'ਤੇ ਮੁੱਖ ਪਲੇਅਰ ਨੂੰ ਛੋਟਾ ਕਰੋ - ਲਾਇਬ੍ਰੇਰੀ ਸੰਸਕਰਣ ਅਪਡੇਟ ਅਤੇ ਡੇਟਾਬੇਸ ਬੈਕਅਪ ਫਿਕਸ #1510 - ExoPlayer 2.8.2 ਅੱਪਡੇਟ #1392 - ਤੇਜ਼ ਗਤੀ ਤਬਦੀਲੀ ਲਈ ਵੱਖ-ਵੱਖ ਸਟੈਪ ਸਾਈਜ਼ ਦਾ ਸਮਰਥਨ ਕਰਨ ਲਈ ਪਲੇਬੈਕ ਸਪੀਡ ਕੰਟਰੋਲ ਡਾਇਲਾਗ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਇਆ ਗਿਆ। - ਪਲੇਬੈਕ ਸਪੀਡ ਨਿਯੰਤਰਣ ਵਿੱਚ ਚੁੱਪ ਦੌਰਾਨ ਫਾਸਟ-ਫਾਰਵਰਡ ਕਰਨ ਲਈ ਇੱਕ ਟੌਗਲ ਜੋੜਿਆ ਗਿਆ। ਇਹ ਆਡੀਓਬੁੱਕਾਂ ਅਤੇ ਕੁਝ ਸੰਗੀਤ ਸ਼ੈਲੀਆਂ ਲਈ ਮਦਦਗਾਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਸੱਚਾ ਸਹਿਜ ਅਨੁਭਵ ਲਿਆ ਸਕਦਾ ਹੈ (ਅਤੇ ਬਹੁਤ ਸਾਰੀਆਂ ਚੁੱਪ =\\ ਨਾਲ ਗੀਤ ਤੋੜ ਸਕਦਾ ਹੈ)। - ਹੱਥੀਂ ਅਜਿਹਾ ਕਰਨ ਦੀ ਬਜਾਏ, ਪਲੇਅਰ ਵਿੱਚ ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ ਮੀਡੀਆ ਦੇ ਨਾਲ-ਨਾਲ ਮੈਟਾਡੇਟਾ ਪਾਸ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਲਈ ਰੀਫੈਕਟਰਡ ਮੀਡੀਆ ਸਰੋਤ ਰੈਜ਼ੋਲਿਊਸ਼ਨ। ਹੁਣ ਸਾਡੇ ਕੋਲ ਮੈਟਾਡੇਟਾ ਦਾ ਇੱਕ ਸਿੰਗਲ ਸਰੋਤ ਹੈ ਅਤੇ ਪਲੇਬੈਕ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ ਸਿੱਧਾ ਉਪਲਬਧ ਹੁੰਦਾ ਹੈ। - ਸਥਿਰ ਰਿਮੋਟ ਪਲੇਲਿਸਟ ਮੈਟਾਡੇਟਾ ਅੱਪਡੇਟ ਨਹੀਂ ਹੋ ਰਿਹਾ ਹੈ ਜਦੋਂ ਪਲੇਲਿਸਟ ਫਰੈਗਮੈਂਟ ਖੋਲ੍ਹਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਨਵਾਂ ਮੈਟਾਡੇਟਾ ਉਪਲਬਧ ਹੁੰਦਾ ਹੈ। - ਕਈ UI ਫਿਕਸ: #1383, ਬੈਕਗਰਾਊਂਡ ਪਲੇਅਰ ਨੋਟੀਫਿਕੇਸ਼ਨ ਕੰਟਰੋਲ ਹੁਣ ਹਮੇਸ਼ਾ ਸਫੈਦ, ਫਲਿੰਗਿੰਗ ਰਾਹੀਂ ਪੌਪਅੱਪ ਪਲੇਅਰ ਨੂੰ ਬੰਦ ਕਰਨਾ ਆਸਾਨ - ਮਲਟੀਸਰਵਿਸ ਲਈ ਰੀਫੈਕਟਰਡ ਆਰਕੀਟੈਕਚਰ ਦੇ ਨਾਲ ਨਵੇਂ ਐਕਸਟਰੈਕਟਰ ਦੀ ਵਰਤੋਂ ਕਰੋ ### ਫਿਕਸ - #1440 ਟੁੱਟੇ ਹੋਏ ਵੀਡੀਓ ਜਾਣਕਾਰੀ ਲੇਆਉਟ #1491 ਨੂੰ ਠੀਕ ਕਰੋ - ਇਤਿਹਾਸ ਫਿਕਸ #1497 ਦੇਖੋ - #1495, ਜਿਵੇਂ ਹੀ ਉਪਭੋਗਤਾ ਪਲੇਲਿਸਟ ਤੱਕ ਪਹੁੰਚ ਕਰਦਾ ਹੈ, ਮੈਟਾਡੇਟਾ (ਥੰਬਨੇਲ, ਸਿਰਲੇਖ ਅਤੇ ਵੀਡੀਓ ਗਿਣਤੀ) ਨੂੰ ਅਪਡੇਟ ਕਰਕੇ। - #1475, ਜਦੋਂ ਉਪਭੋਗਤਾ ਵੇਰਵੇ ਦੇ ਟੁਕੜੇ 'ਤੇ ਬਾਹਰੀ ਪਲੇਅਰ 'ਤੇ ਵੀਡੀਓ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ ਤਾਂ ਡੇਟਾਬੇਸ ਵਿੱਚ ਇੱਕ ਦ੍ਰਿਸ਼ ਨੂੰ ਰਜਿਸਟਰ ਕਰਕੇ। - ਪੌਪਅੱਪ ਮੋਡ ਦੇ ਮਾਮਲੇ ਵਿੱਚ ਕ੍ਰੀਨ ਟਾਈਮਆਊਟ ਫਿਕਸ ਕਰੋ। #1463 (ਸਥਿਰ #640) - ਮੁੱਖ ਵੀਡੀਓ ਪਲੇਅਰ ਫਿਕਸ #1509 - [#1412] ਫਿਕਸਡ ਰੀਪੀਟ ਮੋਡ ਜਿਸ ਨਾਲ ਪਲੇਅਰ ਐਨਪੀਈ ਦਾ ਕਾਰਨ ਬਣਦਾ ਹੈ ਜਦੋਂ ਪਲੇਅਰ ਦੀ ਗਤੀਵਿਧੀ ਬੈਕਗ੍ਰਾਉਂਡ ਵਿੱਚ ਹੁੰਦੀ ਹੈ ਤਾਂ ਨਵਾਂ ਇਰਾਦਾ ਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ। - ਪੌਪਅੱਪ ਲਈ ਫਿਕਸਡ ਮਿਨੀਮਾਈਜ਼ਿੰਗ ਪਲੇਅਰ ਪਲੇਅਰ ਨੂੰ ਨਸ਼ਟ ਨਹੀਂ ਕਰਦਾ ਹੈ ਜਦੋਂ ਪੌਪਅੱਪ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ। diff --git a/fastlane/metadata/android/pa/changelogs/68.txt b/fastlane/metadata/android/pa/changelogs/68.txt new file mode 100644 index 000000000..e8e54ea4f --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/68.txt @@ -0,0 +1 @@ +v0.14.1 ਦੇ # ਬਦਲਾਅ ### ਸਥਿਰ - ਵੀਡੀਓ url #1659 ਨੂੰ ਡੀਕ੍ਰਿਪਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ - ਸਥਿਰ ਵਰਣਨ ਲਿੰਕ #1657 ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਐਕਸਟਰੈਕਟ ਨਹੀਂ ਕਰਦਾ ਹੈ v0.14.0 ਦੀਆਂ # ਤਬਦੀਲੀਆਂ ### ਨਵਾਂ - ਨਵਾਂ ਦਰਾਜ਼ ਡਿਜ਼ਾਈਨ #1461 - ਨਵਾਂ ਅਨੁਕੂਲਿਤ ਫਰੰਟ ਪੇਜ #1461 ### ਸੁਧਾਰ - ਮੁੜ ਕੰਮ ਕੀਤਾ ਸੰਕੇਤ ਨਿਯੰਤਰਣ #1604 - ਪੌਪਅੱਪ ਪਲੇਅਰ #1597 ਨੂੰ ਬੰਦ ਕਰਨ ਦਾ ਨਵਾਂ ਤਰੀਕਾ ### ਸਥਿਰ - ਗਾਹਕੀ ਦੀ ਗਿਣਤੀ ਉਪਲਬਧ ਨਾ ਹੋਣ 'ਤੇ ਗਲਤੀ ਨੂੰ ਠੀਕ ਕਰੋ। #1649 ਬੰਦ ਹੁੰਦਾ ਹੈ। - ਉਹਨਾਂ ਮਾਮਲਿਆਂ ਵਿੱਚ "ਗਾਹਕ ਗਿਣਤੀ ਉਪਲਬਧ ਨਹੀਂ" ਦਿਖਾਓ - YouTube ਪਲੇਲਿਸਟ ਖਾਲੀ ਹੋਣ 'ਤੇ NPE ਨੂੰ ਠੀਕ ਕਰੋ - SoundCloud ਵਿੱਚ ਕਿਓਸਕ ਲਈ ਤੁਰੰਤ ਫਿਕਸ - ਰਿਫੈਕਟਰ ਅਤੇ ਬੱਗਫਿਕਸ #1623 - ਚੱਕਰੀ ਖੋਜ ਨਤੀਜੇ #1562 ਨੂੰ ਠੀਕ ਕਰੋ - ਸੀਕ ਬਾਰ ਨੂੰ ਸਥਿਰ ਤੌਰ 'ਤੇ ਬਾਹਰ ਨਾ ਕੱਢੋ - ਫਿਕਸ YT ਪ੍ਰੀਮੀਅਮ ਵੀਡੀਓ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਬਲੌਕ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ - ਕਈ ਵਾਰ ਲੋਡ ਨਾ ਹੋਣ ਵਾਲੇ ਵੀਡੀਓ ਨੂੰ ਠੀਕ ਕਰੋ (DASH ਪਾਰਸਿੰਗ ਦੇ ਕਾਰਨ) - ਵੀਡੀਓ ਵਰਣਨ ਵਿੱਚ ਲਿੰਕ ਫਿਕਸ ਕਰੋ - ਜਦੋਂ ਕੋਈ ਬਾਹਰੀ sdcard 'ਤੇ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ ਤਾਂ ਚੇਤਾਵਨੀ ਦਿਖਾਓ - ਅਪਵਾਦ ਟਰਿੱਗਰ ਰਿਪੋਰਟ ਦਿਖਾਈ ਗਈ ਕੁਝ ਵੀ ਠੀਕ ਨਾ ਕਰੋ - ਐਂਡਰਾਇਡ 8.1 ਲਈ ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ ਵਿੱਚ ਥੰਬਨੇਲ ਨਹੀਂ ਦਿਖਾਇਆ ਗਿਆ [ਇੱਥੇ ਦੇਖੋ](https://github.com/TeamNewPipe/NewPipe/issues/943) - ਪ੍ਰਸਾਰਣ ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੇ ਦੀ ਰਜਿਸਟਰੇਸ਼ਨ ਨੂੰ ਠੀਕ ਕਰੋ। #1641 ਬੰਦ ਹੁੰਦਾ ਹੈ। diff --git a/fastlane/metadata/android/pa/changelogs/69.txt b/fastlane/metadata/android/pa/changelogs/69.txt new file mode 100644 index 000000000..b6358991b --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/69.txt @@ -0,0 +1 @@ +### ਨਵਾਂ - ਮਿਟਾਓ ਅਤੇ ਸਬਸਕ੍ਰਿਪਸ਼ਨ #1516 ਵਿੱਚ ਸਾਂਝਾ ਕਰੋ - ਟੈਬਲੇਟ UI ਅਤੇ ਗਰਿੱਡ ਸੂਚੀ ਖਾਕਾ #1617 ### ਸੁਧਾਰ - ਆਖਰੀ ਵਰਤੇ ਗਏ ਆਸਪੈਕਟ ਰੇਸ਼ੋ #1748 ਨੂੰ ਸਟੋਰ ਅਤੇ ਰੀਲੋਡ ਕਰੋ - ਪੂਰੇ ਵੀਡੀਓ ਨਾਮ #1771 ਦੇ ਨਾਲ ਡਾਊਨਲੋਡ ਗਤੀਵਿਧੀ ਵਿੱਚ ਲੀਨੀਅਰ ਲੇਆਉਟ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ - ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਟੈਬ #1516 ਦੇ ਅੰਦਰੋਂ ਸਿੱਧਾ ਗਾਹਕੀਆਂ ਨੂੰ ਮਿਟਾਓ ਅਤੇ ਸਾਂਝਾ ਕਰੋ - ਜੇਕਰ ਪਲੇ ਕਤਾਰ ਪਹਿਲਾਂ ਹੀ #1783 ਖਤਮ ਹੋ ਗਈ ਹੈ ਤਾਂ ਹੁਣ ਏਨਕਿਊ ਕਰਨਾ ਵੀਡੀਓ ਚਲਾਉਣ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ - ਵਾਲੀਅਮ ਅਤੇ ਚਮਕ ਸੰਕੇਤ #1644 ਲਈ ਵੱਖਰੀ ਸੈਟਿੰਗ - ਸਥਾਨਕਕਰਨ #1792 ਲਈ ਸਮਰਥਨ ਸ਼ਾਮਲ ਕਰੋ ### ਫਿਕਸ - ਲਈ ਪਾਰਸਿੰਗ ਸਮਾਂ ਫਿਕਸ ਕਰੋ। ਫਾਰਮੈਟ, ਇਸ ਲਈ ਨਿਊ ਪਾਈਪ ਨੂੰ ਫਿਨਲੈਂਡ ਵਿੱਚ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ - ਗਾਹਕੀ ਦੀ ਗਿਣਤੀ ਨੂੰ ਠੀਕ ਕਰੋ - API 28+ ਡਿਵਾਈਸਾਂ #1830 ਲਈ ਫੋਰਗਰਾਉਂਡ ਸੇਵਾ ਅਨੁਮਤੀ ਸ਼ਾਮਲ ਕਰੋ ### ਜਾਣੇ-ਪਛਾਣੇ ਬੱਗ - ਐਂਡ੍ਰਾਇਡ ਪੀ 'ਤੇ ਪਲੇਬੈਕ ਸਟੇਟ ਨੂੰ ਸੇਵ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ diff --git a/fastlane/metadata/android/pa/changelogs/70.txt b/fastlane/metadata/android/pa/changelogs/70.txt new file mode 100644 index 000000000..97d781d4a --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/70.txt @@ -0,0 +1 @@ +ਧਿਆਨ ਦਿਓ: ਇਹ ਸੰਸਕਰਣ ਸ਼ਾਇਦ ਇੱਕ ਬੱਗਫੈਸਟ ਹੈ, ਬਿਲਕੁਲ ਪਿਛਲੇ ਇੱਕ ਵਾਂਗ। ਹਾਲਾਂਕਿ 17 ਤੋਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬੰਦ ਹੋਣ ਦੇ ਕਾਰਨ. ਇੱਕ ਟੁੱਟਿਆ ਹੋਇਆ ਸੰਸਕਰਣ ਕੋਈ ਸੰਸਕਰਣ ਨਾਲੋਂ ਬਿਹਤਰ ਹੈ. ਸਹੀ? ¯\_(ツ)_/¯ ### ਸੁਧਾਰ * ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਹੁਣ ਇੱਕ ਕਲਿੱਕ ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਸਕਦਾ ਹੈ #1879 * ਐਂਡਰਾਇਡ 4.1 - 4.3 #1884 ਲਈ ਸਹਾਇਤਾ ਛੱਡੋ * ਪੁਰਾਣੇ ਪਲੇਅਰ #1884 ਨੂੰ ਹਟਾਓ * ਮੌਜੂਦਾ ਪਲੇ ਕਤਾਰ ਤੋਂ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਸੱਜੇ #1915 'ਤੇ ਸਵਾਈਪ ਕਰਕੇ ਹਟਾਓ * ਆਟੋ ਕਤਾਰਬੱਧ ਸਟ੍ਰੀਮ ਨੂੰ ਹਟਾਓ ਜਦੋਂ ਇੱਕ ਨਵੀਂ ਸਟ੍ਰੀਮ ਹੱਥੀਂ ਕਤਾਰਬੱਧ ਹੁੰਦੀ ਹੈ #1878 * @kapodamy ਦੁਆਰਾ ਡਾਉਨਲੋਡ ਕਰਨ ਅਤੇ ਗੁੰਮ ਹੋਈਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ #1759 ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਪੋਸਟ ਪ੍ਰੋਸੈਸਿੰਗ * ਪੋਸਟ-ਪ੍ਰੋਸੈਸਿੰਗ ਬੁਨਿਆਦੀ ਢਾਂਚਾ * "ਬੁਨਿਆਦੀ ਢਾਂਚੇ" ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਸਹੀ ਤਰੁੱਟੀ (ਡਾਊਨਲੋਡਰ ਲਈ) * ਮਲਟੀਪਲ ਡਾਉਨਲੋਡਸ ਦੀ ਬਜਾਏ ਕਤਾਰ * ਲੜੀਬੱਧ ਲੰਬਿਤ ਡਾਉਨਲੋਡਸ (`ਗੀਗਾ` ਫਾਈਲਾਂ) ਨੂੰ ਐਪ ਡੇਟਾ ਵਿੱਚ ਮੂਵ ਕਰੋ * ਅਧਿਕਤਮ ਡਾਊਨਲੋਡ ਦੀ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਨੂੰ ਲਾਗੂ ਕਰੋ * ਉਚਿਤ ਮਲਟੀ-ਥ੍ਰੈਡ ਡਾਊਨਲੋਡ ਵਿਰਾਮ * ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ 'ਤੇ ਜਾਣ ਵੇਲੇ ਡਾਊਨਲੋਡ ਬੰਦ ਕਰੋ (ਕਦੇ ਕੰਮ ਨਹੀਂ ਕਰਦਾ, ਦੂਜਾ ਪੁਆਇੰਟ ਦੇਖੋ) * ਅਗਲੇ ਡਾਉਨਲੋਡਸ ਲਈ ਥਰਿੱਡ ਗਿਣਤੀ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰੋ * ਬਹੁਤ ਸਾਰੀਆਂ ਅਸੰਗਤੀਆਂ ਹੱਲ ਕੀਤੀਆਂ ਗਈਆਂ ### ਸਥਿਰ * ਪੂਰਵ-ਨਿਰਧਾਰਤ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਨਾਲ ਕਰੈਸ਼ ਨੂੰ ਬਿਹਤਰ ਅਤੇ ਸੀਮਤ ਮੋਬਾਈਲ ਡਾਟਾ ਰੈਜ਼ੋਲਿਊਸ਼ਨ #1835 'ਤੇ ਸੈੱਟ ਕਰੋ * ਪੌਪ-ਅੱਪ ਪਲੇਅਰ ਕਰੈਸ਼ ਫਿਕਸਡ #1874 * ਬੈਕਗਰਾਊਂਡ ਪਲੇਅਰ #1901 ਨੂੰ ਖੋਲ੍ਹਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ NPE * ਜਦੋਂ ਆਟੋ ਕਤਾਰ ਯੋਗ ਹੁੰਦੀ ਹੈ ਤਾਂ ਨਵੀਆਂ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਸੰਮਿਲਿਤ ਕਰਨ ਲਈ ਠੀਕ ਕਰੋ #1878 * ਡੀਸਾਈਪਰਿੰਗ ਸ਼ੱਟਟਾਊਨ ਮੁੱਦੇ ਨੂੰ ਹੱਲ ਕੀਤਾ ਗਿਆ diff --git a/fastlane/metadata/android/pa/changelogs/71.txt b/fastlane/metadata/android/pa/changelogs/71.txt new file mode 100644 index 000000000..bafa26f8c --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/71.txt @@ -0,0 +1 @@ +### ਸੁਧਾਰ * GitHub ਬਿਲਡ ਲਈ ਐਪ ਅਪਡੇਟ ਨੋਟੀਫਿਕੇਸ਼ਨ ਸ਼ਾਮਲ ਕਰੋ (@krtkush ਦੁਆਰਾ #1608) * ਡਾਊਨਲੋਡਰ ਵਿੱਚ ਕਈ ਸੁਧਾਰ (@kapodamy ਦੁਆਰਾ #1944): * ਗੁੰਮ ਹੋਏ ਚਿੱਟੇ ਆਈਕਨ ਸ਼ਾਮਲ ਕਰੋ ਅਤੇ ਆਈਕਨ ਦੇ ਰੰਗਾਂ ਨੂੰ ਬਦਲਣ ਲਈ ਹਾਰਡਕੋਰਡ ਤਰੀਕੇ ਦੀ ਵਰਤੋਂ ਕਰੋ * ਜਾਂਚ ਕਰੋ ਕਿ ਕੀ ਇਟਰੇਟਰ ਸ਼ੁਰੂ ਕੀਤਾ ਗਿਆ ਹੈ (ਫਿਕਸ #2031) * ਨਵੇਂ ਮੁਕਸਰ ਵਿੱਚ "ਪੋਸਟ-ਪ੍ਰੋਸੈਸਿੰਗ ਫੇਲ੍ਹ" ਗਲਤੀ ਦੇ ਨਾਲ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ * ਨਵਾਂ MPEG-4 ਮੁਕਸਰ ਫਿਕਸਿੰਗ ਗੈਰ-ਸਿੰਕਰੋਨਸ ਵੀਡੀਓ ਅਤੇ ਆਡੀਓ ਸਟ੍ਰੀਮਜ਼ (#2039) ### ਸਥਿਰ * YouTube ਲਾਈਵ ਸਟ੍ਰੀਮਾਂ ਥੋੜ੍ਹੇ ਸਮੇਂ ਬਾਅਦ ਚੱਲਣੀਆਂ ਬੰਦ ਹੋ ਜਾਂਦੀਆਂ ਹਨ (@yausername ਦੁਆਰਾ #1996) diff --git a/fastlane/metadata/android/pa/changelogs/730.txt b/fastlane/metadata/android/pa/changelogs/730.txt new file mode 100644 index 000000000..56f5a7d32 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/730.txt @@ -0,0 +1,2 @@ +# ਠੀਕ ਕੀਤਾ +- ਹੌਟ ਫਿਕਸ ਦੁਬਾਰਾ ਗਲਤ ਹੋਇਆ ਡੀਕ੍ਰਿਪਟ ਫੰਕਸ਼ਨ ਠੀਕ । diff --git a/fastlane/metadata/android/pa/changelogs/740.txt b/fastlane/metadata/android/pa/changelogs/740.txt new file mode 100644 index 000000000..6a2dbdc86 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/740.txt @@ -0,0 +1 @@ +ਬਦਲਾਅ ਸੂਚੀ ਅਨੁਵਾਦ ਕਰਣਯੋਗ ਨਹੀਂ। ਬਿਲਕੁਲ ਬਕਵਾਸ diff --git a/fastlane/metadata/android/pa/changelogs/750.txt b/fastlane/metadata/android/pa/changelogs/750.txt new file mode 100644 index 000000000..0b875b705 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/750.txt @@ -0,0 +1 @@ +ਨਵਾਂ ਪਲੇਬੈਕ ਰੈਜ਼ਿਊਮੇ #2288 • ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਮੁੜ ਸ਼ੁਰੂ ਕਰੋ ਜਿੱਥੇ ਤੁਸੀਂ ਪਿਛਲੀ ਵਾਰ ਰੁਕੇ ਸੀ ਡਾਊਨਲੋਡਰ ਸੁਧਾਰ #2149 • ਬਾਹਰੀ SD-ਕਾਰਡਾਂ 'ਤੇ ਡਾਊਨਲੋਡ ਸਟੋਰ ਕਰਨ ਲਈ ਸਟੋਰੇਜ਼ ਐਕਸੈਸ ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰੋ • ਨਵਾਂ mp4 muxer • ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਵਿਕਲਪਿਕ ਤੌਰ 'ਤੇ ਡਾਉਨਲੋਡ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਬਦਲੋ • ਮੀਟਰਡ ਨੈੱਟਵਰਕਾਂ ਦਾ ਆਦਰ ਕਰੋ ਸੁਧਾਰ • gema ਸਤਰ #2295 ਨੂੰ ਹਟਾਇਆ • ਗਤੀਵਿਧੀ ਜੀਵਨ ਚੱਕਰ #2444 ਦੌਰਾਨ ਹੈਂਡਲ (ਆਟੋ) ਰੋਟੇਸ਼ਨ ਤਬਦੀਲੀਆਂ • ਲੰਬੇ-ਦਬਾਓ ਮੀਨੂ ਨੂੰ ਇਕਸਾਰ #2368 ਬਣਾਓ ਸਥਿਰ • ਫਿਕਸਡ ਚੁਣਿਆ ਹੋਇਆ ਉਪਸਿਰਲੇਖ ਟਰੈਕ ਨਾਮ #2394 ਨਹੀਂ ਦਿਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ • ਐਪ ਅੱਪਡੇਟ ਦੀ ਜਾਂਚ ਅਸਫਲ ਹੋਣ 'ਤੇ ਕ੍ਰੈਸ਼ ਨਾ ਹੋਵੋ (GitHub ਸੰਸਕਰਣ) #2423 • ਸਥਿਰ ਡਾਊਨਲੋਡ 99.9% #2440 'ਤੇ ਅਟਕ ਗਏ • ਪਲੇ ਕਤਾਰ ਮੈਟਾਡੇਟਾ #2453 ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ • [SoundCloud] ਪਲੇਲਿਸਟਸ ਲੋਡ ਕਰਨ ਵੇਲੇ ਸਥਿਰ ਕਰੈਸ਼ TeamNewPipe/NewPipeExtractor#170 • [YouTube] ਸਥਿਰ ਅਵਧੀ ਨੂੰ ਪਾਰਸਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/pa/changelogs/760.txt b/fastlane/metadata/android/pa/changelogs/760.txt new file mode 100644 index 000000000..fd4b8f2a4 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/760.txt @@ -0,0 +1 @@ +0.17.1 ਵਿੱਚ ਬਦਲਾਅ ਨਵਾਂ • ਥਾਈ ਸਥਾਨਕਕਰਨ ਸੁਧਾਰ • ਦੁਬਾਰਾ #2518 ਪਲੇਲਿਸਟਾਂ ਲਈ ਲੰਬੇ-ਦਬਾਓ ਮੀਨੂ ਵਿੱਚ ਇੱਥੇ ਪਲੇ ਸ਼ੁਰੂ ਕਰੋ ਐਕਸ਼ਨ ਸ਼ਾਮਲ ਕਰੋ • SAF / ਪੁਰਾਤਨ ਫਾਈਲ ਪਿਕਰ #2521 ਲਈ ਸਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ ਸਥਿਰ • ਐਪਸ #2487 ਨੂੰ ਬਦਲਦੇ ਸਮੇਂ ਡਾਊਨਲੋਡ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਗਾਇਬ ਹੋਣ ਵਾਲੇ ਬਟਨਾਂ ਨੂੰ ਠੀਕ ਕਰੋ • ਫਿਕਸ ਪਲੇਬੈਕ ਸਥਿਤੀ ਸਟੋਰ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਹਾਲਾਂਕਿ ਦੇਖਣ ਦਾ ਇਤਿਹਾਸ ਅਯੋਗ ਹੈ • ਸੂਚੀ ਦ੍ਰਿਸ਼ #2517 ਵਿੱਚ ਪਲੇਬੈਕ ਸਥਿਤੀ ਦੇ ਕਾਰਨ ਘਟੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਠੀਕ ਕਰੋ • [ਐਕਸਟ੍ਰੈਕਟਰ] ReCaptchaActivity #2527, TeamNewPipe/NewPipeExtractor#186 ਫਿਕਸ • [ਐਕਸਟ੍ਰੈਕਟਰ] [YouTube] ਜਦੋਂ ਪਲੇਲਿਸਟਾਂ ਨਤੀਜੇ ਵਿੱਚ ਹੋਣ ਤਾਂ ਆਮ ਖੋਜ ਗਲਤੀ ਨੂੰ ਠੀਕ ਕਰੋ TeamNewPipe/NewPipeExtractor#185 0.17.0 ਵਿੱਚ ਬਦਲਾਅ ਨਵਾਂ ਪਲੇਬੈਕ ਰੈਜ਼ਿਊਮੇ #2288 • ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਮੁੜ ਸ਼ੁਰੂ ਕਰੋ ਜਿੱਥੇ ਤੁਸੀਂ ਪਿਛਲੀ ਵਾਰ ਰੁਕੇ ਸੀ ਡਾਊਨਲੋਡਰ ਸੁਧਾਰ #2149 • ਬਾਹਰੀ SD-ਕਾਰਡਾਂ 'ਤੇ ਡਾਊਨਲੋਡ ਸਟੋਰ ਕਰਨ ਲਈ ਸਟੋਰੇਜ਼ ਐਕਸੈਸ ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰੋ • ਨਵਾਂ mp4 muxer • ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਵਿਕਲਪਿਕ ਤੌਰ 'ਤੇ ਡਾਉਨਲੋਡ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਬਦਲੋ • ਮੀਟਰਡ ਨੈੱਟਵਰਕਾਂ ਦਾ ਆਦਰ ਕਰੋ ਸੁਧਾਰ • gema ਸਤਰ #2295 ਨੂੰ ਹਟਾਇਆ • ਗਤੀਵਿਧੀ ਜੀਵਨ ਚੱਕਰ #2444 ਦੌਰਾਨ ਹੈਂਡਲ (ਆਟੋ) ਰੋਟੇਸ਼ਨ ਤਬਦੀਲੀਆਂ • ਲੰਬੇ-ਦਬਾਓ ਮੀਨੂ ਨੂੰ ਇਕਸਾਰ #2368 ਬਣਾਓ ਸਥਿਰ • ਫਿਕਸਡ ਚੁਣਿਆ ਹੋਇਆ ਉਪਸਿਰਲੇਖ ਟਰੈਕ ਨਾਮ #2394 ਨਹੀਂ ਦਿਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ • ਐਪ ਅੱਪਡੇਟ ਦੀ ਜਾਂਚ ਅਸਫਲ ਹੋਣ 'ਤੇ ਕ੍ਰੈਸ਼ ਨਾ ਹੋਵੋ (GitHub ਸੰਸਕਰਣ) #2423 • ਸਥਿਰ ਡਾਊਨਲੋਡ 99.9% #2440 'ਤੇ ਅਟਕ ਗਏ • ਪਲੇ ਕਤਾਰ ਮੈਟਾਡੇਟਾ #2453 ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ • [SoundCloud] ਪਲੇਲਿਸਟਸ ਲੋਡ ਕਰਨ ਵੇਲੇ ਸਥਿਰ ਕਰੈਸ਼ TeamNewPipe/NewPipeExtractor#170 • [YouTube] ਸਥਿਰ ਅਵਧੀ ਨੂੰ ਪਾਰਸਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/pa/changelogs/770.txt b/fastlane/metadata/android/pa/changelogs/770.txt new file mode 100644 index 000000000..03903c011 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/770.txt @@ -0,0 +1,4 @@ +0.17.2 ਵਿੱਚ ਬਦਲਾਅ + +ਠੀਕ ਕਰੋ +• ਫਿਕਸ ਕੋਈ ਵੀ ਵੀਡੀਓ ਉਪਲਬਧ ਨਹੀਂ ਸੀ diff --git a/fastlane/metadata/android/pa/changelogs/780.txt b/fastlane/metadata/android/pa/changelogs/780.txt new file mode 100644 index 000000000..999a24468 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/780.txt @@ -0,0 +1 @@ +0.17.3 ਵਿੱਚ ਬਦਲਾਅ ਸੁਧਾਰ • ਪਲੇਬੈਕ ਸਥਿਤੀਆਂ #2550 ਨੂੰ ਸਾਫ਼ ਕਰਨ ਲਈ ਵਿਕਲਪ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ • ਫਾਈਲ ਪਿਕਰ #2591 ਵਿੱਚ ਲੁਕੀਆਂ ਹੋਈਆਂ ਡਾਇਰੈਕਟਰੀਆਂ ਦਿਖਾਓ • NewPipe #2488 ਨਾਲ ਖੋਲ੍ਹੇ ਜਾਣ ਵਾਲੇ `invidio.us` ਉਦਾਹਰਨਾਂ ਤੋਂ ਸਮਰਥਨ URL • `music.youtube.com` URLs TeamNewPipe/NewPipeExtractor#194 ਲਈ ਸਮਰਥਨ ਸ਼ਾਮਲ ਕਰੋ ਸਥਿਰ • [YouTube] ਸਥਿਰ 'java.lang.IllegalArgumentException #192 • [YouTube] ਸਥਿਰ ਲਾਈਵ ਸਟ੍ਰੀਮਾਂ ਕੰਮ ਨਹੀਂ ਕਰ ਰਹੀਆਂ TeamNewPipe/NewPipeExtractor#195 • ਇੱਕ ਸਟ੍ਰੀਮ #2592 ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਵੇਲੇ ਐਂਡਰੌਇਡ ਪਾਈ ਵਿੱਚ ਸਥਿਰ ਪ੍ਰਦਰਸ਼ਨ ਸਮੱਸਿਆ diff --git a/fastlane/metadata/android/pa/changelogs/790.txt b/fastlane/metadata/android/pa/changelogs/790.txt new file mode 100644 index 000000000..f841801eb --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/790.txt @@ -0,0 +1 @@ +ਸੁਧਾਰ • ਅੰਨ੍ਹੇ ਲੋਕਾਂ #2655 ਲਈ ਪਹੁੰਚਯੋਗਤਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਹੋਰ ਸਿਰਲੇਖ ਸ਼ਾਮਲ ਕਰੋ • ਡਾਉਨਲੋਡ ਫੋਲਡਰ ਸੈਟਿੰਗ ਦੀ ਭਾਸ਼ਾ ਨੂੰ ਵਧੇਰੇ ਇਕਸਾਰ ਅਤੇ ਘੱਟ ਅਸਪਸ਼ਟ #2637 ਬਣਾਓ ਸਥਿਰ • ਜਾਂਚ ਕਰੋ ਕਿ ਕੀ ਬਲਾਕ ਵਿੱਚ ਆਖਰੀ ਬਾਈਟ #2646 ਡਾਊਨਲੋਡ ਕੀਤੀ ਗਈ ਹੈ • ਵੀਡੀਓ ਡਿਟੇਲ ਫਰੈਗਮੈਂਟ #2672 ਵਿੱਚ ਸਥਿਰ ਸਕ੍ਰੋਲਿੰਗ • ਡਬਲ ਸਰਚ ਕਲੀਅਰ ਬਾਕਸ ਐਨੀਮੇਸ਼ਨ ਨੂੰ ਇੱਕ #2695 ਵਿੱਚ ਹਟਾਓ • [SoundCloud] ਕਲਾਇਟ_ਆਈਡੀ ਐਕਸਟਰੈਕਸ਼ਨ #2745 ਨੂੰ ਠੀਕ ਕਰੋ ਵਿਕਾਸ • NewPipeExtractor ਤੋਂ ਵਿਰਾਸਤ ਵਿੱਚ ਮਿਲੀ ਗੁੰਮ ਨਿਰਭਰਤਾ ਨੂੰ NewPipe #2535 ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ • AndroidX #2685 'ਤੇ ਮਾਈਗ੍ਰੇਟ ਕਰੋ • ExoPlayer 2.10.6 #2697, #2736 ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/800.txt b/fastlane/metadata/android/pa/changelogs/800.txt new file mode 100644 index 000000000..53868c894 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/800.txt @@ -0,0 +1 @@ +ਨਵਾਂ • P2P (#2201) [ਬੀਟਾ] ਤੋਂ ਬਿਨਾਂ PeerTube ਸਮਰਥਨ: ◦ PeerTube ਉਦਾਹਰਨਾਂ ਤੋਂ ਵੀਡੀਓ ਦੇਖੋ ਅਤੇ ਡਾਊਨਲੋਡ ਕਰੋ ◦ ਪੂਰੀ PeerTube ਸੰਸਾਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਉਦਾਹਰਨਾਂ ਸ਼ਾਮਲ ਕਰੋ ◦ Android 4.4 ਅਤੇ 7.1 'ਤੇ SSL ਹੈਂਡਸ਼ੇਕ ਨਾਲ ਸਮੱਸਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ ਜਦੋਂ ਕੁਝ ਖਾਸ ਮੌਕਿਆਂ 'ਤੇ ਪਹੁੰਚ ਕਰਦੇ ਸਮੇਂ ਨੈੱਟਵਰਕ ਗੜਬੜ ਹੋ ਜਾਂਦੀ ਹੈ। • ਡਾਊਨਲੋਡਰ (#2679): ◦ ਡਾਊਨਲੋਡ ETA ਦੀ ਗਣਨਾ ਕਰੋ ◦ ਓਪਸ (ਵੈਬ ਫਾਈਲਾਂ) ਨੂੰ ogg ਵਜੋਂ ਡਾਊਨਲੋਡ ਕਰੋ ◦ ਲੰਬੇ ਵਿਰਾਮ ਤੋਂ ਬਾਅਦ ਡਾਊਨਲੋਡ ਮੁੜ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਮਿਆਦ ਪੁੱਗ ਚੁੱਕੇ ਡਾਊਨਲੋਡ ਲਿੰਕਾਂ ਨੂੰ ਮੁੜ-ਹਾਸਲ ਕਰੋ ਸੁਧਾਰ • ਕਿਓਸਕਫ੍ਰੈਗਮੈਂਟ ਨੂੰ ਤਰਜੀਹੀ ਸਮਗਰੀ ਵਾਲੇ ਦੇਸ਼ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਤੋਂ ਜਾਣੂ ਕਰਵਾਓ ਅਤੇ ਸਾਰੀਆਂ ਮੁੱਖ ਟੈਬਾਂ #2742 ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ। • ਐਕਸਟਰੈਕਟਰ #2713 ਤੋਂ ਨਵੇਂ ਸਥਾਨਕਕਰਨ ਅਤੇ ਡਾਉਨਲੋਡਰ ਲਾਗੂਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰੋ • "ਡਿਫੌਲਟ ਕਿਓਸਕ" ਸਤਰ ਨੂੰ ਅਨੁਵਾਦਯੋਗ ਬਣਾਓ • ਬਲੈਕ ਥੀਮ #2569 ਲਈ ਬਲੈਕ ਨੈਵੀਗੇਸ਼ਨ ਪੱਟੀ ਸਥਿਰ • ਇੱਕ ਬੱਗ ਫਿਕਸ ਕੀਤਾ ਗਿਆ ਹੈ ਜੋ ਪੌਪਅੱਪ ਪਲੇਅਰ ਨੂੰ ਹਿਲਾ ਨਹੀਂ ਸਕਦਾ ਸੀ ਜੇਕਰ ਪੌਪਅੱਪ ਪਲੇਅਰ #2772 ਨੂੰ ਹਿਲਾਉਂਦੇ ਸਮੇਂ ਕੋਈ ਹੋਰ ਉਂਗਲ ਰੱਖੀ ਜਾਂਦੀ ਹੈ • ਪਲੇਲਿਸਟਾਂ ਨੂੰ ਅਪਲੋਡਰ ਦੀ ਗੁੰਮਸ਼ੁਦਗੀ ਦੀ ਆਗਿਆ ਦਿਓ ਅਤੇ ਇਸ ਸਮੱਸਿਆ ਨਾਲ ਸਬੰਧਤ ਕ੍ਰੈਸ਼ਾਂ ਨੂੰ ਠੀਕ ਕਰੋ #2724, TeamNewPipe/NewPipeExtractor#219 • MediaCCC ਅਤੇ ਕੁਝ PeerTube ਉਦਾਹਰਨਾਂ #2792 ਨਾਲ TLS ਹੈਂਡਸ਼ੇਕ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ Android 4.4 ਡਿਵਾਈਸਾਂ (API 19/KitKat) 'ਤੇ TLS1.1/1.2 ਨੂੰ ਸਮਰੱਥ ਕਰਨਾ • [SoundCloud] ਫਿਕਸਡ ਕਲਾਈਂਟ_ਆਈਡੀ ਐਕਸਟ੍ਰੈਕਸ਼ਨ TeamNewPipe/NewPipeExtractor#217 • [SoundCloud] ਆਡੀਓ ਸਟ੍ਰੀਮ ਕੱਢਣ ਨੂੰ ਠੀਕ ਕਰੋ ਵਿਕਾਸ • ExoPlayer ਨੂੰ 2.10.8 #2791, #2816 'ਤੇ ਅੱਪਡੇਟ ਕਰੋ • Gradle ਨੂੰ 3.5.1 ਵਿੱਚ ਅੱਪਡੇਟ ਕਰੋ ਅਤੇ Kotlin ਸਹਿਯੋਗ #2714 ਸ਼ਾਮਲ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/810.txt b/fastlane/metadata/android/pa/changelogs/810.txt new file mode 100644 index 000000000..96a2b9da5 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/810.txt @@ -0,0 +1 @@ +ਨਵਾਂ • ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚੱਲਦੇ ਸਮੇਂ ਲੌਕ ਸਕ੍ਰੀਨ 'ਤੇ ਵੀਡੀਓ ਥੰਬਨੇਲ ਦਿਖਾਓ ਸੁਧਾਰ • ਬੈਕਗ੍ਰਾਉਂਡ / ਪੌਪਅੱਪ ਬਟਨ 'ਤੇ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਦਬਾਉਣ 'ਤੇ ਕਤਾਰ ਵਿੱਚ ਸਥਾਨਕ ਪਲੇਲਿਸਟ ਸ਼ਾਮਲ ਕਰੋ • ਮੁੱਖ ਪੰਨਾ ਟੈਬਾਂ ਨੂੰ ਸਕ੍ਰੋਲ ਕਰਨ ਯੋਗ ਬਣਾਓ ਅਤੇ ਸਿਰਫ਼ ਇੱਕ ਟੈਬ ਹੋਣ 'ਤੇ ਲੁਕਾਓ • ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ ਵਿੱਚ ਸੂਚਨਾ ਥੰਬਨੇਲ ਅੱਪਡੇਟ ਦੀ ਸੀਮਾ ਮਾਤਰਾ • ਖਾਲੀ ਸਥਾਨਕ ਪਲੇਲਿਸਟਾਂ ਲਈ ਡਮੀ ਥੰਬਨੇਲ ਸ਼ਾਮਲ ਕਰੋ • *.webm ਦੀ ਬਜਾਏ *.opus ਫਾਈਲ ਐਕਸਟੈਂਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰੋ ਅਤੇ ਡਾਊਨਲੋਡ ਡ੍ਰੌਪਡਾਉਨ ਵਿੱਚ "WebM Opus" ਦੀ ਬਜਾਏ ਫਾਰਮੈਟ ਲੇਬਲ ਵਿੱਚ "opus" ਦਿਖਾਓ • "ਡਾਊਨਲੋਡ" ਵਿੱਚ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਜਾਂ ਡਾਊਨਲੋਡ ਇਤਿਹਾਸ ਨੂੰ ਮਿਟਾਉਣ ਲਈ ਬਟਨ ਸ਼ਾਮਲ ਕਰੋ • [YouTube] /c/shortened_url ਚੈਨਲ ਲਿੰਕਾਂ ਲਈ ਸਮਰਥਨ ਸ਼ਾਮਲ ਕਰੋ ਸਥਿਰ • NewPipe ਨਾਲ ਵੀਡੀਓ ਸਾਂਝਾ ਕਰਨ ਅਤੇ ਇਸ ਦੀਆਂ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਸਿੱਧੇ ਡਾਊਨਲੋਡ ਕਰਨ ਵੇਲੇ ਕਈ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕੀਤਾ ਗਿਆ • ਇਸ ਦੇ ਸਿਰਜਣ ਥ੍ਰੈਡ ਤੋਂ ਬਾਹਰ ਸਥਿਰ ਪਲੇਅਰ ਪਹੁੰਚ • ਸਥਿਰ ਖੋਜ ਨਤੀਜੇ ਪੇਜਿੰਗ • [YouTube] ਨਿਸ਼ਚਤ ਸਵਿਚਿੰਗ ਚਾਲੂ ਕਰਨ ਨਾਲ NPE ਹੁੰਦਾ ਹੈ • [YouTube] ਇੱਕ invidio.us url ਖੋਲ੍ਹਣ ਵੇਲੇ ਟਿੱਪਣੀਆਂ ਦੇਖਣ ਲਈ ਸਥਿਰ • [SoundCloud] ਅੱਪਡੇਟ ਕੀਤਾ client_id diff --git a/fastlane/metadata/android/pa/changelogs/820.txt b/fastlane/metadata/android/pa/changelogs/820.txt new file mode 100644 index 000000000..aa3554698 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/820.txt @@ -0,0 +1 @@ +ਸਥਿਰ ਡੀਕ੍ਰਿਪਟ ਫੰਕਸ਼ਨ ਨਾਮ regex YouTube ਨੂੰ ਵਰਤੋਂਯੋਗ ਨਹੀਂ ਬਣਾਉਂਦਾ। diff --git a/fastlane/metadata/android/pa/changelogs/830.txt b/fastlane/metadata/android/pa/changelogs/830.txt new file mode 100644 index 000000000..6bd990808 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/830.txt @@ -0,0 +1 @@ +SoundCloud ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ SoundCloud client_id ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ। diff --git a/fastlane/metadata/android/pa/changelogs/840.txt b/fastlane/metadata/android/pa/changelogs/840.txt new file mode 100644 index 000000000..745098496 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/840.txt @@ -0,0 +1 @@ +ਨਵਾਂ • ਐਪ ਦੀ ਭਾਸ਼ਾ ਬਦਲਣ ਲਈ ਭਾਸ਼ਾ ਚੋਣਕਾਰ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ • ਪਲੇਅਰ ਸਮੇਟਣਯੋਗ ਮੀਨੂ ਵਿੱਚ ਕੋਡੀ ਬਟਨ 'ਤੇ ਭੇਜੋ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ • ਲੰਬੀ ਪ੍ਰੈਸ 'ਤੇ ਟਿੱਪਣੀਆਂ ਨੂੰ ਕਾਪੀ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ ਹੈ ਸੁਧਾਰ • ਰੀਕੈਪਚਾ ਗਤੀਵਿਧੀ ਨੂੰ ਠੀਕ ਕਰੋ ਅਤੇ ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ ਕੂਕੀਜ਼ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕਰੋ • ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਦੇਖਣ ਦਾ ਇਤਿਹਾਸ ਚਾਲੂ ਨਾ ਹੋਣ 'ਤੇ ਦਰਾਜ਼ ਦੇ ਹੱਕ ਵਿੱਚ ਡਾਟ-ਮੀਨੂ ਨੂੰ ਹਟਾਇਆ ਗਿਆ ਅਤੇ ਇਤਿਹਾਸ ਨੂੰ ਲੁਕਾਓ ਬਟਨ • Android 6 ਅਤੇ ਬਾਅਦ ਵਾਲੇ 'ਤੇ ਸਹੀ ਢੰਗ ਨਾਲ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਹੋਰ ਐਪਾਂ ਦੀ ਇਜਾਜ਼ਤ ਦੇ ਉੱਪਰ ਡਿਸਪਲੇ ਲਈ ਪੁੱਛੋ • BookmarkFragment ਵਿੱਚ ਲੰਮਾ-ਕਲਿੱਕ ਕਰਕੇ ਸਥਾਨਕ ਪਲੇਲਿਸਟ ਦਾ ਨਾਮ ਬਦਲੋ • ਕਈ PeerTube ਸੁਧਾਰ • ਕਈ ਅੰਗਰੇਜ਼ੀ ਸਰੋਤ ਸਤਰਾਂ ਨੂੰ ਸੁਧਾਰਿਆ ਗਿਆ ਹੈ ਸਥਿਰ • ਫਿਕਸਡ ਪਲੇਅਰ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਹੋ ਰਿਹਾ ਹੈ ਹਾਲਾਂਕਿ ਇਹ ਉਦੋਂ ਰੋਕਿਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਵਿਕਲਪ "ਐਪ ਸਵਿੱਚ 'ਤੇ ਛੋਟਾ ਕਰੋ" ਯੋਗ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਨਿਊ ਪਾਈਪ ਨੂੰ ਛੋਟਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ • ਸੰਕੇਤ ਲਈ ਸ਼ੁਰੂਆਤੀ ਚਮਕ ਮੁੱਲ ਨੂੰ ਠੀਕ ਕਰੋ • ਸਥਿਰ .srt ਉਪਸਿਰਲੇਖ ਡਾਉਨਲੋਡ ਜਿਸ ਵਿੱਚ ਸਾਰੇ ਲਾਈਨ ਬ੍ਰੇਕ ਨਹੀਂ ਹਨ • SD ਕਾਰਡ 'ਤੇ ਸਥਿਰ ਡਾਊਨਲੋਡ ਅਸਫਲ ਹੋ ਰਿਹਾ ਹੈ ਕਿਉਂਕਿ ਕੁਝ Android 5 ਡਿਵਾਈਸਾਂ CTF ਅਨੁਕੂਲ ਨਹੀਂ ਹਨ • Android KitKat 'ਤੇ ਸਥਿਰ ਡਾਊਨਲੋਡਿੰਗ • ਸਥਿਰ ਭ੍ਰਿਸ਼ਟ ਵੀਡੀਓ .mp4 ਫਾਈਲ ਨੂੰ ਆਡੀਓ ਫਾਈਲ ਵਜੋਂ ਮਾਨਤਾ ਦਿੱਤੀ ਜਾ ਰਹੀ ਹੈ • ਗਲਤ ਚੀਨੀ ਭਾਸ਼ਾ ਕੋਡ ਸਮੇਤ, ਮਲਟੀਪਲ ਸਥਾਨੀਕਰਨ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕੀਤਾ ਗਿਆ ਹੈ • [YouTube] ਵਰਣਨ ਵਿੱਚ ਟਾਈਮਸਟੈਂਪ ਦੁਬਾਰਾ ਕਲਿੱਕ ਕਰਨ ਯੋਗ ਹਨ diff --git a/fastlane/metadata/android/pa/changelogs/850.txt b/fastlane/metadata/android/pa/changelogs/850.txt new file mode 100644 index 000000000..561cdec62 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/850.txt @@ -0,0 +1 @@ +ਇਸ ਰੀਲੀਜ਼ ਵਿੱਚ YouTube ਵੈੱਬਸਾਈਟ ਸੰਸਕਰਣ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ ਸੀ। ਪੁਰਾਣਾ ਵੈੱਬਸਾਈਟ ਸੰਸਕਰਣ ਮਾਰਚ ਵਿੱਚ ਬੰਦ ਹੋਣ ਜਾ ਰਿਹਾ ਹੈ ਅਤੇ ਇਸ ਲਈ ਤੁਹਾਨੂੰ ਨਿਊ ਪਾਈਪ ਨੂੰ ਅਪਗ੍ਰੇਡ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। diff --git a/fastlane/metadata/android/pa/changelogs/860.txt b/fastlane/metadata/android/pa/changelogs/860.txt new file mode 100644 index 000000000..900671ab8 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/860.txt @@ -0,0 +1 @@ +ਸੁਧਾਰ • ਸੇਵ ਕਰੋ ਅਤੇ ਰੀਸਟੋਰ ਕਰੋ ਕਿ ਕੀ ਪਿੱਚ ਅਤੇ ਟੈਂਪੋ ਅਣਹੁੱਕ ਹਨ ਜਾਂ ਨਹੀਂ • ਪਲੇਅਰ ਵਿੱਚ ਡਿਸਪਲੇ ਕੱਟਆਊਟ ਦਾ ਸਮਰਥਨ ਕਰੋ • ਗੋਲ ਦ੍ਰਿਸ਼ ਅਤੇ ਗਾਹਕਾਂ ਦੀ ਗਿਣਤੀ • ਘੱਟ ਡਾਟਾ ਵਰਤਣ ਲਈ YouTube ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਇਆ ਗਿਆ ਇਸ ਰੀਲੀਜ਼ ਵਿੱਚ 15 ਤੋਂ ਵੱਧ YouTube-ਸਬੰਧਤ ਬੱਗ ਫਿਕਸ ਕੀਤੇ ਗਏ ਸਨ। diff --git a/fastlane/metadata/android/pa/changelogs/870.txt b/fastlane/metadata/android/pa/changelogs/870.txt new file mode 100644 index 000000000..3656c86fc --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/870.txt @@ -0,0 +1,2 @@ +ਇਹ ਇੱਕ ਹੌਟਫਿਕਸ ਰੀਲੀਜ਼ ਹੈ ਜੋ ਨਿਊਪਾਈਪ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਰਿਹਾ ਹੈ ਤਾਂ ਜੋ ਦੁਬਾਰਾ ਵੱਡੀਆਂ ਮੁਸ਼ਕਲਾਂ ਤੋਂ ਬਿਨਾਂ ਸਾਉਂਡ ਕਲਾਉਡ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਜਾ ਸਕੇ। +SoundCloud ਦਾ v2 API ਹੁਣ ਐਕਸਟਰੈਕਟਰ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਅਵੈਧ ਕਲਾਇੰਟ ਆਈਡੀ ਦੀ ਖੋਜ ਵਿੱਚ ਸੁਧਾਰ ਕੀਤਾ ਗਿਆ ਹੈ। diff --git a/fastlane/metadata/android/pa/changelogs/900.txt b/fastlane/metadata/android/pa/changelogs/900.txt new file mode 100644 index 000000000..f9a004a0d --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/900.txt @@ -0,0 +1 @@ +ਨਵਾਂ • ਗਾਹਕੀ ਸਮੂਹ ਅਤੇ ਕ੍ਰਮਬੱਧ ਫੀਡ • ਖਿਡਾਰੀਆਂ ਵਿੱਚ ਮਿਊਟ ਬਟਨ ਸੁਧਾਰ • NewPipe ਵਿੱਚ music.youtube.com ਅਤੇ media.ccc.de ਲਿੰਕ ਖੋਲ੍ਹਣ ਦਿਓ • ਦਿੱਖ ਤੋਂ ਸਮੱਗਰੀ ਤੱਕ ਦੋ ਸੈਟਿੰਗਾਂ ਨੂੰ ਮੁੜ-ਸਥਾਪਿਤ ਕਰੋ • 5, 15, 25 ਸਕਿੰਟ ਦੇ ਸੀਕ ਵਿਕਲਪਾਂ ਨੂੰ ਲੁਕਾਓ ਜੇਕਰ ਅਢੁੱਕਵੀਂ ਖੋਜ ਸਮਰਥਿਤ ਹੈ ਸਥਿਰ • ਕੁਝ WebM ਵੀਡੀਓ ਖੋਜਣ ਯੋਗ ਨਹੀਂ ਹਨ • Android P 'ਤੇ ਡਾਟਾਬੇਸ ਬੈਕਅੱਪ • ਡਾਉਨਲੋਡ ਕੀਤੀ ਫਾਈਲ ਨੂੰ ਸਾਂਝਾ ਕਰਦੇ ਸਮੇਂ ਕਰੈਸ਼ • ਬਹੁਤ ਸਾਰੇ YouTube ਐਕਸਟਰੈਕਸ਼ਨ ਮੁੱਦੇ ਅਤੇ ਹੋਰ... diff --git a/fastlane/metadata/android/pa/changelogs/910.txt b/fastlane/metadata/android/pa/changelogs/910.txt new file mode 100644 index 000000000..1cc2a1432 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/910.txt @@ -0,0 +1 @@ +ਸਥਿਰ ਡੇਟਾਬੇਸ ਮਾਈਗ੍ਰੇਸ਼ਨ ਜਿਸ ਨੇ ਕੁਝ ਦੁਰਲੱਭ ਮਾਮਲਿਆਂ ਵਿੱਚ ਨਿਊਪਾਈਪ ਨੂੰ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਰੋਕਿਆ। diff --git a/fastlane/metadata/android/pa/changelogs/920.txt b/fastlane/metadata/android/pa/changelogs/920.txt new file mode 100644 index 000000000..04fc07937 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/920.txt @@ -0,0 +1 @@ +ਸੁਧਾਰ • ਸਟ੍ਰੀਮ ਗਰਿੱਡ ਆਈਟਮਾਂ 'ਤੇ ਅੱਪਲੋਡ ਦੀ ਮਿਤੀ ਅਤੇ ਦੇਖਣ ਦੀ ਗਿਣਤੀ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ • ਦਰਾਜ਼ ਹੈਡਰ ਲੇਆਉਟ ਲਈ ਸੁਧਾਰ ਸਥਿਰ • ਏਪੀਆਈ 19 'ਤੇ ਕ੍ਰੈਸ਼ ਹੋਣ ਕਾਰਨ ਫਿਕਸਡ ਮਿਊਟ ਬਟਨ • ਲੰਬੇ 1080p 60fps ਵੀਡੀਓ ਦੀ ਸਥਿਰ ਡਾਊਨਲੋਡਿੰਗ diff --git a/fastlane/metadata/android/pa/changelogs/930.txt b/fastlane/metadata/android/pa/changelogs/930.txt new file mode 100644 index 000000000..a067bfb58 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/930.txt @@ -0,0 +1 @@ +ਨਵਾਂ • YouTube ਸੰਗੀਤ 'ਤੇ ਖੋਜੋ • ਬੁਨਿਆਦੀ Android TV ਸਮਰਥਨ ਸੁਧਾਰ • ਇੱਕ ਸਥਾਨਕ ਪਲੇਲਿਸਟ ਤੋਂ ਸਾਰੇ ਦੇਖੇ ਗਏ ਵੀਡੀਓ ਨੂੰ ਹਟਾਉਣ ਦੀ ਯੋਗਤਾ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ ਹੈ • ਕ੍ਰੈਸ਼ ਹੋਣ ਦੀ ਬਜਾਏ ਜਦੋਂ ਸਮੱਗਰੀ ਅਜੇ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ ਤਾਂ ਸੁਨੇਹਾ ਦਿਖਾਓ • ਚੁਟਕੀ ਇਸ਼ਾਰਿਆਂ ਨਾਲ ਪੌਪਅੱਪ ਪਲੇਅਰ ਦਾ ਆਕਾਰ ਬਦਲਿਆ ਗਿਆ ਹੈ • ਬੈਕਗ੍ਰਾਊਂਡ 'ਤੇ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਦਬਾਉਣ ਅਤੇ ਚੈਨਲ ਵਿੱਚ ਪੌਪਅੱਪ ਬਟਨਾਂ 'ਤੇ ਸਟ੍ਰੀਮ ਨੂੰ ਐਨਕਿਊ ਕਰੋ • ਦਰਾਜ਼ ਸਿਰਲੇਖ ਦੇ ਸਿਰਲੇਖ ਦੇ ਆਕਾਰ ਨੂੰ ਸੰਭਾਲਣ ਵਿੱਚ ਸੁਧਾਰ ਕੀਤਾ ਗਿਆ ਹੈ ਸਥਿਰ • ਨਿਸ਼ਚਿਤ ਉਮਰ ਪ੍ਰਤਿਬੰਧਿਤ ਸਮੱਗਰੀ ਸੈਟਿੰਗ ਕੰਮ ਨਹੀਂ ਕਰ ਰਹੀ • ਕੁਝ ਖਾਸ ਕਿਸਮ ਦੇ reCAPTCHA ਫਿਕਸ ਕੀਤੇ ਗਏ ਹਨ • ਪਲੇਲਿਸਟ `ਨੱਲ` ਹੋਣ 'ਤੇ ਬੁੱਕਮਾਰਕ ਖੋਲ੍ਹਣ ਵੇਲੇ ਸਥਿਰ ਕਰੈਸ਼ • ਨੈੱਟਵਰਕ ਸੰਬੰਧੀ ਅਪਵਾਦਾਂ ਦੀ ਸਥਿਰ ਖੋਜ • ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਫਰੈਗਮੈਂਟ ਵਿੱਚ ਗਰੁੱਪ ਸੌਰਟ ਬਟਨ ਦੀ ਸਥਿਰ ਦਿੱਖ ਅਤੇ ਹੋਰ diff --git a/fastlane/metadata/android/pa/changelogs/940.txt b/fastlane/metadata/android/pa/changelogs/940.txt new file mode 100644 index 000000000..b9d9b3fdf --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/940.txt @@ -0,0 +1 @@ +ਨਵਾਂ • SoundCloud ਟਿੱਪਣੀਆਂ ਲਈ ਸਮਰਥਨ ਸ਼ਾਮਲ ਕਰੋ • YouTube ਪ੍ਰਤਿਬੰਧਿਤ ਮੋਡ ਸੈਟਿੰਗ ਸ਼ਾਮਲ ਕਰੋ • PeerTube ਮੂਲ ਚੈਨਲ ਦੇ ਵੇਰਵੇ ਦਿਖਾਓ ਸੁਧਾਰ • ਸਿਰਫ਼ ਸਮਰਥਿਤ ਸੇਵਾਵਾਂ ਲਈ ਕੋਰ ਬਟਨ ਦਿਖਾਓ • ਨੈਵੀਗੇਸ਼ਨਬਾਰ ਜਾਂ ਸਟੇਟਸਬਾਰ ਤੋਂ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਪਲੇਅਰ ਸੰਕੇਤਾਂ ਨੂੰ ਬਲਾਕ ਕਰੋ • ਸੇਵਾ ਦੇ ਰੰਗ ਦੇ ਆਧਾਰ 'ਤੇ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਅਤੇ ਗਾਹਕ ਬਣੋ ਬਟਨਾਂ ਦਾ ਪਿਛੋਕੜ ਰੰਗ ਬਦਲੋ ਸਥਿਰ • ਡਾਉਨਲੋਡ ਡਾਇਲਾਗ ਫ੍ਰੀਜ਼ ਨੂੰ ਠੀਕ ਕਰੋ • ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਖੋਲ੍ਹੋ ਬਟਨ ਹੁਣ ਅਸਲ ਵਿੱਚ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ • ਵੀਡੀਓ ਖੋਲ੍ਹਣ 'ਤੇ ਕ੍ਰੈਸ਼ ਨੂੰ ਠੀਕ ਕਰੋ ਅਤੇ "ਇਸ ਸਟ੍ਰੀਮ ਨੂੰ ਚਲਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" ਅਤੇ ਹੋਰ diff --git a/fastlane/metadata/android/pa/changelogs/950.txt b/fastlane/metadata/android/pa/changelogs/950.txt new file mode 100644 index 000000000..454a34bd4 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/950.txt @@ -0,0 +1,4 @@ +ਇਹ ਰੀਲੀਜ਼ ਤਿੰਨ ਛੋਟੇ ਫਿਕਸ ਲਿਆਉਂਦਾ ਹੈ: +• Adroid 10+ 'ਤੇ ਸਥਿਰ ਸਟੋਰੇਜ ਪਹੁੰਚ +• ਫਿਕਸਡ ਓਪਨਿੰਗ ਕਿਓਸਕ +• ਲੰਬੇ ਵੀਡੀਓਜ਼ ਦੀ ਸਥਿਰ ਮਿਆਦ ਪਾਰਸਿੰਗ diff --git a/fastlane/metadata/android/pa/changelogs/951.txt b/fastlane/metadata/android/pa/changelogs/951.txt new file mode 100644 index 000000000..2b1cd7933 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/951.txt @@ -0,0 +1,13 @@ +ਨਵਾਂ +• ਫੀਡ ਗਰੁੱਪ ਡਾਇਲਾਗ ਵਿੱਚ ਗਾਹਕੀ ਚੋਣਕਾਰ ਲਈ ਖੋਜ ਸ਼ਾਮਲ ਕਰੋ +• ਸਿਰਫ਼ ਗੈਰ-ਗਰੁੱਪ ਕੀਤੀਆਂ ਗਾਹਕੀਆਂ ਨੂੰ ਦਿਖਾਉਣ ਲਈ ਫੀਡ ਗਰੁੱਪ ਡਾਇਲਾਗ ਵਿੱਚ ਫਿਲਟਰ ਸ਼ਾਮਲ ਕਰੋ +• ਪਲੇਲਿਸਟ ਟੈਬ ਨੂੰ ਮੁੱਖ ਪੰਨੇ 'ਤੇ ਸ਼ਾਮਲ ਕਰੋ +• ਬੈਕਗ੍ਰਾਊਂਡ/ਪੌਪ-ਅੱਪ ਪਲੇਅਰ ਕਤਾਰ ਵਿੱਚ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ/ਰਿਵਾਈਂਡ ਕਰੋ +• ਖੋਜ ਸੁਝਾਅ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ: ਕੀ ਤੁਹਾਡਾ ਮਤਲਬ ਹੈ ਅਤੇ ਇਸ ਲਈ ਨਤੀਜਾ ਦਿਖਾ ਰਿਹਾ ਹੈ +ਸੁਧਾਰ +• ਮਿਕਸਡ ਫਾਈਲਾਂ ਵਿੱਚ ਐਪਲੀਕੇਸ਼ਨ ਮੈਟਾਡੇਟਾ ਲਿਖਣਾ ਛੱਡੋ • ਕਤਾਰ ਤੋਂ ਅਸਫਲ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਨਾ ਹਟਾਓ +• ਟੂਲਬਾਰ ਦੇ ਰੰਗ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਸਥਿਤੀ ਪੱਟੀ ਦਾ ਰੰਗ ਅੱਪਡੇਟ ਕਰੋ + +ਠੀਕ ਕੀਤਾ +• ਫਲੋਟਿੰਗ ਪੁਆਇੰਟ ਸੰਚਤ ਤਰੁੱਟੀਆਂ ਦੇ ਕਾਰਨ ਫਿਕਸਡ ਆਡੀਓ/ਵੀਡੀਓ ਡੀਸਿੰਕ +• [PeerTube] ਮਿਟਾਈਆਂ ਗਈਆਂ ਟਿੱਪਣੀਆਂ ਨੂੰ ਸੰਭਾਲੋ ਅਤੇ ਹੋਰ diff --git a/fastlane/metadata/android/pa/changelogs/952.txt b/fastlane/metadata/android/pa/changelogs/952.txt new file mode 100644 index 000000000..dda91ee55 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/952.txt @@ -0,0 +1,7 @@ +ਸੁਧਾਰ +• ਆਟੋ-ਪਲੇ ਸਾਰੀਆਂ ਸੇਵਾਵਾਂ ਲਈ ਉਪਲਬਧ ਹੈ (ਸਿਰਫ਼ YouTube ਦੀ ਬਜਾਏ) + +ਠੀਕ ਕੀਤਾ +• YouTube ਦੀਆਂ ਨਵੀਆਂ ਨਿਰੰਤਰਤਾਵਾਂ ਦਾ ਸਮਰਥਨ ਕਰਕੇ ਸੰਬੰਧਿਤ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਸਥਿਰ ਕੀਤਾ ਗਿਆ +• ਨਿਸ਼ਚਿਤ ਉਮਰ ਪ੍ਰਤਿਬੰਧਿਤ YouTube ਵੀਡੀਓ +• [Android TV] ਸਥਿਰ ਲੰਮੀ ਫੋਕਸ ਹਾਈਲਾਈਟ ਓਵਰਲੇ diff --git a/fastlane/metadata/android/pa/changelogs/953.txt b/fastlane/metadata/android/pa/changelogs/953.txt new file mode 100644 index 000000000..5d5672ad2 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/953.txt @@ -0,0 +1 @@ +YouTube ਦੇ ਡੀਕ੍ਰਿਪਸ਼ਨ ਫੰਕਸ਼ਨ ਦੇ ਐਕਸਟਰੈਕਸ਼ਨ ਨੂੰ ਠੀਕ ਕਰੋ। diff --git a/fastlane/metadata/android/pa/changelogs/954.txt b/fastlane/metadata/android/pa/changelogs/954.txt new file mode 100644 index 000000000..3eb8dd68b --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/954.txt @@ -0,0 +1,8 @@ +• ਨਵਾਂ ਐਪਲੀਕੇਸ਼ਨ ਵਰਕਫਲੋ: ਵੇਰਵੇ ਵਾਲੇ ਪੰਨੇ 'ਤੇ ਵੀਡੀਓ ਚਲਾਓ, ਪਲੇਅਰ ਨੂੰ ਛੋਟਾ ਕਰਨ ਲਈ ਹੇਠਾਂ ਵੱਲ ਸਵਾਈਪ ਕਰੋ +• ਮੀਡੀਆ ਸਟਾਈਲ ਸੂਚਨਾਵਾਂ: ਸੂਚਨਾਵਾਂ ਵਿੱਚ ਅਨੁਕੂਲਿਤ ਕਾਰਵਾਈਆਂ, ਪ੍ਰਦਰਸ਼ਨ ਸੁਧਾਰ +• ਡੈਸਕਟੌਪ ਐਪ ਦੇ ਤੌਰ 'ਤੇ NewPipe ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਮੂਲ ਰੀਸਾਈਜ਼ ਕਰਨਾ + +• ਇੱਕ ਅਸਮਰਥਿਤ URL ਟੋਸਟ ਦੇ ਮਾਮਲੇ ਵਿੱਚ ਖੁੱਲੇ ਵਿਕਲਪਾਂ ਨਾਲ ਡਾਇਲਾਗ ਦਿਖਾਓ +• ਜਦੋਂ ਰਿਮੋਟ ਨੂੰ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਤਾਂ ਖੋਜ ਸੁਝਾਅ ਅਨੁਭਵ ਨੂੰ ਬਿਹਤਰ ਬਣਾਓ +• ਡਿਫ਼ਾਲਟ ਵੀਡੀਓ ਗੁਣਵੱਤਾ ਨੂੰ 720p60 (ਇਨ-ਐਪ ਪਲੇਅਰ) ਅਤੇ 480p (ਪੌਪ-ਅੱਪ ਪਲੇਅਰ) ਤੱਕ ਵਧਾ ਦਿੱਤਾ ਗਿਆ ਹੈ +• ਬਹੁਤ ਸਾਰੇ ਬੱਗ ਫਿਕਸ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ diff --git a/fastlane/metadata/android/pa/changelogs/955.txt b/fastlane/metadata/android/pa/changelogs/955.txt new file mode 100644 index 000000000..ea480cb5a --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/955.txt @@ -0,0 +1,3 @@ +[YouTube] ਕੁਝ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਖੋਜ ਨੂੰ ਠੀਕ ਕਰੋ +[YouTube] ਬੇਤਰਤੀਬੇ ਡੀਕ੍ਰਿਪਸ਼ਨ ਅਪਵਾਦਾਂ ਨੂੰ ਠੀਕ ਕਰੋ +[SoundCloud] ਸਲੈਸ਼ ਨਾਲ ਖਤਮ ਹੋਣ ਵਾਲੇ URL ਹੁਣ ਸਹੀ ਤਰ੍ਹਾਂ ਪਾਰਸ ਕੀਤੇ ਗਏ ਹਨ diff --git a/fastlane/metadata/android/pa/changelogs/956.txt b/fastlane/metadata/android/pa/changelogs/956.txt new file mode 100644 index 000000000..897a5bf2a --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/956.txt @@ -0,0 +1 @@ +[YouTube] ਕਿਸੇ ਵੀ ਵੀਡੀਓ ਨੂੰ ਲੋਡ ਕਰਨ ਵੇਲੇ ਸਥਿਰ ਕਰੈਸ਼ diff --git a/fastlane/metadata/android/pa/changelogs/957.txt b/fastlane/metadata/android/pa/changelogs/957.txt new file mode 100644 index 000000000..eb66dacbc --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/957.txt @@ -0,0 +1,10 @@ +• ਖਾਸ ਐਨਕਿਊ ਕਿਰਿਆਵਾਂ ਨੂੰ ਇੱਕ ਵਿੱਚ ਜੋੜੋ +• ਪਲੇਅਰ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਦੋ ਉਂਗਲਾਂ ਦੇ ਸੰਕੇਤ +• reCAPTCHA ਕੂਕੀਜ਼ ਨੂੰ ਕਲੀਅਰ ਕਰਨ ਦਿਓ +• ਨੋਟੀਫਿਕੇਸ਼ਨ ਨੂੰ ਰੰਗ ਨਾ ਕਰਨ ਦਾ ਵਿਕਲਪ +• ਅਨੰਤ ਬਫਰਿੰਗ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਵਿਡੀਓ ਵੇਰਵਿਆਂ ਨੂੰ ਕਿਵੇਂ ਖੋਲ੍ਹਿਆ ਜਾਂਦਾ ਹੈ ਇਸ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ, ਨਿਊਪਾਈਪ ਨਾਲ ਸਾਂਝਾ ਕਰਨ ਵੇਲੇ ਬੱਗੀ ਵਿਵਹਾਰ ਅਤੇ ਹੋਰ ਅਸੰਗਤਤਾਵਾਂ +• YouTube ਵੀਡੀਓਜ਼ ਦੀ ਗਤੀ ਵਧਾਓ ਅਤੇ ਉਮਰ ਪ੍ਰਤੀਬੰਧਿਤ ਵੀਡੀਓ ਨੂੰ ਠੀਕ ਕਰੋ +• ਫਾਸਟ ਫਾਰਵਰਡ/ਰਿਵਾਇੰਡ 'ਤੇ ਕਰੈਸ਼ ਨੂੰ ਠੀਕ ਕਰੋ +• ਥੰਬਨੇਲ ਖਿੱਚ ਕੇ ਸੂਚੀਆਂ ਨੂੰ ਮੁੜ ਵਿਵਸਥਿਤ ਨਾ ਕਰੋ +• ਪੌਪਅੱਪ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਹਮੇਸ਼ਾ ਯਾਦ ਰੱਖੋ +• ਸੰਤਾਲੀ ਭਾਸ਼ਾ ਸ਼ਾਮਲ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/958.txt b/fastlane/metadata/android/pa/changelogs/958.txt new file mode 100644 index 000000000..66c2ae763 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/958.txt @@ -0,0 +1 @@ +ਨਵਾਂ ਅਤੇ ਸੁਧਾਰਿਆ ਗਿਆ: • ਲੌਕ ਸਕ੍ਰੀਨ 'ਤੇ ਥੰਬਨੇਲ ਨੂੰ ਲੁਕਾਉਣ ਲਈ ਮੁੜ-ਜੋੜਿਆ ਗਿਆ ਵਿਕਲਪ • ਫੀਡ ਨੂੰ ਤਾਜ਼ਾ ਕਰਨ ਲਈ ਖਿੱਚੋ • ਸਥਾਨਕ ਸੂਚੀਆਂ ਪ੍ਰਾਪਤ ਕਰਨ ਵੇਲੇ ਬਿਹਤਰ ਕਾਰਗੁਜ਼ਾਰੀ ਸਥਿਰ: • ਰੈਮ ਤੋਂ ਹਟਾਏ ਜਾਣ ਤੋਂ ਬਾਅਦ ਨਿਊਪਾਈਪ ਨੂੰ ਚਾਲੂ ਕਰਨ ਵੇਲੇ ਸਥਿਰ ਕਰੈਸ਼ • ਕੋਈ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਨਾ ਹੋਣ 'ਤੇ ਸਟਾਰਟਅਪ 'ਤੇ ਸਥਿਰ ਕਰੈਸ਼ • ਚਮਕ- ਅਤੇ ਵੌਲਯੂਮ-ਇਸ਼ਾਰਾ ਸੈਟਿੰਗਾਂ ਦਾ ਆਦਰ ਕਰਦੇ ਹੋਏ ਸਥਿਰ • [YouTube] ਸਥਿਰ ਲੰਬੀਆਂ ਪਲੇਲਿਸਟਾਂ ਹੋਰ: • ਕੋਡ ਕਲੀਨਅੱਪ ਅਤੇ ਕਈ ਅੰਦਰੂਨੀ ਸੁਧਾਰ • ਨਿਰਭਰਤਾ ਅੱਪਡੇਟ • ਅਨੁਵਾਦ ਅੱਪਡੇਟ diff --git a/fastlane/metadata/android/pa/changelogs/959.txt b/fastlane/metadata/android/pa/changelogs/959.txt new file mode 100644 index 000000000..5ababff32 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/959.txt @@ -0,0 +1,3 @@ +ਗਲਤੀ ਰਿਪੋਰਟਰ ਨੂੰ ਖੋਲ੍ਹਣ ਤੋਂ ਬਾਅਦ ਕਰੈਸ਼ਾਂ ਦਾ ਬੇਅੰਤ ਲੂਪ ਸਥਿਰ ਕੀਤਾ ਗਿਆ। +PeerTube ਉਦਾਹਰਨਾਂ ਦੀ ਅੱਪਡੇਟ ਕੀਤੀ ਸੂਚੀ ਜੋ +NewPipe ਦੁਆਰਾ ਆਪਣੇ ਆਪ ਖੋਲ੍ਹੀ ਜਾ ਸਕਦੀ ਹੈ। ਅੱਪਡੇਟ ਕੀਤੇ ਅਨੁਵਾਦ। diff --git a/fastlane/metadata/android/pa/changelogs/960.txt b/fastlane/metadata/android/pa/changelogs/960.txt new file mode 100644 index 000000000..8527ebd2d --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/960.txt @@ -0,0 +1,4 @@ +• ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਨਿਰਯਾਤ ਡੇਟਾਬੇਸ ਵਿਕਲਪ ਦਾ ਸੁਧਾਰਿਆ ਗਿਆ ਵਰਣਨ। +• ਸਥਿਰ YouTube ਟਿੱਪਣੀਆਂ ਪਾਰਸਿੰਗ। +• media.ccc.de ਸੇਵਾ ਦਾ ਸਥਿਰ ਡਿਸਪਲੇ ਨਾਮ। +• ਅੱਪਡੇਟ ਕੀਤੇ ਅਨੁਵਾਦ। diff --git a/fastlane/metadata/android/pa/changelogs/961.txt b/fastlane/metadata/android/pa/changelogs/961.txt new file mode 100644 index 000000000..069b08239 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/961.txt @@ -0,0 +1 @@ +• [YouTube] ਮਿਕਸ ਸਮਰਥਨ • [YouTube] ਜਨਤਕ ਪ੍ਰਸਾਰਕਾਂ ਅਤੇ ਕੋਵਿਡ-19 ਬਾਰੇ ਜਾਣਕਾਰੀ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ • [media.ccc.de] ਜੋੜੇ ਗਏ ਹਾਲੀਆ ਵੀਡੀਓ • ਸੋਮਾਲੀ ਅਨੁਵਾਦ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ • ਬਹੁਤ ਸਾਰੇ ਅੰਦਰੂਨੀ ਸੁਧਾਰ • ਪਲੇਅਰ ਦੇ ਅੰਦਰੋਂ ਸਥਿਰ ਸ਼ੇਅਰਿੰਗ ਵੀਡੀਓ • ਸਥਿਰ ਖਾਲੀ ReCaptcha ਵੈਬਵਿਊ • ਇੱਕ ਸੂਚੀ ਵਿੱਚੋਂ ਇੱਕ ਸਟ੍ਰੀਮ ਨੂੰ ਹਟਾਉਣ ਵੇਲੇ ਆਈ ਕ੍ਰੈਸ਼ ਦਾ ਹੱਲ • [PeerTube] ਸਥਿਰ ਸੰਬੰਧਿਤ ਸਟ੍ਰੀਮਾਂ • [YouTube] ਸਥਿਰ YouTube ਸੰਗੀਤ ਖੋਜ diff --git a/fastlane/metadata/android/pa/changelogs/962.txt b/fastlane/metadata/android/pa/changelogs/962.txt new file mode 100644 index 000000000..3676cf31b --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/962.txt @@ -0,0 +1,2 @@ +media.ccc.de ਸੇਵਾ ਵਿੱਚ "ਹਾਲੀਆ" ਵਿਡੀਓਜ਼ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ। +media.ccc.de ਸੇਵਾ ਵਿੱਚ ਲਾਈਵ ਸਟ੍ਰੀਮਾਂ ਸ਼ਾਮਲ ਕੀਤੀਆਂ ਗਈਆਂ ਅਤੇ ਲਾਈਵ ਸਟ੍ਰੀਮ ਸਮਰਥਨ ਵੀ। diff --git a/fastlane/metadata/android/pa/changelogs/963.txt b/fastlane/metadata/android/pa/changelogs/963.txt new file mode 100644 index 000000000..f0bc9b09c --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/963.txt @@ -0,0 +1 @@ +• [YouTube] ਸਥਿਰ ਚੈਨਲ ਨਿਰੰਤਰਤਾ diff --git a/fastlane/metadata/android/pa/changelogs/964.txt b/fastlane/metadata/android/pa/changelogs/964.txt new file mode 100644 index 000000000..85dc2c151 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/964.txt @@ -0,0 +1 @@ +• ਪਲੇਅਰ ਨਿਯੰਤਰਣ ਵਿੱਚ ਅਧਿਆਵਾਂ ਲਈ ਸਮਰਥਨ ਜੋੜਿਆ ਗਿਆ • [PeerTube] ਸੇਪੀਆ ਖੋਜ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ • ਵੀਡੀਓ ਵੇਰਵੇ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਸ਼ੇਅਰ ਬਟਨ ਨੂੰ ਮੁੜ-ਜੋੜਿਆ ਗਿਆ ਅਤੇ ਟੈਬ ਲੇਆਉਟ ਵਿੱਚ ਸਟ੍ਰੀਮ ਵਰਣਨ ਨੂੰ ਤਬਦੀਲ ਕੀਤਾ ਗਿਆ • ਜੇਕਰ ਚਮਕ ਦਾ ਸੰਕੇਤ ਅਸਮਰੱਥ ਹੈ ਤਾਂ ਚਮਕ ਨੂੰ ਬਹਾਲ ਕਰਨਾ ਬੰਦ ਕਰੋ • ਕੋਡੀ 'ਤੇ ਵੀਡੀਓ ਚਲਾਉਣ ਲਈ ਸੂਚੀ ਆਈਟਮ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ • ਕੁਝ ਡਿਵਾਈਸਾਂ 'ਤੇ ਕੋਈ ਡਿਫੌਲਟ ਬ੍ਰਾਊਜ਼ਰ ਸੈੱਟ ਨਾ ਹੋਣ 'ਤੇ ਕ੍ਰੈਸ਼ ਦਾ ਹੱਲ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਸ਼ੇਅਰ ਡਾਇਲਾਗਸ ਨੂੰ ਬਿਹਤਰ ਬਣਾਓ • ਫੁੱਲਸਕ੍ਰੀਨ ਪਲੇਅਰ ਵਿੱਚ ਹਾਰਡਵੇਅਰ ਸਪੇਸ ਬਟਨ ਨਾਲ ਪਲੇ/ਪੌਜ਼ ਨੂੰ ਟੌਗਲ ਕਰੋ • [media.ccc.de] ਕਈ ਫਿਕਸ ਅਤੇ ਸੁਧਾਰ diff --git a/fastlane/metadata/android/pa/changelogs/965.txt b/fastlane/metadata/android/pa/changelogs/965.txt new file mode 100644 index 000000000..83e28b707 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/965.txt @@ -0,0 +1 @@ +ਸਥਿਰ ਕਰੈਸ਼ ਜੋ ਚੈਨਲ ਸਮੂਹਾਂ ਨੂੰ ਮੁੜ ਕ੍ਰਮਬੱਧ ਕਰਨ ਵੇਲੇ ਵਾਪਰਿਆ ਸੀ। ਚੈਨਲਾਂ ਅਤੇ ਪਲੇਲਿਸਟਾਂ ਤੋਂ ਹੋਰ YouTube ਵੀਡੀਓ ਪ੍ਰਾਪਤ ਕਰਨਾ ਸਥਿਰ ਕੀਤਾ ਗਿਆ ਹੈ। YouTube ਟਿੱਪਣੀਆਂ ਪ੍ਰਾਪਤ ਕਰਨਾ ਸਥਿਰ ਹੈ। YouTube URL ਵਿੱਚ /watch/, /v/ ਅਤੇ /w/ ਸਬਪਾਥ ਲਈ ਸਮਰਥਨ ਜੋੜਿਆ ਗਿਆ। SoundCloud ਕਲਾਇੰਟ ਆਈਡੀ ਅਤੇ ਭੂ-ਪ੍ਰਤੀਬੰਧਿਤ ਸਮਗਰੀ ਦਾ ਸਥਿਰ ਐਕਸਟਰੈਕਸ਼ਨ। ਉੱਤਰੀ ਕੁਰਦਿਸ਼ ਸਥਾਨਕਕਰਨ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ। diff --git a/fastlane/metadata/android/pa/changelogs/966.txt b/fastlane/metadata/android/pa/changelogs/966.txt new file mode 100644 index 000000000..61afac503 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/966.txt @@ -0,0 +1 @@ +ਨਵਾਂ: • ਇੱਕ ਨਵੀਂ ਸੇਵਾ ਸ਼ਾਮਲ ਕਰੋ: Bandcamp ਸੁਧਾਰ: • ਐਪ ਨੂੰ ਡਿਵਾਈਸ ਥੀਮ ਦਾ ਅਨੁਸਰਣ ਕਰਨ ਲਈ ਇੱਕ ਵਿਕਲਪ ਸ਼ਾਮਲ ਕਰੋ • ਇੱਕ ਸੁਧਾਰਿਆ ਹੋਇਆ ਗਲਤੀ ਪੈਨਲ ਦਿਖਾ ਕੇ ਕੁਝ ਕਰੈਸ਼ਾਂ ਨੂੰ ਰੋਕੋ • ਇਸ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਦਿਖਾਓ ਕਿ ਸਮੱਗਰੀ ਕਿਉਂ ਉਪਲਬਧ ਨਹੀਂ ਹੈ • ਹਾਰਡਵੇਅਰ ਸਪੇਸ ਬਟਨ ਪਲੇ/ਪੌਜ਼ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ • "ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ" ਟੋਸਟ ਦਿਖਾਓ ਸਥਿਰ: • ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚੱਲਦੇ ਸਮੇਂ ਵੀਡੀਓ ਵੇਰਵਿਆਂ ਵਿੱਚ ਬਹੁਤ ਛੋਟੇ ਥੰਬਨੇਲ ਨੂੰ ਠੀਕ ਕਰੋ • ਨਿਊਨਤਮ ਪਲੇਅਰ ਵਿੱਚ ਖਾਲੀ ਸਿਰਲੇਖ ਨੂੰ ਠੀਕ ਕਰੋ • ਪਿਛਲੇ ਰੀਸਾਈਜ਼ ਮੋਡ ਨੂੰ ਠੀਕ ਤਰ੍ਹਾਂ ਰੀਸਟੋਰ ਨਹੀਂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ diff --git a/fastlane/metadata/android/pa/changelogs/967.txt b/fastlane/metadata/android/pa/changelogs/967.txt new file mode 100644 index 000000000..8b63f43e7 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/967.txt @@ -0,0 +1 @@ +ਸਥਿਰ YouTube EU ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਹੀਂ ਕਰ ਰਿਹਾ। ਇਹ ਇੱਕ ਨਵੀਂ ਕੂਕੀ ਅਤੇ ਗੋਪਨੀਯਤਾ ਸਹਿਮਤੀ ਪ੍ਰਣਾਲੀ ਦੇ ਕਾਰਨ ਹੋਇਆ ਸੀ ਜਿਸ ਲਈ ਇੱਕ CONSENT ਕੂਕੀ ਸੈੱਟ ਕਰਨ ਲਈ NewPipe ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। diff --git a/fastlane/metadata/android/pa/changelogs/968.txt b/fastlane/metadata/android/pa/changelogs/968.txt new file mode 100644 index 000000000..3e3909022 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/968.txt @@ -0,0 +1 @@ +ਲੰਬੇ ਸਮੇਂ ਲਈ ਦਬਾਓ ਮੀਨੂ ਵਿੱਚ ਚੈਨਲ ਵੇਰਵੇ ਵਿਕਲਪ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ। ਪਲੇਲਿਸਟ ਇੰਟਰਫੇਸ ਤੋਂ ਪਲੇਲਿਸਟ ਨਾਮ ਦਾ ਨਾਮ ਬਦਲਣ ਲਈ ਕਾਰਜਸ਼ੀਲਤਾ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ। ਵੀਡੀਓ ਬਫਰਿੰਗ ਹੋਣ 'ਤੇ ਵਰਤੋਂਕਾਰ ਨੂੰ ਰੁਕਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ। ਚਿੱਟੇ ਥੀਮ ਨੂੰ ਪਾਲਿਸ਼ ਕੀਤਾ। ਇੱਕ ਵੱਡੇ ਫੌਂਟ ਆਕਾਰ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਓਵਰਲੈਪਿੰਗ ਫੌਂਟਾਂ ਨੂੰ ਸਥਿਰ ਕੀਤਾ ਗਿਆ ਹੈ। ਫਾਰਮੂਲਰ ਅਤੇ ਜ਼ੇਫੀਅਰ ਡਿਵਾਈਸਾਂ 'ਤੇ ਕੋਈ ਵੀਡੀਓ ਫਿਕਸ ਨਹੀਂ ਕੀਤਾ ਗਿਆ। ਵੱਖ-ਵੱਖ ਕਰੈਸ਼ਾਂ ਨੂੰ ਸਥਿਰ ਕੀਤਾ। diff --git a/fastlane/metadata/android/pa/changelogs/969.txt b/fastlane/metadata/android/pa/changelogs/969.txt new file mode 100644 index 000000000..4708c4a13 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/969.txt @@ -0,0 +1 @@ +• ਬਾਹਰੀ ਸਟੋਰੇਜ 'ਤੇ ਇੰਸਟਾਲੇਸ਼ਨ ਦੀ ਆਗਿਆ ਦਿਓ • [ਬੈਂਡਕੈਂਪ] ਇੱਕ ਸਟ੍ਰੀਮ 'ਤੇ ਪਹਿਲੀਆਂ ਤਿੰਨ ਟਿੱਪਣੀਆਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਸਮਰਥਨ ਜੋੜਿਆ ਗਿਆ • ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ ਸਿਰਫ਼ 'ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ ਹੋ ਗਿਆ ਹੈ' ਟੋਸਟ ਦਿਖਾਓ • ਜਦੋਂ ਕੋਈ ਕੂਕੀ ਸਟੋਰ ਨਾ ਹੋਵੇ ਤਾਂ ਰੀਕੈਪਚਾ ਕੂਕੀ ਸੈਟ ਨਾ ਕਰੋ • [ਖਿਡਾਰੀ] ਕੈਸ਼ ਪ੍ਰਦਰਸ਼ਨ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ • [ਖਿਡਾਰੀ] ਫਿਕਸਡ ਪਲੇਅਰ ਆਟੋਮੈਟਿਕ ਨਹੀਂ ਚੱਲ ਰਿਹਾ • ਡਾਊਨਲੋਡਾਂ ਨੂੰ ਮਿਟਾਉਣ ਵੇਲੇ ਪਿਛਲੀਆਂ ਸਨੈਕਬਾਰਾਂ ਨੂੰ ਖਾਰਜ ਕਰੋ • ਸੂਚੀ ਵਿੱਚ ਨਾ ਹੋਣ ਵਾਲੀ ਵਸਤੂ ਨੂੰ ਮਿਟਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਗਈ diff --git a/fastlane/metadata/android/pa/changelogs/970.txt b/fastlane/metadata/android/pa/changelogs/970.txt new file mode 100644 index 000000000..679c9dae3 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/970.txt @@ -0,0 +1 @@ +ਨਵਾਂ • ਵਰਣਨ ਦੇ ਹੇਠਾਂ ਸਮੱਗਰੀ ਮੈਟਾਡੇਟਾ (ਟੈਗ, ਸ਼੍ਰੇਣੀਆਂ, ਲਾਇਸੰਸ, ...) ਦਿਖਾਓ • ਰਿਮੋਟ (ਗੈਰ-ਸਥਾਨਕ) ਪਲੇਲਿਸਟਾਂ ਵਿੱਚ "ਚੈਨਲ ਵੇਰਵੇ ਦਿਖਾਓ" ਵਿਕਲਪ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ • ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਦਬਾਉਣ ਵਾਲੇ ਮੀਨੂ ਵਿੱਚ "ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਖੋਲ੍ਹੋ" ਵਿਕਲਪ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਸਥਿਰ • ਵੀਡੀਓ ਵੇਰਵੇ ਪੰਨੇ 'ਤੇ ਸਥਿਰ ਰੋਟੇਸ਼ਨ ਕਰੈਸ਼ • ਪਲੇਅਰ ਵਿੱਚ ਸਥਿਰ "ਕੋਡੀ ਨਾਲ ਖੇਡੋ" ਬਟਨ ਹਮੇਸ਼ਾ ਕੋਰ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਲਈ ਪ੍ਰੇਰਦਾ ਹੈ • ਸਥਿਰ ਅਤੇ ਸੁਧਾਰੀ ਸੈਟਿੰਗ ਆਯਾਤ ਅਤੇ ਨਿਰਯਾਤ ਮਾਰਗ • [YouTube] ਸਥਿਰ ਟਿੱਪਣੀ ਪਸੰਦ ਗਿਣਤੀ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ diff --git a/fastlane/metadata/android/pa/changelogs/971.txt b/fastlane/metadata/android/pa/changelogs/971.txt new file mode 100644 index 000000000..d3dbe862f --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/971.txt @@ -0,0 +1,3 @@ +ਹੌਟਫਿਕਸ +• ਰੀਬਫਰ ਤੋਂ ਬਾਅਦ ਪਲੇਬੈਕ ਲਈ ਬਫਰ ਵਧਾਓ +• ਪਲੇਅਰ ਵਿੱਚ ਪਲੇ-ਕਿਊ ਆਈਕਨ 'ਤੇ ਕਲਿੱਕ ਕਰਨ ਵੇਲੇ ਟੈਬਲੈੱਟਾਂ ਅਤੇ ਟੀਵੀ 'ਤੇ ਸਥਿਰ ਕਰੈਸ਼ diff --git a/fastlane/metadata/android/pa/changelogs/972.txt b/fastlane/metadata/android/pa/changelogs/972.txt new file mode 100644 index 000000000..9cf290198 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/972.txt @@ -0,0 +1,13 @@ +ਨਵਾਂ +ਵਰਣਨ ਵਿੱਚ ਟਾਈਮਸਟੈਂਪਾਂ ਅਤੇ ਹੈਸ਼ਟੈਗਾਂ ਨੂੰ ਪਛਾਣੋ +ਮੈਨੂਅਲ ਟੈਬਲੇਟ ਮੋਡ ਸੈਟਿੰਗ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ +ਇੱਕ ਫੀਡ ਵਿੱਚ ਖੇਡੀਆਂ ਗਈਆਂ ਆਈਟਮਾਂ ਨੂੰ ਲੁਕਾਉਣ ਦੀ ਸਮਰੱਥਾ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ + +ਸੁਧਾਰ +ਸਟੋਰੇਜ਼ ਐਕਸੈਸ ਫਰੇਮਵਰਕ ਦਾ ਸਹੀ ਢੰਗ ਨਾਲ ਸਮਰਥਨ ਕਰੋ +ਅਣਉਪਲਬਧ ਅਤੇ ਬੰਦ ਕੀਤੇ ਚੈਨਲਾਂ ਦੀ ਬਿਹਤਰ ਗਲਤੀ ਹੈਂਡਲਿੰਗ +Android 10+ ਉਪਭੋਗਤਾਵਾਂ ਲਈ Android ਸ਼ੇਅਰ ਸ਼ੀਟ ਹੁਣ ਸਮੱਗਰੀ ਦਾ ਸਿਰਲੇਖ ਦਿਖਾਉਂਦੀ ਹੈ। +ਅੱਪਡੇਟ ਕੀਤਾ Invidious ਮੌਕੇ ਅਤੇ ਸਹਿਯੋਗ ਪਾਈਪ ਲਿੰਕ. + +ਠੀਕ ਕੀਤਾ +[YouTube] ਉਮਰ ਪ੍ਰਤਿਬੰਧਿਤ ਸਮੱਗਰੀ ਚੋਣ ਡਾਇਲਾਗ ਖੋਲ੍ਹਣ ਵੇਲੇ ਲੀਕ ਵਿੰਡੋ ਅਪਵਾਦ ਨੂੰ ਰੋਕੋ diff --git a/fastlane/metadata/android/pa/changelogs/973.txt b/fastlane/metadata/android/pa/changelogs/973.txt new file mode 100644 index 000000000..3afd456da --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/973.txt @@ -0,0 +1,4 @@ +ਹੌਟਫਿਕਸ +• ਇੱਕ ਕਤਾਰ ਵਿੱਚ ਕਿੰਨੇ ਵਿਡੀਓ ਫਿੱਟ ਹੋ ਸਕਦੇ ਹਨ ਦੀ ਗਲਤ ਗਣਨਾ ਕਰਕੇ, ਗਰਿੱਡ ਲੇਆਉਟ ਵਿੱਚ ਕੱਟੇ ਜਾ ਰਹੇ ਥੰਬਨੇਲ ਅਤੇ ਸਿਰਲੇਖਾਂ ਨੂੰ ਠੀਕ ਕਰੋ +• ਸ਼ੇਅਰ ਮੀਨੂ ਤੋਂ ਖੋਲ੍ਹੇ ਜਾਣ 'ਤੇ ਬਿਨਾਂ ਕੁਝ ਕੀਤੇ ਗਾਇਬ ਹੋ ਰਹੇ ਡਾਉਨਲੋਡ ਡਾਇਲੌਗ ਨੂੰ ਠੀਕ ਕਰੋ +• ਬਾਹਰੀ ਗਤੀਵਿਧੀਆਂ ਜਿਵੇਂ ਕਿ ਸਟੋਰੇਜ਼ ਐਕਸੈਸ ਫਰੇਮਵਰਕ ਫਾਈਲ ਪਿਕਰ ਖੋਲ੍ਹਣ ਨਾਲ ਸਬੰਧਤ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/974.txt b/fastlane/metadata/android/pa/changelogs/974.txt new file mode 100644 index 000000000..563a9768a --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/974.txt @@ -0,0 +1,5 @@ +ਹੌਟਫਿਕਸ +• YouTube ਥ੍ਰੋਟਲਿੰਗ ਦੇ ਕਾਰਨ ਬਫਰਿੰਗ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਠੀਕ ਕਰੋ +• ਬੰਦ ਕੀਤੀਆਂ ਟਿੱਪਣੀਆਂ ਨਾਲ ਕ੍ਰੈਸ਼ਾਂ ਨੂੰ ਠੀਕ ਕਰੋ ਅਤੇ YouTube ਟਿੱਪਣੀਆਂ ਕੱਢਣ +• YouTube ਸੰਗੀਤ ਖੋਜ ਨੂੰ ਠੀਕ ਕਰੋ +• PeerTube ਲਾਈਵਸਟ੍ਰੀਮਾਂ ਨੂੰ ਠੀਕ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/975.txt b/fastlane/metadata/android/pa/changelogs/975.txt new file mode 100644 index 000000000..c866df1e2 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/975.txt @@ -0,0 +1,16 @@ +ਨਵਾਂ +• ਸੀਕ ਕਰਨ ਵੇਲੇ ਇੱਕ ਥੰਮਨੇਲ ਪੂਰਵਦਰਸ਼ਨ ਦਿਖਾਓ +• ਅਯੋਗ ਟਿੱਪਣੀਆਂ ਦਾ ਪਤਾ ਲਗਾਓ +• ਫੀਡ ਆਈਟਮ ਨੂੰ ਦੇਖੇ ਗਏ ਵਜੋਂ ਨਿਸ਼ਾਨਬੱਧ ਕਰਨ ਦਿਓ +• ਟਿੱਪਣੀ ਦਿਲ ਦਿਖਾਓ + +ਸੁਧਾਰ +• ਮੈਟਾਡੇਟਾ ਅਤੇ ਟੈਗਸ ਲੇਆਉਟ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ +• UI ਭਾਗਾਂ 'ਤੇ ਸੇਵਾ ਰੰਗ ਲਾਗੂ ਕਰੋ +ਠੀਕ ਕੀਤਾ +• ਮਿੰਨੀ ਪਲੇਅਰ ਵਿੱਚ ਥੰਬਨੇਲ ਠੀਕ ਕਰੋ +• ਡੁਪਲੀਕੇਟ ਕਤਾਰ ਆਈਟਮਾਂ 'ਤੇ ਬੇਅੰਤ ਬਫਰਿੰਗ ਨੂੰ ਠੀਕ ਕਰੋ +• ਕੁਝ ਪਲੇਅਰ ਫਿਕਸ ਜਿਵੇਂ ਰੋਟੇਸ਼ਨ ਅਤੇ ਤੇਜ਼ੀ ਨਾਲ ਬੰਦ ਹੋਣਾ +• ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਲੋਡ ਕੀਤੇ ਬਾਕੀ ਬਚੇ ReCAPTCHA ਨੂੰ ਠੀਕ ਕਰੋ +• ਫੀਡ ਨੂੰ ਤਾਜ਼ਾ ਕਰਨ ਵੇਲੇ ਕਲਿੱਕਾਂ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ +• ਕੁਝ ਡਾਊਨਲੋਡਰ ਕਰੈਸ਼ਾਂ ਨੂੰ ਠੀਕ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/976.txt b/fastlane/metadata/android/pa/changelogs/976.txt new file mode 100644 index 000000000..a1a1354ca --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/976.txt @@ -0,0 +1,10 @@ +• ਪੂਰੀ ਸਕ੍ਰੀਨ ਵਿੱਚ ਪਲੇਅਰ ਨੂੰ ਸਿੱਧਾ ਖੋਲ੍ਹਣ ਲਈ ਵਿਕਲਪ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ +• ਇਹ ਚੁਣਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ ਕਿ ਕਿਸ ਕਿਸਮ ਦੇ ਖੋਜ ਸੁਝਾਅ ਦਿਖਾਉਣੇ ਹਨ +• ਗੂੜ੍ਹਾ ਥੀਮ ਹੁਣ ਗਹਿਰਾ ਗੂੜ੍ਹਾ + ਗੂੜ੍ਹਾ ਸਪਲੈਸ਼ ਸਕ੍ਰੀਨ ਜੋੜਿਆ ਗਿਆ ਹੈ +• ਅਣਚਾਹੀਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਸਲੇਟੀ ਕਰਨ ਲਈ ਬਿਹਤਰ ਫ਼ਾਈਲ ਚੋਣਕਾਰ +• ਸਥਿਰ YouTube ਗਾਹਕੀ ਆਯਾਤ + +• ਇੱਕ ਸਟ੍ਰੀਮ ਨੂੰ ਮੁੜ ਚਲਾਉਣ ਲਈ ਮੁੜ-ਪਲੇਅ ਬਟਨ 'ਤੇ ਟੈਪ ਕਰਨ ਦੀ ਲੋੜ ਹੈ +• ਸਥਿਰ ਸਮਾਪਤੀ ਆਡੀਓ ਸੈਸ਼ਨ +• [Android TV] DPad ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਸਥਿਰ ਲੰਬੀ ਸੀਕਬਾਰ ਜੰਪ +ਹੋਰ ਤਬਦੀਲੀਆਂ ਦੇਖਣ ਲਈ, ਹੇਠਾਂ ਦਿੱਤੇ ਲਿੰਕ ਟੈਬ ਤੋਂ ਚੇਂਜਲੌਗ (ਅਤੇ ਬਲੌਗ ਪੋਸਟ) ਦੇਖੋ। diff --git a/fastlane/metadata/android/pa/changelogs/977.txt b/fastlane/metadata/android/pa/changelogs/977.txt new file mode 100644 index 000000000..95d779a80 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/977.txt @@ -0,0 +1,10 @@ +• ਲੰਬੇ ਪ੍ਰੈਸ ਮੀਨੂ ਵਿੱਚ "ਅਗਲਾ ਚਲਾਓ" ਬਟਨ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ +• ਇੰਟੈਂਟ ਫਿਲਟਰ ਵਿੱਚ YouTube ਸ਼ਾਰਟਸ ਪਾਥ ਪ੍ਰੀਫਿਕਸ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ +• ਸਥਿਰ ਸੈਟਿੰਗਾਂ ਆਯਾਤ +• ਕਤਾਰ ਸਕ੍ਰੀਨ ਵਿੱਚ ਪਲੇਅਰ ਬਟਨਾਂ ਨਾਲ ਸੀਕਬਾਰ ਸਥਿਤੀ ਨੂੰ ਸਵੈਪ ਕਰੋ +• MediasessionManager ਨਾਲ ਸੰਬੰਧਿਤ ਕਈ ਫਿਕਸ +• ਵੀਡੀਓ ਖਤਮ ਹੋਣ ਤੋਂ ਬਾਅਦ ਸਥਿਰ ਸੀਕਬਾਰ ਪੂਰਾ ਨਹੀਂ ਹੋਇਆ +• RealtekATV 'ਤੇ ਅਯੋਗ ਮੀਡੀਆ ਟਨਲਿੰਗ +• ਵਿਸਤ੍ਰਿਤ ਨਿਊਨਤਮ ਪਲੇਅਰ ਬਟਨ ਕਲਿੱਕ ਕਰਨ ਯੋਗ ਖੇਤਰ + +ਹੋਰ ਤਬਦੀਲੀਆਂ ਦੇਖਣ ਲਈ, ਹੇਠਾਂ ਦਿੱਤੇ ਲਿੰਕ ਟੈਬ ਤੋਂ ਚੇਂਜਲੌਗ (ਅਤੇ ਬਲੌਗ ਪੋਸਟ) ਦੇਖੋ। diff --git a/fastlane/metadata/android/pa/changelogs/978.txt b/fastlane/metadata/android/pa/changelogs/978.txt new file mode 100644 index 000000000..683f43ecc --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/978.txt @@ -0,0 +1 @@ +ਇੱਕ ਨਵੇਂ ਨਿਊਪਾਈਪ ਸੰਸਕਰਣ ਲਈ ਜਾਂਚ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਸਥਿਰ ਹੈ। ਇਹ ਜਾਂਚ ਕਈ ਵਾਰ ਬਹੁਤ ਜਲਦੀ ਕੀਤੀ ਗਈ ਸੀ ਅਤੇ ਇਸਲਈ ਐਪ ਕਰੈਸ਼ ਹੋ ਜਾਂਦੀ ਹੈ। ਇਸ ਨੂੰ ਹੁਣ ਠੀਕ ਕੀਤਾ ਜਾਣਾ ਗਿਆ ਹੈ। diff --git a/fastlane/metadata/android/pa/changelogs/979.txt b/fastlane/metadata/android/pa/changelogs/979.txt new file mode 100644 index 000000000..61a432f20 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/979.txt @@ -0,0 +1,2 @@ +- ਠੀਕ ਕੀਤਾ ਪਲੇਬੈਕ ਦੁਬਾਰਾ ਚਾਲੂ ਕਰਨਾ +- ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਸੁਧਾਰ ਕੀਤੇ ਗਏ ਹਨ ਕਿ ਸੇਵਾ ਜੋ ਇਹ ਨਿਰਧਾਰਤ ਕਰਦੀ ਹੈ ਕਿ ਕੀ NewPipe ਨੂੰ ਨਵੇਂ ਸੰਸਕਰਣ ਦੀ ਜਾਂਚ ਲਈ ਜਾਂਚ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ, ਬੈਕਗ੍ਰਾਉਂਡ ਵਿੱਚ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋਈ ਹੈ diff --git a/fastlane/metadata/android/pa/changelogs/980.txt b/fastlane/metadata/android/pa/changelogs/980.txt new file mode 100644 index 000000000..cc1b47f26 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/980.txt @@ -0,0 +1,12 @@ +ਨਵਾਂ +• ਸ਼ੇਅਰ ਮੀਨੂ ਲਈ "ਪਲੇਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ" ਵਿਕਲਪ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ +• y2u.be ਅਤੇ PeerTube ਛੋਟੇ ਲਿੰਕਾਂ ਲਈ ਸਮਰਥਨ ਜੋੜਿਆ ਗਿਆ + +ਸੁਧਾਰ +• ਪਲੇਬੈਕ-ਸਪੀਡ-ਕੰਟਰੋਲਾਂ ਨੂੰ ਵਧੇਰੇ ਸੰਖੇਪ ਬਣਾਇਆ ਗਿਆ ਹੈ +• ਫੀਡ ਹੁਣ ਨਵੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਉਜਾਗਰ ਕਰਦੀ ਹੈ +• ਫੀਡ ਵਿੱਚ "ਦੇਖੀਆਂ ਆਈਟਮਾਂ ਦਿਖਾਓ" ਵਿਕਲਪ ਹੁਣ ਸੁਰੱਖਿਅਤ ਹੈ + +ਠੀਕ ਕੀਤਾ +• ਸਥਿਰ YouTube ਪਸੰਦਾਂ ਅਤੇ ਨਾਪਸੰਦਾਂ ਨੂੰ ਕੱਢਣਾ +• ਬੈਕਗ੍ਰਾਊਂਡ ਤੋਂ ਵਾਪਸ ਆਉਣ ਤੋਂ ਬਾਅਦ ਸਥਿਰ ਆਟੋਮੈਟਿਕ ਰੀਪਲੇਅ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ diff --git a/fastlane/metadata/android/pa/changelogs/981.txt b/fastlane/metadata/android/pa/changelogs/981.txt new file mode 100644 index 000000000..36f141586 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/981.txt @@ -0,0 +1,2 @@ +ਐਂਡਰਾਇਡ 11+ 'ਤੇ ਬਫਰਿੰਗ ਤੋਂ ਬਾਅਦ ਅਸਫਲ ਪਲੇਬੈਕ ਰੀਜ਼ਿਊਮ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਮੀਡੀਆ ਪਾਰਸਰ ਸਮਰਥਨ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ। +ਪਲੇਬੈਕ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਫਿਲਿਪਸ QM16XE 'ਤੇ ਮੀਡੀਆ ਟਨਲਿੰਗ ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ। diff --git a/fastlane/metadata/android/pa/changelogs/982.txt b/fastlane/metadata/android/pa/changelogs/982.txt new file mode 100644 index 000000000..829c85851 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/982.txt @@ -0,0 +1 @@ +ਸਥਿਰ YouTube ਕੋਈ ਸਟ੍ਰੀਮ ਨਹੀਂ ਚਲਾ ਰਿਹਾ। diff --git a/fastlane/metadata/android/pa/changelogs/983.txt b/fastlane/metadata/android/pa/changelogs/983.txt new file mode 100644 index 000000000..c3797c649 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/983.txt @@ -0,0 +1,9 @@ +ਨਵਾਂ ਡਬਲ-ਟੈਪ-ਟੂ-ਸੀਕ UI ਅਤੇ ਵਿਵਹਾਰ ਸ਼ਾਮਲ ਕਰੋ +ਸੈਟਿੰਗਾਂ ਨੂੰ ਖੋਜਣਯੋਗ ਬਣਾਓ +ਪਿੰਨ ਕੀਤੀਆਂ ਟਿੱਪਣੀਆਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਹਾਈਲਾਈਟ ਕਰੋ +FSFE ਦੇ PeerTube ਉਦਾਹਰਨ ਲਈ ਓਪਨ-ਵਿਦ-ਐਪ ਸਮਰਥਨ ਸ਼ਾਮਲ ਕਰੋ +ਗਲਤੀ ਸੂਚਨਾਵਾਂ ਸ਼ਾਮਲ ਕਰੋ +ਪਲੇਅਰ ਬਦਲਣ 'ਤੇ ਪਹਿਲੀ ਕਤਾਰ ਆਈਟਮ ਦੇ ਰੀਪਲੇਅ ਨੂੰ ਠੀਕ ਕਰੋ +ਫੇਲ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਲਾਈਵਸਟ੍ਰੀਮ ਦੇ ਦੌਰਾਨ ਬਫਰਿੰਗ ਕਰਦੇ ਸਮੇਂ ਜ਼ਿਆਦਾ ਉਡੀਕ ਕਰੋ +ਸਥਾਨਕ ਖੋਜ ਨਤੀਜਿਆਂ ਦਾ ਕ੍ਰਮ ਠੀਕ ਕਰੋ +ਪਲੇ ਕਤਾਰ ਵਿੱਚ ਖਾਲੀ ਆਈਟਮ ਖੇਤਰਾਂ ਨੂੰ ਠੀਕ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/984.txt b/fastlane/metadata/android/pa/changelogs/984.txt new file mode 100644 index 000000000..068d56d59 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/984.txt @@ -0,0 +1,7 @@ +ਪੂਰੀ ਸਕ੍ਰੀਨ ਨੂੰ ਭਰਨ ਅਤੇ ਟੈਬਲੇਟਾਂ ਅਤੇ ਟੀਵੀ 'ਤੇ ਸਕ੍ਰੋਲਿੰਗ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਸੂਚੀਆਂ ਵਿੱਚ ਲੋੜੀਂਦੀਆਂ ਸ਼ੁਰੂਆਤੀ ਆਈਟਮਾਂ ਲੋਡ ਕਰੋ +ਸੂਚੀਆਂ ਰਾਹੀਂ ਸਕ੍ਰੋਲ ਕਰਦੇ ਸਮੇਂ ਬੇਤਰਤੀਬੇ ਕਰੈਸ਼ਾਂ ਨੂੰ ਠੀਕ ਕਰੋ +ਪਲੇਅਰ ਨੂੰ ਸਿਸਟਮ UI ਦੇ ਅਧੀਨ ਤੇਜ਼ੀ ਨਾਲ ਸੀਕ ਓਵਰਲੇ ਆਰਕ ਜਾਣ ਦਿਓ +ਮਲਟੀ ਵਿੰਡੋ ਵਿੱਚ ਖੇਡਦੇ ਸਮੇਂ ਕਟਆਊਟਾਂ ਵਿੱਚ ਬਦਲਾਵ ਵਾਪਸ ਲਿਆਓ, ਜਿਸ ਨਾਲ ਕੁਝ ਫ਼ੋਨਾਂ 'ਤੇ ਪਲੇਅਰ ਰੀਗਰੈਸ਼ਨ ਦਾ ਕਾਰਨ ਬਣਦੇ ਹਨ। +compileSdk ਨੂੰ 30 ਤੋਂ 31 ਤੱਕ ਵਧਾਓ +ਅਸ਼ੁੱਧੀ ਰਿਪੋਰਟਿੰਗ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ +ਪਲੇਅਰ ਵਿੱਚ ਕੁਝ ਕੋਡ ਰੀਫੈਕਟਰ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/985.txt b/fastlane/metadata/android/pa/changelogs/985.txt new file mode 100644 index 000000000..fe62a1330 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/985.txt @@ -0,0 +1 @@ +ਸਥਿਰ YouTube ਕੋਈ ਸਟ੍ਰੀਮ ਨਹੀਂ ਚਲਾ ਰਿਹਾ diff --git a/fastlane/metadata/android/pa/changelogs/986.txt b/fastlane/metadata/android/pa/changelogs/986.txt new file mode 100644 index 000000000..c9ab694a4 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/986.txt @@ -0,0 +1,15 @@ +ਨਵਾਂ +• ਨਵੀਆਂ ਸਟ੍ਰੀਮਾਂ ਲਈ ਸੂਚਨਾਵਾਂ +• ਬੈਕਗ੍ਰਾਊਂਡ ਅਤੇ ਵੀਡੀਓ ਪਲੇਅਰਾਂ ਵਿਚਕਾਰ ਅਰਾਮ ਨਾਲ ਤਬਦੀਲੀ +• ਸੈਮੀਟੋਨਸ ਦੁਆਰਾ ਪਿੱਚ ਬਦਲੋ +• ਇੱਕ ਪਲੇਲਿਸਟ ਵਿੱਚ ਮੁੱਖ ਪਲੇਅਰ ਕਤਾਰ ਜੋੜੋ + +ਸੁਧਾਰ +• ਸਪੀਡ/ਪਿਚ ਸਟੈਪ ਦਾ ਆਕਾਰ ਯਾਦ ਰੱਖੋ +• ਵੀਡੀਓ ਪਲੇਅਰ ਵਿੱਚ ਸ਼ੁਰੂਆਤੀ ਲੰਬੇ ਬਫਰਿੰਗ ਨੂੰ ਘੱਟ ਕਰੋ • Android TV ਲਈ ਪਲੇਅਰ UI ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ +• ਸਾਰੀਆਂ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਮਿਟਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਪੁਸ਼ਟੀ ਕਰੋ + +ਠੀਕ ਕੀਤਾ +• ਮੀਡੀਆ ਬਟਨ ਨੂੰ ਫਿਕਸ ਕਰੋ ਜੋ ਪਲੇਅਰ ਨਿਯੰਤਰਣਾਂ ਨੂੰ ਨਹੀਂ ਲੁਕਾਉਂਦਾ ਹੈ +• ਪਲੇਅਰ ਦੀ ਕਿਸਮ ਬਦਲਣ 'ਤੇ ਪਲੇਬੈਕ ਰੀਸੈਟ ਨੂੰ ਠੀਕ ਕਰੋ +• ਪਲੇਲਿਸਟ ਡਾਇਲਾਗ ਨੂੰ ਘੁੰਮਾਉਣ ਨੂੰ ਠੀਕ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/987.txt b/fastlane/metadata/android/pa/changelogs/987.txt new file mode 100644 index 000000000..93fc77a77 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/987.txt @@ -0,0 +1,11 @@ +ਨਵਾਂ +• ਪ੍ਰਗਤੀਸ਼ੀਲ HTTP ਤੋਂ ਇਲਾਵਾ ਸਪੋਰਟ ਡਿਲੀਵਰੀ ਵਿਧੀਆਂ: ਤੇਜ਼ ਪਲੇਬੈਕ ਲੋਡ ਹੋਣ ਦਾ ਸਮਾਂ, PeerTube ਅਤੇ SoundCloud ਲਈ ਫਿਕਸ, ਹਾਲ ਹੀ ਵਿੱਚ ਖਤਮ ਹੋਈਆਂ YouTube ਲਾਈਵਸਟ੍ਰੀਮਾਂ ਦਾ ਪਲੇਬੈਕ +• ਇੱਕ ਸਥਾਨਕ ਪਲੇਲਿਸਟ ਵਿੱਚ ਰਿਮੋਟ ਪਲੇਲਿਸਟ ਜੋੜਨ ਲਈ ਬਟਨ ਸ਼ਾਮਲ ਕਰੋ +• Android 10+ ਸ਼ੇਅਰ ਸ਼ੀਟ ਵਿੱਚ ਚਿੱਤਰ ਦੀ ਪੂਰਵ-ਝਲਕ + + ਸੁਧਾਰ +• ਪਲੇਬੈਕ ਪੈਰਾਮੀਟਰ ਡਾਇਲਾਗ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ +• ਗਾਹਕੀ ਆਯਾਤ/ਨਿਰਯਾਤ ਬਟਨਾਂ ਨੂੰ ਤਿੰਨ-ਬਿੰਦੀਆਂ ਵਾਲੇ ਮੀਨੂ ਵਿੱਚ ਲੈ ਜਾਓ + +ਠੀਕ ਕੀਤਾ +• ਪਲੇਲਿਸਟ ਤੋਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਦੇਖੇ ਗਏ ਵੀਡੀਓ ਨੂੰ ਹਟਾਉਣਾ ਠੀਕ ਕਰੋ • ਸ਼ੇਅਰ ਮੀਨੂ ਥੀਮ ਅਤੇ "ਪਲੇਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ" ਐਂਟਰੀ ਨੂੰ ਠੀਕ ਕਰੋ diff --git a/fastlane/metadata/android/pa/changelogs/988.txt b/fastlane/metadata/android/pa/changelogs/988.txt new file mode 100644 index 000000000..a50bcc144 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/988.txt @@ -0,0 +1,2 @@ +[YouTube] ਕਿਸੇ ਵੀ ਵੀਡੀਓ ਨੂੰ ਚਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ "ਕੋਈ ਸਟ੍ਰੀਮ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕਿਆ" ਗਲਤੀ ਨੂੰ ਠੀਕ ਕਰੋ +[YouTube] ਫਿਕਸ "ਹੇਠ ਦਿੱਤੀ ਸਮੱਗਰੀ ਇਸ ਐਪ 'ਤੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।" ਬੇਨਤੀ ਕੀਤੀ ਵੀਡੀਓ ਦੀ ਬਜਾਏ ਸੁਨੇਹਾ ਵਿਖਾਇਆ ਗਿਆ diff --git a/fastlane/metadata/android/pa/changelogs/989.txt b/fastlane/metadata/android/pa/changelogs/989.txt new file mode 100644 index 000000000..9c00f845d --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/989.txt @@ -0,0 +1,3 @@ +• [YouTube] ਕਿਸੇ ਵੀ ਵੀਡੀਓ ਨੂੰ ਚਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਅਨੰਤ ਲੋਡਿੰਗ ਨੂੰ ਠੀਕ ਕਰੋ +• [YouTube] ਕੁਝ ਵੀਡੀਓਜ਼ 'ਤੇ ਥ੍ਰੋਟਲਿੰਗ ਨੂੰ ਠੀਕ ਕਰੋ +• jsoup ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ 1.15.3 ਵਿੱਚ ਅੱਪਗ੍ਰੇਡ ਕਰੋ, ਜਿਸ ਵਿੱਚ ਸੁਰੱਖਿਆ ਫਿਕਸ ਸ਼ਾਮਲ ਹੈ diff --git a/fastlane/metadata/android/pa/changelogs/990.txt b/fastlane/metadata/android/pa/changelogs/990.txt new file mode 100644 index 000000000..ce82cbdd6 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/990.txt @@ -0,0 +1,13 @@ +ਇਹ ਰੀਲੀਜ਼ Android 4.4 ਕਿਟਕੈਟ ਲਈ ਸਮਰਥਨ ਛੱਡਦੀ ਹੈ, ਹੁਣ ਘੱਟੋ-ਘੱਟ ਸੰਸਕਰਣ Android 5 Lollipop ਹੈ! +ਨਵਾਂ +• ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਦਬਾਉਣ ਵਾਲੇ ਮੀਨੂ ਤੋਂ ਡਾਊਨਲੋਡ ਕਰੋ +• ਫੀਡ ਵਿੱਚ ਭਵਿੱਖ ਦੇ ਵੀਡੀਓ ਲੁਕਾਓ +• ਸਥਾਨਕ ਪਲੇਲਿਸਟਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰੋ +ਸੁਧਾਰ +• ਪਲੇਅਰ ਕੋਡ ਨੂੰ ਛੋਟੇ ਹਿੱਸਿਆਂ ਵਿੱਚ ਰੀਫੈਕਟਰ ਕਰੋ: ਘੱਟ RAM ਵਰਤੀ ਗਈ, ਘੱਟ ਬੱਗ +• ਥੰਮਨੇਲ ਦੇ ਸਕੇਲ ਮੋਡ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ +• ਚਿੱਤਰ ਪਲੇਸਹੋਲਡਰ ਨੂੰ ਵੈਕਟਰਾਈਜ਼ ਕਰੋ + +ਠੀਕ ਕੀਤਾ +• ਪਲੇਅਰ ਨੋਟੀਫਿਕੇਸ਼ਨ ਨਾਲ ਵੱਖ-ਵੱਖ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰੋ: ਪੁਰਾਣੀ/ਗੁੰਮ ਮੀਡੀਆ ਜਾਣਕਾਰੀ, ਵਿਗੜਿਆ ਥੰਮਨੇਲ +• ਪੂਰੀ ਸਕ੍ਰੀਨ ਦੀ ਥਾਂ ਉਸਦੇ 1/4 ਹਿੱਸੇ ਦੀ ਵਰਤੋਂ ਨੂੰ ਠੀਕ ਕਰੋ From abb6b4282d3ac97c90fb822d1666d43922ffd2b2 Mon Sep 17 00:00:00 2001 From: ge78fug Date: Mon, 16 Jan 2023 15:13:34 +0100 Subject: [PATCH 125/147] Chenged the chapter icon --- app/src/main/res/drawable/ic_menu_book.xml | 12 ++++++++++++ app/src/main/res/layout/player.xml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable/ic_menu_book.xml diff --git a/app/src/main/res/drawable/ic_menu_book.xml b/app/src/main/res/drawable/ic_menu_book.xml new file mode 100644 index 000000000..4cd4fb3a4 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_book.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/layout/player.xml b/app/src/main/res/layout/player.xml index 60cbcf7c4..a3f039412 100644 --- a/app/src/main/res/layout/player.xml +++ b/app/src/main/res/layout/player.xml @@ -216,7 +216,7 @@ android:paddingEnd="6dp" android:paddingBottom="3dp" android:scaleType="fitCenter" - android:src="@drawable/ic_format_list_numbered" + android:src="@drawable/ic_menu_book" android:visibility="gone" app:tint="@color/white" tools:ignore="ContentDescription,RtlHardcoded" /> From b9378a7c1fedee40ec0ba16a42aba113f0659cc7 Mon Sep 17 00:00:00 2001 From: Stypox Date: Mon, 16 Jan 2023 22:30:28 +0100 Subject: [PATCH 126/147] Fix NPEs after OnSharedPreferenceChangeListener changes Apps targeting {@link android.os.Build.VERSION_CODES#R} on devices running OS versions {@link android.os.Build.VERSION_CODES#R Android R} or later, will receive a {@code null} value when preferences are cleared. --- .../newpipe/fragments/detail/VideoDetailFragment.java | 6 +++--- .../newpipe/fragments/list/BaseListFragment.java | 2 +- .../fragments/list/videos/RelatedItemsFragment.java | 8 +++----- .../schabi/newpipe/local/BaseLocalListFragment.java | 2 +- .../org/schabi/newpipe/settings/tabs/TabsManager.java | 2 +- .../shandian/giga/service/DownloadManagerService.java | 10 +++++----- 6 files changed, 14 insertions(+), 16 deletions(-) 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 e46c054e5..917d89e09 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 @@ -172,13 +172,13 @@ public final class VideoDetailFragment private final SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener = (sharedPreferences, key) -> { - if (key.equals(getString(R.string.show_comments_key))) { + if (getString(R.string.show_comments_key).equals(key)) { showComments = sharedPreferences.getBoolean(key, true); tabSettingsChanged = true; - } else if (key.equals(getString(R.string.show_next_video_key))) { + } else if (getString(R.string.show_next_video_key).equals(key)) { showRelatedItems = sharedPreferences.getBoolean(key, true); tabSettingsChanged = true; - } else if (key.equals(getString(R.string.show_description_key))) { + } else if (getString(R.string.show_description_key).equals(key)) { showDescription = sharedPreferences.getBoolean(key, true); tabSettingsChanged = true; } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java index 0b0acff86..8a117a47a 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java @@ -474,7 +474,7 @@ public abstract class BaseListFragment extends BaseStateFragment @Override public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key) { - if (key.equals(getString(R.string.list_view_mode_key))) { + if (getString(R.string.list_view_mode_key).equals(key)) { updateFlags |= LIST_MODE_UPDATE_FLAG; } } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedItemsFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedItemsFragment.java index dc5dbd74f..65664e0e3 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedItemsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedItemsFragment.java @@ -159,11 +159,9 @@ public class RelatedItemsFragment extends BaseListInfoFragment extends BaseStateFragment @Override public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key) { - if (key.equals(getString(R.string.list_view_mode_key))) { + if (getString(R.string.list_view_mode_key).equals(key)) { updateFlags |= LIST_MODE_UPDATE_FLAG; } } diff --git a/app/src/main/java/org/schabi/newpipe/settings/tabs/TabsManager.java b/app/src/main/java/org/schabi/newpipe/settings/tabs/TabsManager.java index 2836fe52b..c885b803c 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/tabs/TabsManager.java +++ b/app/src/main/java/org/schabi/newpipe/settings/tabs/TabsManager.java @@ -73,7 +73,7 @@ public final class TabsManager { private SharedPreferences.OnSharedPreferenceChangeListener getPreferenceChangeListener() { return (sp, key) -> { - if (key.equals(savedTabsKey)) { + if (savedTabsKey.equals(key)) { if (savedTabsChangeListener != null) { savedTabsChangeListener.onTabsChanged(); } diff --git a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java index dc56ee205..edc6bb6fd 100755 --- a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java +++ b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java @@ -310,7 +310,7 @@ public class DownloadManagerService extends Service { } private void handlePreferenceChange(SharedPreferences prefs, @NonNull String key) { - if (key.equals(getString(R.string.downloads_maximum_retry))) { + if (getString(R.string.downloads_maximum_retry).equals(key)) { try { String value = prefs.getString(key, getString(R.string.downloads_maximum_retry_default)); mManager.mPrefMaxRetry = value == null ? 0 : Integer.parseInt(value); @@ -318,13 +318,13 @@ public class DownloadManagerService extends Service { mManager.mPrefMaxRetry = 0; } mManager.updateMaximumAttempts(); - } else if (key.equals(getString(R.string.downloads_cross_network))) { + } else if (getString(R.string.downloads_cross_network).equals(key)) { mManager.mPrefMeteredDownloads = prefs.getBoolean(key, false); - } else if (key.equals(getString(R.string.downloads_queue_limit))) { + } else if (getString(R.string.downloads_queue_limit).equals(key)) { mManager.mPrefQueueLimit = prefs.getBoolean(key, true); - } else if (key.equals(getString(R.string.download_path_video_key))) { + } else if (getString(R.string.download_path_video_key).equals(key)) { mManager.mMainStorageVideo = loadMainVideoStorage(); - } else if (key.equals(getString(R.string.download_path_audio_key))) { + } else if (getString(R.string.download_path_audio_key).equals(key)) { mManager.mMainStorageAudio = loadMainAudioStorage(); } } From 640d4b0280d06f3b3a107a56d3357def3af2b5ed Mon Sep 17 00:00:00 2001 From: TobiGr Date: Mon, 16 Jan 2023 23:05:29 +0100 Subject: [PATCH 127/147] Fix more NPEs after OnSharedPreferenceChangeListener changes --- .../java/org/schabi/newpipe/local/feed/FeedFragment.kt | 2 +- .../newpipe/settings/VideoAudioSettingsFragment.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt index c1ee4e558..26ad1cc38 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt @@ -122,7 +122,7 @@ class FeedFragment : BaseStateFragment() { groupName = arguments?.getString(KEY_GROUP_NAME) ?: "" onSettingsChangeListener = SharedPreferences.OnSharedPreferenceChangeListener { _, key -> - if (key.equals(getString(R.string.list_view_mode_key))) { + if (getString(R.string.list_view_mode_key).equals(key)) { updateListViewModeOnResume = true } } diff --git a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java index 039f00c1d..aae9cfca5 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java @@ -27,14 +27,14 @@ public class VideoAudioSettingsFragment extends BasePreferenceFragment { updateSeekOptions(); - listener = (sharedPreferences, s) -> { + listener = (sharedPreferences, key) -> { // on M and above, if user chooses to minimise to popup player on exit // and the app doesn't have display over other apps permission, // show a snackbar to let the user give permission if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M - && s.equals(getString(R.string.minimize_on_exit_key))) { - final String newSetting = sharedPreferences.getString(s, null); + && getString(R.string.minimize_on_exit_key).equals(key)) { + final String newSetting = sharedPreferences.getString(key, null); if (newSetting != null && newSetting.equals(getString(R.string.minimize_on_exit_popup_key)) && !Settings.canDrawOverlays(getContext())) { @@ -46,7 +46,7 @@ public class VideoAudioSettingsFragment extends BasePreferenceFragment { .show(); } - } else if (s.equals(getString(R.string.use_inexact_seek_key))) { + } else if (getString(R.string.use_inexact_seek_key).equals(key)) { updateSeekOptions(); } }; From e9fcad4787c0c0efdf502c910ca8d3c8a4480b04 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Mon, 16 Jan 2023 23:20:50 +0100 Subject: [PATCH 128/147] Fix SonarLint --- .../main/java/org/schabi/newpipe/local/feed/FeedFragment.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt index 26ad1cc38..2bb2f9986 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt @@ -36,7 +36,6 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.widget.Button -import androidx.annotation.Nullable import androidx.appcompat.app.AlertDialog import androidx.appcompat.content.res.AppCompatResources import androidx.core.content.edit @@ -500,7 +499,7 @@ class FeedFragment : BaseStateFragment() { private fun handleFeedNotAvailable( subscriptionEntity: SubscriptionEntity, - @Nullable cause: Throwable?, + cause: Throwable?, nextItemsErrors: List ) { val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()) From a6021730cd7f0a5b7786130dfe2268f1f287d723 Mon Sep 17 00:00:00 2001 From: ge78fug Date: Tue, 17 Jan 2023 10:50:13 +0100 Subject: [PATCH 129/147] Removed format_list_numbered --- app/src/main/res/drawable/ic_format_list_numbered.xml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 app/src/main/res/drawable/ic_format_list_numbered.xml diff --git a/app/src/main/res/drawable/ic_format_list_numbered.xml b/app/src/main/res/drawable/ic_format_list_numbered.xml deleted file mode 100644 index b11666c56..000000000 --- a/app/src/main/res/drawable/ic_format_list_numbered.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - From ddda80a5779d705fb6e8d29505b4b267cd372d79 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Tue, 17 Jan 2023 22:31:22 +0100 Subject: [PATCH 130/147] Fixed the bug --- .../java/org/schabi/newpipe/player/playqueue/PlayQueue.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java index edf5a771c..f809e0db9 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java +++ b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java @@ -527,6 +527,9 @@ public abstract class PlayQueue implements Serializable { if (size() != other.size()) { return false; } + if (other.getIndex() != getIndex()) { + return false; + } for (int i = 0; i < size(); i++) { final PlayQueueItem stream = streams.get(i); final PlayQueueItem otherStream = other.streams.get(i); From f88c1e1e8bd41f555e7636256ae05bf3dc6e5355 Mon Sep 17 00:00:00 2001 From: ge78fug Date: Thu, 19 Jan 2023 21:15:09 +0100 Subject: [PATCH 131/147] Changed the position --- app/src/main/res/layout/player.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/layout/player.xml b/app/src/main/res/layout/player.xml index a3f039412..011c54147 100644 --- a/app/src/main/res/layout/player.xml +++ b/app/src/main/res/layout/player.xml @@ -212,7 +212,6 @@ android:clickable="true" android:focusable="true" android:paddingStart="6dp" - android:paddingTop="5dp" android:paddingEnd="6dp" android:paddingBottom="3dp" android:scaleType="fitCenter" From 6e1ffb4e52b06067c562446500f34f76369f32f1 Mon Sep 17 00:00:00 2001 From: ge78fug Date: Thu, 19 Jan 2023 23:24:25 +0100 Subject: [PATCH 132/147] Centered the icon --- app/src/main/res/layout/player.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/layout/player.xml b/app/src/main/res/layout/player.xml index 011c54147..b528e4e9b 100644 --- a/app/src/main/res/layout/player.xml +++ b/app/src/main/res/layout/player.xml @@ -214,6 +214,7 @@ android:paddingStart="6dp" android:paddingEnd="6dp" android:paddingBottom="3dp" + android:paddingTop="3dp" android:scaleType="fitCenter" android:src="@drawable/ic_menu_book" android:visibility="gone" From 52e39c340238f47d0a11da39a6975892b1a20564 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Fri, 20 Jan 2023 11:12:32 +0100 Subject: [PATCH 133/147] Fixed tests --- .../java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/test/java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java b/app/src/test/java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java index a130359a3..b8989b8fc 100644 --- a/app/src/test/java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java +++ b/app/src/test/java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java @@ -177,7 +177,7 @@ public class PlayQueueTest { final List streams = Collections.nCopies(5, item1); final PlayQueue queue1 = makePlayQueue(1, streams); final PlayQueue queue2 = makePlayQueue(4, streams); - assertEquals(queue1, queue2); + assertNotEquals(queue1, queue2); } @Test From fceec71ad3d6541d1dc0f8e7e44a5797ccc8a662 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C4=B1la?= <121803062+Ilhamiii@users.noreply.github.com> Date: Sat, 21 Jan 2023 16:13:15 +0400 Subject: [PATCH 134/147] Corrected language names --- app/src/main/res/values/settings_keys.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index c2819feea..126818969 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -495,7 +495,7 @@ @string/systems_language Afrikaans - Azərbaycan + Azərbaycanca Bahasa Indonesia Bahasa Malaysia Català @@ -1165,7 +1165,7 @@ Basa Acèh العربية العربية (ليبيا) - Azərbaycan dili + Azərbaycanca Asturianu Беларуская ⵜⴰⵎⴰⵣⵉⵖⵜ @@ -1221,7 +1221,7 @@ Português (BR) Português (PT) Română - русский язык + Pусский ᱥᱟᱱᱛᱟᱲᱤ sardu Slovenčina From 5b3f8a3d307145124273f1493e035e2dac17e072 Mon Sep 17 00:00:00 2001 From: Jared Fantaye Date: Sat, 21 Jan 2023 14:56:55 +0100 Subject: [PATCH 135/147] Replaced the equals method --- .../fragments/detail/VideoDetailFragment.java | 11 ++++++----- .../java/org/schabi/newpipe/player/Player.java | 2 +- .../newpipe/player/playqueue/PlayQueue.java | 17 +++++++---------- .../newpipe/player/playqueue/PlayQueueTest.java | 11 ++++++----- 4 files changed, 20 insertions(+), 21 deletions(-) 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 679084bdf..95853e550 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 @@ -864,7 +864,8 @@ public final class VideoDetailFragment if (playQueue == null) { playQueue = new SinglePlayQueue(result); } - if (stack.isEmpty() || !stack.peek().getPlayQueue().equals(playQueue)) { + if (stack.isEmpty() || !stack.peek().getPlayQueue() + .equalStreams(playQueue)) { stack.push(new StackItem(serviceId, url, title, playQueue)); } } @@ -1780,7 +1781,7 @@ public final class VideoDetailFragment // deleted/added items inside Channel/Playlist queue and makes possible to have // a history of played items @Nullable final StackItem stackPeek = stack.peek(); - if (stackPeek != null && !stackPeek.getPlayQueue().equals(queue)) { + if (stackPeek != null && !stackPeek.getPlayQueue().equalStreams(queue)) { @Nullable final PlayQueueItem playQueueItem = queue.getItem(); if (playQueueItem != null) { stack.push(new StackItem(playQueueItem.getServiceId(), playQueueItem.getUrl(), @@ -1846,7 +1847,7 @@ public final class VideoDetailFragment // They are not equal when user watches something in popup while browsing in fragment and // then changes screen orientation. In that case the fragment will set itself as // a service listener and will receive initial call to onMetadataUpdate() - if (!queue.equals(playQueue)) { + if (!queue.equalStreams(playQueue)) { return; } @@ -2113,7 +2114,7 @@ public final class VideoDetailFragment final Iterator iterator = stack.descendingIterator(); while (iterator.hasNext()) { final StackItem next = iterator.next(); - if (next.getPlayQueue().equals(queue)) { + if (next.getPlayQueue().equalStreams(queue)) { item = next; break; } @@ -2128,7 +2129,7 @@ public final class VideoDetailFragment if (isClearingQueueConfirmationRequired(activity) && playerIsNotStopped() && activeQueue != null - && !activeQueue.equals(playQueue)) { + && !activeQueue.equalStreams(playQueue)) { showClearingQueueConfirmation(onAllow); } else { onAllow.run(); diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 95520ba1e..caaa01440 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -348,7 +348,7 @@ public final class Player implements PlaybackListener, Listener { final boolean playbackSkipSilence = getPrefs().getBoolean(getContext().getString( R.string.playback_skip_silence_key), getPlaybackSkipSilence()); - final boolean samePlayQueue = playQueue != null && playQueue.equals(newQueue); + final boolean samePlayQueue = playQueue != null && playQueue.equalStreamsAndIndex(newQueue); final int repeatMode = intent.getIntExtra(REPEAT_MODE, getRepeatMode()); final boolean playWhenReady = intent.getBooleanExtra(PLAY_WHEN_READY, true); final boolean isMuted = intent.getBooleanExtra(IS_MUTED, isMuted()); diff --git a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java index f809e0db9..4c6230964 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java +++ b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java @@ -518,18 +518,13 @@ public abstract class PlayQueue implements Serializable { * This method also gives a chance to track history of items in a queue in * VideoDetailFragment without duplicating items from two identical queues */ - @Override - public boolean equals(@Nullable final Object obj) { - if (!(obj instanceof PlayQueue)) { + public boolean equalStreams(@Nullable final PlayQueue other) { + if (other == null) { return false; } - final PlayQueue other = (PlayQueue) obj; if (size() != other.size()) { return false; } - if (other.getIndex() != getIndex()) { - return false; - } for (int i = 0; i < size(); i++) { final PlayQueueItem stream = streams.get(i); final PlayQueueItem otherStream = other.streams.get(i); @@ -542,9 +537,11 @@ public abstract class PlayQueue implements Serializable { return true; } - @Override - public int hashCode() { - return streams.hashCode(); + public boolean equalStreamsAndIndex(@Nullable final PlayQueue other) { + if (equalStreams(other)) { + return other.getIndex() == getIndex(); + } + return false; } public boolean isDisposed() { diff --git a/app/src/test/java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java b/app/src/test/java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java index b8989b8fc..022089f37 100644 --- a/app/src/test/java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java +++ b/app/src/test/java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java @@ -13,7 +13,6 @@ import java.util.Objects; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; @@ -169,7 +168,8 @@ public class PlayQueueTest { final List streams = Collections.nCopies(5, item1); final PlayQueue queue1 = makePlayQueue(0, streams); final PlayQueue queue2 = makePlayQueue(0, streams); - assertEquals(queue1, queue2); + assertTrue(queue1.equalStreams(queue2)); + assertTrue(queue1.equalStreamsAndIndex(queue2)); } @Test @@ -177,7 +177,8 @@ public class PlayQueueTest { final List streams = Collections.nCopies(5, item1); final PlayQueue queue1 = makePlayQueue(1, streams); final PlayQueue queue2 = makePlayQueue(4, streams); - assertNotEquals(queue1, queue2); + assertTrue(queue1.equalStreams(queue2)); + assertFalse(queue1.equalStreamsAndIndex(queue2)); } @Test @@ -186,7 +187,7 @@ public class PlayQueueTest { final List streams2 = Collections.nCopies(5, item2); final PlayQueue queue1 = makePlayQueue(0, streams1); final PlayQueue queue2 = makePlayQueue(0, streams2); - assertNotEquals(queue1, queue2); + assertFalse(queue1.equalStreams(queue2)); } @Test @@ -195,7 +196,7 @@ public class PlayQueueTest { final List streams2 = Collections.nCopies(6, item2); final PlayQueue queue1 = makePlayQueue(0, streams1); final PlayQueue queue2 = makePlayQueue(0, streams2); - assertNotEquals(queue1, queue2); + assertFalse(queue1.equalStreams(queue2)); } } } From 34e6e70be960f18653c15d37c676af7c335c02d5 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 22 Jan 2023 05:12:39 +0100 Subject: [PATCH 136/147] Translated using Weblate (Azerbaijani) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Lithuanian) Currently translated at 99.3% (648 of 652 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Assamese) Currently translated at 15.0% (98 of 652 strings) Translated using Weblate (Odia) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Slovenian) Currently translated at 2.7% (2 of 72 strings) Translated using Weblate (Portuguese (Portugal)) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Sardinian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Galician) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Hindi) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Lithuanian) Currently translated at 99.3% (648 of 652 strings) Translated using Weblate (Hebrew) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Persian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Polish) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Arabic) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Czech) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Greek) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Italian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Italian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Japanese) Currently translated at 99.8% (651 of 652 strings) Translated using Weblate (Russian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (German) Currently translated at 100.0% (652 of 652 strings) Co-authored-by: Abhilash Co-authored-by: Agnieszka C Co-authored-by: Ahmad0a Co-authored-by: AioiLight Co-authored-by: Ajeje Brazorf Co-authored-by: Danial Behzadi Co-authored-by: Eric Co-authored-by: ErnestasKaralius Co-authored-by: Fjuro Co-authored-by: Francesco Saltori Co-authored-by: GET100PERCENT Co-authored-by: Hosted Weblate Co-authored-by: HudobniVolk Co-authored-by: Igor Nedoboy Co-authored-by: Igor Rückert Co-authored-by: Ihor Hordiichuk Co-authored-by: Jeff Huang Co-authored-by: Linerly Co-authored-by: Nidi Co-authored-by: Oğuz Ersen Co-authored-by: Pieter van der Razemond Co-authored-by: Priit Jõerüüt Co-authored-by: RSoulwin Co-authored-by: Ray Co-authored-by: Retrial Co-authored-by: Yaron Shahrabani Co-authored-by: gallegonovato Co-authored-by: nautilusx Co-authored-by: random r Co-authored-by: ssantos Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sl/ Translation: NewPipe/Metadata --- app/src/main/res/values-ar/strings.xml | 2 + app/src/main/res/values-as/strings.xml | 73 +++++++++++++++++++ app/src/main/res/values-az/strings.xml | 10 ++- app/src/main/res/values-cs/strings.xml | 2 + app/src/main/res/values-de/strings.xml | 2 + app/src/main/res/values-el/strings.xml | 2 + app/src/main/res/values-es/strings.xml | 2 + app/src/main/res/values-et/strings.xml | 3 + app/src/main/res/values-fa/strings.xml | 3 + app/src/main/res/values-gl/strings.xml | 3 + app/src/main/res/values-he/strings.xml | 2 + app/src/main/res/values-hi/strings.xml | 3 + app/src/main/res/values-in/strings.xml | 2 + app/src/main/res/values-it/strings.xml | 5 +- app/src/main/res/values-ja/strings.xml | 4 + app/src/main/res/values-lt/strings.xml | 16 ++-- app/src/main/res/values-nl/strings.xml | 4 + app/src/main/res/values-or/strings.xml | 3 + app/src/main/res/values-pa/strings.xml | 3 + app/src/main/res/values-pl/strings.xml | 2 + app/src/main/res/values-pt-rBR/strings.xml | 2 + app/src/main/res/values-pt-rPT/strings.xml | 3 + app/src/main/res/values-pt/strings.xml | 3 + app/src/main/res/values-ru/strings.xml | 12 ++- app/src/main/res/values-sc/strings.xml | 3 + app/src/main/res/values-tr/strings.xml | 2 + app/src/main/res/values-uk/strings.xml | 2 + app/src/main/res/values-zh-rCN/strings.xml | 2 + app/src/main/res/values-zh-rHK/strings.xml | 6 +- app/src/main/res/values-zh-rTW/strings.xml | 3 + .../metadata/android/sl/changelogs/991.txt | 13 ++++ .../metadata/android/sl/short_description.txt | 1 + 32 files changed, 180 insertions(+), 18 deletions(-) create mode 100644 fastlane/metadata/android/sl/changelogs/991.txt create mode 100644 fastlane/metadata/android/sl/short_description.txt diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 2fbe794a3..cbd3ade35 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -780,4 +780,6 @@ استيراد الاشتراكات أو تصديرها من القائمة المكونة من 3 نقاط هذا الخيار متاح فقط إذا تم تحديد %s للسمة إلغاء تعيين الصورة المصغرة الدائمة + فشل النسخ إلى الحافظة + البطاقة \ No newline at end of file diff --git a/app/src/main/res/values-as/strings.xml b/app/src/main/res/values-as/strings.xml index 578213394..be845845a 100644 --- a/app/src/main/res/values-as/strings.xml +++ b/app/src/main/res/values-as/strings.xml @@ -25,4 +25,77 @@ আপুনি \"%1$s\" বুজাইছিল নেকি\? বাহ্যিক ভিডিঅ’ প্লেয়াৰ ব্যৱহাৰ কৰক বাহ্যিক অডিঅ’ প্লেয়াৰ ব্যৱহাৰ কৰক + Channel আনচাবস্ক্ৰাইব কৰা হ\'ল + subscription সলনি কৰিব পৰা নগ\'ল + subscription আপডেট কৰিব পৰা নগ\'ল + তথ্য দেখুৱাওক + চাবস্ক্ৰিপচন + বুকমাৰ্ক কৰা প্লেলিষ্ট + টেব নিৰ্বাচন কৰক + বেকগ্ৰাউণ্ড + পপ-আপ + স্থায়ী ৰিজ\'লিউচন + স্থায়ী পপআপ ৰিজোলিউচন + উচ্চ ৰিজ\'লিউচন দেখুৱাওক + কেৱল কিছুমান ডিভাইচেহে 2K/4K ভিডিঅ’ বজাব পাৰে + Kodi ৰ সৈতে বজাওক + Kore এপ ইনষ্টল\? + \"Kodi ৰ সৈতে খোলক\" বিকল্প দেখুৱাওক + Kodi মিডিয়া চেণ্টাৰৰ জৰিয়তে এটা ভিডিঅ\' চলাবলৈ এটা বিকল্প প্ৰদৰ্শন কৰক + প্লেয়াৰটো ক্ৰেচ কৰক + বাফাৰিং + নথিং + জাননী ৰ‌ঙিণ কৰক + অডিঅ\' + অডিঅ\' ৰ প্ৰকাৰ + ভিডিঅ\'ৰ প্ৰকাৰ + থিম + নিশাৰ থিম + পোহৰ + অন্ধকাৰ + ক\'লা + পপ-আপ বৈশিষ্ট্যসমূহ মনত ৰাখিব + পপ-আপৰ অন্তিম আকাৰ আৰু অৱস্থান মনত ৰাখিব + Inexact seek য়ে প্লেয়াৰটোক দ্ৰুত গতিত স্থান সলনি কৰিবলৈ অনুমতি দিয়ে। ৫, ১৫ বা ২৫ ছেকেণ্ড সলনি কৰিবলৈ বিচাৰিলে ইয়াৰ প্ৰয়োজন নহয় + ফাষ্ট-ফৰৱাৰ্ড/-ৰিৱাইণ্ড কৰিবলৈ বিচৰা সময়সীমা + প্লেবেক লোড কৰাৰ ব্যৱধানৰ আকাৰ + লোড ব্যৱধানৰ আকাৰ সলনি কৰক (বৰ্তমানে %s) । এটা কম মানে প্ৰাৰম্ভিক ভিডিঅ\' লোডিং দ্ৰুত কৰিব পাৰে। পৰিৱৰ্তনৰ বাবে এটা খেলুৱৈ পুনৰাৰম্ভৰ প্ৰয়োজন + থাম্বনেইলত থকা মূল ৰং অনুসৰি এণ্ড্ৰইডক জাননীৰ ৰং কাষ্টমাইজ কৰিবলৈ কওক (মন কৰিব যে এইটো সকলো ডিভাইচতে উপলব্ধ নহয়) + সক্ৰিয় প্লেয়াৰৰ queue সলনি কৰা হ’ব + থাম্বনেইল লোড কৰক + মন্তব্য দেখুৱাওক + বিৱৰণ দেখুৱাওক + মেটা তথ্য দেখুৱাওক + সংৰক্ষিত ছবি মচি পেলোৱা হ\'ল + সংৰক্ষিত কৰি থোৱা মেটাডাটা মচি পেলাওক + সকলো সংৰক্ষণ কৰি ৰখা ৱেবপেজৰ তথ্য আঁতৰাওক + সংৰক্ষণ কৰি থোৱা মেটাডাটা মচি পেলোৱা হ\'ল + পৰৱৰ্তী ষ্ট্ৰিম স্বয়ংক্ৰিয়ভাৱে enque কৰক + সজোৱা + ভিডিঅ\' ডাউনলোড folder + যোগ কৰক + ডাউনলোড কৰা অডিঅ\' ফাইলসমূহ ইয়াত সংৰক্ষণ কৰা হয় + থাম্বনেইলক ১:১ অনুপাত লৈ ক্ৰপ কৰক + ডাউনলোড কৰা ভিডিঅ’ ফাইলসমূহ ইয়াত সংৰক্ষণ কৰা হয় + ভিডিঅ\' ফাইলসমূহৰ বাবে ডাউনলোড folder বাছক + অডিঅ\' ডাউনলোড folder + অডিঅ\' ফাইলসমূহৰ বাবে ডাউনলোড folder নিৰ্বাচন কৰক + জাননীত দেখুওৱা ভিডিঅ’ থাম্বনেইলটো ১৬:৯ৰ পৰা ১:১ অনুপাতলৈ ক্ৰপ কৰক + First action button + Fifth action button + Edit each notification action below by tapping on it. Select up to three of them to be shown in the compact notification by using the checkboxes on the right + Second action button + You can select at most three actions to show in the compact notification! + পুনৰাবৃত্তি + শ্বাফেল + দ্ৰুত inexact seek ব্যৱহাৰ কৰক + এটা queue বিলুপ্তি কৰাৰ আগতে নিশ্চিতকৰণৰ বাবে সুধিব + এটা প্লেয়াৰ পৰা আন এটালৈ সলনি কৰিলে আপোনাৰ queue সলনি হ\'ব পাৰে + Fourth action button + Third action button + ভিডিঅ\'ৰ বিৱৰণ আৰু অতিৰিক্ত তথ্য লুকুৱাবলৈ বন্ধ কৰক + মন্তব্য লুকুৱাবলৈ বন্ধ কৰক + \'পৰৱৰ্তী\' আৰু \'সাদৃশ্য থকা\' ভিডিঅ\' দেখুৱাওক + থাম্বনেইলসমূহ লোড কৰা, তথ্য আৰু মেমৰি ব্যৱহাৰ সংৰক্ষণ কৰা ৰোধ কৰিবলে বন্ধ কৰক। পৰিবৰ্তনসমূহে ইন-মেমৰি আৰু অন-ডিস্ক কেশ্ব দুয়োটা পৰিষ্কাৰ কৰে + ষ্ট্ৰিমৰ সৃষ্টিকৰ্তা, ষ্ট্ৰিমৰ বিষয়বস্তু বা এটা সন্ধান অনুৰোধৰ বিষয়ে অতিৰিক্ত তথ্যৰ সৈতে মেটা তথ্যৰ বাকচসমূহ লুকুৱাবলৈ বন্ধ কৰক \ No newline at end of file diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index cd18e8d93..d8d88bd6d 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -1,8 +1,8 @@ - Başlamaq üçün böyüdücüyə toxun. + Başlamaq üçün böyüdücü güzgüyə toxun. %1$s tarixində yayımlanıb - Yayım oynadıcı tapılmadı. \"VLC\" yüklənilsin\? + Yayım oynadıcı tapılmadı. \"VLC\" quraşdırılsın\? Yayım oynadıcı tapılmadı (Oynatmaq üçün VLC\'ni quraşdıra bilərsiniz). Yüklə Ləğv et @@ -45,7 +45,7 @@ Qaranlıq Qara Abunəlikdən çıxın - Ani pəncərə rejimində aç + Ani görüntü rejimində aç Avtomatik oynat Endir Fasilələrdən sonra (məsələn, telefon zəngləri) oynatmağa davam etdir @@ -613,7 +613,7 @@ Xəta baş verdi: %1$s Fayl mövcud deyil, yaxud oxumaq və ya yazmaq icazəsi yoxdur Veb saytı təhlil etmək alınmadı - Səs ucalığı + Ucalıq Radio \"Oynadıcını çökdür\" Göstər Oynadıcıdan istifadə edərkən çökdürmə seçimini göstər @@ -728,4 +728,6 @@ %s endirmək üçün toxun Bu seçim yalnız tema üçün %s seçildikdə əlçatandır Daimi miniatürü ləğv et + Kart + Buferə kopyalamaq alınmadı \ No newline at end of file diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 637678c23..adf6601a8 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -741,4 +741,6 @@ Import nebo export odběrů z 3-tečkové nabídky Tato možnost je dostupná pouze při vybraném motivu %s Zrušení nastavení trvalého náhledu + Karta + Kopírování do schránky se nezdařilo \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d02b276cd..3b1959a69 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -728,4 +728,6 @@ Importieren oder Exportieren von Abonnements über das 3-Punkte-Menü Diese Option ist nur verfügbar, wenn %s als Design ausgewählt wird Dauerhaftes Vorschaubild aufheben + Kopieren in die Zwischenablage fehlgeschlagen + Karte \ No newline at end of file diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index cf3c0576b..78d89cc59 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -728,4 +728,6 @@ Έχετε την πιο πρόσφατη έκδοση του NewPipe Αυτή η επιλογή είναι διαθέσιμη μόνο εάν έχει επιλεγεί %s για Θέμα Κατάργηση μόνιμης μικρογραφίας + Αποτυχία αντιγραφής στο πρόχειρο + Κάρτα \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f92ad9128..9d68c28a9 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -744,4 +744,6 @@ Pulsa para descargar %s Esta opción sólo está disponible si %s está seleccionado para el tema Desactivar las miniaturas permanente + Error al copiar al portapapeles + Tarjeta \ No newline at end of file diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 87beff94f..986de133b 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -727,4 +727,7 @@ Tellimusi saad importida või eksportida 3 punktiga menüüst Sa kasutad NewPipe\'i uusimat versiooni See valik on kasutusel vaid %s teema puhul + Lõikelauale kopeerimine ei õnnestunud + Eemalda püsiv pisipilt + Kaart \ No newline at end of file diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index f22200c06..72dc77660 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -727,4 +727,7 @@ ضربه برای بارگیری %s از جدیدترین نگارش نیوپایپ استفاده می‌کنید این گزینه تنها هنگامی موجود است که %s به عنوان زمینه گزیده باشد + کارت + شکست در رونوشت به تخته‌گیره + ناتنظیم بندانگشتی ثابت \ No newline at end of file diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 65d5ce204..a8cf01ef0 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -727,4 +727,7 @@ Toca para descargar %s Importa ou exporta subscricións dende o menú dos 3 puntos Esta opción só está dispoñible se %s está seleccionado para o tema + Produciuse un erro ao copiar no portapapeis + Desactivala miniatura permanente + Tarxeta \ No newline at end of file diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 67e6d45ad..35dc19c8c 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -754,4 +754,6 @@ זאת הגרסה העדכנית ביותר של NewPipe אפשרות זאת זמינה רק אם נבחרה ערכת נושא %s ביטול הגדרת תמונה ייצוגית קבועה + כרטיס + ההעתקה ללוח הגזירים נכשלה \ No newline at end of file diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 7c9ebf231..dc08899ed 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -727,4 +727,7 @@ आप न्यूपाइप का नवीनतम संस्करण चला रहे हैं %s डाउनलोड करने के लिए टैप करें यह विकल्प केवल तभी उपलब्ध होता है जब थीम के लिए %s का चयन किया जाता है + स्थायी थंमनेल अनसेट करें + कार्ड + क्लिपबोर्ड पर कॉपी करने में विफल \ No newline at end of file diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index af8781a23..c195d62e1 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -715,4 +715,6 @@ Ketuk untuk mengunduh %s Opsi ini hanya tersedia jika %s dipilih untuk Tema Batalkan penetapan gambar kecil permanen + Gagal menyalin ke papan klip + Kartu \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3304321d8..bf20d2be4 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -737,7 +737,10 @@ Visualizza sul sito Recupero veloce Premi per scaricare %s - L\'ultima versione di NewPipe è già in esecuzione + Stai già usando l\'ultima versione di NewPipe Importa o esporta iscrizioni dal menu a 3 punti Questa opzione è disponibile solo se %s è selezionato come Tema + Copia negli appunti non riuscita + Schede + Disattiva la miniatura permanente \ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 480d869e5..d02b56e75 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -712,4 +712,8 @@ よくある質問 アプリの使い方に困ったときは、よくある質問に答えていますので、ぜひご覧ください! %sがテーマに選択された場合のみ、この選択肢が利用可能です + 高速モード + 3 点メニューから登録チャンネルをインポートまたはエクスポートします + カード + クリップボードへのコピーに失敗しました \ No newline at end of file diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 0da729ba8..bb45a0970 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -97,14 +97,14 @@ Pradėti Pauzė - Ištrinti + Naikinti Kontrolinė suma Gerai Failo pavadinimas Gijos Klaida - NewPipe Atsiunčiama - Palieskite, kad peržiūrėtumėte išsamią informaciją + NewPipe atsisiunčiama + Bakstelėkite, kad peržiūrėtumėte išsamią informaciją Prašome palaukti… Nukopijuota į iškarpinę Prašome pasirinkti galimą atsisiuntimų aplankalą @@ -212,9 +212,9 @@ Nerasta video srautų Nerasta audio srautų Tempti kad perrūšiuoti - Sukurti + Kurti Nutraukti - Pervadinti + Pervardyti Vėliausiai žiūrėta Dažniausiai žiūrėta Eksportavimas baigtas @@ -230,7 +230,7 @@ Visada klausti Gauname informaciją… Įkeliamas pasirinktas turinys - Naujas grojaraštį + Naujas grojaraštis Pervadinti Pavadinimas Pridėti į grojaraštį @@ -311,7 +311,7 @@ Pranešimas apie naują NewPipe versiją Programos atnaujinimo pranešimas Failą - Failas pašalintas + Failas panaikintas Atlikėjai Albumai Dainos @@ -686,7 +686,7 @@ \nĮdiekite „Storage Access Framework“ suderinamą su šia failų tvarkykle Pranešimai pranešimui apie klaidas Rodyti „Grotuvas užlūžo“ - Sukurti klaidos pranešimą + Kurti klaidos pranešimą NewPipe susidūrė su klaida, paspauskite norėdami pranešti Šiam veiksmui nebuvo rasta tinkama failų tvarkyklė. \nĮdiekite failų tvarkyklę arba pabandykite išjungti \"%s\" atsisiuntimo nustatymuose diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 2390f8e69..c5e77b29f 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -726,4 +726,8 @@ Importeer of exporteer abonnementen vanuit het 3-punten menu U heeft de laatste versie van NewPipe Klik om %s te downloaden + Kon niet naar klembord kopiëren + Deze instelling is alleen beschikbaar als %s als thema ingesteld is + Kaart + Miniatuur niet ingesteld \ No newline at end of file diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index 0ad616d01..bc8d9fcee 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -727,4 +727,7 @@ ଆପଣ NewPipe ର ସର୍ବଶେଷ ସଂସ୍କରଣ ଚଳାଉଛନ୍ତି %s ଡାଉନଲୋଡ୍ କରିବାକୁ ଟ୍ୟାପ୍ କରନ୍ତୁ ଥିମ୍ ପାଇଁ %s ଚୟନ ହେଲେ ହିଁ ଏହି ବିକଳ୍ପ ଉପଲବ୍ଧ + କାର୍ଡ + କ୍ଲିପବୋର୍ଡରେ କପି କରିବାରେ ବିଫଳ + ସ୍ଥାୟୀ ଥମ୍ୱନେଲ୍ ସେଟ୍ କରନ୍ତୁ \ No newline at end of file diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 169d45dad..2dcac20ab 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -727,4 +727,7 @@ ਤੁਸੀਂ ਨਿਊਪਾਈਪ ਦਾ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਚਲਾ ਰਹੇ ਹੋ %s ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ ਇਹ ਵਿਕਲਪ ਤਾਂ ਹੀ ਉਪਲਬਧ ਹੈ ਜੇਕਰ %s ਨੂੰ ਥੀਮ ਲਈ ਚੁਣਿਆ ਗਿਆ ਹੈ + ਸਥਾਈ ਥੰਮਨੇਲ ਨੂੰ ਅਨਸੈੱਟ ਕਰੋ + ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਕਰਨ ਵਿੱਚ ਅਸਫਲ + ਕਾਰਡ \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index ab1e0aa72..e7ae07c85 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -749,4 +749,6 @@ Używasz najnowszej wersji NewPipe Ta opcja jest dostępna tylko wtedy, gdy %s jest wybrany jako motyw Usuń stałą miniaturę + Nie udało się skopiować do schowka + Karta \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 1929df070..fc02f29d7 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -741,4 +741,6 @@ Você está executando a versão mais recente do NewPipe Esta opção só está disponível se %s for selecionado para Tema Desativar miniatura permanente + Cartão + Falha ao copiar para a área de transferência \ No newline at end of file diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 5a0d19285..4c2593330 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -727,4 +727,7 @@ Toque para descarregar %s Ordenação Esta opção só está disponível se %s for selecionado como tema + Desativar miniatura permanente + Não foi possível copiar para a área de transferência + Cartão \ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index e993da934..c47241dcc 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -740,4 +740,7 @@ Já está a executar a versão mais recente do NewPipe Toque para descarregar %s Esta opção só está disponível se %s for selecionado para o tema + Desativar miniatura permanente + Não foi possível copiar para a área de transferência + Cartão \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 159b27a2a..50376dc03 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -692,8 +692,8 @@ Новые видео Уведомления о новых видео в подписках Частота проверки - Уведомлять о новых видео - Получать уведомления о новых видео из каналов, на которые Вы подписаны + Новые видео + Уведомлять о новых видео в подписках Тип подключения Любая сеть Уведомления отключены @@ -720,7 +720,7 @@ Загрузка сведений о трансляции… Проверить наличие новых трансляций Удалить все загруженные файлы\? - Уведомления плеера + Уведомление плеера , Полутон Проценты @@ -736,11 +736,15 @@ Скрыть проигранные Скрывать будущие видео Ответы на частые вопросы - Если у вас возникли проблемы с использованием приложения, обязательно ознакомьтесь с ответами на распространенные вопросы! + Если у вас возникли проблемы с использованием приложения, обязательно ознакомьтесь с ответами на распространённые вопросы! Посмотреть на веб-сайте Сортировка У вас последняя версия Быстрый режим Импорт и экспорт подписок в меню с 3-мя точками Нажмите для загрузки %s + Карта + Не удалось скопировать в буфер обмена + Доступно, когда Тема установлена в %s + Убрать постоянную миниатюру \ No newline at end of file diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml index bdae4fd37..e649cfac2 100644 --- a/app/src/main/res/values-sc/strings.xml +++ b/app/src/main/res/values-sc/strings.xml @@ -727,4 +727,7 @@ Importa o esporta iscritziones dae su menù a 3 puntos Ses impreende s\'ùrtima versione de NewPipe Custa optzione est a disponimentu petzi si %s est seletzionadu comente tema + Carta + Còpia in punta de billete fallida + Disativa sa miniadura permanente \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c9718d0b0..aeeb9bdc3 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -728,4 +728,6 @@ 3-nokta menüsünden abonelikleri içe veya dışa aktarın Bu seçenek yalnızca tema için %s seçildiğinde kullanılabilir Kalıcı küçük resmin ayarını kaldır + Kart + Panoya kopyalanamadı \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index e812e8e4f..16b48fc57 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -745,4 +745,6 @@ Швидкий режим Ця опція доступна, лише якщо темою обрано %s Прибрати постійну мініатюру + Картки + Не вдалося скопіювати до буфера обміну \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index c3ada7180..029aa8343 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -715,4 +715,6 @@ 轻按下载 %s 只有在主题中选择了 %s 该选项才可用 取消设置永久缩略图 + 卡片 + 未能复制到剪贴板 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index ab902d373..dc7d589b8 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -510,7 +510,7 @@ 自動 (跟返部機嘅主題色系) 精選 廣播 - 您而家可以揀選喺描述入面嘅文字喇。不過要單聲,喺揀選模式嘅時候,個頁面可能眨眨下,同埋啲連結會撳唔到。 + 您而家可以揀選喺描述入面嘅文字喇。不過要單聲,喺揀選模式嘅時候,版面可能會有啲眨,同埋啲連結會撳唔到。 啟用揀選描述入面嘅文字 版權協議 分類 @@ -713,4 +713,8 @@ 右上角嘅選單有得匯入或匯出訂閱 您已經用緊最新版本嘅 NewPipe 撳一下去下載 %s + 唔再揀定封面縮圖 + 色系揀做%s嘅時候至有得揀 + 複製唔到去剪貼簿 + 一張張 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 1ed552ab8..ab975bff1 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -714,4 +714,7 @@ 快速模式 從三點式選單匯入或匯出訂閱 此選項僅在主題選擇為 %s 時可用 + 卡片 + 取消設定永久縮圖 + 無法複製到剪貼簿 \ No newline at end of file diff --git a/fastlane/metadata/android/sl/changelogs/991.txt b/fastlane/metadata/android/sl/changelogs/991.txt new file mode 100644 index 000000000..14f174a5a --- /dev/null +++ b/fastlane/metadata/android/sl/changelogs/991.txt @@ -0,0 +1,13 @@ +Novo +- Dodajanje gumba "Odpri v brskalniku" v podoknu z napakami +- Dodana možnost za prikaz skupin kanalov kot seznam +- [YouTube] Dolgi pritisk na segmente video pretoka za deljenje časovnega žiga URL-ja +- Dodajte gumb za predvajanje v vrsti v mini predvajalnik + +Izboljšave +- Dodana islandska lokalizacija ter posodobitev številnih drugih prevodov +- Številne notranje izboljšave + +Popravki +- Odprava večih sesutij +- [YouTube] Odprava težave z nalaganjem kanalov, nenamenskimi viri ter predvajanjem v nekaterih državah diff --git a/fastlane/metadata/android/sl/short_description.txt b/fastlane/metadata/android/sl/short_description.txt new file mode 100644 index 000000000..8826524fc --- /dev/null +++ b/fastlane/metadata/android/sl/short_description.txt @@ -0,0 +1 @@ +Brezplačen in enostaven YouTube "frontend" za Android. From b6bf0ffc40bade004b1cef8cec1eeb487d39618b Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 22 Jan 2023 08:56:29 +0100 Subject: [PATCH 137/147] Add changelog for v0.25.0 (992) --- .../metadata/android/en-US/changelogs/992.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/992.txt diff --git a/fastlane/metadata/android/en-US/changelogs/992.txt b/fastlane/metadata/android/en-US/changelogs/992.txt new file mode 100644 index 000000000..807411d50 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/992.txt @@ -0,0 +1,17 @@ +New +• Subscriber count in video details +• Download from the queue +• Permanently set a playlist thumbnail +• Long-press hashtags and links +• Card view mode + +Improved +• Larger mini-player close button +• Smoother thumbnail downscaling +• Target Android 13 (API 33) +• Seeking no longer pauses the player + +Fixed +• Fix overlay on DeX/mouse +• Allow background player with no separate audio streams +• Various YouTube fixes and more… \ No newline at end of file From b9228df32c9e23f21e4d69abe5f7f61d03796803 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 22 Jan 2023 08:59:21 +0100 Subject: [PATCH 138/147] Release v0.25.0 (992) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 79e07a190..97d8e8553 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { resValue "string", "app_name", "NewPipe" minSdk 21 targetSdk 33 - versionCode 991 - versionName "0.24.1" + versionCode 992 + versionName "0.25.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" From 5af5c90492194634ce71903679dd86c4750c18de Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Sun, 29 Jan 2023 00:45:57 +0100 Subject: [PATCH 139/147] [YouTube] Add support for live links The addition of this support requires an extractor update. --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index dcfbd2ed6..53b1ef04e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -187,7 +187,7 @@ dependencies { // name and the commit hash with the commit hash of the (pushed) commit you want to test // This works thanks to JitPack: https://jitpack.io/ implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751' - implementation 'com.github.TeamNewPipe:NewPipeExtractor:ff94e9f30bc5d7831734cc85ecebe7d30ac9c040' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:999fb7f812f8f39712dda88cf5ff4db3ee877fdc' implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0' /** Checkstyle **/ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3e987abdb..d839efbe0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -165,6 +165,7 @@ + From d1aed94d2713583e9c54697b07aeac6533e50df3 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 29 Jan 2023 11:28:00 +0100 Subject: [PATCH 140/147] Fix opening urls in browser on API 30+ See https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9 and https://github.com/TeamNewPipe/NewPipe/issues/9615 --- app/src/main/AndroidManifest.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d839efbe0..1fb20ef0e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,6 +11,14 @@ + + + + + + + + From e0ba872b66701abfdeaef02773f026ab7fe62658 Mon Sep 17 00:00:00 2001 From: Tobi Date: Fri, 3 Feb 2023 18:31:07 +0100 Subject: [PATCH 141/147] Revert "Update ExoPlayer to 2.18.2" This commit reverts 1bb166a --- app/build.gradle | 2 +- .../player/mediasource/LoadedMediaSource.java | 63 +++++++++++++++++-- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 53b1ef04e..cb619763b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -102,7 +102,7 @@ ext { androidxWorkVersion = '2.7.1' icepickVersion = '3.2.0' - exoPlayerVersion = '2.18.2' + exoPlayerVersion = '2.18.1' googleAutoServiceVersion = '1.0.1' groupieVersion = '2.10.1' markwonVersion = '4.6.2' diff --git a/app/src/main/java/org/schabi/newpipe/player/mediasource/LoadedMediaSource.java b/app/src/main/java/org/schabi/newpipe/player/mediasource/LoadedMediaSource.java index 817b048f2..95524cf69 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediasource/LoadedMediaSource.java +++ b/app/src/main/java/org/schabi/newpipe/player/mediasource/LoadedMediaSource.java @@ -1,21 +1,27 @@ package org.schabi.newpipe.player.mediasource; -import androidx.annotation.NonNull; - import com.google.android.exoplayer2.MediaItem; +import com.google.android.exoplayer2.Timeline; +import com.google.android.exoplayer2.source.CompositeMediaSource; +import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaSource; -import com.google.android.exoplayer2.source.WrappingMediaSource; +import com.google.android.exoplayer2.upstream.Allocator; +import com.google.android.exoplayer2.upstream.TransferListener; import org.schabi.newpipe.player.mediaitem.MediaItemTag; import org.schabi.newpipe.player.playqueue.PlayQueueItem; -public class LoadedMediaSource extends WrappingMediaSource implements ManagedMediaSource { +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +public class LoadedMediaSource extends CompositeMediaSource implements ManagedMediaSource { + private final MediaSource source; private final PlayQueueItem stream; private final MediaItem mediaItem; private final long expireTimestamp; /** - * Uses a {@link WrappingMediaSource} to wrap one child {@link MediaSource} + * Uses a {@link CompositeMediaSource} to wrap one or more child {@link MediaSource}s * containing actual media. This wrapper {@link LoadedMediaSource} holds the expiration * timestamp as a {@link ManagedMediaSource} to allow explicit playlist management under * {@link ManagedMediaSourcePlaylist}. @@ -30,7 +36,7 @@ public class LoadedMediaSource extends WrappingMediaSource implements ManagedMed @NonNull final MediaItemTag tag, @NonNull final PlayQueueItem stream, final long expireTimestamp) { - super(source); + this.source = source; this.stream = stream; this.expireTimestamp = expireTimestamp; @@ -45,6 +51,51 @@ public class LoadedMediaSource extends WrappingMediaSource implements ManagedMed return System.currentTimeMillis() >= expireTimestamp; } + /** + * Delegates the preparation of child {@link MediaSource}s to the + * {@link CompositeMediaSource} wrapper. Since all {@link LoadedMediaSource}s use only + * a single child media, the child id of 0 is always used (sonar doesn't like null as id here). + * + * @param mediaTransferListener A data transfer listener that will be registered by the + * {@link CompositeMediaSource} for child source preparation. + */ + @Override + protected void prepareSourceInternal(@Nullable final TransferListener mediaTransferListener) { + super.prepareSourceInternal(mediaTransferListener); + prepareChildSource(0, source); + } + + /** + * When any child {@link MediaSource} is prepared, the refreshed {@link Timeline} can + * be listened to here. But since {@link LoadedMediaSource} has only a single child source, + * this method is called only once until {@link #releaseSourceInternal()} is called. + *

        + * On refresh, the {@link CompositeMediaSource} delegate will be notified with the + * new {@link Timeline}, otherwise {@link #createPeriod(MediaPeriodId, Allocator, long)} + * will not be called and playback may be stalled. + * + * @param id The unique id used to prepare the child source. + * @param mediaSource The child source whose source info has been refreshed. + * @param timeline The new timeline of the child source. + */ + @Override + protected void onChildSourceInfoRefreshed(final Integer id, + final MediaSource mediaSource, + final Timeline timeline) { + refreshSourceInfo(timeline); + } + + @Override + public MediaPeriod createPeriod(final MediaPeriodId id, final Allocator allocator, + final long startPositionUs) { + return source.createPeriod(id, allocator, startPositionUs); + } + + @Override + public void releasePeriod(final MediaPeriod mediaPeriod) { + source.releasePeriod(mediaPeriod); + } + @NonNull @Override public MediaItem getMediaItem() { From 1db1a0058106af6b4b2c7e850a370c32f899e019 Mon Sep 17 00:00:00 2001 From: Stypox Date: Fri, 20 Jan 2023 18:39:16 +0100 Subject: [PATCH 142/147] Add snippet to ensure baseline.profm file is sorted Thanks to obfusk, see https://issuetracker.google.com/issues/231837768 and #6486 --- app/build.gradle | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 53b1ef04e..69484304c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,3 +1,7 @@ +import com.android.tools.profgen.ArtProfileKt +import com.android.tools.profgen.ArtProfileSerializer +import com.android.tools.profgen.DexFile + plugins { id "com.android.application" id "kotlin-android" @@ -308,3 +312,24 @@ static String getGitWorkingBranch() { return "" } } + +project.afterEvaluate { + tasks.compileReleaseArtProfile.doLast { + outputs.files.each { file -> + if (file.toString().endsWith(".profm")) { + println("Sorting ${file} ...") + def version = ArtProfileSerializer.valueOf("METADATA_0_0_2") + def profile = ArtProfileKt.ArtProfile(file) + def keys = new ArrayList(profile.profileData.keySet()) + def sortedData = new LinkedHashMap() + Collections.sort keys, new DexFile.Companion() + keys.each { key -> sortedData[key] = profile.profileData[key] } + new FileOutputStream(file).with { + write(version.magicBytes$profgen) + write(version.versionBytes$profgen) + version.write$profgen(it, sortedData, "") + } + } + } + } +} From 812efca08e9887f763ae1ce957343cad9f2ce6df Mon Sep 17 00:00:00 2001 From: TobiGr Date: Fri, 3 Feb 2023 18:42:12 +0100 Subject: [PATCH 143/147] Update core libraray desugaring libs from 2.0.0 to 2.0.2 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 69484304c..7f51f8582 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -183,7 +183,7 @@ sonar { dependencies { /** Desugaring **/ - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.0' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.2' /** NewPipe libraries **/ // You can use a local version by uncommenting a few lines in settings.gradle From 4cc653fdf1313a3998bf816059cdeb9abab187ea Mon Sep 17 00:00:00 2001 From: Stypox Date: Tue, 7 Feb 2023 22:39:12 +0100 Subject: [PATCH 144/147] Fix opening links on Android 12+ --- .../external_communication/ShareUtils.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java index 332298b22..06dd3f945 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java @@ -90,19 +90,16 @@ public final class ShareUtils { // No browser set as default (doesn't work on some devices) openAppChooser(context, intent, true); } else { - if (defaultPackageName.isEmpty()) { - // No app installed to open a web url - Toast.makeText(context, R.string.no_app_to_open_intent, Toast.LENGTH_LONG).show(); - return false; - } else { - try { + try { + // will be empty on Android 12+ + if (!defaultPackageName.isEmpty()) { intent.setPackage(defaultPackageName); - context.startActivity(intent); - } catch (final ActivityNotFoundException e) { - // Not a browser but an app chooser because of OEMs changes - intent.setPackage(null); - openAppChooser(context, intent, true); } + context.startActivity(intent); + } catch (final ActivityNotFoundException e) { + // Not a browser but an app chooser because of OEMs changes + intent.setPackage(null); + openAppChooser(context, intent, true); } } From 63375627e956c039739302ab2d83a0ced8af6202 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Wed, 8 Feb 2023 22:22:48 +0100 Subject: [PATCH 145/147] Translated using Weblate (Bengali) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 21.9% (16 of 73 strings) Translated using Weblate (Portuguese (Portugal)) Currently translated at 69.8% (51 of 73 strings) Translated using Weblate (Portuguese) Currently translated at 69.8% (51 of 73 strings) Translated using Weblate (Italian) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Odia) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Dutch) Currently translated at 65.7% (48 of 73 strings) Translated using Weblate (Italian) Currently translated at 100.0% (73 of 73 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 28.7% (21 of 73 strings) Translated using Weblate (Portuguese (Portugal)) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Galician) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Hebrew) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Arabic) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Italian) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Korean) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Japanese) Currently translated at 99.8% (653 of 654 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (73 of 73 strings) Translated using Weblate (Basque) Currently translated at 45.2% (33 of 73 strings) Translated using Weblate (German) Currently translated at 73.9% (54 of 73 strings) Translated using Weblate (Sardinian) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Polish) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Czech) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Slovak) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Greek) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Basque) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Portuguese) Currently translated at 99.8% (653 of 654 strings) Translated using Weblate (Russian) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (French) Currently translated at 99.6% (652 of 654 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (German) Currently translated at 100.0% (654 of 654 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 15.0% (11 of 73 strings) Translated using Weblate (German) Currently translated at 73.9% (54 of 73 strings) Translated using Weblate (Thai) Currently translated at 32.0% (209 of 652 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Azerbaijani) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Italian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 15.0% (11 of 73 strings) Translated using Weblate (Hindi) Currently translated at 100.0% (73 of 73 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Russian) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Polish) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Chinese (Traditional)) Currently translated at 64.3% (47 of 73 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (73 of 73 strings) Translated using Weblate (Indonesian) Currently translated at 76.7% (56 of 73 strings) Translated using Weblate (Polish) Currently translated at 60.2% (44 of 73 strings) Translated using Weblate (Hindi) Currently translated at 21.9% (16 of 73 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (73 of 73 strings) Translated using Weblate (Czech) Currently translated at 100.0% (73 of 73 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (73 of 73 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 17.8% (13 of 73 strings) Translated using Weblate (Polish) Currently translated at 100.0% (652 of 652 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (652 of 652 strings) Co-authored-by: Agnieszka C Co-authored-by: Aitor Salaberria Co-authored-by: Ajeje Brazorf Co-authored-by: Allan Nordhøy Co-authored-by: Emin Tufan Çetin Co-authored-by: Eric Co-authored-by: Fjuro Co-authored-by: Florian Co-authored-by: GET100PERCENT Co-authored-by: GnuPGを使うべきだ Co-authored-by: Hoseok Seo Co-authored-by: Hosted Weblate Co-authored-by: Igor Nedoboy Co-authored-by: Igor Rückert Co-authored-by: Igor Sorocean Co-authored-by: Ihor Hordiichuk Co-authored-by: Issa1553 Co-authored-by: JY3 Co-authored-by: Jeff Huang Co-authored-by: Jonatan Nyberg Co-authored-by: Linerly Co-authored-by: Marian Hanzel Co-authored-by: Massimo Pissarello Co-authored-by: Mateus Co-authored-by: Nidi Co-authored-by: Phahim Hasan Co-authored-by: Priit Jõerüüt Co-authored-by: Ray Co-authored-by: Retrial Co-authored-by: Rex_sa Co-authored-by: S3aBreeze Co-authored-by: SC Co-authored-by: ShareASmile Co-authored-by: VfBFan Co-authored-by: Yaron Shahrabani Co-authored-by: bowornsin Co-authored-by: gallegonovato Co-authored-by: petlyh <88139840+petlyh@users.noreply.github.com> Co-authored-by: pjammo Co-authored-by: random r Co-authored-by: ssantos Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/bn/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eu/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/id/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nb_NO/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nl/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_PT/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/ Translation: NewPipe/Metadata --- app/src/main/res/values-ar/strings.xml | 2 + app/src/main/res/values-az/strings.xml | 188 +++++++++--------- app/src/main/res/values-cs/strings.xml | 18 +- app/src/main/res/values-de/strings.xml | 2 + app/src/main/res/values-el/strings.xml | 2 + app/src/main/res/values-es/strings.xml | 2 + app/src/main/res/values-et/strings.xml | 2 + app/src/main/res/values-eu/strings.xml | 16 +- app/src/main/res/values-fr/strings.xml | 2 + app/src/main/res/values-gl/strings.xml | 2 + app/src/main/res/values-he/strings.xml | 2 + app/src/main/res/values-in/strings.xml | 2 + app/src/main/res/values-it/strings.xml | 4 +- app/src/main/res/values-ja/strings.xml | 2 + app/src/main/res/values-ko/strings.xml | 4 + app/src/main/res/values-nb-rNO/strings.xml | 76 +++---- app/src/main/res/values-nl/strings.xml | 4 +- app/src/main/res/values-or/strings.xml | 2 + app/src/main/res/values-pl/strings.xml | 8 +- app/src/main/res/values-pt-rBR/strings.xml | 2 + app/src/main/res/values-pt-rPT/strings.xml | 2 + app/src/main/res/values-pt/strings.xml | 4 +- app/src/main/res/values-ro/strings.xml | 3 + app/src/main/res/values-ru/strings.xml | 4 +- app/src/main/res/values-sc/strings.xml | 2 + app/src/main/res/values-sk/strings.xml | 10 + app/src/main/res/values-sv/strings.xml | 3 + app/src/main/res/values-th/strings.xml | 13 +- app/src/main/res/values-tr/strings.xml | 2 + app/src/main/res/values-uk/strings.xml | 4 +- app/src/main/res/values-zh-rCN/strings.xml | 6 +- app/src/main/res/values-zh-rHK/strings.xml | 2 + app/src/main/res/values-zh-rTW/strings.xml | 2 + .../metadata/android/bn/changelogs/68.txt | 1 + .../metadata/android/cs/changelogs/992.txt | 17 ++ .../metadata/android/de/changelogs/900.txt | 24 +-- .../metadata/android/de/changelogs/958.txt | 26 +-- .../metadata/android/de/changelogs/970.txt | 12 +- .../metadata/android/de/changelogs/975.txt | 29 +-- .../metadata/android/de/changelogs/976.txt | 16 +- .../metadata/android/de/changelogs/977.txt | 16 +- .../metadata/android/de/changelogs/980.txt | 20 +- .../metadata/android/de/changelogs/986.txt | 16 ++ .../metadata/android/de/changelogs/987.txt | 20 +- .../metadata/android/de/changelogs/990.txt | 24 +-- .../metadata/android/de/changelogs/991.txt | 22 +- .../metadata/android/de/changelogs/992.txt | 17 ++ .../metadata/android/es/changelogs/992.txt | 17 ++ .../metadata/android/eu/changelogs/992.txt | 17 ++ .../metadata/android/hi/changelogs/64.txt | 8 + .../metadata/android/hi/changelogs/65.txt | 26 +++ .../metadata/android/hi/changelogs/66.txt | 33 +++ .../metadata/android/hi/changelogs/68.txt | 31 +++ .../metadata/android/hi/changelogs/69.txt | 19 ++ .../metadata/android/hi/changelogs/70.txt | 25 +++ .../metadata/android/hi/changelogs/71.txt | 10 + .../metadata/android/hi/changelogs/730.txt | 2 + .../metadata/android/hi/changelogs/740.txt | 23 +++ .../metadata/android/hi/changelogs/750.txt | 22 ++ .../metadata/android/hi/changelogs/760.txt | 43 ++++ .../metadata/android/hi/changelogs/770.txt | 4 + .../metadata/android/hi/changelogs/780.txt | 12 ++ .../metadata/android/hi/changelogs/790.txt | 14 ++ .../metadata/android/hi/changelogs/800.txt | 27 +++ .../metadata/android/hi/changelogs/810.txt | 19 ++ .../metadata/android/hi/changelogs/820.txt | 1 + .../metadata/android/hi/changelogs/830.txt | 1 + .../metadata/android/hi/changelogs/840.txt | 22 ++ .../metadata/android/hi/changelogs/850.txt | 1 + .../metadata/android/hi/changelogs/860.txt | 7 + .../metadata/android/hi/changelogs/870.txt | 2 + .../metadata/android/hi/changelogs/900.txt | 14 ++ .../metadata/android/hi/changelogs/910.txt | 1 + .../metadata/android/hi/changelogs/920.txt | 9 + .../metadata/android/hi/changelogs/930.txt | 19 ++ .../metadata/android/hi/changelogs/940.txt | 16 ++ .../metadata/android/hi/changelogs/950.txt | 4 + .../metadata/android/hi/changelogs/951.txt | 17 ++ .../metadata/android/hi/changelogs/952.txt | 7 + .../metadata/android/hi/changelogs/954.txt | 7 +- .../metadata/android/hi/changelogs/959.txt | 4 +- .../metadata/android/hi/changelogs/963.txt | 1 + .../metadata/android/hi/changelogs/964.txt | 8 + .../metadata/android/hi/changelogs/965.txt | 6 + .../metadata/android/hi/changelogs/966.txt | 14 ++ .../metadata/android/hi/changelogs/967.txt | 1 + .../metadata/android/hi/changelogs/968.txt | 7 + .../metadata/android/hi/changelogs/969.txt | 8 + .../metadata/android/hi/changelogs/970.txt | 11 + .../metadata/android/hi/changelogs/971.txt | 3 + .../metadata/android/hi/changelogs/972.txt | 14 ++ .../metadata/android/hi/changelogs/973.txt | 4 + .../metadata/android/hi/changelogs/974.txt | 5 + .../metadata/android/hi/changelogs/975.txt | 17 ++ .../metadata/android/hi/changelogs/976.txt | 10 + .../metadata/android/hi/changelogs/977.txt | 10 + .../metadata/android/hi/changelogs/978.txt | 1 + .../metadata/android/hi/changelogs/979.txt | 2 + .../metadata/android/hi/changelogs/980.txt | 13 ++ .../metadata/android/hi/changelogs/981.txt | 2 + .../metadata/android/hi/changelogs/982.txt | 1 + .../metadata/android/hi/changelogs/983.txt | 9 + .../metadata/android/hi/changelogs/984.txt | 7 + .../metadata/android/hi/changelogs/985.txt | 1 + .../metadata/android/hi/changelogs/986.txt | 16 ++ .../metadata/android/hi/changelogs/987.txt | 12 ++ .../metadata/android/hi/changelogs/988.txt | 2 + .../metadata/android/hi/changelogs/989.txt | 3 + .../metadata/android/hi/changelogs/990.txt | 15 ++ .../metadata/android/hi/changelogs/991.txt | 14 +- .../metadata/android/hi/changelogs/992.txt | 17 ++ .../metadata/android/id/changelogs/972.txt | 14 ++ .../metadata/android/id/changelogs/973.txt | 4 + .../metadata/android/id/changelogs/992.txt | 17 ++ .../metadata/android/it/changelogs/992.txt | 17 ++ .../metadata/android/nb-NO/changelogs/992.txt | 17 ++ .../android/nb-NO/full_description.txt | 6 +- .../android/nb-NO/short_description.txt | 2 +- .../metadata/android/nl/changelogs/65.txt | 26 +++ .../metadata/android/pa/changelogs/992.txt | 15 ++ .../metadata/android/pl/changelogs/992.txt | 17 ++ .../metadata/android/pt-BR/changelogs/770.txt | 4 + .../metadata/android/pt-PT/changelogs/992.txt | 17 ++ .../metadata/android/pt/changelogs/992.txt | 17 ++ .../metadata/android/uk/changelogs/992.txt | 17 ++ .../android/zh-Hant/changelogs/992.txt | 17 ++ .../android/zh_Hant_HK/changelogs/992.txt | 17 ++ 127 files changed, 1336 insertions(+), 265 deletions(-) create mode 100644 fastlane/metadata/android/bn/changelogs/68.txt create mode 100644 fastlane/metadata/android/cs/changelogs/992.txt create mode 100644 fastlane/metadata/android/de/changelogs/986.txt create mode 100644 fastlane/metadata/android/de/changelogs/992.txt create mode 100644 fastlane/metadata/android/es/changelogs/992.txt create mode 100644 fastlane/metadata/android/eu/changelogs/992.txt create mode 100644 fastlane/metadata/android/hi/changelogs/64.txt create mode 100644 fastlane/metadata/android/hi/changelogs/65.txt create mode 100644 fastlane/metadata/android/hi/changelogs/66.txt create mode 100644 fastlane/metadata/android/hi/changelogs/68.txt create mode 100644 fastlane/metadata/android/hi/changelogs/69.txt create mode 100644 fastlane/metadata/android/hi/changelogs/70.txt create mode 100644 fastlane/metadata/android/hi/changelogs/71.txt create mode 100644 fastlane/metadata/android/hi/changelogs/730.txt create mode 100644 fastlane/metadata/android/hi/changelogs/740.txt create mode 100644 fastlane/metadata/android/hi/changelogs/750.txt create mode 100644 fastlane/metadata/android/hi/changelogs/760.txt create mode 100644 fastlane/metadata/android/hi/changelogs/770.txt create mode 100644 fastlane/metadata/android/hi/changelogs/780.txt create mode 100644 fastlane/metadata/android/hi/changelogs/790.txt create mode 100644 fastlane/metadata/android/hi/changelogs/800.txt create mode 100644 fastlane/metadata/android/hi/changelogs/810.txt create mode 100644 fastlane/metadata/android/hi/changelogs/820.txt create mode 100644 fastlane/metadata/android/hi/changelogs/830.txt create mode 100644 fastlane/metadata/android/hi/changelogs/840.txt create mode 100644 fastlane/metadata/android/hi/changelogs/850.txt create mode 100644 fastlane/metadata/android/hi/changelogs/860.txt create mode 100644 fastlane/metadata/android/hi/changelogs/870.txt create mode 100644 fastlane/metadata/android/hi/changelogs/900.txt create mode 100644 fastlane/metadata/android/hi/changelogs/910.txt create mode 100644 fastlane/metadata/android/hi/changelogs/920.txt create mode 100644 fastlane/metadata/android/hi/changelogs/930.txt create mode 100644 fastlane/metadata/android/hi/changelogs/940.txt create mode 100644 fastlane/metadata/android/hi/changelogs/950.txt create mode 100644 fastlane/metadata/android/hi/changelogs/951.txt create mode 100644 fastlane/metadata/android/hi/changelogs/952.txt create mode 100644 fastlane/metadata/android/hi/changelogs/963.txt create mode 100644 fastlane/metadata/android/hi/changelogs/964.txt create mode 100644 fastlane/metadata/android/hi/changelogs/965.txt create mode 100644 fastlane/metadata/android/hi/changelogs/966.txt create mode 100644 fastlane/metadata/android/hi/changelogs/967.txt create mode 100644 fastlane/metadata/android/hi/changelogs/968.txt create mode 100644 fastlane/metadata/android/hi/changelogs/969.txt create mode 100644 fastlane/metadata/android/hi/changelogs/970.txt create mode 100644 fastlane/metadata/android/hi/changelogs/971.txt create mode 100644 fastlane/metadata/android/hi/changelogs/972.txt create mode 100644 fastlane/metadata/android/hi/changelogs/973.txt create mode 100644 fastlane/metadata/android/hi/changelogs/974.txt create mode 100644 fastlane/metadata/android/hi/changelogs/975.txt create mode 100644 fastlane/metadata/android/hi/changelogs/976.txt create mode 100644 fastlane/metadata/android/hi/changelogs/977.txt create mode 100644 fastlane/metadata/android/hi/changelogs/978.txt create mode 100644 fastlane/metadata/android/hi/changelogs/979.txt create mode 100644 fastlane/metadata/android/hi/changelogs/980.txt create mode 100644 fastlane/metadata/android/hi/changelogs/981.txt create mode 100644 fastlane/metadata/android/hi/changelogs/982.txt create mode 100644 fastlane/metadata/android/hi/changelogs/983.txt create mode 100644 fastlane/metadata/android/hi/changelogs/984.txt create mode 100644 fastlane/metadata/android/hi/changelogs/985.txt create mode 100644 fastlane/metadata/android/hi/changelogs/986.txt create mode 100644 fastlane/metadata/android/hi/changelogs/987.txt create mode 100644 fastlane/metadata/android/hi/changelogs/988.txt create mode 100644 fastlane/metadata/android/hi/changelogs/989.txt create mode 100644 fastlane/metadata/android/hi/changelogs/990.txt create mode 100644 fastlane/metadata/android/hi/changelogs/992.txt create mode 100644 fastlane/metadata/android/id/changelogs/972.txt create mode 100644 fastlane/metadata/android/id/changelogs/973.txt create mode 100644 fastlane/metadata/android/id/changelogs/992.txt create mode 100644 fastlane/metadata/android/it/changelogs/992.txt create mode 100644 fastlane/metadata/android/nb-NO/changelogs/992.txt create mode 100644 fastlane/metadata/android/nl/changelogs/65.txt create mode 100644 fastlane/metadata/android/pa/changelogs/992.txt create mode 100644 fastlane/metadata/android/pl/changelogs/992.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/770.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/992.txt create mode 100644 fastlane/metadata/android/pt/changelogs/992.txt create mode 100644 fastlane/metadata/android/uk/changelogs/992.txt create mode 100644 fastlane/metadata/android/zh-Hant/changelogs/992.txt create mode 100644 fastlane/metadata/android/zh_Hant_HK/changelogs/992.txt diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index cbd3ade35..02c471d63 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -782,4 +782,6 @@ إلغاء تعيين الصورة المصغرة الدائمة فشل النسخ إلى الحافظة البطاقة + تمت إضافة وقت (أوقات) مكررة %d + تحتوي قوائم التشغيل رمادية اللون بالفعل على هذا العنصر. \ No newline at end of file diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index d8d88bd6d..0cce71fb0 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -3,7 +3,7 @@ Başlamaq üçün böyüdücü güzgüyə toxun. %1$s tarixində yayımlanıb Yayım oynadıcı tapılmadı. \"VLC\" quraşdırılsın\? - Yayım oynadıcı tapılmadı (Oynatmaq üçün VLC\'ni quraşdıra bilərsiniz). + Yayım oynadıcı tapılmadı (Oynatmaq üçün VLC quraşdıra bilərsiniz). Yüklə Ləğv et Brauzerdə aç @@ -12,59 +12,59 @@ Yayım faylını endir Axtarış Tənzimləmələr - Bunu nəzərdə tuturdunuz: \"%1$s\"\? + Bunu demək istəyirdiniz: \"%1$s\"\? ilə paylaş Xarici video oynadıcı istifadə et - Bəzi qətnamələrdə səsi silir + Bəzi ayırdetmələrdə səsi silir Xarici səs oynadıcı istifadə et Abunə Ol Abunə olundu Kanal abunəliyi ləğv edildi Məlumat göstər - Abunəliklər + Abunələr Əlfəcinlənmiş Pleylistlər Yeniliklər Fon Video endirmə qovluğu Endirilmiş video fayllar burada saxlanılır - Video faylları üçün endirmə qovluğunu seç + Video fayllar üçün endirmə qovluğu seç Səs endirmə qovluğu Endirilmiş səs faylları burada saxlanılır Səs faylları üçün endirmə qovluğu seç - Defolt keyfiyyət - Daha böyük keyfiyyət seçimləri göstər + Standart ayırdetmə + Daha böyük ayırdetmələr göstər \"Kodi\" ilə Oynat Çatışmayan \"Kore\" tətbiqi yüklənilsin\? \"Kodi ilə Oynat\" seçimini göstər - Videonu Kodi media mərkəzi ilə oynatmaq üçün seçim göstər + Kodi media mərkəzindən video oynatmaq üçün seçim göstər Səs - Defolt səs formatı - Defolt video formatı + Standart səs formatı + Standart video formatı Tema İşıqlı Qaranlıq Qara - Abunəlikdən çıxın + Abunə olma Ani görüntü rejimində aç Avtomatik oynat - Endir - Fasilələrdən sonra (məsələn, telefon zəngləri) oynatmağa davam etdir + Yüklə + Fasilələr ardınca (məsələn, telefon zəngləri) oynatmağa davam etdir Oynatmanı davam etdir Baxılmış videoların saxlanılması Məlumat təmizlə - Siyahılarda oynatma mövqelərini göstər + Siyahılarda oynatma mövqe göstəricilərini göstər Siyahılardakı mövqelər Son oynatma mövqeyini qaytar Oynatmanı davam etdir Baxış tarixçəsi Axtarış sorğularını yerli olaraq saxla Axtarış tarixçəsi - Axtarış edərkən göstəriləcək təklifləri seç + Axtarış zamanı göstərmək üçün təklifləri seç Axtarış təklifləri - Oynadıcının parlaqlığını nizamlamaq üçün jestləri istifadə et - Parlaqlığı jestlə nizamlamaq - Oynadıcı səsini nizamlamaq üçün jestləri istifadə et - Səsi jestlə idarə etmək + Oynadıcı parlaqlığını nizamlamaq üçün jestlər istifadə et + Parlaqlıq jesti idarəetməsi + Oynadıcı səsini nizamlamaq üçün jestlər istifadə et + Səs səviyyəsi jesti idarəetməsi Avto-növbələ Növbəti Yayımı Avto-növbələ Üst məlumat keşi silindi @@ -73,10 +73,10 @@ Şəkil keşi silindi Şərhləri gizlətmək üçün bağla Şərhləri göstər - Aktiv oynadıcının növbəsi dəyişdiriləcək + Aktiv oynadıcı növbəsi dəyişdiriləcək Bir oynadıcıdan digərinə keçid növbənizi dəyişdirə bilər Növbəni təmizləməzdən əvvəl təsdiq üçün soruş - Sürətli qeyri-dəqiq axtarışdan istifadə et + Sürətli qeyri-dəqiq axtarış istifadə et Qeyri-dəqiq axtarış oynadıcıya azaldılmış dəqiqliklə mövqeləri daha sürətli axtarmağa imkan verir. 5, 15 və ya 25 saniyəlik axtarış bununla işləmir Sürətli irəli/geri çəkmə axtarış müddəti Heç nə @@ -89,9 +89,9 @@ İkinci fəaliyyət düyməsi Birinci fəaliyyət düyməsi Yalnız bəzi cihazlar 2K/4K videoları oynada bilir - Defolt ani pəncərə keyfiyyəti + Standart ani görüntü ayırdetməsi Əlavə Et - Ani Pəncərə + Ani Görüntü Paneli Seç Abunəliyi yeniləmək alınmadı Abunəliyi dəyişmək alınmadı @@ -102,7 +102,7 @@ Yaş həddi səbəbiylə (məsələn, 18+) uşaqlar üçün uyğun olmayan məzmunu göstər Yaş məhdudiyyətli məzmunu göstər Məzmun - Ani pəncərə rejimində oynadılır + Ani görüntü rejimində oynadılır Fonda oynadılır Yeniləmələr Sazlama @@ -111,23 +111,23 @@ Video və səs Davranış Oynadıcı - Defolt məzmun dili - Defolt məzmun ölkəsi + Cari məzmun dili + Cari məzmun ölkəsi URL\'i tanımaq olmadı. Başqa tətbiqlə açılsın\? Dəstəklənməyən URL\'i \"Növbələmək üçün basılı saxla\" tövsiyəsin göstər \"Növbəti\" və \"Bənzər\" videoları göstər - Tarixçəni, abunəlikləri, pleylistləri və tənzimləmələri ixrac edin + Tarixçəni, abunəlikləri, pleylistləri və tənzimləmələri ixrac et Cari tarixçənizi, abunəliklərinizi, pleylistlərinizi və (könüllü) tənzimləmələrinizi etibarsız edir - reCAPTCHA kukiləri təmizləndi - reCAPTCHA kukilərini təmizlə + reCAPTCHA bazaları təmizləndi + reCAPTCHA bazalarını təmizlə Məlumat bazasını ixrac et Məlumat bazasını idxal et Əsas Görünüşə Keçid - Ani Pəncərəyə Keçid + Ani Görüntüyə Keçid Fona Keçid [Naməlum] - Yeni \"NewPipe\" versiyası üçün bildirişlər + Yeni \"NewPipe\" versiyaları üçün bildirişlər Tətbiq yeniləmə bildirişi NewPipe oynadıcısı üçün bildirişlər Hamısı @@ -141,7 +141,7 @@ YouTube potensial yetkin məzmunu gizlədən \"Məhdud Rejim\" təmin edir \"PeerTube\" nümunələri Miniatürləri yüklə - Siz yığcam bildirişdə göstərilməsi üçün ən çoxu üç fəaliyyət seçə bilərsiniz! + Yığcam bildirişdə göstərmək üçün ən çoxu üç fəaliyyət seçə bilərsiniz! Həmişə yenilə Axın Yalnız qruplaşdırılmamış abunəlikləri göstər @@ -153,7 +153,7 @@ %d seçildi Abunəlik seçilməyib - Abunəlikləri seçin + Abunəlikləri seç Axın emal edilir… Axın yüklənir… Yüklənmədi: %d @@ -179,8 +179,8 @@ Xəta Axtarış tarixçəsi silindi Bütün axtarış tarixçəsi silinsin\? - Açar sözləri axtarışının tarixçəsini silir - Axtarış tarixçəsini silin + Açar sözləri axtarışı tarixçəsini silir + Axtarış tarixçəsini sil Oynatma mövqeləri silindi Bütün oynatma mövqeləri silinsin\? Bütün oynatma mövqelərini silir @@ -188,7 +188,7 @@ Baxış tarixçəsi silindi Bütün baxış tarixçəsi silinsin\? Baxış tarixçəsini təmizlə - reCAPTCHA həll edərkən NewPipe\'ın saxladığı kukiləri silin + reCAPTCHA həll edərkən NewPipe saxladığı bazaları sil %s tərəfindən yaradıldı Yaxınlaşdır Doldur @@ -198,22 +198,22 @@ Hələ ki, kanal abunəliyi yoxdur Kanal seç Kanal Səhifəsi - Defolt Köşk - Köşk Səhifəsi + Standart Köşk + Köşk Səhifə Boş Səhifə Əsas səhifədə hansı tablar göstərilir - Əsas səhifənin məzmunu + Əsas səhifə məzmunu Yeni versiya mövcud olduqda tətbiq yeniləməsini xatırlatmaq üçün bildiriş göstər Yeniləmələr - Mobil internet istifadə edərkən görüntü keyfiyyətini məhdudlaşdır + Mobil internet istifadə edərkən ayırdetməni məhdudlaşdır Limitsiz 1 element silindi. Nümunə əlavə et Sevimli \"PeerTube\" nümunələrinizi seçin - Endirilmiş faylları silin - Endirmə tarixçənizi təmizləmək və ya endirilmiş bütün faylları silmək istəyirsiniz\? + Endirilmiş faylları sil + Endirmə tarixçənizi təmizləmək və ya bütün endirilmiş faylları silmək istəyirsiniz\? Endirmə tarixçəsini təmizlə - Endirmələrə başla + Endirmələri başlat Endirmələri dayandır Haraya endiriləcəyini soruş Sizdən hər endirmənin harada saxlanılacağı soruşulacaq. @@ -241,13 +241,13 @@ Axın yeniləmə astanası Sürətli rejimi aktivləşdir Sürətli rejimi deaktiv et - Axının çox yavaş yükləndiyini düşünürsünüz\? Əgər elədirsə, sürətli yükləməni işə salmağı sınayın (tənzimləmələrdən dəyişə və ya aşağıdakı düyməni basa bilərsiniz). + Axının çox yavaş yükləndiyini düşünürsünüz\? Əgər elədirsə, sürətli yükləməni işə salmağı sınayın (tənzimləmələrdə dəyişə və ya aşağıdakı düyməni basa bilərsiniz). \n \nNewPipe axını yükləmək üçün 2 metod təklif edir: \n• Bütün abunəlik kanallarını gətirtmək, bu yavaş olsa da tamdır; \n• Ayrılmış xidmət uc nöqtəsi istifadə etmək, bu sürətlidir, amma tam deyil. \n -\nBu ikisi arasında fərq odur ki, sürətlisində, adətən elementin müddəti və növü kimi bəzi məlumatlar çatışmır (canlı video ilə adisini ayırd edə bilmir) və daha az element gətirir. +\nBu ikisi arasında fərq odur ki, sürətlisində, adətən elementin müddəti və növü kimi bəzi məlumatlar çatışmır (canlı video ilə adisini ayırd edə bilmir) və daha az elementlər gətirir. \n \nYouTube öz RSS axını ilə bu sürətli metodu təklif edən xidmətlərdən biridir. \n @@ -262,9 +262,9 @@ Xarici yaddaş əlçatan deyil Oynadılmış yayımlar tarixçəsini və oynatma mövqelərini silir Üst məlumatı göstər - Video açıqlamasını və əlavə məlumatı gizlətmək üçün bağla + Video açıqlamanı və əlavə məlumatı gizlətmək üçün bağla Açıqlamanı göstər - Bildirişi rəngləndir + Bildirişi rənglə Belə qovluq yoxdur Əsas oynadıcını tam ekranda başlat Xarici oynadıcılar bu cür linkləri dəstəkləmir @@ -281,7 +281,7 @@ Açıqlama Burada kriketlərdən başqa heç nə yoxdur Nəticə yoxdur - İlkin tənzimləmələri qaytar + Standartları qaytar Fayl köçürüldü və ya silindi Oynadıcı xətası bərpa edilir Bərpa olunmayan oynatma xətası baş verdi @@ -291,28 +291,28 @@ Səs yayımı tapılmadı Digər tətbiqlərin üzərində göstərməyə icazə ver İlkin tənzimləmələri qaytarmaq istəyirsiniz\? - Miniatürlərin yüklənməsini, dataya qənaət etmək və yaddaşdan istifadəni azaltmaq üçün söndürün. Dəyişikliklər həm yaddaşdaxili, həm də diskdə olan təsvir keşini təmizləyir + Miniatürləri yükləməyi, məlumata qənaət və yaddaş istifadəsin azaltmaq üçün söndür. Dəyişikliklər həm yaddaşdaxilində, həm də diskdə təsvir keşini təmizləyir Növbətini növbələ - Yenidən Cəhd Et + Təkrar Cəhd Et Cari oynatma yayımı bildirişini konfiqurasiya et Bildirişlər Video fayl xülasəsi bildirişi Abunəliklər üçün yeni yayımlar haqqında bildirişlər Xəta hesabatları üçün bildirişlər Fayl adı boş ola bilməz - Yadda saxlanmış tabları oxumaq mümkün olmadı, buna görə defolt tablardan istifadə edin + Saxlanmış tabları oxumaq mümkün olmadı, buna görə standart tabları istifadə et NewPipe xəta ilə qarşılaşdı, bildirmək üçün toxun - Bağışlayın, o baş verməməli idi. - Bu xətanı e-poçt vasitəsilə bildirin - GitHub\'da Hesabat Ver + Bağışla, o baş verməməli idi. + Bu xətanı e-poçt-dan bildir + GitHub\'da Məlumat Ver Zəhmət olmasa, xətanızı müzakirə edən məsələnin mövcud olub-olmadığını yoxlayın. Dublikat biletləri yaradarkən, bizdən faktiki səhvi düzəltməyə sərf edəcəyimiz vaxt alırsınız. - Hesabat Bildir + Məlumat Ver Məlumat: Nə baş verdi: Yükləyənin avatar miniatürü Bəyən Bəyənmə - Yenidən sıralamaq üçün sürüşdür + Yenidən sıralamaq üçün sürüklə min Mln Mlrd @@ -324,13 +324,13 @@ Video yoxdur Şərhlər qeyri-aktivdir Başlat - Fasilə + Dayandır Təsdiqləmə İmtina Xəta Detallar üçün toxun Zəhmət olmasa, gözləyin… - Hələ endirmə qovluğu təyin edilməyib, indi defolt endirmə qovluğunu seç + Hələ endirmə qovluğu təyin edilməyib, indi standart endirmə qovluğu seç reCAPTCHA çağırışı reCAPTCHA sorğusu göndərildi Bitdi @@ -340,15 +340,15 @@ Üçüncü Tərəf Lisenziyaları Haqqında & T-TSS Töhfə Ver - Fikirlərinizin olub-olmaması, tərcümə, dizayn dəyişiklikləri, kodun təmizlənməsi və ya real ağırlıqlı kod dəyişiklikləri və.s kömək həmişə xoşdur. Nə qədər çox edilsə, bir o qədər yaxşı olar! + Fikirlərinizin olub-olmaması, tərcümə, dizayn dəyişiklikləri, kod təmizlənməsi və ya real ağır kod dəyişiklikləri və.s kömək həmişə xoşdur. Nə qədər çox edilsə, bir o qədər yaxşı olar! İanə Et Veb sayt - Əlavə məlumat və xəbərlər üçün NewPipe Veb saytına daxil olun. - NewPipe\'ın Məxfilik Siyasəti - NewPipe layihəsi məxfiliyinizə çox ciddi yanaşır. Buna görə də, tətbiq sizin razılığınız olmadan heç bir məlumat toplamır. -\nNewPipe\'ın məxfilik siyasəti qəza hesabatı göndərdiyiniz zaman hansı məlumatların göndərildiyini və saxlanıldığını ətraflı izah edir. - Məxfilik siyasətini oxu - NewPipe\'ın Lisenziyası + Əlavə məlumat və xəbərlər üçün NewPipe Veb saytını ziyarət et. + NewPipe Məxfilik Siyasəti + NewPipe layihəsi məxfiliyinizə çox ciddi yanaşır. Nəticə etibarı ilə, tətbiq sizin razılığınız olmadan heç bir məlumat toplamır. +\nNewPipe məxfilik siyasəti xəta məlumatı göndərdiyiniz zaman hansı məlumatların göndərildiyini və saxlanıldığını ətraflı izah edir. + Məxfilik Siyasətini Oxu + NewPipe Lisenziyası Tarixçə Bu elementi axtarış tarixçəsindən silmək istəyirsiniz\? Son Oynadılan @@ -367,7 +367,7 @@ Oynatma növbəsi Detallar Kanal təfərrüatlarını göstər - Ani pəncərədə oynatmağa başla + Ani görüntüdə oynatmağa başla \"Açıq\" fəaliyyətə üstünlük verilir Fon oynadıcı Həmişə soruş @@ -403,7 +403,7 @@ \nDavam etmək istəyirsiniz\? Səssizlik zamanı sürətlə irəli Yeni yayım bildirişləri - Abunəliklərdən yeni yayımlar haqqında bildiriş göndər + Abunəliklərdən yeni yayımlar haqqında bildir Yoxlama tezliyi Tələb olunan şəbəkə bağlantısı İstənilən şəbəkə @@ -426,7 +426,7 @@ Bu məzmun hələ NewPipe tərəfindən dəstəklənmir. \n \nÜmid edirik ki, gələcək versiyada dəstəklənəcək. - Həm kilid ekranı fonu, həm də bildirişlər üçün miniatürdən istifadə et + Həm kilid ekranı fonu, həm də bildirişlər üçün miniatür istifadə et Ən Yeni Bu məzmun ölkənizdə mövcud deyil. Bu məzmun yalnız ödəniş etmiş istifadəçilər üçün əlçatandır, ona görə də NewPipe tərəfindən yayımlana və ya endirilə bilməz. @@ -468,10 +468,10 @@ Android\'in bildiriş rəngini miniatürdəki əsas rəngə uyğun fərdiləşdirməsini təmin et (qeyd edək ki, bu, bütün cihazlarda mövcud deyil) GitHub\'da Bax İanə Et - NewPipe, sizə ən yaxşı istifadəçi təcrübəsini göstərmək üçün boş vaxtlarını sərf edən könüllülər tərəfindən hazırlanmışdır. Tərtibatçılara bir fincan qəhvə içərkən NewPipe-ı daha da yaxşılaşdırmağa ianə etməklə kömək edin. + NewPipe, sizə ən yaxşı istifadəçi təcrübəsi göstərmək üçün boş vaxtlarını sərf edən könüllülər tərəfindən hazırlanmışdır. Tərtibatçılara bir fincan qəhvə içərkən NewPipe-ı daha da yaxşılaşdırmağa ianə etməklə kömək edin. Ən çox bəyənildi Növbəyə salındı - Məzmunu açarkən defolt hərəkət — %s + Məzmunu açarkən standart hərəkət — %s Ad Pleylist miniatürü kimi təyin et Yalnız Wi-Fi\'da @@ -488,7 +488,7 @@ Lisenziya Müəllifin hesabı bağlanıb. \nNewPipe gələcəkdə bu axını yükləyə bilməyəcək. -\nBu kanala abunəlikdən çıxmaq istəyirsiniz\? +\nBu kanaldan abunəliyi çıxarmaq istəyirsiniz\? Baxılan elementləri göstər Seçilmiş Çəkməcəni Bağla @@ -496,12 +496,12 @@ Video fayl xülasəsi prosesi üçün bildirişlər Miniatürü 1:1 görünüş nisbətinə kəs - Yükləmə intervalının həcmini dəyişdir (hazırda %s). Daha aşağı dəyər ilkin video yükləməni sürətləndirə bilər. Dəyişikliklər oynadıcının yenidən başladılmasını tələb edir - Yayım yaradıcısı, məzmunu və ya axtarış sorğusu haqqında əlavə məlumat olan üst məlumat qutularını gizlətmək üçün söndürün + Yükləmə intervalı həcmini dəyişdir (hazırda %s). Daha aşağı dəyər ilkin video yükləməni sürətləndirə bilər. Dəyişikliklər oynadıcını yenidən başlatmağı tələb edir + Yayım yaradıcısı, məzmunu və ya axtarış sorğusu haqqında əlavə məlumat olan üst məlumat qutularını gizlətmək üçün söndür Əlaqəli yayımı əlavə etməklə (təkrarlanmayan) sonlanacaq oynatma növbəsini davam etdir Kənar axtarış təklifləri Nümunə artıq mövcuddur - Videoları mini oynadıcıda başlatma, avtomatik fırlatma kilidlidirsə, birbaşa tam ekran rejiminə keçid. Siz hələ də tam ekrandan çıxmaqla mini oynadıcıya daxil ola bilərsiniz + Videoları kiçik oynadıcıda başlatma, avtomatik fırlatma kilidlidirsə, birbaşa tam ekran rejiminə keçid. Siz hələ də tam ekrandan çıxmaqla mini oynadıcıya daxil ola bilərsiniz 100+ video ∞ video Şərhlər yoxdur @@ -532,7 +532,7 @@ Etiketlər Planşet rejimi Bağla - Müəllifə ürəkləndi + Müəllifdən ürəkləndi Veb saytı aç %s baxış @@ -550,11 +550,11 @@ Endirmə tamamlandı %s endirmə tamamlandı - Defolt ExoPlayer + Standart ExoPlayer Mövcud olduqda xüsusi axından al Baxılmış videolar silinsin\? İzləniləni sil - Sistem qovluğu seçicisini (SAF) istifadə edin + Sistem qovluğu seçicisini (SAF) istifadə et Bağlantı fasiləsi Cihazda yer qalmayıb Fayl üzərində işləyərkən NewPipe bağlandı @@ -582,7 +582,7 @@ İdxal edilir… Pleylistə salındı Səsi bağla - Ani pəncərə oynadıcı + Ani görüntü oynadıcı Çəkməcəni Aç Növbələşdirmək üçün basılı tut Sil @@ -590,7 +590,7 @@ © %1$s, %2$s tərəfindən %3$s altında Bu faylı oynatmaq üçün heç bir tətbiq quraşdırılmayıb Endirmə - Bu icazə, ani pəncərə rejimində + Bu icazə, ani görüntü rejimində \naçmaq üçün lazımdır Buferə kopyalandı Parçalar @@ -608,22 +608,22 @@ Nümunə URL\'sini daxil et Nümunəni doğrulamaq mümkün olmadı %s-də bəyəndiyiniz nümunələri tapın - Video \"Təfsilatlar:\"səhifəsində fon və ya ani pəncərə düyməsini basarkən ipucu göstər - Oynadıcı altyazı mətn miqyasını və arxa fon üslublarını dəyişdirin. Effektiv olması üçün tətbiqi yenidən başlatmaq tələb olunur + Video \"Təfsilatlar:\"səhifəsində fon və ya ani görüntü düyməsin basarkən ipucu göstər + Oynadıcı altyazı mətn miqyasını və arxa fon üslublarını dəyişdir. Effektiv olması üçün tətbiqi yenidən başlatmaq tələb olunur Xəta baş verdi: %1$s Fayl mövcud deyil, yaxud oxumaq və ya yazmaq icazəsi yoxdur Veb saytı təhlil etmək alınmadı Ucalıq Radio \"Oynadıcını çökdür\" Göstər - Oynadıcıdan istifadə edərkən çökdürmə seçimini göstər + Oynadıcını istifadə edərkən çökdürmə seçimini göstər Xəta balonu göstər Xəta bildirişi yarat - Burdan idxal edin - Bura ixrac edin + Burdan idxal et + Bura ixrac et Faylı idxal et Abunəlikləri idxal etmək mümkün olmadı - Avropa Ümumi Məlumat Mühafizəsi Qaydasına (GDPR) riayət etmək üçün diqqətinizi NewPipe\'ın məxfilik siyasətinə cəlb edirik. Zəhmət olmasa, diqqətlə oxuyun. Xəta hesabatını bizə göndərmək üçün onu qəbul etməlisiniz. + Avropa Ümumi Məlumat Mühafizəsi Qaydasına (GDPR) riayət etmək üçün diqqətinizi NewPipe məxfilik siyasətinə cəlb edirik. Zəhmət olmasa, diqqətlə oxuyun. Xəta hesabatın bizə göndərmək üçün qəbul etməlisiniz. Bu adda fayl artıq mövcuddur Bu adla gözlənilən bir endirmə var Təyinat qovluğu yaradıla bilməz @@ -643,7 +643,7 @@ Dil İctimai Abunəçi sayı əlçatan deyil - Lisenziyanı oxuyun + Lisenziyanı Oxu Tarixçə Hərflər və rəqəmlər Oynadıcını çökdür @@ -651,18 +651,18 @@ Oynadıcı bildirişi Yeni yayımlar Xəta hesabatı bildirişi - Video URL\'i imzasının şifrəsi qırılmadı - Endirmək üçün heç bir yayım yoxdur - Xəta baş verdi, bildirişə baxın + Video URL\'i imzası şifrəsi qırılmadı + Endirmək üçün yayım mövcud deyil + Xəta baş verdi, bildirişi gör Şərhiniz (İngiliscə): Video oynat, müddət: - Zəhmət olmasa, daha sonra tənzimləmələrdə endirmə qovluğunu təyin et + Zəhmət olmasa, endirmə qovluğunu daha sonra tənzimləmələrdə təyin et NewPipe Endirilir Hash hesablanır Fayl adlarında icazə verilən simvollar NewPipe Haqqında Lisenziyalar - NewPipe müəllif hüquqlu sərbəst tətbiqdir: Siz onu istədiyiniz zaman istifadə edə, öyrənə, paylaşa və təkmilləşdirə bilərsiniz. Xüsusilə, siz Lisenziyanın 3-cü versiyası və ya (seçiminizə görə) hər hansı sonrakı versiyada Azad Proqram Təminatı Fondu tərəfindən dərc edilən GNU Ümumi İctimai Lisenziyanın şərtlərinə uyğun olaraq onu yenidən paylaya və/yaxud dəyişdirə bilərsiniz. + NewPipe müəllif hüquqlu sərbəst tətbiqdir: Siz onu istədiyiniz zaman istifadə edə, öyrənə, paylaşa və təkmilləşdirə bilərsiniz. Xüsusilə, siz Lisenziyanın 3-cü versiyası və ya (seçiminizə görə) hər hansı sonrakı versiyada Azad Proqram Təminatı Fondu tərəfindən dərc edilən GNU Ümumi İctimai Lisenziya şərtlərinə uyğun olaraq onu yenidən paylaya və/yaxud dəyişdirə bilərsiniz. İxrac edildi Elementləri silmək üçün sürüşdür Hələ,əlfəcinlənmiş pleylistlər yoxdur @@ -705,7 +705,7 @@ Bu video yalnız YouTube Music Premium üzvləri üçün əlçatandır, ona görə də NewPipe tərəfindən yayımlamaq və ya endirmək mümkün deyil. İndi açıqlamadakı mətni seçə bilərsiniz. Nəzərə alın ki, seçim rejimində səhifə titrəyə və keçidlər kliklənməyə bilər. Bildirişdə göstərilən video miniatürünü 16:9-dan 1:1 görünüş nisbətinə qədər kəs - Aşağıdakı bildiriş fəaliyyətini hər birinin üzərinə toxunaraq redaktə edin. Sağdakı təsdiq qutularından istifadə edərək yığcam bildirişdə göstərilməsi üçün onların üçə qədərini seç + Aşağıdakı hər bir bildiriş fəaliyyətini üzərinə toxunaraq redaktə et. Sağdakı təsdiq qutularından istifadə edərək yığcam bildirişdə göstərmək üçün onların üçünü seç Belə fayl/məzmun mənbəyi yoxdur Seçilmiş yayım xarici oynadıcılar tərəfindən dəstəklənmir Yükləyici tərəfindən hələ dəstəklənməyən yayımlar göstərilmir @@ -718,7 +718,7 @@ Gələcək elementləri göstər Baxılan elementləri gizlət Gələcək elementləri gizlət - Tətbiqdən istifadə etməkdə çətinlik çəkirsinizsə, ümumi suallara bu cavabların yoxlanıldığına əmin olun! + Tətbiqi istifadə etməkdə çətinlik çəkirsinizsə, ümumi suallara bu cavabları yoxladığınıza əmin olun! Tez-tez soruşulan suallar Veb Saytında bax Çeşidlə @@ -730,4 +730,6 @@ Daimi miniatürü ləğv et Kart Buferə kopyalamaq alınmadı + Boz rəngdə olan pleylistlərdə artıq bu element var. + Dublikat %d dəfə əlavə edildi \ No newline at end of file diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index adf6601a8..abc77e66c 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -11,16 +11,16 @@ Nastavení Mysleli jste „%1$s“\? Sdílet s - Použít externí video přehrávač + Použít externí přehrávač videí Použít externí audio přehrávač - Stažené audio je uloženo zde + Sem bude ukládáno stažené audio Zvolte adresář pro stažené audio soubory Adresář pro stažené audio Výchozí rozlišení Přehrát pomocí Kodi Nainstalovat chybějící aplikaci Kore\? Adresář pro stažená videa - Stažená videa jsou uložena tady + Sem budou ukládána stažená videa Zvolte adresář pro stažená videa Zobrazit možnost „Přehrát pomocí Kodi“ Zobrazit možnost přehrání videa pomocí multimediálního centra Kodi @@ -213,7 +213,7 @@ Žádný platný soubor ZIP Upozornění: Nelze importovat všechny soubory. Tímto se anuluje vaše aktuální nastavení. - Video přehrávač + Přehrávač videa Přehrávač na pozadí Přehrávač v okně Získávám informace… @@ -298,7 +298,7 @@ Výška tónu Odpojit (může způsobit zkreslení) Ke stažení nejsou dostupné žádné streamy - Preferovaná \'otevřít\' akce + Preferovaná akce „otevření“ Výchozí chování při otevírání obsahu — %s Titulky Upravuje velikost textu titulků a styly pozadí. Změny se projeví po restartu aplikace @@ -550,7 +550,7 @@ Ukazuji výsledky pro: %s Nikdy Pouze na Wi-Fi - Zahájit playback automaticky — %s + Automaticky zahájit přehrávání — %s Přehrát frontu Nelze rozpoznat zadané URL. Otevřít pomocí jiné aplikace\? Auto-fronta @@ -668,7 +668,7 @@ Ukázat indikátory obrázků Vzdálené návrhy vyhledávání Lokální návrhy vyhledávání - Pokud je vypnuté automatické otáčení, nespouštějte video v mini přehrávači, ale přepněte se přímo do režimu celé obrazovky. Do mini přehrávače se lze i nadále dostat ukončením režimu celé obrazovky + Pokud je vypnuté automatické otáčení, nespouštět video v mini přehrávači, ale přepnout se přímo do režimu celé obrazovky. Do mini přehrávače se lze i nadále dostat ukončením režimu celé obrazovky Další ve frontě Přidat do fronty (další) Tažením položky odstraníte @@ -728,7 +728,7 @@ Zobrazit nadcházející položky Streamy, které zatím nejsou podporovány systémem stahování, nebudou zobrazeny Vyberte kvalitu pro externí přehrávače - U externích přehrávačů nejsou dostupné žádné video streamy + U externích přehrávačů nejsou k dispozici žádné videostreamy Skrýt zhlédnuté položky Skrýt nadcházející položky Často kladené dotazy @@ -743,4 +743,6 @@ Zrušení nastavení trvalého náhledu Karta Kopírování do schránky se nezdařilo + Zašedlé playlisty již obsahují tuto položku. + Duplikát přidán %dkrát \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 3b1959a69..2aff15046 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -730,4 +730,6 @@ Dauerhaftes Vorschaubild aufheben Kopieren in die Zwischenablage fehlgeschlagen Karte + Duplikat %d mal hinzugefügt + Die ausgegrauten Wiedergabelisten enthalten dieses Element bereits. \ No newline at end of file diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 78d89cc59..d19b5731f 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -730,4 +730,6 @@ Κατάργηση μόνιμης μικρογραφίας Αποτυχία αντιγραφής στο πρόχειρο Κάρτα + Οι λίστες αναπαραγωγής που είναι γκριζαρισμένες περιέχουν ήδη αυτό το στοιχείο. + Προστέθηκε διπλότυπο %d φορά(ες) \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 9d68c28a9..1ea514868 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -746,4 +746,6 @@ Desactivar las miniaturas permanente Error al copiar al portapapeles Tarjeta + Duplicado añadido %d vez/veces + Las listas de reproducción que están en gris ya contienen este elemento. \ No newline at end of file diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 986de133b..b9114c4d3 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -730,4 +730,6 @@ Lõikelauale kopeerimine ei õnnestunud Eemalda püsiv pisipilt Kaart + Hallina kuvatud esitusloendid juba sisaldavad seda kirjet. + Topeltkirje lisatud %d kord(a) \ No newline at end of file diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 4bbacf7b5..6b35b7316 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -108,7 +108,7 @@ NewPipe aplikazioari buruz Hirugarrengoen lizentziak © %1$s %2$s. %3$s - Honi buruz + Honi buruz eta ohiko galderak Lizentziak Androiderako streaming libre eta arina. Ikusi GitHub zerbitzarian @@ -718,4 +718,18 @@ Hautatu kanpoko erreproduzigailuen kalitatea Ezkutatu etorkizuneko elementuak Ezkutatu ikusitako elementuak + Grisez idatzitako erreprodukzio-zerrendek jada badute elementu hau. + Webgunean ikusi + Akatsa arbelera kopiatzean + Arazoren bat baduzu aplikazioa erabiltzerakoan, irakur itzazu ohiko galdera hauen erantzunak! + Betiko miniatura kendu + NewPipe-en azken bertsioa erabiltzen ari zara + Sakatu %s deskargatzeko + Kopia %d behin/aldiz gehitua + Txartela + Aukera hau Gaiarako %s aukeratua badago soilik dago erabilgarri + Ordenatu + Modu azkarra + Hiru-puntutako menutik harpidetzak inportatu edo esportatu + Maiz galdetutako galderak \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index a3373ca6e..77b4f09bb 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -743,4 +743,6 @@ Appuyez pour télécharger %s Échec de la copie dans le presse-papiers Cette option est disponible seulement si %s est sélectionné pour le thème + Les listes de lecture grisées contiennent déjà cet élément. + Carte \ No newline at end of file diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index a8cf01ef0..b70f6266f 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -730,4 +730,6 @@ Produciuse un erro ao copiar no portapapeis Desactivala miniatura permanente Tarxeta + As listas de reprodución que se atopan atenuadas xa conteñen este elemento. + Duplicado engadido %d vez/veces \ No newline at end of file diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 35dc19c8c..6be8c1073 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -756,4 +756,6 @@ ביטול הגדרת תמונה ייצוגית קבועה כרטיס ההעתקה ללוח הגזירים נכשלה + רשימות הנגינה שבוטלו וסומנו באפור כבר מכילות את הפריט הזה. + הכפיל נוסף %d פעמים \ No newline at end of file diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index c195d62e1..cc5f6dd3b 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -717,4 +717,6 @@ Batalkan penetapan gambar kecil permanen Gagal menyalin ke papan klip Kartu + Daftar putar yang bewarna abu-abu sudah berisi item ini. + Duplikat ditambahkan %d kali \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index bf20d2be4..ccaf93510 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -742,5 +742,7 @@ Questa opzione è disponibile solo se %s è selezionato come Tema Copia negli appunti non riuscita Schede - Disattiva la miniatura permanente + Disattiva copertina permanente + Le playlist in grigio contengono già questo elemento. + Doppione aggiunto %d volta/e \ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index d02b56e75..e320649a3 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -716,4 +716,6 @@ 3 点メニューから登録チャンネルをインポートまたはエクスポートします カード クリップボードへのコピーに失敗しました + 灰色で表示されているプレイリストには、すでにこのアイテムが含まれています。 + %d 回重複追加されました \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 95df1e9a4..6011432b1 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -715,4 +715,8 @@ %s를 다운로드하려면 탭하세요. 영구 썸네일 설정 해제 이 옵션은 테마로 %s를 선택한 경우에만 사용할 수 있음 + 중복 추가 %d 번 + 회색으로 표시된 재생 목록에 이미 이 항목이 포함되어 있습니다. + 카드 + 클립보드 복사 실패 \ No newline at end of file diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 15bb21633..79bfa710a 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -21,18 +21,18 @@ Velg nedlastingsmappe for lydfiler Forvalgt oppløsning Spill av med Kodi - Installer manglende Kore-program\? + Installer manglende Kore-app\? Vis \"Spill av med Kodi\"-valg Vis valg for avspilling via Kodi mediasenter Lyd Forvalgt lydformat - Drakt + Tema Mørk Lys Last ned Vis \"Neste\" og \"Lignende\" -videoer Nettadressen støttes ikke - Foretrukket innholdsspråk + Forvalgt innholdsspråk Video og lyd Utseende Spiller i bakgrunnen @@ -65,7 +65,7 @@ Nedlastinger Nedlastinger Feilrapport - Program/brukergrensesnitt krasjet + App/brukergrensesnitt krasjet Pause Slett Sjekksum @@ -77,7 +77,7 @@ Trykk for detaljer Vent… Kopiert til utklippstavle - Hva:\\nForespørsel:\\nInnholdsspråk:\\nInnholdsland:\\nProgramspråk:\\nTjeneste:\\nGMT-tid:\\nPakke:\\nVersjon:\\nOS-versjon: + Hva:\\nForespørsel:\\nInnholdsspråk:\\nInnholdsland:\\nAppspråk:\\nTjeneste:\\nGMT-tid:\\nPakke:\\nVersjon:\\nOS-versjon: Start Definer en nedlastingsmappe senere i innstillingene reCAPTCHA-oppgave @@ -241,15 +241,15 @@ Tilpass Fyll Forstørr - Bruk rask unøyaktig blafring - Feilretting + Bruk rask unøyaktig spoling + Feilsøking Fil Ingen slik mappe Ingen slik fil/innholdskilde Filen finnes ikke eller så har du ikke tilgang til å lese eller skrive til den Filnavn kan ikke være tomt En feil inntraff: %1$s - Auto-generert + Autogenerert Importer Importer fra Eksporter til @@ -282,10 +282,10 @@ Slett hele søkehistorikken\? Søkehistorikken er slettet Ett element slettet. - Inget program installert for avspilling av denne filen + Ingen app installert for å spille av denne filen Undertekster Endre spillerens undertekststørrelse og bakgrunnsstiler. Krever omstart av appen for å tre i kraft - NewPipe er copyleft-fri programvare: Du kan bruke, studere og forbedre den etter egen vilje. Spesifikt kan du redistribuere og/eller modifisere den i henhold til vilkårene gitt i GNU General Public-lisensen, som er publisert av Free Software Foundation, enten versjon 3 av lisensen, eller (etter eget ønske) enhver senere versjon. + NewPipe er copyleft fri programvare: Du kan bruke, studere og forbedre den etter egen vilje. Spesifikt kan du redistribuere og/eller modifisere den i henhold til vilkårene gitt i GNU General Public-lisensen, som er publisert av Free Software Foundation, enten versjon 3 av lisensen, eller (etter eget ønske) enhver senere versjon. Ønsker du også å importere innstillinger? Kunne ikke importere abonnementer Kunne ikke eksportere abonnementer @@ -295,7 +295,7 @@ \n2. Logg inn når forespurt \n3. Klikk på \"All data inkludert\", så på \"Fjern merket for alle\", så på kun \"Abonnementer\", og klikk så \"OK\" \n4. Klikk på \"Neste steg\" og så på \"Opprett eksport\" -\n5. Klikk på \"Last ned\"-knappen etter den vises%1$s +\n5. Klikk på \"Last ned\"-knappen etter den vises \n6. Klikk på IMPORTER FIL under og velg den nedlastede .zip filen \n7. [Dersom .zip importen feiler] Pakk ut .csv filen (vanligvis under \"YouTube og YouTube Music/subscriptions/subscriptions.csv\"), klikk på IMPORTER FIL under og velg den utpakkede csv filen Importer en SoundCloud-profil ved å skrive enten nettadressen eller din ID: @@ -304,15 +304,15 @@ \n2. Gå til denne nettadressen: %1$s \n3. Logg inn når forespurt \n4. Kopier profil-nettadressen du ble videresendt til. - Unøyaktig blafring lar spilleren søke posisjoner raskere med redusert presisjon. Å søke i 5, 15 eller 25 sekunder fungerer ikke med dette + Unøyaktig spoling lar spilleren søke posisjoner raskere med redusert presisjon. Å søke i 5, 15 eller 25 sekunder fungerer ikke med dette Skru av for å stoppe innlasting av miniatyrbilder, noe som sparer data- og minnebruk. Endring av dette vil tømme både disk- og minne-hurtiglager Fortsett fullendt (ikke-repeterende) avspillingskø ved å legge til en relatert strøm - Minnelekkasjeoppsyn kan forårsake programmet å opptre uresponsivt under haugdumping + Overvåkning av minnelekkasjer kan forårsake at appen ikke svarer under heap dumping Rapporter feil utenfor livssyklusen Tving rapportering av uleverbare Rx-unntak utenom fragment eller aktivitetslevetid etter forkastelse Avhekt (kan forårsake forvrenging) NewPipes personvernspraksis - NewPipe-prosjektet tar ditt personvern veldig alvorlig. Derfor samler ikke programmet inn data uten ditt samtykke. + NewPipe-prosjektet tar ditt personvern veldig alvorlig. Derfor samler ikke appen inn data uten ditt samtykke. \nNewPipes personvernspraksis forklarer i detalj hvilken data som sendes og lagres når du sender en krasjrapport. Les personvernspraksis For å overholde EUs personvernforordning (GDPR), vil vi rette oppmerksomheten din mot NewPipe sin personvernerklæring. Vennligst les den nøye. @@ -321,8 +321,8 @@ Avslå Ubegrenset Begrens oppløsning når mobildata brukes - Minimer ved programbytte - Handling ved bytting til annet program fra hovedspiller — %s + Minimer ved appbytte + Handling ved bytting til annen app fra hovedspiller — %s Ingen Minimer til bakgrunnsspiller Minimer til oppsprettsspiller @@ -342,7 +342,7 @@ Oppdateringer Hendelser Fil slettet - Programoppgraderingsmerknad + Varsel om appoppdatering Merknader for nye NewPipe-versjoner Ekstern lagring utilgjengelig Nedlasting til eksternt SD-kort er ikke mulig. Tilbakestill plassering av nedlastingsmappe\? @@ -353,11 +353,11 @@ Hvilke faner vises på hovedsiden Konferanser Oppdatering - Varsle om programoppdatering når en ny versjon er tilgjengelig - Listevisningmodus + Vis varsel om appoppdatering når en ny versjon er tilgjengelig + Listevisningsmodus Liste Rutenett - Auto + Automatisk Ny NewPipe-versjon er tilgjengelig! Fullført pauset @@ -430,7 +430,7 @@ %s lytter %s lyttere - Språket vil først bli endret etter at programmet har blitt omstartet + Språket vil endres etter at appen har startet på nytt Standard kiosk PeerTube-instanser Lokal @@ -449,7 +449,7 @@ Autogenerert (fant ingen opplaster) gjenoppretter Kan ikke gjenopprette denne nedlastingen - Hurtigframoverspoling/-tilbakeblafringsvarighet + Hurtigframoverspoling/-tilbakespolingsvarighet Gi tillatelse til å vise over andre apper Programspråk Systemforvalg @@ -486,7 +486,7 @@ Ingen abonnement valgt Velg abonnementer Kanalgrupper - Skru av raskt modus + Skru av hurtigmodus Strømoppdateringsterskel Strøm Behandler strøm… @@ -505,7 +505,7 @@ Fjern sette Opprettet av %s Av %s - Slå på YouTubes \"begrensede modus\" + Slå på YouTubes \"Begrenset modus\" Aldri Kun på Wi-Fi Velg en spilleliste @@ -524,7 +524,7 @@ \n• Hent hele abonnementskanalen, noe som er tregt, men fullstendig. \n• Bruk av et dedikert tjenesteendepunkt, noe som er raskt men vanligvis ikke fullstendig. \n -\nForskjellen mellom dem er at den raske vanligvis mangler info, som elementers varighet eller type (kan ikke skjelne mellom sanntidsvideoer og normale) og det kan gi færre elementer. +\nForskjellen mellom dem er at den raske vanligvis mangler info, som elementers varighet eller type (kan ikke skille mellom direktesendinger og normale videoer) og det kan gi færre elementer. \n \nYouTube er et eksempel på en tjeneste som tilbyr denne raske metoden med sin RSS-informasjonskanal. \n @@ -537,17 +537,17 @@ Tilgjengelig i noen tjenester, det er vanligvis mye raskere, men kan gi et begrenset antall elementer, og ofte ufullstendig informasjon (f.eks. ingen varighet, elementtype, eller sanntidsstatus) Hent fra dedikert strøm når tilgjengelig Tid siden siste oppdatering før et abonnement vurderes utdatert — %s - Som følge av begrensninger i ExoPlayer er blafringsdistansen begrenset til %d sekunder + Som følge av begrensninger i ExoPlayer er blafringsdistansen kun %d sekunder Videoer som har blitt sett før og etter at de er lagt til spillelisten, vil bli fjernet. \nEr du sikker\? Dette kan ikke angres! Start avspilling automatisk — %s - Kunne ikke gjenkjenne angitt nettadresse. Åpne den med annet program\? + Kunne ikke gjenkjenne angitt nettadresse. Åpne den med et annet program\? Innholdet støttes ikke enda av NewPipe. \n \nStøtte vil forhåpentligvis komme til i en senere versjon. Spillelisteside Kanalens avatar-miniatyrbilde - Skru på raskt modus + Skru på hurtigmodus Vis kun ugrupperte abonnementer Spill kø Ingen spillelistebokmerker enda @@ -595,18 +595,18 @@ Dette er et spor fra SoundCloud Go+, ihvertfall i ditt land, så det kan ikke strømmes eller lastes ned av NewPipe. Innholdet er ikke tilgjengelig i din region. Nedlastingen har startet - Du kan velge din favorittnattdrakt nedenfor - Velg din favorittnattdrakt — %s - Automatisk (enhetsdrakt) + Du kan velge ditt favorittnattema nedenfor + Velg ditt favorittnattema — %s + Automatisk (enhetstema) Radio Framhevet Løs - Nattdrakt + Nattema Vis kanaldetaljer Skru av media-tunnelering hvis du opplever svart skjerm eller videohakking Skru av media-tunnelering Du kan nå velge tekst inne i beskrivelsen. Merk at siden kan flimre og lenker er kanskje ikke klikkbare i utvalgsmodus. - Raskt modus for informasjonskanal tilbyr ikke mer info om dette. + Hurtigmodus for informasjonskanal tilbyr ikke mer info om dette. Skaperens konto har blitt terminert. \nNewPipe vil ikke kunne laste inn denne informasjonskanalen i fremtiden. \nØnsker du å oppheve ditt abonnement på denne kanalen\? @@ -619,7 +619,7 @@ Kunne ikke laste inn informasjonskanal Fra Android 10 er kun «lagringstilgangsrammeverk» støttet Du vil bli spurt om hvor du vil lagre hver nedlastning - Forhåndsvisning av miniatyrbilde i søkefelt + Forhåndsvisning av miniatyrbilde på spolelinjen Ingen nedlastingsmappe er satt ennå, velg en standard nedlastingsmappe nå Av @@ -722,4 +722,12 @@ Sorter Velg alle Hvis du har problemer med å bruke appen, så bør du sjekke ut disse svarene fra generelle spørsmål! + Skru av vedvarende miniatyrbilde + Dette valget er kun tilgjengelig dersom %s er valgt som tema + Klarte ikke å kopiere til utklippstavlen + Trykk for å laste ned %s + Du bruker den nyeste versjonen av NewPipe + Kort + Importer eller eksporter fra trepunktsmenyen + Hurtigmodus \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index c5e77b29f..ab73b602f 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -727,7 +727,9 @@ U heeft de laatste versie van NewPipe Klik om %s te downloaden Kon niet naar klembord kopiëren - Deze instelling is alleen beschikbaar als %s als thema ingesteld is + Deze instelling is alleen beschikbaar als %s als Thema ingesteld is Kaart Miniatuur niet ingesteld + De afspeellijsten die grijs zijn, bevatten dit item al. + Duplicaat is %d tijd(en) toegevoegd \ No newline at end of file diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index bc8d9fcee..31a53a6b3 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -730,4 +730,6 @@ କାର୍ଡ କ୍ଲିପବୋର୍ଡରେ କପି କରିବାରେ ବିଫଳ ସ୍ଥାୟୀ ଥମ୍ୱନେଲ୍ ସେଟ୍ କରନ୍ତୁ + ଧୂସର ହୋଇଯାଇଥିବା ପ୍ଲେଲିଷ୍ଟଗୁଡିକ ପୂର୍ବରୁ ଏହି ଆଇଟମ୍ ଧାରଣ କରିଥାଏ । + ନକଲ %d ସମୟ (ମୋଟ) ଯୋଡି ହୋଇଛି \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index e7ae07c85..4f5ae1448 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -422,7 +422,7 @@ Minął czas połączenia Używaj systemowego selektora folderów (SAF) Systemowy selektor folderów (SAF) umożliwia pobieranie na kartę pamięci - Usuń pozycje odtwarzania + Wyczyść pozycje odtwarzania Usuwa wszystkie pozycje odtwarzania Usunąć wszystkie pozycje odtwarzania\? Przełącz usługę, aktualnie wybrana: @@ -531,7 +531,7 @@ Artyści Albumy Piosenki - To wideo ma ograniczenia wiekowe. + To wideo jest objęte ograniczeniem wiekowym. \n \nWłącz „%1$s” w ustawieniach, jeśli chcesz je zobaczyć. Tak, i częściowo obejrzane wideo @@ -578,7 +578,7 @@ Dodano do kolejki Dodaj do kolejki Pokaż wycieki pamięci - Wyczyść ciasteczka, które NewPipe przechowuje po rozwiązaniu reCAPTCHA + Usuwa ciasteczka, które NewPipe przechowuje po rozwiązaniu reCAPTCHA Ciasteczka reCAPTCHA zostały wyczyszczone Wyczyść ciasteczka reCAPTCHA YouTube udostępnia „Tryb ograniczonego dostępu”, który ukrywa potencjalne treści dla dorosłych @@ -751,4 +751,6 @@ Usuń stałą miniaturę Nie udało się skopiować do schowka Karta + Wyszarzone playlisty zawierają już tę pozycję + Dodano duplikat %d raz(y) \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index fc02f29d7..f9b3ac196 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -743,4 +743,6 @@ Desativar miniatura permanente Cartão Falha ao copiar para a área de transferência + Duplicata adicionada %d vez(es) + As playlists em cinza já contêm este item. \ No newline at end of file diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 4c2593330..80f6331e3 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -730,4 +730,6 @@ Desativar miniatura permanente Não foi possível copiar para a área de transferência Cartão + As listas de reprodução acinzentadas já contêm este item. + Duplicar adicionado %d vez(es) \ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index c47241dcc..36528078c 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -739,8 +739,10 @@ Importar ou exportar subscrições do menu de 3 pontos Já está a executar a versão mais recente do NewPipe Toque para descarregar %s - Esta opção só está disponível se %s for selecionado para o tema + Esta opção só está disponível se estiver selecionado %s para o tema Desativar miniatura permanente Não foi possível copiar para a área de transferência Cartão + As listas de reprodução acinzentadas já contêm este item. + Duplicar adicionado %d vez(es) \ No newline at end of file diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 2dc847daf..5eae3876f 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -740,4 +740,7 @@ Rulați cea mai recentă versiune NewPipe Atingeți pentru a descărca %s Această opțiune este disponibilă numai dacă %s este selectată ca temă + Cartelă + Nu s-a reușit copierea în clipboard + Dezactivare miniatură permanentă \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 50376dc03..999e9b2fe 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -661,7 +661,7 @@ Высокое качество (крупнее) Миниатюра над полосой прокрутки Автору видео понравилось это - Пометить просмотренными + Пометить проигранным Picasso: указать цветом источник изображений (красный — сеть, синий — диск, зелёный — память) Цветные метки на изображениях Серверные предложения поиска @@ -747,4 +747,6 @@ Не удалось скопировать в буфер обмена Доступно, когда Тема установлена в %s Убрать постоянную миниатюру + Дубликат добавлен %d раз(а) + Плейлисты, выделенные серым уже содержат этот объект. \ No newline at end of file diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml index e649cfac2..68c6fd5c1 100644 --- a/app/src/main/res/values-sc/strings.xml +++ b/app/src/main/res/values-sc/strings.xml @@ -730,4 +730,6 @@ Carta Còpia in punta de billete fallida Disativa sa miniadura permanente + Sas iscalitas in colore murru tenent giai custu elementu. + Duplicadu annantu %d borta(s) \ No newline at end of file diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index c45086ee0..f8340b47b 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -735,4 +735,14 @@ Pozrieť na webovej stránke Usporiadať Ak máte problémy s používaním aplikácie, určite si prečítajte tieto odpovede na časté otázky! + Vypnutie trvalého náhľadu + Kopírovanie do schránky zlyhalo + Zoznamy zobrazené šedou farbou už obsahujú danú položku. + Karta + Dotykom stiahnite %s + Duplikát bol pridaný %d-krát + Používate najnovšiu verziu NewPipe + Táto možnosť je dostupná len pre motív %s + Rýchly režim + Import alebo export odberov z 3-bodkovej ponuky \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index fbe793569..a64bbf555 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -727,4 +727,7 @@ Du använder den senaste versionen av NewPipe Tryck för att ladda ner %s Det här alternativet är endast tillgängligt om %s har valts som Tema + Inaktivera permanent miniatyrbild + Det gick inte att kopiera till urklipp + Kort \ No newline at end of file diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 12effb9e2..fd7e457bf 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -15,7 +15,7 @@ ตั้งค่า หรือคุณหมายถึง \"%1$s\"\? แชร์ด้วย - Use external video player + ใช้เครื่องเล่นวีดิโอภายนอก ใช้แอปเล่นเสียงภายนอก ติดตาม ติดตามแล้ว @@ -357,7 +357,7 @@ หยุดชั่วคราวเมื่อเปลี่ยนเป็นข้อมูลมือถือ การดาวน์โหลดที่ไม่สามารถหยุดพักได้จะเริ่มต้นใหม่ ปิด - Removes audio at some resolutions + บางความละเอียดอาจไม่มีเสียง แคช metadate ถูกลบแล้ว เล่นต่อหลังจากการขัดจังหวะ เล่นต่อ @@ -369,4 +369,13 @@ เปิดด้วย ทำเครื่องหมายว่าดูแล้ว ตกลง + ปุ่มการกระทำที่สี่ + ปุ่มการกระทำแรก + ปุ่มการกระทำที่สาม + ปุ่มการกระทำที่ห้า + แก้ไขการกระทำของการแต่การแจ้งเตือนด้วยการแตะไปที่มัน เลือกสามรายการที่จะแสดงในการแจ้งเตือนในการแจ้งเตือนแบบกระทัดรัดโดยใช้ปุ่มกาเครื่องหมายทางขวา + ครอบตัดตัวอย่างภาพเป็นอัตราส่วน 1:1 + ครอบตัดตัวอย่างภาพที่แสดงในการแจ้งเตือนจากอัตราส่วน 16:9 เป็น 1:1 + ทำเครื่องเล่นพัง + ปุ่มการกระทำรอง \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index aeeb9bdc3..898256031 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -730,4 +730,6 @@ Kalıcı küçük resmin ayarını kaldır Kart Panoya kopyalanamadı + %d kez kopyası eklendi + Gri oynatma listeleri halihazırda bu ögeyi içeriyor. \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 16b48fc57..a8904c05e 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -52,7 +52,7 @@ Звіт Інформація: Що сталося: - Натисніть на «лупу», щоб почати. + Торкніться лупи, щоб розпочати. Чорна Завантаження Завантаження @@ -747,4 +747,6 @@ Прибрати постійну мініатюру Картки Не вдалося скопіювати до буфера обміну + Дублікат додано %d раз(ів) + У виділених сірим кольором добірках цей елемент уже є. \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 029aa8343..06ae30657 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -605,7 +605,7 @@ 支持 语言 年龄限制 - 私有性 + 私密性 许可 标签 类别 @@ -716,5 +716,7 @@ 只有在主题中选择了 %s 该选项才可用 取消设置永久缩略图 卡片 - 未能复制到剪贴板 + 无法复制到剪贴板 + 变灰的播放列表已经包含此项目。 + 重复添加了 %d 次 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index dc7d589b8..42661322f 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -717,4 +717,6 @@ 色系揀做%s嘅時候至有得揀 複製唔到去剪貼簿 一張張 + 灰咗嘅播放清單,即係已經有呢個項目。 + 重複加入咗 %d 次 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ab975bff1..0b5112e18 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -717,4 +717,6 @@ 卡片 取消設定永久縮圖 無法複製到剪貼簿 + 重複新增 %d 次 + 變灰的播放清單已經包含此項目。 \ No newline at end of file diff --git a/fastlane/metadata/android/bn/changelogs/68.txt b/fastlane/metadata/android/bn/changelogs/68.txt new file mode 100644 index 000000000..8f6742e84 --- /dev/null +++ b/fastlane/metadata/android/bn/changelogs/68.txt @@ -0,0 +1 @@ +https://hosted.weblate.org/translate/newpipe/metadata/bn/?checksum=2a64aca6716bd69b diff --git a/fastlane/metadata/android/cs/changelogs/992.txt b/fastlane/metadata/android/cs/changelogs/992.txt new file mode 100644 index 000000000..b45f8f73a --- /dev/null +++ b/fastlane/metadata/android/cs/changelogs/992.txt @@ -0,0 +1,17 @@ +Novinky +• Počet odběratelů v podrobnostech videa +• Stahování z fronty +• Permanentní nastavení náhledu playlistu +• Dlouhé podržení hashtagů a odkazů +• Režim zobrazení v kartách + +Vylepšení +• Větší tlačítko k zavření minipřehrávače +• Jemnější zmenšování náhledů +• Cíl Android 13 (API 33) +• Posouvání v přehrávači jej již nezastaví + +Opravy +• Oprava překrytí s DeX/myší +• Povolení přehrávače na pozadí bez oddělených streamů zvuku +• Různé opravy YouTube a další… diff --git a/fastlane/metadata/android/de/changelogs/900.txt b/fastlane/metadata/android/de/changelogs/900.txt index a4a8a1253..58fc1e05d 100644 --- a/fastlane/metadata/android/de/changelogs/900.txt +++ b/fastlane/metadata/android/de/changelogs/900.txt @@ -1,14 +1,14 @@ -Neu -- Abonnementgruppen und sortierte Feeds -- Stummschalttaste in Playern +Neu: +• Abonnementgruppen und sortierte Feeds +• Stummschalttaste in Playern -Verbessert -- Das Öffnen von music.youtube.com und media.ccc.de Links in NewPipe erlaubt -- Zwei Einstellungen wurden von "Erscheinungsbild" zu "Inhalt" verschoben -- Ausblenden der Suchoptionen 5, 15 und 25 Sekunden, wenn die ungenaue Suche aktiviert ist +Verbessert: +• Öffnen von music.youtube.com und media.ccc.de Links in NewPipe erlaubt +• Zwei Einstellungen von „Erscheinungsbild“ zu „Inhalt“ verschoben +• Ausblenden der Suchoptionen 5, 15 und 25 Sekunden, wenn die ungenaue Suche aktiviert ist -Behoben -- einige WebM-Videos sind nicht suchbar -- Datenbank-Backup auf Android P -- Absturz beim Teilen einer heruntergeladenen Datei -- YouTube-Extraktionsprobleme, ... +Behoben: +• Einige WebM-Videos sind nicht suchbar +• Datenbank-Backup auf Android P +• Absturz beim Teilen einer heruntergeladenen Datei +• YouTube-Extraktionsprobleme und mehr … diff --git a/fastlane/metadata/android/de/changelogs/958.txt b/fastlane/metadata/android/de/changelogs/958.txt index 4b41f7d70..96b0629d2 100644 --- a/fastlane/metadata/android/de/changelogs/958.txt +++ b/fastlane/metadata/android/de/changelogs/958.txt @@ -1,15 +1,15 @@ -Neu+verbessert -•Option Miniansicht Ausblenden auf Sperrbildschirm wieder hinzugefügt -•Ziehen zum Feed aktualisieren -•Verbesserte Leistung beim Abruf lokaler Listen +Neu und verbessert: +• Option Vorschaubild auf Sperrbildschirm ausblenden wieder hinzugefügt +• Ziehen zum Feed aktualisieren +• Verbesserte Leistung beim Abruf lokaler Listen -Behoben -•Absturz, Start von NewPipe, nachdem es aus dem RAM entfernt wurde -•Absturz, Starten von NewPipe ohne Internetverbindung -•Einstellungen Helligkeits- und Lautstärkegesten -•[YT] Lange Wiedergabelisten +Behoben: +• Absturz, NewPipe-Start nachdem es aus dem RAM entfernt wurde +• Absturz, NewPipe-Start ohne Internetverbindung +• Einstellungen Helligkeits- und Lautstärkegesten +• [YT] Lange Wiedergabelisten -Sonstiges -•Codebereinigung, verschiedene interne Verbesserungen -•Aktualisierung Abhängigkeiten -•Aktualisierte Übersetzungen +Sonstiges: +• Codebereinigung, etliche interne Verbesserungen +• Abhängigkeiten aktualisiert +• Übersetzungen aktualisiert diff --git a/fastlane/metadata/android/de/changelogs/970.txt b/fastlane/metadata/android/de/changelogs/970.txt index 301ea1e3f..53f80fed1 100644 --- a/fastlane/metadata/android/de/changelogs/970.txt +++ b/fastlane/metadata/android/de/changelogs/970.txt @@ -1,11 +1,11 @@ -Neu -• Inhaltsmetadaten (Tags, Kategorien, Lizenz, ...) unter der Beschreibung anzeigen -• Option "Kanaldetails anzeigen" in remote (nicht lokalen) Wiedergabelisten hinzugefügt -• Option "Im Browser öffnen" zum Langdruck-Menü hinzugefügt +Neu: +• Inhaltsmetadaten (Tags, Kategorien, Lizenz, …) unter der Beschreibung anzeigen +• Option „Kanaldetails anzeigen“ in remote (nicht lokalen) Wiedergabelisten hinzugefügt +• Option „Im Browser öffnen“ zum Langdruck-Menü hinzugefügt -Behoben +Behoben: • Rotationsabsturz auf der Videodetailseite -• "Mit Kodi spielen"-Button im Player fordert immer auf, Kore zu installieren +• „Mit Kodi spielen“-Button im Player fordert immer auf, Kore zu installieren • Setzen von Import- und Exportpfaden wurde behoben und verbessert • [YouTube] Anzahl Kommentar-Likes korrigiert Und vieles mehr diff --git a/fastlane/metadata/android/de/changelogs/975.txt b/fastlane/metadata/android/de/changelogs/975.txt index de60202d1..7b56b45c2 100644 --- a/fastlane/metadata/android/de/changelogs/975.txt +++ b/fastlane/metadata/android/de/changelogs/975.txt @@ -1,16 +1,17 @@ -Neu -- Anzeige eines Vorschaubilds während der Suche -- Deaktivierte Kommentare erkennen -- Erlaubt das Markieren eines Feed-Elements als beobachtet -- Kommentarherzen anzeigen +Neu: +• Vorschaubild-Anzeige während der Suche +• Deaktivierte Kommentare erkennen +• Feed-Element als beobachtet markieren +• Kommentarherzen anzeigen -Verbessert -- Verbessertes Layout von Metadaten und Tags -- Dienstfarbe auf UI-Komponenten anwenden +Verbessert: +• Layout von Metadaten und Tags +• Dienstfarbe für UI-Komponenten -Behoben -- Korrektur des Vorschaubilds im Mini-Player -- Behebung der endlosen Pufferung bei doppelten Warteschlangenelementen -- Einige Player-Fixes wie Rotation und schnelleres Schließen -- Behebung von ReCAPTCHA -... +Behoben: +• Vorschaubild im Mini-Player +• Endlose Pufferung bei doppelten Warteschlangenelementen +• Einige Player-Fixes wie Rotation und schnelleres Schließen +• ReCAPTCHA lädt im Hintergrund +• Klicks bei Feed-Aktualisierung deaktivieren +• Einige Downloader-Abstürze diff --git a/fastlane/metadata/android/de/changelogs/976.txt b/fastlane/metadata/android/de/changelogs/976.txt index a70829150..296d9ab4b 100644 --- a/fastlane/metadata/android/de/changelogs/976.txt +++ b/fastlane/metadata/android/de/changelogs/976.txt @@ -1,10 +1,10 @@ -- Option zum direkten Öffnen des Players im Vollbildmodus hinzugefügt -- Auswahl der anzuzeigenden Suchvorschläge möglich -- Dunkles Theme jetzt dunkler + dunkler Splash-Screen hinzugefügt -- Verbesserte Dateiauswahl, um unerwünschte Dateien auszugrauen -- Import von YouTube-Abonnements behoben -- Das Wiederholen eines Streams erfordert ein erneutes Tippen auf die Wiedergabetaste -- Behoben: Audio-Sitzung schließen -... +• Option zum direkten Öffnen des Players im Vollbildmodus hinzugefügt +• Auswahl der anzuzeigenden Suchvorschläge möglich +• Dunkles Design nun dunkler + dunkler Splash-Screen hinzugefügt +• Verbesserte Dateiauswahl, um unerwünschte Dateien auszugrauen +• Import von YouTube-Abonnements behoben +• Das Wiederholen eines Streams erfordert ein erneutes Tippen auf die Wiedergabetaste +• Behoben: Audio-Sitzung schließen +… Änderungen finden Sie im Changelog (und im Blogbeitrag) auf dem Links-Tab unten. diff --git a/fastlane/metadata/android/de/changelogs/977.txt b/fastlane/metadata/android/de/changelogs/977.txt index 54c3d72f6..fffd6c9ad 100644 --- a/fastlane/metadata/android/de/changelogs/977.txt +++ b/fastlane/metadata/android/de/changelogs/977.txt @@ -1,9 +1,9 @@ -- Die Schaltfläche "Weiter abspielen" wurde dem Langdruckmenü hinzugefügt -- YouTube Shorts Pfadpräfix zum Absichtsfilter hinzugefügt -- Import von Einstellungen behoben -- Position der Suchleiste mit Player-Schaltflächen im Warteschlangen-Bildschirm vertauscht -- Verschiedene Korrekturen im Zusammenhang mit MediasessionManager -- Die Suchleiste wurde nach dem Ende des Videos nicht abgeschlossen -... +• Die Schaltfläche „Weiter abspielen“ wurde dem Langdruckmenü hinzugefügt +• YouTube Shorts Pfadpräfix zum Absichtsfilter hinzugefügt +• Import von Einstellungen behoben +• Position der Suchleiste mit Player-Schaltflächen im Warteschlangen-Bildschirm vertauscht +• Verschiedene Korrekturen im Zusammenhang mit MediasessionManager +• Die Suchleiste wurde nach dem Ende des Videos nicht abgeschlossen +… -Weitere Änderungen finden Sie im Changelog (und im Blogbeitrag) auf der Registerkarte Links unten. +Weitere Änderungen finden Sie im Changelog (und im Blogbeitrag) auf dem Links-Tab unten. diff --git a/fastlane/metadata/android/de/changelogs/980.txt b/fastlane/metadata/android/de/changelogs/980.txt index 3e32d136b..dc69300f3 100644 --- a/fastlane/metadata/android/de/changelogs/980.txt +++ b/fastlane/metadata/android/de/changelogs/980.txt @@ -1,13 +1,13 @@ -Neu -- Option "Zur Wiedergabeliste hinzufügen" zum Freigabemenü hinzugefügt -- Unterstützung für y2u.be und PeerTube Kurzlinks hinzugefügt +Neu: +• Option „Zur Wiedergabeliste hinzufügen“ zum Freigabemenü hinzugefügt +• Unterstützung für y2u.be- und PeerTube-Kurzlinks hinzugefügt -Verbessert -- Playback-Speed-Controls kompakter gemacht -- Feed hebt jetzt neue Elemente hervor -- "Beobachtete Artikel anzeigen" Option im Feed wird nun gespeichert +Verbessert: +• Playback-Speed-Controls kompakter gemacht +• Feed hebt jetzt neue Elemente hervor +• „Beobachtete Artikel anzeigen“-Option im Feed wird nun gespeichert -Behoben -- Extraktion von YouTube Likes und Dislikes behoben -- Automatische Wiederholung nach Rückkehr aus dem Hintergrund behoben +Behoben: +• Extraktion von YouTube Likes und Dislikes behoben +• Automatische Wiederholung nach Rückkehr aus dem Hintergrund behoben Und vieles mehr diff --git a/fastlane/metadata/android/de/changelogs/986.txt b/fastlane/metadata/android/de/changelogs/986.txt new file mode 100644 index 000000000..044365eb8 --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/986.txt @@ -0,0 +1,16 @@ +Neu: +• Benachrichtigungen für neue Streams +• Nahtloser Übergang zwischen Hintergrund- und Videoplayer +• Änderung der Tonhöhe um Halbtöne +• Warteschlange des Hauptplayers an Wiedergabeliste anfügen + +Verbessert: +• Geschwindigkeit/Tonhöhenschrittgröße speichern +• Anfängliche lange Videoplayer-Pufferung verringert +• Player-UI für Android TV +• Löschbestätigung für alle heruntergeladenen Dateien + +Behoben: +• Medienschaltfläche blendet die Steuerelemente des Players nicht aus +• Rücksetzung der Wiedergabe bei Änderung des Playertyps +• Drehung des Wiedergabelisten-Dialogs diff --git a/fastlane/metadata/android/de/changelogs/987.txt b/fastlane/metadata/android/de/changelogs/987.txt index a857b1caa..f7bc9bd80 100644 --- a/fastlane/metadata/android/de/changelogs/987.txt +++ b/fastlane/metadata/android/de/changelogs/987.txt @@ -1,12 +1,12 @@ -Neu -- Unterstützung anderer Übertragungsmethoden als progressives HTTP: schnellere Ladezeit der Wiedergabe, Korrekturen für PeerTube und SoundCloud, Wiedergabe von kürzlich beendeten YouTube-Livestreams -- Schaltfläche "Hinzufügen" zum Hinzufügen einer entfernten Wiedergabeliste zu einer lokalen Wiedergabeliste -- Bildvorschau im Android 10+ Teilen-Dialog +Neu: +• Unterstützung anderer Übertragungsmethoden als progressives HTTP: schnellere Ladezeit der Wiedergabe, Korrekturen für PeerTube und SoundCloud, Wiedergabe von kürzlich beendeten YouTube-Livestreams +• Schaltfläche um entfernte Wiedergabeliste einer lokalen Wiedergabeliste hinzuzufügen +• Bildvorschau im Android 10+ Teilen-Dialog -Verbesserte -- Verbesserung des Dialogs für Wiedergabewerte -- Import/Export-Schaltflächen für Abonnements in das Drei-Punkte-Menü verschieben +Verbessert: +• Wiedergabewerte-Dialog +• Import/Export-Schaltflächen für Abonnements in das Drei-Punkte-Menü verschoben -Behoben -- Fix: Entfernen vollständig angesehener Videos aus der Wiedergabeliste -- Repariert das Thema des Freigabemenüs und den Eintrag "Zur Wiedergabeliste hinzufügen" +Behoben: +• Entfernung von vollständig angesehenen Videos aus der Wiedergabeliste +• Freigabemenü-Design und „Zur Wiedergabeliste hinzufügen“-Eintrag diff --git a/fastlane/metadata/android/de/changelogs/990.txt b/fastlane/metadata/android/de/changelogs/990.txt index f1273a211..a629c8654 100644 --- a/fastlane/metadata/android/de/changelogs/990.txt +++ b/fastlane/metadata/android/de/changelogs/990.txt @@ -1,15 +1,15 @@ -Ab sofort entfällt die Unterstützung für Android 4.4 KitKat, die Mindestversion ist Android 5 Lollipop! +Mit dieser Version entfällt die Unterstützung für Android 4.4 KitKat, die Mindestversion ist nun Android 5 Lollipop! -Neu -- Herunterladen aus dem Langdruck-Menü -- Zukünftige Videos im Feed ausblenden -... +Neu: +• Herunterladen aus dem Langdruckmenü +• Zukünftige Videos im Feed ausblenden +• Lokale Wiedergabelisten teilen -Verbessert -- Refaktorierung des Player-Codes in kleine Komponenten: weniger RAM-Verbrauch, weniger Bugs -- Verbesserter Skalierungsmodus für Miniaturansichten -... +Verbessert: +• Player-Code in kleine Komponenten refaktorisiert: weniger RAM-Verbrauch, weniger Bugs +• Skalierungsmodus für Miniaturansicht +… -Behoben -- Behebung verschiedener Probleme mit der Player-Benachrichtigung: veraltete/fehlende Medieninformationen, verzerrte Miniaturansicht -... +Behoben: +• Verschiedene Probleme mit Player-Benachrichtigung: veraltete/fehlende Medieninfos, verzerrte Miniaturansicht +… diff --git a/fastlane/metadata/android/de/changelogs/991.txt b/fastlane/metadata/android/de/changelogs/991.txt index 3a8cae2cb..d2faadae7 100644 --- a/fastlane/metadata/android/de/changelogs/991.txt +++ b/fastlane/metadata/android/de/changelogs/991.txt @@ -1,13 +1,13 @@ -Neu -- Schaltfläche "Im Browser öffnen" im Fehlerbedienfeld hinzugefügt -- Option zur Anzeige von Kanalgruppen als Liste hinzugefügt -- [YouTube] Langes Klicken auf Streamsegmente zum Teilen der Zeitstempel-URL -- Schaltfläche "Warteschlange abspielen" zum Mini-Player hinzugefügt +Neu: +• Neue Schaltfläche "Im Browser öffnen" im Fehler-Fenster +• Anzeigeoption von Kanalgruppen als Liste +• [YouTube] Langer Klick auf Streamsegmente um Zeitstempel-URL zu teilen +• Schaltfläche „Warteschlange abspielen“ im Mini-Player -Verbessert -- Isländische Lokalisierung hinzugefügt, viele Übersetzungen aktualisiert -- Viele interne Verbesserungen +Verbessert: +• Isländische Lokalisierung hinzugefügt, viele Übersetzungen aktualisiert +• Viele interne Verbesserungen -Behoben -- Mehrere Abstürze behoben -- [YouTube] Behebung von Problemen beim Laden von Kanälen... +Behoben: +• Mehrere Abstürze behoben +• [YouTube] Fehlerbehebung für Laden von Kanälen, nicht zugeordnete Feeds und Wiedergabe in einigen Ländern diff --git a/fastlane/metadata/android/de/changelogs/992.txt b/fastlane/metadata/android/de/changelogs/992.txt new file mode 100644 index 000000000..f0993d993 --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/992.txt @@ -0,0 +1,17 @@ +Neu: +• Anzahl der Abonnenten in den Videodetails +• Herunterladen aus der Warteschlange +• Dauerhaftes Einstellen einer Wiedergabelisten-Miniaturansicht +• Hashtags und Links lang drücken +• Kartenansicht-Modus + +Verbessert: +• Größere Schaltfläche um Mini-Player zu schließen +• Glattere Miniaturansicht-Skalierung +• Android 13 (API 33) +• Suchen hält den Player nicht mehr an + +Behoben: +• Overlay auf DeX/Maus +• Hintergrundplayer ohne separate Audiostreams +• YouTube-Korrekturen und mehr… diff --git a/fastlane/metadata/android/es/changelogs/992.txt b/fastlane/metadata/android/es/changelogs/992.txt new file mode 100644 index 000000000..bdbd0ccba --- /dev/null +++ b/fastlane/metadata/android/es/changelogs/992.txt @@ -0,0 +1,17 @@ +Nuevo +• Número de suscriptores en los detalles del video +• Descarga desde la cola +• Establecer permanentemente una miniatura de lista de reproducción +• Hashtags y enlaces con pulsación de larga duración +• Modo de vista de tarjeta + +Mejorado +• Botón de cierre del minirreproductor más grande +• Reducción de escala de miniaturas más suave +• Objetivo Android 13 (API 33) +• Buscar ya no detiene el reproductor + +Arreglos +• Solucionar superposición en DeX/ratón +• Permitir reproductor de fondo sin transmisiones de audio separadas +• Varias correcciones de YouTube y más… diff --git a/fastlane/metadata/android/eu/changelogs/992.txt b/fastlane/metadata/android/eu/changelogs/992.txt new file mode 100644 index 000000000..5b0dd96ba --- /dev/null +++ b/fastlane/metadata/android/eu/changelogs/992.txt @@ -0,0 +1,17 @@ +Zer berri +• Harpidetza kopurua bideoen xehetasunetan +• Ilaratik deskargatu +• Erreprodukzio-zerrendei betirako izango den miniatura ezarri +• Luze sakatu traola eta estekentzako +• Txartel-bista modua + +Hobekuntzak +• Mini-erreproduzitzailearen ixteko botoi handiago bat +• Miniaturen eskala murrizketa arinagoa +• Android 13 (API 33) +• Bilaketak ez du erreprodukzioa geldiaraziko + +Konponketak +• DeX/saguaren gainezarpena konpondua +• Bigarren planoko erreprodukzioa baimendu bereizitako bi audio-jariorik gabe +• YouTube-kin zeuden arazoak konpondu eta are gehiago… diff --git a/fastlane/metadata/android/hi/changelogs/64.txt b/fastlane/metadata/android/hi/changelogs/64.txt new file mode 100644 index 000000000..65e1f16a7 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/64.txt @@ -0,0 +1,8 @@ +### सुधार +- मोबाइल डेटा का उपयोग करते समय वीडियो की गुणवत्ता को सीमित करने की क्षमता को जोड़ा गया। #1339 +- सत्र # 1442 के लिए चमक याद रखें +- कमजोर सीपीयू # 1431 के लिए डाउनलोड प्रदर्शन में सुधार +- मीडिया सत्र # 1433 के लिए समर्थन जोड़ें (काम कर रहा है) + +### फिक्स +- डाउनलोड खोलने पर क्रैश ठीक करें (रिलीज बिल्ड के लिए अब उपलब्ध है) # 1441 diff --git a/fastlane/metadata/android/hi/changelogs/65.txt b/fastlane/metadata/android/hi/changelogs/65.txt new file mode 100644 index 000000000..8570a056a --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/65.txt @@ -0,0 +1,26 @@ +### Improvements + +- Disable burgermenu icon animation #1486 +- undo delete of downloads #1472 +- Download option in share menu #1498 +- Added share option to long tap menu #1454 +- Minimize main player on exit #1354 +- Library version update and database backup fix #1510 +- ExoPlayer 2.8.2 Update #1392 + - Reworked the playback speed control dialog to support different step sizes for faster speed change. + - Added a toggle to fast-forward during silences in playback speed control. This should be helpful for audiobooks and certain music genres, and can bring a true seamless experience (and can break a song with lots of silences =\\). + - Refactored media source resolution to allow passing metadata alongside media internally in the player, rather than doing so manually. Now we have a single source of metadata and is directly available when playback starts. + - Fixed remote playlist metadata not updating when new metadata is available when playlist fragment is opened. + - Various UI fixes: #1383, background player notification controls now always white, easier to shutdown popup player through flinging +- Use new extractor with refactored architecture for multiservice + +### Fixes + +- Fix #1440 Broken Video Info Layout #1491 +- View history fix #1497 + - #1495, by updating the metadata (thumbnail, title and video count) as soon as the user access the playlist. + - #1475, by registering a view in the database when the user starts a video on external player on detail fragment. +- Fix creen timeout in case of popup mode. #1463 (Fixed #640) +- Main video player fix #1509 + - [#1412] Fixed repeat mode causing player NPE when new intent is received while player activity is in background. + - Fixed minimizing player to popup does not destroy player when popup permission is not granted. diff --git a/fastlane/metadata/android/hi/changelogs/66.txt b/fastlane/metadata/android/hi/changelogs/66.txt new file mode 100644 index 000000000..30c20b0e8 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/66.txt @@ -0,0 +1,33 @@ +# Changelog of v0.13.7 + +### Fixed +- Fix sort filter issues of v0.13.6 + +# Changelog of v0.13.6 + +### Improvements + +- Disable burgermenu icon animation #1486 +- undo delete of downloads #1472 +- Download option in share menu #1498 +- Added share option to long tap menu #1454 +- Minimize main player on exit #1354 +- Library version update and database backup fix #1510 +- ExoPlayer 2.8.2 Update #1392 + - Reworked the playback speed control dialog to support different step sizes for faster speed change. + - Added a toggle to fast-forward during silences in playback speed control. This should be helpful for audiobooks and certain music genres, and can bring a true seamless experience (and can break a song with lots of silences =\\). + - Refactored media source resolution to allow passing metadata alongside media internally in the player, rather than doing so manually. Now we have a single source of metadata and is directly available when playback starts. + - Fixed remote playlist metadata not updating when new metadata is available when playlist fragment is opened. + - Various UI fixes: #1383, background player notification controls now always white, easier to shutdown popup player through flinging +- Use new extractor with refactored architecture for multiservice + +### Fixes + +- Fix #1440 Broken Video Info Layout #1491 +- View history fix #1497 + - #1495, by updating the metadata (thumbnail, title and video count) as soon as the user access the playlist. + - #1475, by registering a view in the database when the user starts a video on external player on detail fragment. +- Fix creen timeout in case of popup mode. #1463 (Fixed #640) +- Main video player fix #1509 + - [#1412] Fixed repeat mode causing player NPE when new intent is received while player activity is in background. + - Fixed minimizing player to popup does not destroy player when popup permission is not granted. diff --git a/fastlane/metadata/android/hi/changelogs/68.txt b/fastlane/metadata/android/hi/changelogs/68.txt new file mode 100644 index 000000000..238b1e0b1 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/68.txt @@ -0,0 +1,31 @@ +# changes of v0.14.1 + +### Fixed +- Fixed failed to decrypt video url #1659 +- Fixed description link not extract well #1657 + +# changes of v0.14.0 + +### New +- New Drawer design #1461 +- New customizable front page #1461 + +### Improvements +- Reworked Gesture controls #1604 +- New way to close the popup player #1597 + +### Fixed +- Fix error when subscription count is not available. Closes #1649. + - Show "Subscriber count not available" in those cases +- Fix NPE when a YouTube playlist is empty +- Quick fix for the kiosks in SoundCloud +- Refactor and bugfix #1623 + - Fix Cyclic search result #1562 + - Fix Seek bar not statically lay outed + - Fix YT Premium video are not blocked correctly + - Fix Videos sometimes not loading (due to DASH parsing) + - Fix links in video description + - Show warning when someone tries to download to external sdcard + - fix nothing shown exception triggers report + - thumbnail not shown in background player for android 8.1 [see here](https://github.com/TeamNewPipe/NewPipe/issues/943) +- Fix registering of broadcast receiver. Closes #1641. diff --git a/fastlane/metadata/android/hi/changelogs/69.txt b/fastlane/metadata/android/hi/changelogs/69.txt new file mode 100644 index 000000000..c8262d1b0 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/69.txt @@ -0,0 +1,19 @@ +### New +- Long-tap delete and share in subscriptions #1516 +- Tablet UI and grid list layout #1617 + +### Improvements +- store and reload the last used aspect ratio #1748 +- Enable linear layout in Downloads activity with full video names #1771 +- Delete and share subscriptions directly from within the subscriptions tab #1516 +- Enqueuing now triggers video playing if the play queue has already ended #1783 +- Separate settings for volume and brightness gestures #1644 +- Add support for Localization #1792 + +### Fixes +- Fix time parsing for . format, so NewPipe can be used in Finland +- Fix subscription count +- Add foreground service permission for API 28+ devices #1830 + +### Known Bugs +- Playback state can not be saved on Android P diff --git a/fastlane/metadata/android/hi/changelogs/70.txt b/fastlane/metadata/android/hi/changelogs/70.txt new file mode 100644 index 000000000..ad87a4409 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/70.txt @@ -0,0 +1,25 @@ +ATTENTION: This version probably is a bugfest, just like the last one. However due to the full shutdown since the 17. a broken version is better then no version. Right? ¯\_(ツ)_/¯ + +### Improvements +* downloaded files can now be opened with one click #1879 +* drop support for android 4.1 - 4.3 #1884 +* remove old player #1884 +* remove streams from current play queue by swiping them to the right #1915 +* remove auto queued stream when a new stream is enqueued manually #1878 +* Postprocessing for downloads and implement missing features #1759 by @kapodamy + * Post-processing infrastructure + * Proper error handling "infrastructure" (for downloader) + * Queue instead of multiple downloads + * Move serialized pending downloads (`.giga` files) to app data + * Implement max download retry + * Proper multi-thread download pausing + * Stop downloads when swicthing to mobile network (never works, see 2nd point) + * Save the thread count for next downloads + * A lot of incoherences fixed + +### Fixed +* Fix crash with default resolution set to best and limited mobile data resolution #1835 +* pop-up player crash fixed #1874 +* NPE when trying to open background player #1901 +* Fix for inserting new streams when auto queuing is enabled #1878 +* Fixed the decypering shuttown issue diff --git a/fastlane/metadata/android/hi/changelogs/71.txt b/fastlane/metadata/android/hi/changelogs/71.txt new file mode 100644 index 000000000..5facfc05f --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/71.txt @@ -0,0 +1,10 @@ +### Improvements +* Add app update notification for GitHub build (#1608 by @krtkush) +* Various improvements to the downloader (#1944 by @kapodamy): + * add missing white icons and use hardcored way for change the icon colors + * check if the iterator is initialized (fixes #2031) + * allow retry downloads with "post-processing failed" error in the new muxer + * new MPEG-4 muxer fixing non-synchronous video and audio streams (#2039) + +### Fixed +* YouTube live streams stop playing after a short time (#1996 by @yausername) diff --git a/fastlane/metadata/android/hi/changelogs/730.txt b/fastlane/metadata/android/hi/changelogs/730.txt new file mode 100644 index 000000000..e4f260cd2 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/730.txt @@ -0,0 +1,2 @@ +# हल किया गया +- हॉट फिक्स डिक्रिप्ट फ़ंक्शन त्रुटि फिर से। diff --git a/fastlane/metadata/android/hi/changelogs/740.txt b/fastlane/metadata/android/hi/changelogs/740.txt new file mode 100644 index 000000000..c795978a8 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/740.txt @@ -0,0 +1,23 @@ +

        Improvements

        +
          +
        • make links in comments clickable, increase text size
        • +
        • seek on clicking timestamp links in comments
        • +
        • show preferred tab based on recently selected state
        • +
        • add playlist to queue when long clicking on 'Background' in playlist window
        • +
        • search for shared text when it is not an URL
        • +
        • add "share at current time" button to the main video player
        • +
        • add close button to main player when video queue is finished
        • +
        • add "Play directly in Background" to longpress menu for video list items
        • +
        • improve English translations for Play/Enqueue commands
        • +
        • small performance improvements
        • +
        • remove unused files
        • +
        • update ExoPlayer to 2.9.6
        • +
        • add support for Invidious links
        • +
        +

        Fixed

        +
          +
        • fixed scroll w/ comments and related streams disabled
        • +
        • fixed CheckForNewAppVersionTask being executed when it shouldn't
        • +
        • fixed youtube subscription import: ignore ones with invalid url and keep ones with empty title
        • +
        • fix invalid YouTube url: signature tag name is not always "signature" preventing streams from loading
        • +
        diff --git a/fastlane/metadata/android/hi/changelogs/750.txt b/fastlane/metadata/android/hi/changelogs/750.txt new file mode 100644 index 000000000..39b77f7c3 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/750.txt @@ -0,0 +1,22 @@ +New +Playback resume #2288 +• Resume streams where you stopped last time +Downloader Enhancements #2149 +• Use Storage Access Framework to store downloads on external SD-cards +• New mp4 muxer +• Optionally change the download directory before starting a download +• Respect metered networks + + +Improved +• Removed gema strings #2295 +• Handle (auto)rotation changes during activity lifecycle #2444 +• Make long-press menus consistent #2368 + +Fixed +• Fixed selected subtitle track name not being shown #2394 +• Do not crash when check for app update fails (GitHub version) #2423 +• Fixed downloads stuck at 99.9% #2440 +• Update play queue metadata #2453 +• [SoundCloud] Fixed crash when loading playlists TeamNewPipe/NewPipeExtractor#170 +• [YouTube] Fixed duration can not be paresd TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/hi/changelogs/760.txt b/fastlane/metadata/android/hi/changelogs/760.txt new file mode 100644 index 000000000..6e000f6d9 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/760.txt @@ -0,0 +1,43 @@ +Changes in 0.17.1 + +New +• Thai localization + + +Improved +• Add start playing here action in long-press menus for playlists again #2518 +• Add switch for SAF / legacy file picker #2521 + +Fixed +• Fix disappearing buttons in downloads view when switching apps #2487 +• Fix playback position is stored although watch history is disabled +• Fix reduced performance caused by playback position in list views #2517 +• [Extractor] Fix ReCaptchaActivity #2527, TeamNewPipe/NewPipeExtractor#186 +• [Extractor] [YouTube] Fix casual search error when playlists are in results TeamNewPipe/NewPipeExtractor#185 + + + +Changes in 0.17.0 + +New +Playback resume #2288 +• Resume streams where you stopped last time +Downloader Enhancements #2149 +• Use Storage Access Framework to store downloads on external SD-cards +• New mp4 muxer +• Optionally change the download directory before starting a download +• Respect metered networks + + +Improved +• Removed gema strings #2295 +• Handle (auto)rotation changes during activity lifecycle #2444 +• Make long-press menus consistent #2368 + +Fixed +• Fixed selected subtitle track name not being shown #2394 +• Do not crash when check for app update fails (GitHub version) #2423 +• Fixed downloads stuck at 99.9% #2440 +• Update play queue metadata #2453 +• [SoundCloud] Fixed crash when loading playlists TeamNewPipe/NewPipeExtractor#170 +• [YouTube] Fixed duration can not be paresd TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/hi/changelogs/770.txt b/fastlane/metadata/android/hi/changelogs/770.txt new file mode 100644 index 000000000..c775d63fc --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/770.txt @@ -0,0 +1,4 @@ +0.17.2 में परिवर्तन + +फिक्स +• फिक्स कोई वीडियो उपलब्ध नहीं था diff --git a/fastlane/metadata/android/hi/changelogs/780.txt b/fastlane/metadata/android/hi/changelogs/780.txt new file mode 100644 index 000000000..9100d7335 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/780.txt @@ -0,0 +1,12 @@ +Changes in 0.17.3 + +Improved +• Added option to clear playback states #2550 +• Show hidden directories in the file picker #2591 +• Support URLs from `invidio.us` instances to be opened with NewPipe #2488 +• Add support for `music.youtube.com` URLs TeamNewPipe/NewPipeExtractor#194 + +Fixed +• [YouTube] Fixed 'java.lang.IllegalArgumentException #192 +• [YouTube] Fixed live streams not working TeamNewPipe/NewPipeExtractor#195 +• Fixed performance problem in android pie when downloading a stream #2592 diff --git a/fastlane/metadata/android/hi/changelogs/790.txt b/fastlane/metadata/android/hi/changelogs/790.txt new file mode 100644 index 000000000..ec77b2acb --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/790.txt @@ -0,0 +1,14 @@ +Improved +• Add more titles to improve accessibility for blind people #2655 +• Make language of download folder setting more consistent and less ambiguous #2637 + +Fixed +• Check if last byte in the block is downloaded #2646 +• Fixed scrolling in video detail fragment #2672 +• Remove double search clear box animations to one #2695 +• [SoundCloud] Fix client_id extraction #2745 + +Development +• Add missing dependencies inherited from NewPipeExtractor into NewPipe #2535 +• Migrate to AndroidX #2685 +• Update to ExoPlayer 2.10.6 #2697, #2736 diff --git a/fastlane/metadata/android/hi/changelogs/800.txt b/fastlane/metadata/android/hi/changelogs/800.txt new file mode 100644 index 000000000..332b5c994 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/800.txt @@ -0,0 +1,27 @@ +New +• PeerTube support without P2P (#2201) [Beta]: + ◦ Watch and download videos from PeerTube instances + ◦ Add instances in the settings to access the complete PeerTube world + ◦ There might be problems with SSL handshakes on Android 4.4 and 7.1 when accessing certain instances resulting in a network error. + +• Downloader (#2679): + ◦ Calculate download ETA + ◦ Download opus (webm files) as ogg + ◦ Recover expired download links to resume downloads after a long pause + +Improved +• Make the KioskFragment aware of changes in the preferred content country and improve performance of all main tabs #2742 +• Use new Localization and Downloader implementations from extractor #2713 +• Make "Default kiosk" string translatable +• Black navigation bar for black theme #2569 + +Fixed +• Fixed a bug that could not move the popup player if another finger was placed while moving the popup player #2772 +• Allow playlists missing an uploader and fix crashes related to this problem #2724, TeamNewPipe/NewPipeExtractor#219 +• Enabling TLS1.1/1.2 on Android 4.4 devices (API 19/KitKat) to fix TLS handshake with MediaCCC and some PeerTube instances #2792 +• [SoundCloud] Fixed client_id extraction TeamNewPipe/NewPipeExtractor#217 +• [SoundCloud] Fix audio stream extraction + +Development +• Update ExoPlayer to 2.10.8 #2791, #2816 +• Update Gradle to 3.5.1 and add Kotlin support #2714 diff --git a/fastlane/metadata/android/hi/changelogs/810.txt b/fastlane/metadata/android/hi/changelogs/810.txt new file mode 100644 index 000000000..c75855fd1 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/810.txt @@ -0,0 +1,19 @@ +New +• Show video thumbnail on the lock screen when playing in the background + +Improved +• Add local playlist to queue when long pressing on background / popup button +• Make main page tabs scrollable and hide when there is only a single tab +• Limit amount of notification thumbnail updates in background player +• Add dummy thumbnail for empty local playlists +• Use *.opus file extension instead of *.webm and show "opus" in format label instead of "WebM Opus" in the download dropdown +• Add button to delete downloaded files or download history in "Downloads" +• [YouTube] Add support to /c/shortened_url channel links + +Fixed +• Fixed multiple issues when sharing a video to NewPipe and downloading its streams directly +• Fixed player access out of its creation thread +• Fixed search result paging +• [YouTube] Fixed switching on null causing NPE +• [YouTube] Fixed viewing comments when opening an invidio.us url +• [SoundCloud] Updated client_id diff --git a/fastlane/metadata/android/hi/changelogs/820.txt b/fastlane/metadata/android/hi/changelogs/820.txt new file mode 100644 index 000000000..d99e5f004 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/820.txt @@ -0,0 +1 @@ +फिक्स्ड डिक्रिप्ट फ़ंक्शन नाम रेगेक्स YouTube को अनुपयोगी बना रहा। diff --git a/fastlane/metadata/android/hi/changelogs/830.txt b/fastlane/metadata/android/hi/changelogs/830.txt new file mode 100644 index 000000000..b8c338f9a --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/830.txt @@ -0,0 +1 @@ +साउंडक्लाउड समस्याओं को ठीक करने के लिए साउंडक्लाउड क्लाइंट_आईडी अपडेट किया गया। diff --git a/fastlane/metadata/android/hi/changelogs/840.txt b/fastlane/metadata/android/hi/changelogs/840.txt new file mode 100644 index 000000000..95dc80844 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/840.txt @@ -0,0 +1,22 @@ +New +• Added language selector to change the app language +• Added send to Kodi button to player collapsible menu +• Added ability to copy comments on long press + +Improved +• Fix ReCaptcha activity and correctly save obtained cookies +• Removed dot-menu in favour of drawer and hide history button when watch history is not enabled in settings +• Ask for display over other apps permission in settings correctly on Android 6 and later +• Rename local playlist by long-clicking in BookmarkFragment +• Various PeerTube improvements +• Improved several English source strings + +Fixed +• Fixed player starting again although it is paused when option "minimize on app switch" enabled and NewPipe is minimized +• Fix initial brightness value for gesture +• Fixed .srt subtitle downloads containing not all line breaks +• Fixed download to SD card failing because some Android 5 devices are not CTF compliant +• Fixed downloading on Android KitKat +• Fixed corrupt video .mp4 file being recognized as audio file +• Fixed multiple localization problems, including wrong Chinese language codes +• [YouTube] Timestamps in description are clickable again diff --git a/fastlane/metadata/android/hi/changelogs/850.txt b/fastlane/metadata/android/hi/changelogs/850.txt new file mode 100644 index 000000000..09f564614 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/850.txt @@ -0,0 +1 @@ +इस रिलीज़ में YouTube वेबसाइट संस्करण अपडेट किया गया था। पुराना वेबसाइट संस्करण मार्च में बंद होने जा रहा है और इसलिए आपको न्यूपाइप को अपग्रेड करना होगा। diff --git a/fastlane/metadata/android/hi/changelogs/860.txt b/fastlane/metadata/android/hi/changelogs/860.txt new file mode 100644 index 000000000..24a2297a7 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/860.txt @@ -0,0 +1,7 @@ +उन्नत +• सेव करें और रिस्टोर करें कि क्या पिच और टेंपो अनहुक हैं या नहीं +• प्लेयर में सपोर्ट डिस्प्ले कटआउट +• गोल दृश्य और ग्राहकों की संख्या +• कम डेटा का उपयोग करने के लिए YouTube को अनुकूलित किया गया + +इस रिलीज़ में YouTube से संबंधित 15 से अधिक बग ठीक किए गए थे। diff --git a/fastlane/metadata/android/hi/changelogs/870.txt b/fastlane/metadata/android/hi/changelogs/870.txt new file mode 100644 index 000000000..849cc317d --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/870.txt @@ -0,0 +1,2 @@ +यह एक हॉटफिक्स रिलीज़ है जो न्यूपाइप को बिना किसी बड़ी परेशानी के फिर से साउंडक्लाउड का उपयोग करने की अनुमति देता है। +साउंडक्लाउड के v2 एपीआई का उपयोग अब एक्सट्रैक्टर में किया जाता है और अमान्य क्लाइंट आईडी का पता लगाने में सुधार किया गया है। diff --git a/fastlane/metadata/android/hi/changelogs/900.txt b/fastlane/metadata/android/hi/changelogs/900.txt new file mode 100644 index 000000000..78a617e47 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/900.txt @@ -0,0 +1,14 @@ +New +• Subscription groups and sorted feeds +• Mute button in players + +Improved +• Allow opening music.youtube.com and media.ccc.de links in NewPipe +• Relocate two settings from Appearance to Content +• Hide 5, 15, 25 second seek options if inexact seek is enabled + +Fixed +• some WebM videos are not seekable +• database backup on Android P +• crash when sharing a downloaded file +• tons of YouTube extraction issue and more ... diff --git a/fastlane/metadata/android/hi/changelogs/910.txt b/fastlane/metadata/android/hi/changelogs/910.txt new file mode 100644 index 000000000..18cf51131 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/910.txt @@ -0,0 +1 @@ +फिक्स्ड डेटाबेस माइग्रेशन जो न्यूपाइप को कुछ दुर्लभ मामलों में शुरू होने से रोकता है। diff --git a/fastlane/metadata/android/hi/changelogs/920.txt b/fastlane/metadata/android/hi/changelogs/920.txt new file mode 100644 index 000000000..1484a6bd0 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/920.txt @@ -0,0 +1,9 @@ +Improved + +• Added upload date and view count on stream grid items +• Improvements for the drawer header layout + +Fixed + +• Fixed mute button causing crashes on API 19 +• Fixed downloading of long 1080p 60fps videos diff --git a/fastlane/metadata/android/hi/changelogs/930.txt b/fastlane/metadata/android/hi/changelogs/930.txt new file mode 100644 index 000000000..b23b01ea8 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/930.txt @@ -0,0 +1,19 @@ +New +• Search on YouTube Music +• Basic Android TV support + +Improved +• Added the ability to remove all watched videos from a local playlist +• Show message when content isn't supported yet instead of crashing +• Improved popup player resize with pinch gestures +• Enqueue streams on long press on background and popup buttons in channel +• Improved size handling of the drawer header title + +Fixed +• Fixed age restricted content setting not working +• Fixed certain kinds of reCAPTCHAs +• Fixed crash when opening bookmarks while playlist is `null` +• Fixed detection of network related exceptions +• Fixed visibility of group sort button in the subscriptions fragment + +and more diff --git a/fastlane/metadata/android/hi/changelogs/940.txt b/fastlane/metadata/android/hi/changelogs/940.txt new file mode 100644 index 000000000..f9530bc68 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/940.txt @@ -0,0 +1,16 @@ +New +• Add support for SoundCloud comments +• Add YouTube restricted mode setting +• Show PeerTube parent channel details + +Improved +• Show Kore button only for supported services +• Block player gestures that begin at the NavigationBar or StatusBar +• Change retry & subscribe buttons background color based on service color + +Fixed +• Fix download dialog freeze +• Open in browser button now really opens in browser +• Fix crash on opening videos and "Could not play this stream" + +and more diff --git a/fastlane/metadata/android/hi/changelogs/950.txt b/fastlane/metadata/android/hi/changelogs/950.txt new file mode 100644 index 000000000..4f47a9959 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/950.txt @@ -0,0 +1,4 @@ +यह रिलीज़ तीन छोटे सुधार लाता है: +• Android 10+ पर फिक्स्ड स्टोरेज एक्सेस +• फिक्स्ड ओपनिंग कियोस्क +• लंबे वीडियो की निश्चित अवधि पार्सिंग diff --git a/fastlane/metadata/android/hi/changelogs/951.txt b/fastlane/metadata/android/hi/changelogs/951.txt new file mode 100644 index 000000000..e933e5cbd --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/951.txt @@ -0,0 +1,17 @@ +New +• Add search for subscription picker in the feed group dialog +• Add filter to the feed group dialog to show only ungrouped subscriptions +• Add playlist tab to main page +• Fast forward/rewind in background/pop-up player queue +• Display search suggestion: did you mean & showing result for + +Improved +• Drop writing application metadata in muxed files +• Do not remove failed streams from the queue +• Update status bar color to match toolbar color + +Fixed +• Fixed audio/video desync caused by floating point cumulative errors +• [PeerTube] Handle deleted comments + +and more diff --git a/fastlane/metadata/android/hi/changelogs/952.txt b/fastlane/metadata/android/hi/changelogs/952.txt new file mode 100644 index 000000000..d228e3a2d --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/952.txt @@ -0,0 +1,7 @@ +Improved +• Auto-play is available for all services (instead of only for YouTube) + +Fixed +• Fixed related streams by supporting YouTube's new continuations +• Fixed age restricted YouTube videos +• [Android TV] Fixed lingering focus highlight overlay diff --git a/fastlane/metadata/android/hi/changelogs/954.txt b/fastlane/metadata/android/hi/changelogs/954.txt index 36536b8c7..87df3fb9c 100644 --- a/fastlane/metadata/android/hi/changelogs/954.txt +++ b/fastlane/metadata/android/hi/changelogs/954.txt @@ -1,8 +1,9 @@ • नए एप्लिकेशन वर्कफ़्लो: विस्तार पृष्ठ पर वीडियो चलाएं, प्लेयर को छोटा करने के लिए नीचे स्वाइप करें -• मीडियास्टाइल सूचनाएँ: सूचनाएँ, प्रदर्शन सुधार में अनुकूलन योग्य क्रियाएँ +• मीडियास्टाइल सूचनाएँ: सूचनाओं में अनुकूलन योग्य क्रियाएं, प्रदर्शन सुधार • डेस्कटॉप ऐप के रूप में न्यूपाइप का उपयोग करते समय मूल आकार परिवर्तन + • असमर्थित यूआरएल टोस्ट के मामले में खुले विकल्पों के साथ संवाद दिखाएं • रिमोट सुझावों के अनुपलब्धता पर अनुभव में सुधार • 720p60 (इन-ऐप प्लेयर) और 480p (पॉप-अप प्लेयर) के लिए डिफ़ॉल्ट वीडियो की गुणवत्ता वृद्धि - -• त्रुटियों में सुधार और बोहोत कुछ + +• त्रुटियों में सुधार और बहुत कुछ diff --git a/fastlane/metadata/android/hi/changelogs/959.txt b/fastlane/metadata/android/hi/changelogs/959.txt index 601c655ac..a8879fec2 100644 --- a/fastlane/metadata/android/hi/changelogs/959.txt +++ b/fastlane/metadata/android/hi/changelogs/959.txt @@ -1,5 +1,3 @@ त्रुटि रिपोर्टर खोलने के बाद क्रैश का निश्चित अंतहीन लूप। -पीयरट्यूब उदाहरणों की अद्यतन सूची जो न्यूपाइप द्वारा स्वचालित रूप से खोली जा सकती है। -अपडेट किए गए अनुवाद।त्रुटि रिपोर्टर खोलने के बाद क्रैश का निश्चित अंतहीन लूप। -पीयरट्यूब उदाहरणों की अद्यतन सूची जो न्यूपाइप द्वारा स्वचालित रूप से खोली जा सकती है। +पीरट्यूब इंस्टेंस सूची जो निऊपाईप द्वारा स्वचालित रूप से खोली जा सकती है। अपडेट किए गए अनुवाद। diff --git a/fastlane/metadata/android/hi/changelogs/963.txt b/fastlane/metadata/android/hi/changelogs/963.txt new file mode 100644 index 000000000..06ca8b0e2 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/963.txt @@ -0,0 +1 @@ +• [यूट्यूब] फिक्स्ड निश्चित चैनल निरंतरता diff --git a/fastlane/metadata/android/hi/changelogs/964.txt b/fastlane/metadata/android/hi/changelogs/964.txt new file mode 100644 index 000000000..1238eb876 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/964.txt @@ -0,0 +1,8 @@ +• Added support for chapters in player controls +• [PeerTube] Added Sepia search +• Re-added share button in video detail view and moved stream description into the tab layout +• Disable restoring brightness if brightness gesture is disabled +• Added list item to play video on kodi +• Fixed crash when no default browser is set on some devices and improve share dialogs +• Toggle play/pause with hardware space button in fullscreen player +• [media.ccc.de] Various fixes and improvements diff --git a/fastlane/metadata/android/hi/changelogs/965.txt b/fastlane/metadata/android/hi/changelogs/965.txt new file mode 100644 index 000000000..eaed8c847 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/965.txt @@ -0,0 +1,6 @@ +Fixed crash which occurred when reordering channel groups. +Fixed getting more YouTube videos from channels and playlists. +Fixed getting YouTube comments. +Added support for /watch/, /v/ and /w/ subpaths in YouTube URLs. +Fixed extraction of SoundCloud client id and geo-restricted content. +Added Northern Kurdish localization. diff --git a/fastlane/metadata/android/hi/changelogs/966.txt b/fastlane/metadata/android/hi/changelogs/966.txt new file mode 100644 index 000000000..b7fdc182f --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/966.txt @@ -0,0 +1,14 @@ +New: +• Add a new service: Bandcamp + +Improved: +• Add an option to have the app follow the device theme +• Prevent some crashes by showing an improved error panel +• Show more information on why content in unavailable +• Hardware space button triggers play/pause +• Show "Download started" toast + +Fixed: +• Fix very small thumbnail in video details while playing in the background +• Fix empty title in minimized player +• Fix last resize mode not being restored correctly diff --git a/fastlane/metadata/android/hi/changelogs/967.txt b/fastlane/metadata/android/hi/changelogs/967.txt new file mode 100644 index 000000000..ba416b621 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/967.txt @@ -0,0 +1 @@ +यूरोपीय संघ में YouTube ठीक से काम नहीं कर रहा है। यह एक नई कुकी और गोपनीयता सहमति प्रणाली के कारण हुआ था जिसके लिए न्यूपाइप को एक सहमति कुकी सेट करने की आवश्यकता होती है। diff --git a/fastlane/metadata/android/hi/changelogs/968.txt b/fastlane/metadata/android/hi/changelogs/968.txt new file mode 100644 index 000000000..3972a96c1 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/968.txt @@ -0,0 +1,7 @@ +Added channel details option to long-press menu. +Added functionality to rename Playlist Name from playlist interface. +Allow the user to pause while a video is buffering. +Polished the white theme. +Fixed overlapping fonts when using a larger font size. +Fixed no video on Formuler and Zephier devices. +Fixed various crashes. diff --git a/fastlane/metadata/android/hi/changelogs/969.txt b/fastlane/metadata/android/hi/changelogs/969.txt new file mode 100644 index 000000000..59b2488e9 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/969.txt @@ -0,0 +1,8 @@ +• Allow installation on external storage +• [Bandcamp] Added support for displaying the first three comments on a stream +• Only show 'download has started' toast when download is started +• Do not set reCaptcha cookie when there is no cookie stored +• [Player] Improve cache performance +• [Player] Fixed player not automatically playing +• Dismiss previous Snackbars when deleting downloads +• Fixed trying to delete object not in list diff --git a/fastlane/metadata/android/hi/changelogs/970.txt b/fastlane/metadata/android/hi/changelogs/970.txt new file mode 100644 index 000000000..f4ff5fe34 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/970.txt @@ -0,0 +1,11 @@ +New +• Show content metadata (tags, categories, license, ...) below the description +• Added "Show channel details" option in remote (non-local) playlists +• Added "Open in browser" option to long-press menu + +Fixed +• Fixed rotation crash on video detail page +• Fixed "Play with Kodi" button in player always prompts to install Kore +• Fixed and improved setting import and export paths +• [YouTube] Fixed comment like count +And much more diff --git a/fastlane/metadata/android/hi/changelogs/971.txt b/fastlane/metadata/android/hi/changelogs/971.txt new file mode 100644 index 000000000..48e9ddaa0 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/971.txt @@ -0,0 +1,3 @@ +हॉटफिक्स +• रिबफर के बाद प्लेबैक के लिए बफर बढ़ाएं +• प्लेयर में प्ले-क्यू आइकन पर क्लिक करने पर टैबलेट और टीवी पर क्रैश ठीक किया गया diff --git a/fastlane/metadata/android/hi/changelogs/972.txt b/fastlane/metadata/android/hi/changelogs/972.txt new file mode 100644 index 000000000..318890d60 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/972.txt @@ -0,0 +1,14 @@ +New +Recognize timestamps and hashtags in description +Added manual tablet mode setting +Added ability to hide played items in a feed + +Improved +Support Storage Access Framework properly +Better error handling of unavailable and terminated channels +The Android share sheet for Android 10+ users now shows the content title. +Updated Invidious instances and support Piped links. + +Fixed +[YouTube] Age restricted content +Prevent leaked window Exception when opening choice dialog diff --git a/fastlane/metadata/android/hi/changelogs/973.txt b/fastlane/metadata/android/hi/changelogs/973.txt new file mode 100644 index 000000000..120359a24 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/973.txt @@ -0,0 +1,4 @@ +Hotfix +• Fix thumbnails and titles being trimmed in grid layout, due to a wrong calculation of how many videos can fit in one row +• Fix download dialog disappearing without doing anything if opened from the share menu +• Update a library related to opening external activities such as the Storage Access Framework file picker diff --git a/fastlane/metadata/android/hi/changelogs/974.txt b/fastlane/metadata/android/hi/changelogs/974.txt new file mode 100644 index 000000000..e028a5e0b --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/974.txt @@ -0,0 +1,5 @@ +Hotfix +• Fix buffering issues caused by YouTube throttling +• Fix YouTube comments extraction and crashes with disabled comments +• Fix YouTube music search +• Fix PeerTube livestreams diff --git a/fastlane/metadata/android/hi/changelogs/975.txt b/fastlane/metadata/android/hi/changelogs/975.txt new file mode 100644 index 000000000..8a35a7e28 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/975.txt @@ -0,0 +1,17 @@ +New +• Show a thumbnail preview while seeking +• Detect disabled comments +• Allow marking a feed item as watched +• Show comment hearts + +Improved +• Improve metadata and tags layout +• Apply service color to UI components + +Fixed +• Fix thumbnail in mini player +• Fix endless buffering on duplicate queue items +• Some player fixes like rotation and faster closing +• Fix ReCAPTCHA remaining loaded in background +• Disable clicks while refreshing feed +• Fix some downloader crashes diff --git a/fastlane/metadata/android/hi/changelogs/976.txt b/fastlane/metadata/android/hi/changelogs/976.txt new file mode 100644 index 000000000..4f868872b --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/976.txt @@ -0,0 +1,10 @@ +• Added option to directly open player in fullscreen +• Allow choosing which types of search suggestions to show +• Dark theme now darker + dark splash screen added +• Improved file picker to gray out unwanted files +• Fixed importing YouTube subscriptions +• Replaying a stream requires on tap on the replay button again +• Fixed closing audio session +• [Android TV] Fixed long seekbar jumps when using a DPad + +To see further changes, view the changelog (and blog post) from the Links tab below. diff --git a/fastlane/metadata/android/hi/changelogs/977.txt b/fastlane/metadata/android/hi/changelogs/977.txt new file mode 100644 index 000000000..df2eb6c9e --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/977.txt @@ -0,0 +1,10 @@ +• Added a "play next" button to the long press menu +• Added YouTube shorts path prefix to intent filter +• Fixed Settings import +• Swap seekbar position with player buttons in Queue screen +• Various fixes related to MediasessionManager +• Fixed seekbar not completed after video end +• Disabled media tunneling on RealtekATV +• Expanded minimized player buttons clickable area + +To see further changes, view the changelog (and blog post) from the Links tab below. diff --git a/fastlane/metadata/android/hi/changelogs/978.txt b/fastlane/metadata/android/hi/changelogs/978.txt new file mode 100644 index 000000000..bb032f753 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/978.txt @@ -0,0 +1 @@ +एक नए न्यूपाइप संस्करण के लिए चेक को ठीक किया गया। यह चेक कभी-कभी बहुत जल्दी निष्पादित किया गया था और इसलिए ऐप क्रैश हो गया। इसे अभी ठीक किया जाना चाहिए। diff --git a/fastlane/metadata/android/hi/changelogs/979.txt b/fastlane/metadata/android/hi/changelogs/979.txt new file mode 100644 index 000000000..f6cec22ce --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/979.txt @@ -0,0 +1,2 @@ +- प्लेबैक फिर से शुरू करना +- यह सुनिश्चित करने के लिए सुधार कि सेवा जो यह निर्धारित करती है कि न्यूपाइप को नए संस्करण की जांच करनी चाहिए या नहीं, पृष्ठभूमि में शुरू नहीं हुई है diff --git a/fastlane/metadata/android/hi/changelogs/980.txt b/fastlane/metadata/android/hi/changelogs/980.txt new file mode 100644 index 000000000..bd3086c68 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/980.txt @@ -0,0 +1,13 @@ +New +• Added "Add to playlist" option to share menu +• Added support for y2u.be and PeerTube short links + +Improved +• Made Playback-Speed-Controls more compact +• Feed highlights new items now +• "Show watched items" option in the feed is now saved + +Fixed +• Fixed YouTube likes and dislikes extraction +• Fixed automatic replay after returning from the background +And much more diff --git a/fastlane/metadata/android/hi/changelogs/981.txt b/fastlane/metadata/android/hi/changelogs/981.txt new file mode 100644 index 000000000..a2c1b19b2 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/981.txt @@ -0,0 +1,2 @@ +Android 11+ पर बफ़रिंग के बाद विफल प्लेबैक रिज्यूमे को ठीक करने के लिए MediaParser समर्थन को हटा दिया गया। +प्लेबैक समस्याओं को ठीक करने के लिए Philips QM16XE पर मीडिया टनलिंग अक्षम की गई। diff --git a/fastlane/metadata/android/hi/changelogs/982.txt b/fastlane/metadata/android/hi/changelogs/982.txt new file mode 100644 index 000000000..953fcd801 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/982.txt @@ -0,0 +1 @@ +फिक्स्ड YouTube कोई स्ट्रीम नहीं चला रहा है। diff --git a/fastlane/metadata/android/hi/changelogs/983.txt b/fastlane/metadata/android/hi/changelogs/983.txt new file mode 100644 index 000000000..efbd0557c --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/983.txt @@ -0,0 +1,9 @@ +Add new double-tap-to-seek UI and behaviour +Make settings searchable +Highlight pinned comments as such +Add open-with-app support for FSFE's PeerTube instance +Add error notifications +Fix replay of first queue item on player change +Wait longer when buffering during livestreams before failing +Fix order of local search results +Fix empty item fields in play queue diff --git a/fastlane/metadata/android/hi/changelogs/984.txt b/fastlane/metadata/android/hi/changelogs/984.txt new file mode 100644 index 000000000..3b18b4665 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/984.txt @@ -0,0 +1,7 @@ +Load enough initial items in lists to fill the whole screen and to fix scrolling on tablets and TVs +Fix random crashes while scrolling through lists +Have the player fast seek overlay arc go under the system UI +Revert changes to cutouts when playing in multi window, causing the misplaced player regression on some phones +Increase compileSdk from 30 to 31 +Update error reporting library +Refactor some code in the player diff --git a/fastlane/metadata/android/hi/changelogs/985.txt b/fastlane/metadata/android/hi/changelogs/985.txt new file mode 100644 index 000000000..071ab64e3 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/985.txt @@ -0,0 +1 @@ +फिक्स्ड YouTube कोई स्ट्रीम नहीं चला रहा है diff --git a/fastlane/metadata/android/hi/changelogs/986.txt b/fastlane/metadata/android/hi/changelogs/986.txt new file mode 100644 index 000000000..49f7478e6 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/986.txt @@ -0,0 +1,16 @@ +New +• Notifications for new streams +• Seamless transition between background and video players +• Change pitch by semitones +• Append the main player queue to a playlist + +Improved +• Remember speed/pitch step size +• Mitigate initial long buffering in the video player +• Improve player UI for Android TV +• Confirm before deleting all downloaded files + +Fixed +• Fix media button not hiding player controls +• Fix playback reset on player type change +• Fix rotating the playlist dialog diff --git a/fastlane/metadata/android/hi/changelogs/987.txt b/fastlane/metadata/android/hi/changelogs/987.txt new file mode 100644 index 000000000..c3404e2a2 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/987.txt @@ -0,0 +1,12 @@ +New +• Support delivery methods other than progressive HTTP: faster playback loading time, fixes for PeerTube and SoundCloud, playback of recently-ended YouTube livestreams +• Add button to add a remote playlist to a local one +• Image preview in Android 10+ share sheet + +Improved +• Improve playback parameters dialog +• Move subscription import/export buttons to three-dot menu + +Fixed +• Fix removing fully watched videos from playlist +• Fix share menu theme and "add to playlist" entry diff --git a/fastlane/metadata/android/hi/changelogs/988.txt b/fastlane/metadata/android/hi/changelogs/988.txt new file mode 100644 index 000000000..5689958ad --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/988.txt @@ -0,0 +1,2 @@ +[यूट्यूब] किसी भी वीडियो को चलाने का प्रयास करते समय "कोई स्ट्रीम नहीं मिल सका" त्रुटि को ठीक करें +[यूट्यूब] ठीक करें "निम्न सामग्री इस ऐप पर उपलब्ध नहीं है।" अनुरोधित वीडियो के बजाय दिखाया गया संदेश diff --git a/fastlane/metadata/android/hi/changelogs/989.txt b/fastlane/metadata/android/hi/changelogs/989.txt new file mode 100644 index 000000000..d868b7fa5 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/989.txt @@ -0,0 +1,3 @@ +• [यूट्यूब] किसी भी वीडियो को चलाने का प्रयास करते समय असीमित लोडिंग को ठीक करें +• [यूट्यूब] कुछ वीडियो पर थ्रॉटलिंग ठीक करें +• jsoup लाइब्रेरी को 1.15.3 में अपग्रेड करें, जिसमें सुरक्षा समाधान शामिल है diff --git a/fastlane/metadata/android/hi/changelogs/990.txt b/fastlane/metadata/android/hi/changelogs/990.txt new file mode 100644 index 000000000..e12c20ba5 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/990.txt @@ -0,0 +1,15 @@ +This release drops support for Android 4.4 KitKat, now the minimum version is Android 5 Lollipop! + +New +• Download from long-press menu +• Hide future videos in feed +• Share local playlists + +Improved +• Refactor the player code into small components: less RAM used, less bugs +• Improve thumbnails' scale mode +• Vector-ize image placeholders + +Fixed +• Fix various issues with the player notification: outdated/missing media info, distorted thumbnail +• Fix fullscreen using 1/4 of screen diff --git a/fastlane/metadata/android/hi/changelogs/991.txt b/fastlane/metadata/android/hi/changelogs/991.txt index 46ca2ebb6..a365d5c44 100644 --- a/fastlane/metadata/android/hi/changelogs/991.txt +++ b/fastlane/metadata/android/hi/changelogs/991.txt @@ -1 +1,13 @@ -नया • त्रुटि पैनल में "ब्राउज़र में खोलें" बटन जोड़ें • चैनल समूहों को सूची के रूप में प्रदर्शित करने का विकल्प जोड़ें • [यूट्यूब] टाइमस्टैम्प यूआरएल साझा करने के लिए स्ट्रीम सेगमेंट पर लंबे समय तक क्लिक करें • मिनी प्लेयर में क्यू प्ले बटन जोड़ें उन्नत • आइसलैंडिक स्थानीयकरण जोड़ें और कई अन्य अनुवादों को अपडेट करें • कई आंतरिक सुधार हल किया गया • एकाधिक दुर्घटनाओं को ठीक करें • [यूट्यूब] कुछ देशों में लोडिंग चैनल, गैर-समर्पित फ़ीड और प्लेबैक समस्याओं को ठीक करें +नया +• त्रुटि पैनल में "ब्राउज़र में खोलें" बटन जोड़ें +• चैनल समूहों को सूची के रूप में प्रदर्शित करने का विकल्प जोड़ें +• [यूट्यूब] टाइमस्टैम्प यूआरएल साझा करने के लिए स्ट्रीम सेगमेंट पर लंबे समय तक क्लिक करें +• मिनी प्लेयर में क्यू प्ले बटन जोड़ें + +उन्नत +• आइसलैंडिक स्थानीयकरण जोड़ें और कई अन्य अनुवादों को अपडेट करें +• कई आंतरिक सुधार + +हल किया गया +• कई सारे क्रैश को ठीक करें +• [यूट्यूब] कुछ देशों में लोडिंग चैनल, गैर-समर्पित फ़ीड और प्लेबैक समस्याओं को ठीक करें diff --git a/fastlane/metadata/android/hi/changelogs/992.txt b/fastlane/metadata/android/hi/changelogs/992.txt new file mode 100644 index 000000000..d4024fd02 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/992.txt @@ -0,0 +1,17 @@ +नया +• वीडियो विवरण में सब्सक्राइबर गिनती +• कतार से डाउनलोड करें +• स्थायी रूप से एक प्लेलिस्ट थंबनेल सेट करें +• लंबे समय तक प्रेस हैशटैग और लिंक +• कार्ड दृश्य मोड + +बेहतर +• बड़ा मिनी-प्लेयर बंद बटन +• चिकना थंबनेल डाउनस्केलिंग +• लक्ष्य Android 13 (API 33) +• अब मांगने से खिलाड़ी रुक जाता है + +सही किए +• DeX/माउस पर ओवरले ठीक करें +• बिना किसी अलग ऑडियो स्ट्रीम के पृष्ठभूमि प्लेयर की अनुमति दें +• विभिन्न यूट्यूब फिक्स और अधिक… diff --git a/fastlane/metadata/android/id/changelogs/972.txt b/fastlane/metadata/android/id/changelogs/972.txt new file mode 100644 index 000000000..e6b705eeb --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/972.txt @@ -0,0 +1,14 @@ +Baru +Mengenali stempel waktu dan hashtag dalam deskripsi +Menambahkan pengaturan mode tablet manual +Menambahkan kemampuan untuk menyembunyikan item yang diputar di feed + +Ditingkatkan +Mendukung Kerangka Akses Penyimpanan dengan benar +Penanganan kesalahan yang lebih baik untuk saluran yang tidak tersedia dan dihentikan +Lembar berbagi Android untuk pengguna Android 10+ sekarang menampilkan judul konten. +Memperbarui instance Invidious dan mendukung tautan Piped. + +Diperbaiki +[YouTube] Konten yang dibatasi usia +Cegah jendela bocor Pengecualian saat membuka dialog pilihan diff --git a/fastlane/metadata/android/id/changelogs/973.txt b/fastlane/metadata/android/id/changelogs/973.txt new file mode 100644 index 000000000..3ba7d9f05 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/973.txt @@ -0,0 +1,4 @@ +Perbaikan terbaru +- Memperbaiki thumbnail dan judul yang terpotong dalam tata letak grid, karena perhitungan yang salah tentang berapa banyak video yang dapat ditampung dalam satu baris +- Memperbaiki dialog unduhan yang menghilang tanpa melakukan apa pun jika dibuka dari menu berbagi +- Memperbarui pustaka yang terkait dengan membuka aktivitas eksternal seperti pemilih file Storage Access Framework diff --git a/fastlane/metadata/android/id/changelogs/992.txt b/fastlane/metadata/android/id/changelogs/992.txt new file mode 100644 index 000000000..507334743 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/992.txt @@ -0,0 +1,17 @@ +Baru +- Jumlah pelanggan dalam detail video +- Unduh dari antrean +- Mengatur gambar mini daftar putar secara permanen +- Tekan lama tagar dan tautan +- Mode tampilan kartu + +Lebih baik +- Tombol tutup pemutar mini yang lebih besar +- Pengecilan ukuran gambar mini yang lebih halus +- Target Android 13 (API 33) +- Mencari tidak lagi menjeda pemain + +Diperbaiki +- Perbaiki overlay pada DeX/mouse +- Izinkan pemutar latar belakang tanpa aliran audio terpisah +- Berbagai perbaikan YouTube dan banyak lagi… diff --git a/fastlane/metadata/android/it/changelogs/992.txt b/fastlane/metadata/android/it/changelogs/992.txt new file mode 100644 index 000000000..b11e7249e --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/992.txt @@ -0,0 +1,17 @@ +Nuovo +• Numero di iscritti nei dettagli del video +• Scarica dalla coda +• Impostare in modo permanente una miniatura della playlist +• Premi a lungo hashtag e link +• Modalità di visualizzazione scheda + +Migliorato +• Pulsante di chiusura mini-player più grande +• Downscaling delle miniature più agevole +• Target Android 13 (API 33) +• La ricerca non mette più in pausa il lettore + +Corretto +• Corretto l'overlay su DeX/mouse +• Consenti lettore in background senza flussi audio separati +• Varie correzioni di YouTube e altro… diff --git a/fastlane/metadata/android/nb-NO/changelogs/992.txt b/fastlane/metadata/android/nb-NO/changelogs/992.txt new file mode 100644 index 000000000..02605fc2c --- /dev/null +++ b/fastlane/metadata/android/nb-NO/changelogs/992.txt @@ -0,0 +1,17 @@ +Nytt +• Antall abonnenter i videodetaljene +• Last ned fra køen +• Sett miniatyrbilde for spilleliste +• Langtrykk på emneknagger og linker +• Kortvisningsmodus + +Forbedret +• Større lukkenapp på minispilleren +• Bedre nedskalering av miniatyrbilder +• Målversjon er nå Android 13 (API 33) +• Blafring pauser ikke lenger spilleren + +Fikset +• Fiks overlay for DeX/mus +• Tillat bakgrunnsspiller med ingen separate lydstrømmer +• Diverse YouTube-fikser, med mer … diff --git a/fastlane/metadata/android/nb-NO/full_description.txt b/fastlane/metadata/android/nb-NO/full_description.txt index 6fc7e0fbd..0ffda33f8 100644 --- a/fastlane/metadata/android/nb-NO/full_description.txt +++ b/fastlane/metadata/android/nb-NO/full_description.txt @@ -1,5 +1 @@ -Gemenhetslig fri programvare. -Bruker ingen av Google-rammeverksbibliotekene, eller YouTube-API-et. -Det tolker kun nettsiden for å hente infoen som trengs. -Derfor kan dette programmet brukes på enheter der Google-tjenestene ikke er installert. -Du trenger heller ikke en YouTube-konto for å bruke installere det. +NewPipe bruker ikke noen av Googles rammeverksbiblioteker, eller YouTube-API-et. Den bare tolker nettsiden for å hente informasjonen den trenger. Programmet kan derfor brukes på enheter uten Google-tjenester, og du trenger ikke en YouTube-konto for å bruke det. I tillegg er det er gemenfrihetslig fritt. diff --git a/fastlane/metadata/android/nb-NO/short_description.txt b/fastlane/metadata/android/nb-NO/short_description.txt index feaf8f8ba..c19a75993 100644 --- a/fastlane/metadata/android/nb-NO/short_description.txt +++ b/fastlane/metadata/android/nb-NO/short_description.txt @@ -1 +1 @@ -En fri og lett mediaplattformsavspiller. +En fri og lett YouTube-skjermflate for Android. diff --git a/fastlane/metadata/android/nl/changelogs/65.txt b/fastlane/metadata/android/nl/changelogs/65.txt new file mode 100644 index 000000000..79a6c4928 --- /dev/null +++ b/fastlane/metadata/android/nl/changelogs/65.txt @@ -0,0 +1,26 @@ +### Verbeteringen + +- Burgermenu icoon animatie uitschakelen #1486 +- Verwijderen van downloads ongedaan maken #1472 +- Downloadoptie in aandelenmenu #1498 +- Deeloptie toegevoegd aan menu met lange tikken #1454 +- Hoofdspeler minimaliseren bij afsluiten #1354 +- Bibliotheek versie update en database back-up fix #1510 +- ExoPlayer 2.8.2 Update #1392 + - De afspeelsnelheidsdialoog herwerkt om verschillende stapgrootten te ondersteunen voor snellere snelheidsverandering. + - Een schakelaar toegevoegd om snel vooruit te spoelen tijdens stiltes in de afspeelsnelheidcontrole. Dit zou handig moeten zijn voor luisterboeken en bepaalde muziekgenres, en kan een echte naadloze ervaring opleveren (en kan een nummer met veel stiltes = breken). + - Verfijnde mediabronresolutie zodat metadata naast media intern in de speler kunnen worden doorgegeven, in plaats van dit handmatig te doen. Nu hebben we een enkele bron van metadata en deze is direct beschikbaar wanneer het afspelen begint. + - Metagegevens van afspeellijst op afstand niet bijgewerkt wanneer nieuwe metagegevens beschikbaar zijn wanneer afspeellijstfragment wordt geopend. + - Diverse UI fixes: #1383, achtergrondspeler meldingselementen nu altijd wit, makkelijker uitschakelen van popup speler door gooien +- Gebruik nieuwe extractor met refactored architectuur voor multiservice + +### Fixes + +- Fix #1440 Gebroken video-info-indeling #1491 +- Geschiedenis bekijken fix #1497 + - #1495, door de metadata (thumbnail, titel en videotelling) bij te werken zodra de gebruiker de afspeellijst opent. + - #1475, door een weergave in de database te registreren wanneer de gebruiker een video start op externe speler op detailfragment. +- Fix creen timeout bij popup modus. #1463 (Fixed #640) +- Hoofd video speler fix #1509 + - #1412] Fixed repeat mode veroorzaakt speler NPE wanneer nieuwe intentie wordt ontvangen terwijl speler activiteit op de achtergrond is. + - Fixed minimaliseren van speler naar popup vernietigt speler niet wanneer popup toestemming niet is verleend. diff --git a/fastlane/metadata/android/pa/changelogs/992.txt b/fastlane/metadata/android/pa/changelogs/992.txt new file mode 100644 index 000000000..de71db154 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/992.txt @@ -0,0 +1,15 @@ +ਨਵਾਂ +• ਵੀਡੀਓ ਵੇਰਵਿਆਂ ਵਿੱਚ ਗਾਹਕਾਂ ਦੀ ਗਿਣਤੀ +• ਕਤਾਰ ਤੋਂ ਡਾਊਨਲੋਡ ਕਰੋ +• ਇੱਕ ਪਲੇਅਲਿਸਟ ਥੰਮਨੇਲ ਪੱਕੇ ਤੌਰ 'ਤੇ ਸੈੱਟ ਕਰੋ +• ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਪ੍ਰੈੱਸ ਕਰਨ ਵਾਲੇ ਹੈਸ਼ਟੈਗ ਅਤੇ ਲਿੰਕ +• ਕਾਰਡ ਦ੍ਰਿਸ਼ ਮੋਡ + +ਸੁਧਾਰ +• ਵੱਡਾ ਮਿੰਨੀ-ਪਲੇਅਰ ਬੰਦ ਬਟਨ +• ਮੁਲਾਇਮ ਥੰਮਨੇਲ ਡਾਊਨਸਕੇਲਿੰਗ +• ਟਾਰਗੇਟ ਐਂਡਰਾਇਡ 13 (ਏਪੀਆਈ 33) +• ਹੁਣ ਪਲੇਅਰ ਸੀਕ ਕਰਨ ਤੇ ਰੁਕਦਾ ਨਹੀਂ +• DeX/ਮਾਊਸ 'ਤੇ ਓਵਰਲੇਅ ਨੂੰ ਫਿਕਸ ਕਰੋ +• ਬਿਨਾਂ ਕਿਸੇ ਵੱਖਰੇ ਆਡੀਓ ਸਟ੍ਰੀਮ ਦੇ ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ ਨੂੰ ਚਲਾਉਣ ਦਿਓ +• ਵੱਖ-ਵੱਖ ਯੂਟਿਊਬ ਫਿਕਸ ਅਤੇ ਹੋਰ… diff --git a/fastlane/metadata/android/pl/changelogs/992.txt b/fastlane/metadata/android/pl/changelogs/992.txt new file mode 100644 index 000000000..98d0d1773 --- /dev/null +++ b/fastlane/metadata/android/pl/changelogs/992.txt @@ -0,0 +1,17 @@ +Nowe +• Liczba subskrybentów w szczegółach wideo +• Pobieranie z kolejki +• Ustawianie stałej miniatury playlisty +• Długie naciśnięcie hashtagów i linków +• Tryb widoku karty + +Ulepszone +• Większy przycisk zamykania miniodtwarzacza +• Płynniejsze zmniejszanie miniatur +• Docelowy system Android 13 (API 33) +• Przewijanie nie wstrzymuje już odtwarzacza + +Naprawione +• Nakładka dla DeX/myszy +• Zezwalanie na odtwarzanie w tle bez oddzielnych strumieni audio +• Różne poprawki YouTube i więcej… diff --git a/fastlane/metadata/android/pt-BR/changelogs/770.txt b/fastlane/metadata/android/pt-BR/changelogs/770.txt new file mode 100644 index 000000000..d53963daa --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/770.txt @@ -0,0 +1,4 @@ +Mudanças no 0.47.2 + +Consertado +• Consertado, nenhum vídeo estava disponível diff --git a/fastlane/metadata/android/pt-PT/changelogs/992.txt b/fastlane/metadata/android/pt-PT/changelogs/992.txt new file mode 100644 index 000000000..2da819beb --- /dev/null +++ b/fastlane/metadata/android/pt-PT/changelogs/992.txt @@ -0,0 +1,17 @@ +Novo +- Contagem de subscritores em detalhes de vídeo +- Descarregar da fila +- Uma miniatura permanente de listas de reprodução +- Hashtags e ligações de imprensa longa +- Modo de visualização de cartões + +Melhorado +- Botão de fecho de mini-reprodutor maior +- Redução mais suave das miniaturas +- Alvo Android 13 (API 33) +- Procurar não pausa o reprodutor + +Fixa +- Corrigido sobreposições no DeX/rato +- Permitir um leitor de fundo sem fluxo de áudio separados +- Várias correções do YouTube… diff --git a/fastlane/metadata/android/pt/changelogs/992.txt b/fastlane/metadata/android/pt/changelogs/992.txt new file mode 100644 index 000000000..2da819beb --- /dev/null +++ b/fastlane/metadata/android/pt/changelogs/992.txt @@ -0,0 +1,17 @@ +Novo +- Contagem de subscritores em detalhes de vídeo +- Descarregar da fila +- Uma miniatura permanente de listas de reprodução +- Hashtags e ligações de imprensa longa +- Modo de visualização de cartões + +Melhorado +- Botão de fecho de mini-reprodutor maior +- Redução mais suave das miniaturas +- Alvo Android 13 (API 33) +- Procurar não pausa o reprodutor + +Fixa +- Corrigido sobreposições no DeX/rato +- Permitir um leitor de fundo sem fluxo de áudio separados +- Várias correções do YouTube… diff --git a/fastlane/metadata/android/uk/changelogs/992.txt b/fastlane/metadata/android/uk/changelogs/992.txt new file mode 100644 index 000000000..4efccccb4 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/992.txt @@ -0,0 +1,17 @@ +Нове +• Кількість підписників у поробицях відео +• Завантаження з черги +• Постійна мініатюра добірки +• Затискання хештегів і посилань +• Картковий режим перегляду + +Удосконалено +• Більша кнопка закриття мініпрогравача +• Плавніше зменшення масштабу мініатюр +• Цільова версія Android 13 (API 33) +• Пошук більше не призупиняє програвач + +Виправлено +• Виправлено накладання на DeX/миша +• Дозволено фоновий програвач без окремих аудіопотоків +• Різні виправлення YouTube тощо… diff --git a/fastlane/metadata/android/zh-Hant/changelogs/992.txt b/fastlane/metadata/android/zh-Hant/changelogs/992.txt new file mode 100644 index 000000000..97bc793b2 --- /dev/null +++ b/fastlane/metadata/android/zh-Hant/changelogs/992.txt @@ -0,0 +1,17 @@ +新增 +• 影片詳細資訊的訂閱者人數 +• 佇列功能表的下載按鈕 +• 永久設定播放清單的縮圖 +• 主題標籤和連結的長按動作 +• 卡片檢視模式 + +改進 +• 迷你播放器的關閉按鈕略為放大 +• 縮圖縮小時較順滑 +• 目標版本現為 Android 13 (API 33) +• 快轉時不再暫停播放器 + +修正 +• 修正 DeX/滑鼠的覆蓋 +• 背景播放器允許無獨立音訊串流 +• 若干 YouTube 修正及其他… diff --git a/fastlane/metadata/android/zh_Hant_HK/changelogs/992.txt b/fastlane/metadata/android/zh_Hant_HK/changelogs/992.txt new file mode 100644 index 000000000..bfe34c021 --- /dev/null +++ b/fastlane/metadata/android/zh_Hant_HK/changelogs/992.txt @@ -0,0 +1,17 @@ +新嘢 +• 影片詳情騷埋訂閱人數 +• 排隊播整埋個下載掣 +• 自選播放清單封面縮圖 +• 撳實主題標籤同連結有得複製 +• 有得以一張張白紙舉起一條條片 + +進步 +• 袖珍播放器個閂埋掣大粒啲 +• 縮圖縮細時幼細啲 +• 編譯目標版本訂為 Android 13 (API 33) +• 條片快轉時唔再暫停播放器 + +執漏 +• 修正三星 DeX/滑鼠覆蓋 +• 無獨立聲音串流都有得幕後播 +• 若干 YouTube 修正、等等… From 8d43499e5bea402ea85aa5c7ab7477765deaac01 Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 8 Feb 2023 22:27:49 +0100 Subject: [PATCH 146/147] Update NewPipeExtractor again --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 917bf5356..165511816 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -191,7 +191,7 @@ dependencies { // name and the commit hash with the commit hash of the (pushed) commit you want to test // This works thanks to JitPack: https://jitpack.io/ implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751' - implementation 'com.github.TeamNewPipe:NewPipeExtractor:999fb7f812f8f39712dda88cf5ff4db3ee877fdc' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:e920ab3f5f40fe1f669735d717135c83141be2dd' implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0' /** Checkstyle **/ From d2f8f31d1f21bcb97b7a9417a210b5da5311e4d9 Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 8 Feb 2023 22:37:17 +0100 Subject: [PATCH 147/147] Update NewPipeExtractor again, because of JitPack problems --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 165511816..0afdc3ce8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -191,7 +191,7 @@ dependencies { // name and the commit hash with the commit hash of the (pushed) commit you want to test // This works thanks to JitPack: https://jitpack.io/ implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751' - implementation 'com.github.TeamNewPipe:NewPipeExtractor:e920ab3f5f40fe1f669735d717135c83141be2dd' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:7e793c11aec46358ccbfd8bcfcf521105f4f093a' implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0' /** Checkstyle **/