diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e18826c1619..ffd66715aca 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,6 +11,7 @@ plugins { alias(libs.plugins.jetbrains.kotlin.kapt) alias(libs.plugins.google.ksp) alias(libs.plugins.jetbrains.kotlin.parcelize) + alias(libs.plugins.jetbrains.kotlinx.serialization) alias(libs.plugins.sonarqube) checkstyle } @@ -44,9 +45,9 @@ configure { minSdk = 21 targetSdk = 35 - versionCode = System.getProperty("versionCodeOverride")?.toInt() ?: 1008 + versionCode = System.getProperty("versionCodeOverride")?.toInt() ?: 1009 - versionName = "0.28.3" + versionName = "0.28.4" System.getProperty("versionNameSuffix")?.let { versionNameSuffix = it } testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" @@ -246,6 +247,12 @@ dependencies { implementation(libs.google.android.material) implementation(libs.androidx.webkit) + // Coroutines interop + implementation(libs.kotlinx.coroutines.rx3) + + // Kotlinx Serialization + implementation(libs.kotlinx.serialization.json) + /** Third-party libraries **/ implementation(libs.livefront.bridge) implementation(libs.evernote.statesaver.core) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 3f31fc98b2b..df4f78d8c38 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -44,3 +44,18 @@ -keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite { ; } + +## Keep Kotlinx Serialization classes +-keepclassmembers class kotlinx.serialization.json.** { + *** Companion; +} +-keepclasseswithmembers class kotlinx.serialization.json.** { + kotlinx.serialization.KSerializer serializer(...); +} +-keep,includedescriptorclasses class org.schabi.newpipe.**$$serializer { *; } +-keepclassmembers class org.schabi.newpipe.** { + *** Companion; +} +-keepclasseswithmembers class org.schabi.newpipe.** { + kotlinx.serialization.KSerializer serializer(...); +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 20e9a6ca9a3..67a33742baf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -96,14 +96,6 @@ android:exported="false" android:label="@string/title_activity_about" /> - - - - diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index e4f4b5b8a28..00f1a62afb6 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -20,6 +20,7 @@ package org.schabi.newpipe; +import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -96,6 +97,8 @@ import org.schabi.newpipe.util.external_communication.ShareUtils; import org.schabi.newpipe.views.FocusOverlayView; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -196,6 +199,12 @@ protected void onCreate(final Bundle savedInstanceState) { UpdateSettingsFragment.askForConsentToUpdateChecks(this); } + // ReleaseVersionUtil.INSTANCE.isReleaseApk() will be true only for main official build + // We want every release build (nightly, nightly-refactor) to show the popup + if (!DEBUG) { + showKeepAndroidDialog(); + } + MigrationManager.showUserInfoIfPresent(this); } @@ -973,4 +982,57 @@ private boolean bottomSheetHiddenOrCollapsed() { || sheetState == BottomSheetBehavior.STATE_COLLAPSED; } + private void showKeepAndroidDialog() { + final var prefs = PreferenceManager.getDefaultSharedPreferences(this); + + final var now = Instant.now(); + final var kaoLastCheck = Instant.ofEpochMilli(prefs.getLong( + getString(R.string.kao_last_checked_key), + 0 + )); + + final var supportedLannguages = List.of("fr", "de", "ca", "es", "id", "it", "pl", + "pt", "cs", "sk", "fa", "ar", "tr", "el", "th", "ru", "uk", "ko", "zh", "ja"); + final var locale = Localization.getAppLocale(); + final String kaoBaseUrl = "https://keepandroidopen.org/"; + final String kaoURI; + if (supportedLannguages.contains(locale.getLanguage())) { + if ("zh".equals(locale.getLanguage())) { + kaoURI = kaoBaseUrl + ("TW".equals(locale.getCountry()) ? "zh-TW" : "zh-CN"); + } else { + kaoURI = kaoBaseUrl + locale.getLanguage(); + } + } else { + kaoURI = kaoBaseUrl; + } + final var solutionURI = + "https://github.com/woheller69/FreeDroidWarn?tab=readme-ov-file#solutions"; + + if (kaoLastCheck.plus(30, ChronoUnit.DAYS).isBefore(now)) { + final var dialog = new AlertDialog.Builder(this) + .setTitle("Keep Android Open") + .setCancelable(false) + .setMessage(this.getString(R.string.kao_dialog_warning)) + .setPositiveButton(this.getString(android.R.string.ok), (d, w) -> { + prefs.edit() + .putLong( + getString(R.string.kao_last_checked_key), + now.toEpochMilli() + ) + .apply(); + }) + .setNeutralButton(this.getString(R.string.kao_solution), null) + .setNegativeButton(this.getString(R.string.kao_dialog_more_info), null) + .show(); + + // If we use setNeutralButton and etc. dialog will close after pressing the buttons, + // but we want it to close only when positive button is pressed + dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener(v -> + ShareUtils.openUrlInBrowser(this, kaoURI) + ); + dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> + ShareUtils.openUrlInBrowser(this, solutionURI) + ); + } + } } 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 91fac7d7b51..178fcefe16f 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -344,7 +344,7 @@ private void initToolbar(final Toolbar toolbar) { toolbar.setNavigationOnClickListener(v -> dismiss()); toolbar.setNavigationContentDescription(R.string.cancel); - okButton = toolbar.findViewById(R.id.okay); + okButton = toolbar.getMenu().findItem(R.id.okay); okButton.setEnabled(false); // disable until the download service connection is done toolbar.setOnMenuItemClickListener(item -> { diff --git a/app/src/main/java/org/schabi/newpipe/error/ErrorActivity.kt b/app/src/main/java/org/schabi/newpipe/error/ErrorActivity.kt index 5dd0755c59a..c68a2cfd1e1 100644 --- a/app/src/main/java/org/schabi/newpipe/error/ErrorActivity.kt +++ b/app/src/main/java/org/schabi/newpipe/error/ErrorActivity.kt @@ -25,6 +25,7 @@ import org.schabi.newpipe.databinding.ActivityErrorBinding import org.schabi.newpipe.util.Localization import org.schabi.newpipe.util.ThemeHelper import org.schabi.newpipe.util.external_communication.ShareUtils +import org.schabi.newpipe.util.text.setTextWithLinks /** * This activity is used to show error details and allow reporting them in various ways. @@ -100,7 +101,7 @@ class ErrorActivity : AppCompatActivity() { // normal bugreport buildInfo(errorInfo) - binding.errorMessageView.text = errorInfo.getMessage(this) + binding.errorMessageView.setTextWithLinks(errorInfo.getMessage(this)) binding.errorView.text = formErrorText(errorInfo.stackTraces) // print stack trace once again for debugging: diff --git a/app/src/main/java/org/schabi/newpipe/error/ErrorInfo.kt b/app/src/main/java/org/schabi/newpipe/error/ErrorInfo.kt index cd48fb2984b..82f7d84bf45 100644 --- a/app/src/main/java/org/schabi/newpipe/error/ErrorInfo.kt +++ b/app/src/main/java/org/schabi/newpipe/error/ErrorInfo.kt @@ -29,6 +29,7 @@ import org.schabi.newpipe.extractor.exceptions.YoutubeMusicPremiumContentExcepti import org.schabi.newpipe.ktx.isNetworkRelated import org.schabi.newpipe.player.mediasource.FailedMediaSource import org.schabi.newpipe.player.resolver.PlaybackResolver +import org.schabi.newpipe.util.text.getText /** * An error has occurred in the app. This class contains plain old parcelable data that can be used @@ -135,8 +136,8 @@ class ErrorInfo private constructor( return getServiceName(serviceId) } - fun getMessage(context: Context): String { - return message.getString(context) + fun getMessage(context: Context): CharSequence { + return message.getText(context) } companion object { @@ -146,20 +147,23 @@ class ErrorInfo private constructor( private val stringRes: Int, private vararg val formatArgs: String ) : Parcelable { - fun getString(context: Context): String { + fun getText(context: Context): CharSequence { + // Ensure locale aware context via ContextCompat.getContextForLanguage() (just in case context is not AppCompatActivity) + val ctx = ContextCompat.getContextForLanguage(context) return if (formatArgs.isEmpty()) { - // use ContextCompat.getString() just in case context is not AppCompatActivity - ContextCompat.getString(context, stringRes) + ctx.getText(stringRes) } else { // ContextCompat.getString() with formatArgs does not exist, so we just // replicate its source code but with formatArgs - ContextCompat.getContextForLanguage(context).getString(stringRes, *formatArgs) + ctx.resources.getText(stringRes, *formatArgs) } } } const val SERVICE_NONE = "" + const val YOUTUBE_IP_BAN_FAQ_URL = "https://newpipe.net/FAQ/#ip-banned-youtube" + private fun getServiceName(serviceId: Int?) = // not using getNameOfServiceById since we want to accept a nullable serviceId and we // want to default to SERVICE_NONE ServiceList.all().firstOrNull { it.serviceId == serviceId }?.serviceInfo?.name @@ -247,7 +251,11 @@ class ErrorInfo private constructor( ErrorMessage(R.string.youtube_music_premium_content) throwable is SignInConfirmNotBotException -> - ErrorMessage(R.string.sign_in_confirm_not_bot_error, getServiceName(serviceId)) + ErrorMessage( + R.string.sign_in_confirm_not_bot_error, + getServiceName(serviceId), + YOUTUBE_IP_BAN_FAQ_URL + ) throwable is ContentNotAvailableException -> ErrorMessage(R.string.content_not_available) diff --git a/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt b/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt index 023d13e9d8d..8136c78d813 100644 --- a/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt +++ b/app/src/main/java/org/schabi/newpipe/error/ErrorPanelHelper.kt @@ -16,6 +16,7 @@ import org.schabi.newpipe.MainActivity import org.schabi.newpipe.R import org.schabi.newpipe.ktx.animate import org.schabi.newpipe.util.external_communication.ShareUtils +import org.schabi.newpipe.util.text.setTextWithLinks class ErrorPanelHelper( private val fragment: Fragment, @@ -64,7 +65,7 @@ class ErrorPanelHelper( fun showError(errorInfo: ErrorInfo) { ensureDefaultVisibility() - errorTextView.text = errorInfo.getMessage(context) + errorTextView.setTextWithLinks(errorInfo.getMessage(context)) if (errorInfo.recaptchaUrl != null) { showAndSetErrorButtonAction(R.string.recaptcha_solve) { @@ -109,7 +110,7 @@ class ErrorPanelHelper( fun showTextError(errorString: String) { ensureDefaultVisibility() - errorTextView.text = errorString + errorTextView.setTextWithLinks(errorString) setRootVisible() } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/BaseDescriptionFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/BaseDescriptionFragment.java index 4789b02e65b..bd174a12155 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/BaseDescriptionFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/BaseDescriptionFragment.java @@ -216,9 +216,9 @@ protected void addImagesMetadataItem(final LayoutInflater inflater, || image.getWidth() != Image.WIDTH_UNKNOWN // if even the resolution level is unknown, ?x? will be shown || image.getEstimatedResolutionLevel() == Image.ResolutionLevel.UNKNOWN) { - urls.append(imageSizeToText(image.getHeight())); - urls.append('x'); urls.append(imageSizeToText(image.getWidth())); + urls.append('x'); + urls.append(imageSizeToText(image.getHeight())); } else { switch (image.getEstimatedResolutionLevel()) { case LOW -> urls.append(getString(R.string.image_quality_low)); diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelTabFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelTabFragment.java index 5d398821a3a..78a107958dd 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelTabFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelTabFragment.java @@ -30,6 +30,17 @@ import org.schabi.newpipe.util.ExtractorHelper; import org.schabi.newpipe.util.PlayButtonHelper; +import android.content.SharedPreferences; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; + +import androidx.appcompat.app.AlertDialog; +import androidx.preference.PreferenceManager; + +import org.schabi.newpipe.database.stream.model.StreamStateEntity; +import org.schabi.newpipe.local.history.HistoryRecordManager; + import java.util.List; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -69,7 +80,7 @@ public ChannelTabFragment() { @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setHasOptionsMenu(false); + setHasOptionsMenu(true); } @Override @@ -85,6 +96,69 @@ public void onDestroyView() { playlistControlBinding = null; } + @Override + public void onCreateOptionsMenu(@NonNull final Menu menu, + @NonNull final MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + if (ChannelTabHelper.isStreamsTab(tabHandler)) { + final MenuItem item = menu.add(Menu.NONE, R.id.menu_item_feed_toggle_played_items, + Menu.NONE, R.string.feed_show_hide_streams); + item.setIcon(R.drawable.ic_visibility_on); + item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + } + } + + @Override + public boolean onOptionsItemSelected(@NonNull final MenuItem item) { + if (item.getItemId() == R.id.menu_item_feed_toggle_played_items) { + showStreamVisibilityDialog(); + return true; + } + return super.onOptionsItemSelected(item); + } + + private void showStreamVisibilityDialog() { + final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); + final String showWatchedKey = getString(R.string.feed_show_watched_items_key); + final String showPartiallyWatchedKey = + getString(R.string.feed_show_partially_watched_items_key); + + final String[] dialogItems = { + getString(R.string.feed_show_watched), + getString(R.string.feed_show_partially_watched) + }; + + final boolean[] checkedDialogItems = { + prefs.getBoolean(showWatchedKey, true), + prefs.getBoolean(showPartiallyWatchedKey, true) + }; + + new AlertDialog.Builder(requireContext()) + .setTitle(R.string.feed_hide_streams_title) + .setMultiChoiceItems(dialogItems, checkedDialogItems, + (dialog, which, isChecked) -> checkedDialogItems[which] = isChecked) + .setPositiveButton(R.string.ok, (dialog, which) -> { + boolean changed = false; + final SharedPreferences.Editor editor = prefs.edit(); + + if (prefs.getBoolean(showWatchedKey, true) != checkedDialogItems[0]) { + editor.putBoolean(showWatchedKey, checkedDialogItems[0]); + changed = true; + } + if (prefs.getBoolean(showPartiallyWatchedKey, true) != checkedDialogItems[1]) { + editor.putBoolean(showPartiallyWatchedKey, checkedDialogItems[1]); + changed = true; + } + + if (changed) { + editor.apply(); + startLoading(true); + } + }) + .setNegativeButton(R.string.cancel, null) + .show(); + } + @Override protected Supplier getListHeaderSupplier() { if (ChannelTabHelper.isStreamsTab(tabHandler)) { @@ -97,12 +171,104 @@ protected Supplier getListHeaderSupplier() { @Override protected Single loadResult(final boolean forceLoad) { - return ExtractorHelper.getChannelTab(serviceId, tabHandler, forceLoad); + final SharedPreferences prefs = + PreferenceManager.getDefaultSharedPreferences(requireContext()); + final boolean showPlayed = prefs.getBoolean( + getString(R.string.feed_show_watched_items_key), true); + final boolean showPartiallyPlayed = prefs.getBoolean( + getString(R.string.feed_show_partially_watched_items_key), true); + + final HistoryRecordManager historyRecordManager = new HistoryRecordManager( + requireContext().getApplicationContext()); + + return ExtractorHelper.getChannelTab(serviceId, tabHandler, forceLoad) + .map(info -> filterStreams(info, showPlayed, showPartiallyPlayed, + historyRecordManager)); } @Override protected Single> loadMoreItemsLogic() { - return ExtractorHelper.getMoreChannelTabItems(serviceId, tabHandler, currentNextPage); + final SharedPreferences prefs = + PreferenceManager.getDefaultSharedPreferences(requireContext()); + final boolean showPlayed = prefs.getBoolean( + getString(R.string.feed_show_watched_items_key), true); + final boolean showPartiallyPlayed = prefs.getBoolean( + getString(R.string.feed_show_partially_watched_items_key), true); + + final HistoryRecordManager historyRecordManager = new HistoryRecordManager( + requireContext().getApplicationContext()); + + return ExtractorHelper.getMoreChannelTabItems(serviceId, tabHandler, currentNextPage) + .map(page -> filterStreamsPage(page, showPlayed, showPartiallyPlayed, + historyRecordManager)); + } + + private boolean shouldIncludeItem(final InfoItem item, + final boolean showPlayed, + final boolean showPartiallyPlayed, + final HistoryRecordManager historyRecordManager) { + if (!(item instanceof StreamInfoItem)) { + return true; + } + final StreamInfoItem streamItem = (StreamInfoItem) item; + try { + final StreamStateEntity[] result = + historyRecordManager.loadStreamState(streamItem).blockingGet(); + final StreamStateEntity state = + (result != null && result.length > 0) ? result[0] : null; + if (state != null) { + final long duration = streamItem.getDuration(); + final boolean isFinished = state.isFinished(duration); + final boolean isPartiallyPlayed = state.isValid(duration) && !isFinished; + + if (!showPlayed && isFinished) { + return false; + } + if (!showPartiallyPlayed && isPartiallyPlayed) { + return false; + } + } + } catch (final Exception e) { + Log.w(TAG, "Could not load stream state", e); + } + return true; + } + + private ChannelTabInfo filterStreams(final ChannelTabInfo info, + final boolean showPlayed, + final boolean showPartiallyPlayed, + final HistoryRecordManager historyRecordManager) { + if (!ChannelTabHelper.isStreamsTab(tabHandler) + || (showPlayed && showPartiallyPlayed)) { + return info; + } + + final List filteredItems = info.getRelatedItems().stream() + .filter(item -> shouldIncludeItem(item, showPlayed, + showPartiallyPlayed, historyRecordManager)) + .collect(Collectors.toList()); + + info.setRelatedItems(filteredItems); + + return info; + } + + private ListExtractor.InfoItemsPage filterStreamsPage( + final ListExtractor.InfoItemsPage page, + final boolean showPlayed, + final boolean showPartiallyPlayed, + final HistoryRecordManager historyRecordManager) { + if (!ChannelTabHelper.isStreamsTab(tabHandler) + || (showPlayed && showPartiallyPlayed)) { + return page; + } + + final List filtered = page.getItems().stream() + .filter(item -> shouldIncludeItem(item, showPlayed, + showPartiallyPlayed, historyRecordManager)) + .collect(Collectors.toList()); + + return new ListExtractor.InfoItemsPage<>(filtered, page.getNextPage(), page.getErrors()); } @Override diff --git a/app/src/main/java/org/schabi/newpipe/info_list/dialog/StreamDialogDefaultEntry.java b/app/src/main/java/org/schabi/newpipe/info_list/dialog/StreamDialogDefaultEntry.java index a2bf4a1ff42..2df11900ece 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/dialog/StreamDialogDefaultEntry.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/dialog/StreamDialogDefaultEntry.java @@ -5,6 +5,7 @@ import static org.schabi.newpipe.util.SparseItemUtil.fetchStreamInfoAndSaveToDatabase; import static org.schabi.newpipe.util.SparseItemUtil.fetchUploaderUrlIfSparse; +import android.content.Context; import android.net.Uri; import androidx.annotation.NonNull; @@ -52,28 +53,33 @@ public enum StreamDialogDefaultEntry { /** * Enqueues the stream automatically to the current PlayerType. */ - ENQUEUE(R.string.enqueue_stream, (fragment, item) -> - fetchItemInfoIfSparse(fragment.requireContext(), item, singlePlayQueue -> - NavigationHelper.enqueueOnPlayer(fragment.getContext(), singlePlayQueue)) - ), + ENQUEUE(R.string.enqueue_stream, (fragment, item) -> { + final Context ctx = fragment.requireContext().getApplicationContext(); + fetchItemInfoIfSparse(ctx, item, singlePlayQueue -> + NavigationHelper.enqueueOnPlayer(ctx, singlePlayQueue)); + }), /** * Enqueues the stream automatically to the current PlayerType * after the currently playing stream. */ - ENQUEUE_NEXT(R.string.enqueue_next_stream, (fragment, item) -> - fetchItemInfoIfSparse(fragment.requireContext(), item, singlePlayQueue -> - NavigationHelper.enqueueNextOnPlayer(fragment.getContext(), singlePlayQueue)) - ), + ENQUEUE_NEXT(R.string.enqueue_next_stream, (fragment, item) -> { + final Context ctx = fragment.requireContext().getApplicationContext(); + fetchItemInfoIfSparse(ctx, item, singlePlayQueue -> + NavigationHelper.enqueueNextOnPlayer(ctx, singlePlayQueue)); + }), - START_HERE_ON_BACKGROUND(R.string.start_here_on_background, (fragment, item) -> - fetchItemInfoIfSparse(fragment.requireContext(), item, singlePlayQueue -> - NavigationHelper.playOnBackgroundPlayer( - fragment.getContext(), singlePlayQueue, true))), + START_HERE_ON_BACKGROUND(R.string.start_here_on_background, (fragment, item) -> { + final Context ctx = fragment.requireContext().getApplicationContext(); + fetchItemInfoIfSparse(ctx, item, singlePlayQueue -> + NavigationHelper.playOnBackgroundPlayer(ctx, singlePlayQueue, true)); + }), - START_HERE_ON_POPUP(R.string.start_here_on_popup, (fragment, item) -> - fetchItemInfoIfSparse(fragment.requireContext(), item, singlePlayQueue -> - NavigationHelper.playOnPopupPlayer(fragment.getContext(), singlePlayQueue, true))), + START_HERE_ON_POPUP(R.string.start_here_on_popup, (fragment, item) -> { + final Context ctx = fragment.requireContext().getApplicationContext(); + fetchItemInfoIfSparse(ctx, item, singlePlayQueue -> + NavigationHelper.playOnPopupPlayer(ctx, singlePlayQueue, true)); + }), SET_AS_PLAYLIST_THUMBNAIL(R.string.set_as_playlist_thumbnail, (fragment, item) -> { throw new UnsupportedOperationException("This needs to be implemented manually " diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/ImportConfirmationDialog.java b/app/src/main/java/org/schabi/newpipe/local/subscription/ImportConfirmationDialog.java index 0067e11543e..3dc6d7b46d5 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/ImportConfirmationDialog.java +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/ImportConfirmationDialog.java @@ -1,41 +1,63 @@ package org.schabi.newpipe.local.subscription; import android.app.Dialog; -import android.content.Intent; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; +import androidx.core.os.BundleCompat; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; +import androidx.work.Constraints; +import androidx.work.ExistingWorkPolicy; +import androidx.work.NetworkType; +import androidx.work.OneTimeWorkRequest; +import androidx.work.OutOfQuotaPolicy; +import androidx.work.WorkManager; import com.livefront.bridge.Bridge; import org.schabi.newpipe.R; +import org.schabi.newpipe.local.subscription.workers.SubscriptionImportInput; +import org.schabi.newpipe.local.subscription.workers.SubscriptionImportWorker; public class ImportConfirmationDialog extends DialogFragment { - protected Intent resultServiceIntent; - private static final String EXTRA_RESULT_SERVICE_INTENT = "extra_result_service_intent"; - - public static void show(@NonNull final Fragment fragment, - @NonNull final Intent resultServiceIntent) { - final ImportConfirmationDialog confirmationDialog = new ImportConfirmationDialog(); - final Bundle args = new Bundle(); - args.putParcelable(EXTRA_RESULT_SERVICE_INTENT, resultServiceIntent); - confirmationDialog.setArguments(args); + private static final String INPUT = "input"; + + public static void show(@NonNull final Fragment fragment, final SubscriptionImportInput input) { + final var confirmationDialog = new ImportConfirmationDialog(); + final var arguments = new Bundle(); + arguments.putParcelable(INPUT, input); + confirmationDialog.setArguments(arguments); confirmationDialog.show(fragment.getParentFragmentManager(), null); } @NonNull @Override public Dialog onCreateDialog(@Nullable final Bundle savedInstanceState) { - return new AlertDialog.Builder(requireContext()) + final var context = requireContext(); + return new AlertDialog.Builder(context) .setMessage(R.string.import_network_expensive_warning) .setCancelable(true) .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.ok, (dialogInterface, i) -> { - requireContext().startService(resultServiceIntent); + final var constraints = new Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(); + final var input = BundleCompat.getParcelable(requireArguments(), INPUT, + SubscriptionImportInput.class); + + final var req = new OneTimeWorkRequest.Builder(SubscriptionImportWorker.class) + .setInputData(input.toData()) + .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) + .setConstraints(constraints) + .build(); + + WorkManager.getInstance(context) + .enqueueUniqueWork(SubscriptionImportWorker.WORK_NAME, + ExistingWorkPolicy.APPEND_OR_REPLACE, req); + dismiss(); }) .create(); @@ -45,7 +67,7 @@ public Dialog onCreateDialog(@Nullable final Bundle savedInstanceState) { public void onCreate(@Nullable final Bundle savedInstanceState) { super.onCreate(savedInstanceState); - resultServiceIntent = requireArguments().getParcelable(EXTRA_RESULT_SERVICE_INTENT); + Bridge.restoreInstanceState(this, savedInstanceState); } @Override 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 28abe4cf9ac..9a817362cb2 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 @@ -1,9 +1,7 @@ package org.schabi.newpipe.local.subscription -import android.app.Activity import android.content.Context import android.content.DialogInterface -import android.content.Intent import android.os.Bundle import android.os.Parcelable import android.view.LayoutInflater @@ -15,8 +13,6 @@ import android.view.View import android.view.ViewGroup import android.webkit.MimeTypeMap import android.widget.Toast -import androidx.activity.result.ActivityResult -import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import androidx.lifecycle.ViewModelProvider @@ -27,9 +23,6 @@ import com.xwray.groupie.GroupAdapter import com.xwray.groupie.Section import com.xwray.groupie.viewbinding.GroupieViewHolder import io.reactivex.rxjava3.disposables.CompositeDisposable -import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale import org.schabi.newpipe.R import org.schabi.newpipe.database.feed.model.FeedGroupEntity.Companion.GROUP_ALL_ID import org.schabi.newpipe.databinding.DialogTitleBinding @@ -53,13 +46,6 @@ 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 -import org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.KEY_VALUE -import org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.PREVIOUS_EXPORT_MODE -import org.schabi.newpipe.streams.io.NoFileManagerSafeGuard -import org.schabi.newpipe.streams.io.StoredFileHelper import org.schabi.newpipe.util.NavigationHelper import org.schabi.newpipe.util.OnClickGesture import org.schabi.newpipe.util.ServiceHelper @@ -72,6 +58,7 @@ class SubscriptionFragment : BaseStateFragment() { private lateinit var viewModel: SubscriptionViewModel private lateinit var subscriptionManager: SubscriptionManager + private lateinit var importExportHelper: SubscriptionsImportExportHelper private val disposables: CompositeDisposable = CompositeDisposable() private val groupAdapter = GroupAdapter>() @@ -80,11 +67,6 @@ class SubscriptionFragment : BaseStateFragment() { private lateinit var feedGroupsSortMenuItem: GroupsHeader private val subscriptionsSection = Section() - private val requestExportLauncher = - registerForActivityResult(StartActivityForResult(), this::requestExportResult) - private val requestImportLauncher = - registerForActivityResult(StartActivityForResult(), this::requestImportResult) - @State @JvmField var itemsListState: Parcelable? = null @@ -104,6 +86,7 @@ class SubscriptionFragment : BaseStateFragment() { override fun onAttach(context: Context) { super.onAttach(context) subscriptionManager = SubscriptionManager(requireContext()) + importExportHelper = SubscriptionsImportExportHelper(this) } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -143,7 +126,7 @@ class SubscriptionFragment : BaseStateFragment() { // -- Import -- val importSubMenu = menu.addSubMenu(R.string.import_from) - addMenuItemToSubmenu(importSubMenu, R.string.previous_export) { onImportPreviousSelected() } + addMenuItemToSubmenu(importSubMenu, R.string.previous_export) { importExportHelper.onImportPreviousSelected() } .setIcon(R.drawable.ic_backup) for (service in ServiceList.all()) { @@ -161,7 +144,7 @@ class SubscriptionFragment : BaseStateFragment() { // -- Export -- val exportSubMenu = menu.addSubMenu(R.string.export_to) - addMenuItemToSubmenu(exportSubMenu, R.string.file) { onExportSelected() } + addMenuItemToSubmenu(exportSubMenu, R.string.file) { importExportHelper.onExportSelected() } .setIcon(R.drawable.ic_save) } @@ -197,51 +180,10 @@ class SubscriptionFragment : BaseStateFragment() { NavigationHelper.openSubscriptionsImportFragment(fragmentManager, serviceId) } - private fun onImportPreviousSelected() { - NoFileManagerSafeGuard.launchSafe( - requestImportLauncher, - StoredFileHelper.getPicker(activity, JSON_MIME_TYPE), - TAG, - requireContext() - ) - } - - private fun onExportSelected() { - val date = SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH).format(Date()) - val exportName = "newpipe_subscriptions_$date.json" - - NoFileManagerSafeGuard.launchSafe( - requestExportLauncher, - StoredFileHelper.getNewPicker(activity, exportName, JSON_MIME_TYPE, null), - TAG, - requireContext() - ) - } - private fun openReorderDialog() { FeedGroupReorderDialog().show(parentFragmentManager, null) } - private fun requestExportResult(result: ActivityResult) { - if (result.data != null && result.resultCode == Activity.RESULT_OK) { - activity.startService( - Intent(activity, SubscriptionsExportService::class.java) - .putExtra(SubscriptionsExportService.KEY_FILE_PATH, result.data?.data) - ) - } - } - - private fun requestImportResult(result: ActivityResult) { - if (result.data != null && result.resultCode == Activity.RESULT_OK) { - ImportConfirmationDialog.show( - this, - Intent(activity, SubscriptionsImportService::class.java) - .putExtra(KEY_MODE, PREVIOUS_EXPORT_MODE) - .putExtra(KEY_VALUE, result.data?.data) - ) - } - } - // //////////////////////////////////////////////////////////////////////// // Fragment Views // //////////////////////////////////////////////////////////////////////// diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionManager.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionManager.kt index 2918ad5fbbd..5cf378cc39f 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionManager.kt +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionManager.kt @@ -1,7 +1,6 @@ package org.schabi.newpipe.local.subscription import android.content.Context -import android.util.Pair import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Completable import io.reactivex.rxjava3.core.Flowable @@ -51,23 +50,16 @@ class SubscriptionManager(context: Context) { } } - fun upsertAll(infoList: List>>): List { - val listEntities = subscriptionTable.upsertAll( - infoList.map { SubscriptionEntity.from(it.first) } - ) + fun upsertAll(infoList: List>) { + val listEntities = infoList.map { SubscriptionEntity.from(it.first) } + subscriptionTable.upsertAll(listEntities) database.runInTransaction { infoList.forEachIndexed { index, info -> - info.second.forEach { - feedDatabaseManager.upsertAll( - listEntities[index].uid, - it.relatedItems.filterIsInstance() - ) - } + val streams = info.second.relatedItems.filterIsInstance() + feedDatabaseManager.upsertAll(listEntities[index].uid, streams) } } - - return listEntities } fun updateChannelInfo(info: ChannelInfo): Completable = subscriptionTable.getSubscription(info.serviceId, info.url) diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionsImportExportHelper.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionsImportExportHelper.kt new file mode 100644 index 00000000000..b853dcd4138 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionsImportExportHelper.kt @@ -0,0 +1,82 @@ +package org.schabi.newpipe.local.subscription + +import android.app.Activity +import android.content.Context +import androidx.activity.result.ActivityResult +import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult +import androidx.fragment.app.Fragment +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale +import org.schabi.newpipe.local.subscription.SubscriptionFragment.Companion.JSON_MIME_TYPE +import org.schabi.newpipe.local.subscription.workers.SubscriptionExportWorker +import org.schabi.newpipe.local.subscription.workers.SubscriptionImportInput +import org.schabi.newpipe.streams.io.NoFileManagerSafeGuard +import org.schabi.newpipe.streams.io.StoredFileHelper + +/** + * This class has to be created in onAttach() or onCreate(). + * + * It contains registerForActivityResult calls and those + * calls are only allowed before a fragment/activity is created. + */ +class SubscriptionsImportExportHelper( + val fragment: Fragment +) { + val context: Context = fragment.requireContext() + + companion object { + val TAG: String = + SubscriptionsImportExportHelper::class.java.simpleName + "@" + Integer.toHexString( + hashCode() + ) + } + + private val requestExportLauncher = + fragment.registerForActivityResult(StartActivityForResult(), this::requestExportResult) + private val requestImportLauncher = + fragment.registerForActivityResult(StartActivityForResult(), this::requestImportResult) + + private fun requestExportResult(result: ActivityResult) { + val data = result.data?.data + if (data != null && result.resultCode == Activity.RESULT_OK) { + SubscriptionExportWorker.schedule(context, data) + } + } + + private fun requestImportResult(result: ActivityResult) { + val data = result.data?.dataString + if (data != null && result.resultCode == Activity.RESULT_OK) { + ImportConfirmationDialog.show( + fragment, + SubscriptionImportInput.PreviousExportMode(data) + ) + } + } + + fun onExportSelected() { + val date = SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH).format(Date()) + val exportName = "newpipe_subscriptions_$date.json" + + NoFileManagerSafeGuard.launchSafe( + requestExportLauncher, + StoredFileHelper.getNewPicker( + context, + exportName, + JSON_MIME_TYPE, + null + ), + TAG, + context + ) + } + + fun onImportPreviousSelected() { + NoFileManagerSafeGuard.launchSafe( + requestImportLauncher, + StoredFileHelper.getPicker(context, JSON_MIME_TYPE), + TAG, + context + ) + } +} diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionsImportFragment.java b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionsImportFragment.java index 16a8990a61e..fbadbb876c2 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionsImportFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionsImportFragment.java @@ -1,10 +1,6 @@ package org.schabi.newpipe.local.subscription; import static org.schabi.newpipe.extractor.subscription.SubscriptionExtractor.ContentSource.CHANNEL_URL; -import static org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.CHANNEL_URL_MODE; -import static org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.INPUT_STREAM_MODE; -import static org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.KEY_MODE; -import static org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.KEY_VALUE; import android.app.Activity; import android.content.Intent; @@ -37,7 +33,7 @@ import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor; -import org.schabi.newpipe.local.subscription.services.SubscriptionsImportService; +import org.schabi.newpipe.local.subscription.workers.SubscriptionImportInput; import org.schabi.newpipe.streams.io.NoFileManagerSafeGuard; import org.schabi.newpipe.streams.io.StoredFileHelper; import org.schabi.newpipe.util.Constants; @@ -168,10 +164,8 @@ private void onImportClicked() { } public void onImportUrl(final String value) { - ImportConfirmationDialog.show(this, new Intent(activity, SubscriptionsImportService.class) - .putExtra(KEY_MODE, CHANNEL_URL_MODE) - .putExtra(KEY_VALUE, value) - .putExtra(Constants.KEY_SERVICE_ID, currentServiceId)); + ImportConfirmationDialog.show(this, + new SubscriptionImportInput.ChannelUrlMode(currentServiceId, value)); } public void onImportFile() { @@ -186,16 +180,10 @@ public void onImportFile() { } private void requestImportFileResult(final ActivityResult result) { - if (result.getData() == null) { - return; - } - - if (result.getResultCode() == Activity.RESULT_OK && result.getData().getData() != null) { + final String data = result.getData() != null ? result.getData().getDataString() : null; + if (result.getResultCode() == Activity.RESULT_OK && data != null) { ImportConfirmationDialog.show(this, - new Intent(activity, SubscriptionsImportService.class) - .putExtra(KEY_MODE, INPUT_STREAM_MODE) - .putExtra(KEY_VALUE, result.getData().getData()) - .putExtra(Constants.KEY_SERVICE_ID, currentServiceId)); + new SubscriptionImportInput.InputStreamMode(currentServiceId, data)); } } diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/services/BaseImportExportService.java b/app/src/main/java/org/schabi/newpipe/local/subscription/services/BaseImportExportService.java deleted file mode 100644 index 850409e2558..00000000000 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/services/BaseImportExportService.java +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright 2018 Mauricio Colli - * BaseImportExportService.java is part of NewPipe - * - * License: GPL-3.0+ - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.schabi.newpipe.local.subscription.services; - -import android.app.Service; -import android.content.Intent; -import android.os.Build; -import android.os.IBinder; -import android.text.TextUtils; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.StringRes; -import androidx.core.app.NotificationCompat; -import androidx.core.app.NotificationManagerCompat; -import androidx.core.app.ServiceCompat; - -import org.reactivestreams.Publisher; -import org.schabi.newpipe.R; -import org.schabi.newpipe.error.ErrorInfo; -import org.schabi.newpipe.error.ErrorUtil; -import org.schabi.newpipe.error.UserAction; -import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor; -import org.schabi.newpipe.ktx.ExceptionUtils; -import org.schabi.newpipe.local.subscription.SubscriptionManager; - -import java.io.FileNotFoundException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; -import io.reactivex.rxjava3.core.Flowable; -import io.reactivex.rxjava3.disposables.CompositeDisposable; -import io.reactivex.rxjava3.functions.Function; -import io.reactivex.rxjava3.processors.PublishProcessor; - -public abstract class BaseImportExportService extends Service { - protected final String TAG = this.getClass().getSimpleName(); - - protected final CompositeDisposable disposables = new CompositeDisposable(); - protected final PublishProcessor notificationUpdater = PublishProcessor.create(); - - protected NotificationManagerCompat notificationManager; - protected NotificationCompat.Builder notificationBuilder; - protected SubscriptionManager subscriptionManager; - - private static final int NOTIFICATION_SAMPLING_PERIOD = 2500; - - protected final AtomicInteger currentProgress = new AtomicInteger(-1); - protected final AtomicInteger maxProgress = new AtomicInteger(-1); - protected final ImportExportEventListener eventListener = new ImportExportEventListener() { - @Override - public void onSizeReceived(final int size) { - maxProgress.set(size); - currentProgress.set(0); - } - - @Override - public void onItemCompleted(final String itemName) { - currentProgress.incrementAndGet(); - notificationUpdater.onNext(itemName); - } - }; - - protected Toast toast; - - @Nullable - @Override - public IBinder onBind(final Intent intent) { - return null; - } - - @Override - public void onCreate() { - super.onCreate(); - subscriptionManager = new SubscriptionManager(this); - setupNotification(); - } - - @Override - public void onDestroy() { - super.onDestroy(); - disposeAll(); - } - - protected void disposeAll() { - disposables.clear(); - } - - /*////////////////////////////////////////////////////////////////////////// - // Notification Impl - //////////////////////////////////////////////////////////////////////////*/ - - protected abstract int getNotificationId(); - - @StringRes - public abstract int getTitle(); - - protected void setupNotification() { - notificationManager = NotificationManagerCompat.from(this); - notificationBuilder = createNotification(); - startForeground(getNotificationId(), notificationBuilder.build()); - - final Function, Publisher> throttleAfterFirstEmission = flow -> - flow.take(1).concatWith(flow.skip(1) - .throttleLast(NOTIFICATION_SAMPLING_PERIOD, TimeUnit.MILLISECONDS)); - - disposables.add(notificationUpdater - .filter(s -> !s.isEmpty()) - .publish(throttleAfterFirstEmission) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(this::updateNotification)); - } - - protected void updateNotification(final String text) { - notificationBuilder - .setProgress(maxProgress.get(), currentProgress.get(), maxProgress.get() == -1); - - final String progressText = currentProgress + "/" + maxProgress; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - if (!TextUtils.isEmpty(text)) { - notificationBuilder.setContentText(text + " (" + progressText + ")"); - } - } else { - notificationBuilder.setContentInfo(progressText); - notificationBuilder.setContentText(text); - } - - if (notificationManager.areNotificationsEnabled()) { - notificationManager.notify(getNotificationId(), notificationBuilder.build()); - } - } - - protected void stopService() { - postErrorResult(null, null); - } - - protected void stopAndReportError(final Throwable throwable, final String request) { - stopService(); - ErrorUtil.createNotification(this, new ErrorInfo( - throwable, UserAction.SUBSCRIPTION_IMPORT_EXPORT, request)); - } - - protected void postErrorResult(final String title, final String text) { - disposeAll(); - ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_REMOVE); - stopSelf(); - - if (title == null) { - return; - } - - final String textOrEmpty = text == null ? "" : text; - notificationBuilder = new NotificationCompat - .Builder(this, getString(R.string.notification_channel_id)) - .setSmallIcon(R.drawable.ic_newpipe_triangle_white) - .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) - .setContentTitle(title) - .setStyle(new NotificationCompat.BigTextStyle().bigText(textOrEmpty)) - .setContentText(textOrEmpty); - - if (notificationManager.areNotificationsEnabled()) { - notificationManager.notify(getNotificationId(), notificationBuilder.build()); - } - } - - protected NotificationCompat.Builder createNotification() { - return new NotificationCompat.Builder(this, getString(R.string.notification_channel_id)) - .setOngoing(true) - .setProgress(-1, -1, true) - .setSmallIcon(R.drawable.ic_newpipe_triangle_white) - .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) - .setContentTitle(getString(getTitle())); - } - - /*////////////////////////////////////////////////////////////////////////// - // Toast - //////////////////////////////////////////////////////////////////////////*/ - - protected void showToast(@StringRes final int message) { - showToast(getString(message)); - } - - protected void showToast(final String message) { - if (toast != null) { - toast.cancel(); - } - - toast = Toast.makeText(this, message, Toast.LENGTH_SHORT); - toast.show(); - } - - /*////////////////////////////////////////////////////////////////////////// - // Error handling - //////////////////////////////////////////////////////////////////////////*/ - - protected void handleError(@StringRes final int errorTitle, @NonNull final Throwable error) { - String message = getErrorMessage(error); - - if (TextUtils.isEmpty(message)) { - final String errorClassName = error.getClass().getName(); - message = getString(R.string.error_occurred_detail, errorClassName); - } - - showToast(errorTitle); - postErrorResult(getString(errorTitle), message); - } - - protected String getErrorMessage(final Throwable error) { - String message = null; - if (error instanceof SubscriptionExtractor.InvalidSourceException) { - message = getString(R.string.invalid_source); - } else if (error instanceof FileNotFoundException) { - message = getString(R.string.invalid_file); - } else if (ExceptionUtils.isNetworkRelated(error)) { - message = getString(R.string.network_error); - } - return message; - } -} diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/services/ImportExportEventListener.java b/app/src/main/java/org/schabi/newpipe/local/subscription/services/ImportExportEventListener.java deleted file mode 100644 index 7352d1f12da..00000000000 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/services/ImportExportEventListener.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.schabi.newpipe.local.subscription.services; - -public interface ImportExportEventListener { - /** - * Called when the size has been resolved. - * - * @param size how many items there are to import/export - */ - void onSizeReceived(int size); - - /** - * Called every time an item has been parsed/resolved. - * - * @param itemName the name of the subscription item - */ - void onItemCompleted(String itemName); -} diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/services/ImportExportJsonHelper.java b/app/src/main/java/org/schabi/newpipe/local/subscription/services/ImportExportJsonHelper.java deleted file mode 100644 index 611a1cd30bc..00000000000 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/services/ImportExportJsonHelper.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright 2018 Mauricio Colli - * ImportExportJsonHelper.java is part of NewPipe - * - * License: GPL-3.0+ - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.schabi.newpipe.local.subscription.services; - -import androidx.annotation.Nullable; - -import com.grack.nanojson.JsonAppendableWriter; -import com.grack.nanojson.JsonArray; -import com.grack.nanojson.JsonObject; -import com.grack.nanojson.JsonParser; -import com.grack.nanojson.JsonWriter; - -import org.schabi.newpipe.BuildConfig; -import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor.InvalidSourceException; -import org.schabi.newpipe.extractor.subscription.SubscriptionItem; - -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.List; - -/** - * A JSON implementation capable of importing and exporting subscriptions, it has the advantage - * of being able to transfer subscriptions to any device. - */ -public final class ImportExportJsonHelper { - /*////////////////////////////////////////////////////////////////////////// - // Json implementation - //////////////////////////////////////////////////////////////////////////*/ - - private static final String JSON_APP_VERSION_KEY = "app_version"; - private static final String JSON_APP_VERSION_INT_KEY = "app_version_int"; - - private static final String JSON_SUBSCRIPTIONS_ARRAY_KEY = "subscriptions"; - - private static final String JSON_SERVICE_ID_KEY = "service_id"; - private static final String JSON_URL_KEY = "url"; - private static final String JSON_NAME_KEY = "name"; - - private ImportExportJsonHelper() { } - - /** - * Read a JSON source through the input stream. - * - * @param in the input stream (e.g. a file) - * @param eventListener listener for the events generated - * @return the parsed subscription items - */ - public static List readFrom( - final InputStream in, @Nullable final ImportExportEventListener eventListener) - throws InvalidSourceException { - if (in == null) { - throw new InvalidSourceException("input is null"); - } - - final List channels = new ArrayList<>(); - - try { - final JsonObject parentObject = JsonParser.object().from(in); - - if (!parentObject.has(JSON_SUBSCRIPTIONS_ARRAY_KEY)) { - throw new InvalidSourceException("Channels array is null"); - } - - final JsonArray channelsArray = parentObject.getArray(JSON_SUBSCRIPTIONS_ARRAY_KEY); - - if (eventListener != null) { - eventListener.onSizeReceived(channelsArray.size()); - } - - for (final Object o : channelsArray) { - if (o instanceof JsonObject) { - final JsonObject itemObject = (JsonObject) o; - final int serviceId = itemObject.getInt(JSON_SERVICE_ID_KEY, 0); - final String url = itemObject.getString(JSON_URL_KEY); - final String name = itemObject.getString(JSON_NAME_KEY); - - if (url != null && name != null && !url.isEmpty() && !name.isEmpty()) { - channels.add(new SubscriptionItem(serviceId, url, name)); - if (eventListener != null) { - eventListener.onItemCompleted(name); - } - } - } - } - } catch (final Throwable e) { - throw new InvalidSourceException("Couldn't parse json", e); - } - - return channels; - } - - /** - * Write the subscriptions items list as JSON to the output. - * - * @param items the list of subscriptions items - * @param out the output stream (e.g. a file) - * @param eventListener listener for the events generated - */ - public static void writeTo(final List items, final OutputStream out, - @Nullable final ImportExportEventListener eventListener) { - final JsonAppendableWriter writer = JsonWriter.on(out); - writeTo(items, writer, eventListener); - writer.done(); - } - - /** - * @see #writeTo(List, OutputStream, ImportExportEventListener) - * @param items the list of subscriptions items - * @param writer the output {@link JsonAppendableWriter} - * @param eventListener listener for the events generated - */ - public static void writeTo(final List items, - final JsonAppendableWriter writer, - @Nullable final ImportExportEventListener eventListener) { - if (eventListener != null) { - eventListener.onSizeReceived(items.size()); - } - - writer.object(); - - writer.value(JSON_APP_VERSION_KEY, BuildConfig.VERSION_NAME); - writer.value(JSON_APP_VERSION_INT_KEY, BuildConfig.VERSION_CODE); - - writer.array(JSON_SUBSCRIPTIONS_ARRAY_KEY); - for (final SubscriptionItem item : items) { - writer.object(); - writer.value(JSON_SERVICE_ID_KEY, item.getServiceId()); - writer.value(JSON_URL_KEY, item.getUrl()); - writer.value(JSON_NAME_KEY, item.getName()); - writer.end(); - - if (eventListener != null) { - eventListener.onItemCompleted(item.getName()); - } - } - writer.end(); - - writer.end(); - } -} diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/services/SubscriptionsExportService.java b/app/src/main/java/org/schabi/newpipe/local/subscription/services/SubscriptionsExportService.java deleted file mode 100644 index ab1a5a10c2e..00000000000 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/services/SubscriptionsExportService.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2018 Mauricio Colli - * SubscriptionsExportService.java is part of NewPipe - * - * License: GPL-3.0+ - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.schabi.newpipe.local.subscription.services; - -import static org.schabi.newpipe.MainActivity.DEBUG; - -import android.content.Intent; -import android.net.Uri; -import android.util.Log; - -import androidx.core.content.IntentCompat; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; - -import org.reactivestreams.Subscriber; -import org.reactivestreams.Subscription; -import org.schabi.newpipe.App; -import org.schabi.newpipe.R; -import org.schabi.newpipe.database.subscription.SubscriptionEntity; -import org.schabi.newpipe.extractor.subscription.SubscriptionItem; -import org.schabi.newpipe.streams.io.SharpOutputStream; -import org.schabi.newpipe.streams.io.StoredFileHelper; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.List; - -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; -import io.reactivex.rxjava3.functions.Function; -import io.reactivex.rxjava3.schedulers.Schedulers; - -public class SubscriptionsExportService extends BaseImportExportService { - public static final String KEY_FILE_PATH = "key_file_path"; - - /** - * A {@link LocalBroadcastManager local broadcast} will be made with this action - * when the export is successfully completed. - */ - public static final String EXPORT_COMPLETE_ACTION = App.PACKAGE_NAME + ".local.subscription" - + ".services.SubscriptionsExportService.EXPORT_COMPLETE"; - - private Subscription subscription; - private StoredFileHelper outFile; - private OutputStream outputStream; - - @Override - public int onStartCommand(final Intent intent, final int flags, final int startId) { - if (intent == null || subscription != null) { - return START_NOT_STICKY; - } - - final Uri path = IntentCompat.getParcelableExtra(intent, KEY_FILE_PATH, Uri.class); - if (path == null) { - stopAndReportError(new IllegalStateException( - "Exporting to a file, but the path is null"), - "Exporting subscriptions"); - return START_NOT_STICKY; - } - - try { - outFile = new StoredFileHelper(this, path, "application/json"); - // truncate the file before writing to it, otherwise if the new content is smaller than - // the previous file size, the file will retain part of the previous content and be - // corrupted - outputStream = new SharpOutputStream(outFile.openAndTruncateStream()); - } catch (final IOException e) { - handleError(e); - return START_NOT_STICKY; - } - - startExport(); - - return START_NOT_STICKY; - } - - @Override - protected int getNotificationId() { - return 4567; - } - - @Override - public int getTitle() { - return R.string.export_ongoing; - } - - @Override - protected void disposeAll() { - super.disposeAll(); - if (subscription != null) { - subscription.cancel(); - } - } - - private void startExport() { - showToast(R.string.export_ongoing); - - subscriptionManager.subscriptionTable().getAll().take(1) - .map(subscriptionEntities -> { - final List result = - new ArrayList<>(subscriptionEntities.size()); - for (final SubscriptionEntity entity : subscriptionEntities) { - result.add(new SubscriptionItem(entity.getServiceId(), entity.getUrl(), - entity.getName())); - } - return result; - }) - .map(exportToFile()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscriber()); - } - - private Subscriber getSubscriber() { - return new Subscriber() { - @Override - public void onSubscribe(final Subscription s) { - subscription = s; - s.request(1); - } - - @Override - public void onNext(final StoredFileHelper file) { - if (DEBUG) { - Log.d(TAG, "startExport() success: file = " + file); - } - } - - @Override - public void onError(final Throwable error) { - Log.e(TAG, "onError() called with: error = [" + error + "]", error); - handleError(error); - } - - @Override - public void onComplete() { - LocalBroadcastManager.getInstance(SubscriptionsExportService.this) - .sendBroadcast(new Intent(EXPORT_COMPLETE_ACTION)); - showToast(R.string.export_complete_toast); - stopService(); - } - }; - } - - private Function, StoredFileHelper> exportToFile() { - return subscriptionItems -> { - ImportExportJsonHelper.writeTo(subscriptionItems, outputStream, eventListener); - return outFile; - }; - } - - protected void handleError(final Throwable error) { - super.handleError(R.string.subscriptions_export_unsuccessful, error); - } -} diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/services/SubscriptionsImportService.java b/app/src/main/java/org/schabi/newpipe/local/subscription/services/SubscriptionsImportService.java deleted file mode 100644 index 442c7fddb8b..00000000000 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/services/SubscriptionsImportService.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Copyright 2018 Mauricio Colli - * SubscriptionsImportService.java is part of NewPipe - * - * License: GPL-3.0+ - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.schabi.newpipe.local.subscription.services; - -import static org.schabi.newpipe.MainActivity.DEBUG; -import static org.schabi.newpipe.streams.io.StoredFileHelper.DEFAULT_MIME; - -import android.content.Intent; -import android.net.Uri; -import android.text.TextUtils; -import android.util.Log; -import android.util.Pair; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.content.IntentCompat; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; - -import org.reactivestreams.Subscriber; -import org.reactivestreams.Subscription; -import org.schabi.newpipe.App; -import org.schabi.newpipe.R; -import org.schabi.newpipe.database.subscription.SubscriptionEntity; -import org.schabi.newpipe.extractor.NewPipe; -import org.schabi.newpipe.extractor.channel.ChannelInfo; -import org.schabi.newpipe.extractor.channel.tabs.ChannelTabInfo; -import org.schabi.newpipe.extractor.subscription.SubscriptionItem; -import org.schabi.newpipe.ktx.ExceptionUtils; -import org.schabi.newpipe.streams.io.SharpInputStream; -import org.schabi.newpipe.streams.io.StoredFileHelper; -import org.schabi.newpipe.util.Constants; -import org.schabi.newpipe.util.ExtractorHelper; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; -import io.reactivex.rxjava3.core.Flowable; -import io.reactivex.rxjava3.core.Notification; -import io.reactivex.rxjava3.functions.Consumer; -import io.reactivex.rxjava3.functions.Function; -import io.reactivex.rxjava3.schedulers.Schedulers; - -public class SubscriptionsImportService extends BaseImportExportService { - public static final int CHANNEL_URL_MODE = 0; - public static final int INPUT_STREAM_MODE = 1; - public static final int PREVIOUS_EXPORT_MODE = 2; - public static final String KEY_MODE = "key_mode"; - public static final String KEY_VALUE = "key_value"; - - /** - * A {@link LocalBroadcastManager local broadcast} will be made with this action - * when the import is successfully completed. - */ - public static final String IMPORT_COMPLETE_ACTION = App.PACKAGE_NAME + ".local.subscription" - + ".services.SubscriptionsImportService.IMPORT_COMPLETE"; - - /** - * How many extractions running in parallel. - */ - public static final int PARALLEL_EXTRACTIONS = 8; - - /** - * Number of items to buffer to mass-insert in the subscriptions table, - * this leads to a better performance as we can then use db transactions. - */ - public static final int BUFFER_COUNT_BEFORE_INSERT = 50; - - private Subscription subscription; - private int currentMode; - private int currentServiceId; - @Nullable - private String channelUrl; - @Nullable - private InputStream inputStream; - @Nullable - private String inputStreamType; - - @Override - public int onStartCommand(final Intent intent, final int flags, final int startId) { - if (intent == null || subscription != null) { - return START_NOT_STICKY; - } - - currentMode = intent.getIntExtra(KEY_MODE, -1); - currentServiceId = intent.getIntExtra(Constants.KEY_SERVICE_ID, Constants.NO_SERVICE_ID); - - if (currentMode == CHANNEL_URL_MODE) { - channelUrl = intent.getStringExtra(KEY_VALUE); - } else { - final Uri uri = IntentCompat.getParcelableExtra(intent, KEY_VALUE, Uri.class); - if (uri == null) { - stopAndReportError(new IllegalStateException( - "Importing from input stream, but file path is null"), - "Importing subscriptions"); - return START_NOT_STICKY; - } - - try { - final StoredFileHelper fileHelper = new StoredFileHelper(this, uri, DEFAULT_MIME); - inputStream = new SharpInputStream(fileHelper.getStream()); - inputStreamType = fileHelper.getType(); - - if (inputStreamType == null || inputStreamType.equals(DEFAULT_MIME)) { - // mime type could not be determined, just take file extension - final String name = fileHelper.getName(); - final int pointIndex = name.lastIndexOf('.'); - if (pointIndex == -1 || pointIndex >= name.length() - 1) { - inputStreamType = DEFAULT_MIME; // no extension, will fail in the extractor - } else { - inputStreamType = name.substring(pointIndex + 1); - } - } - } catch (final IOException e) { - handleError(e); - return START_NOT_STICKY; - } - } - - if (currentMode == -1 || currentMode == CHANNEL_URL_MODE && channelUrl == null) { - final String errorDescription = "Some important field is null or in illegal state: " - + "currentMode=[" + currentMode + "], " - + "channelUrl=[" + channelUrl + "], " - + "inputStream=[" + inputStream + "]"; - stopAndReportError(new IllegalStateException(errorDescription), - "Importing subscriptions"); - return START_NOT_STICKY; - } - - startImport(); - return START_NOT_STICKY; - } - - @Override - protected int getNotificationId() { - return 4568; - } - - @Override - public int getTitle() { - return R.string.import_ongoing; - } - - @Override - protected void disposeAll() { - super.disposeAll(); - if (subscription != null) { - subscription.cancel(); - } - } - - /*////////////////////////////////////////////////////////////////////////// - // Imports - //////////////////////////////////////////////////////////////////////////*/ - - private void startImport() { - showToast(R.string.import_ongoing); - - Flowable> flowable = null; - switch (currentMode) { - case CHANNEL_URL_MODE: - flowable = importFromChannelUrl(); - break; - case INPUT_STREAM_MODE: - flowable = importFromInputStream(); - break; - case PREVIOUS_EXPORT_MODE: - flowable = importFromPreviousExport(); - break; - } - - if (flowable == null) { - final String message = "Flowable given by \"importFrom\" is null " - + "(current mode: " + currentMode + ")"; - stopAndReportError(new IllegalStateException(message), "Importing subscriptions"); - return; - } - - flowable.doOnNext(subscriptionItems -> - eventListener.onSizeReceived(subscriptionItems.size())) - .flatMap(Flowable::fromIterable) - - .parallel(PARALLEL_EXTRACTIONS) - .runOn(Schedulers.io()) - .map((Function>>>) subscriptionItem -> { - try { - final ChannelInfo channelInfo = ExtractorHelper - .getChannelInfo(subscriptionItem.getServiceId(), - subscriptionItem.getUrl(), true) - .blockingGet(); - return Notification.createOnNext(new Pair<>(channelInfo, - Collections.singletonList( - ExtractorHelper.getChannelTab( - subscriptionItem.getServiceId(), - channelInfo.getTabs().get(0), true).blockingGet() - ))); - } catch (final Throwable e) { - return Notification.createOnError(e); - } - }) - .sequential() - - .observeOn(Schedulers.io()) - .doOnNext(getNotificationsConsumer()) - - .buffer(BUFFER_COUNT_BEFORE_INSERT) - .map(upsertBatch()) - - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscriber()); - } - - private Subscriber> getSubscriber() { - return new Subscriber<>() { - @Override - public void onSubscribe(final Subscription s) { - subscription = s; - s.request(Long.MAX_VALUE); - } - - @Override - public void onNext(final List successfulInserted) { - if (DEBUG) { - Log.d(TAG, "startImport() " + successfulInserted.size() - + " items successfully inserted into the database"); - } - } - - @Override - public void onError(final Throwable error) { - Log.e(TAG, "Got an error!", error); - handleError(error); - } - - @Override - public void onComplete() { - LocalBroadcastManager.getInstance(SubscriptionsImportService.this) - .sendBroadcast(new Intent(IMPORT_COMPLETE_ACTION)); - showToast(R.string.import_complete_toast); - stopService(); - } - }; - } - - private Consumer>>> getNotificationsConsumer() { - return notification -> { - if (notification.isOnNext()) { - final String name = notification.getValue().first.getName(); - eventListener.onItemCompleted(!TextUtils.isEmpty(name) ? name : ""); - } else if (notification.isOnError()) { - final Throwable error = notification.getError(); - final Throwable cause = error.getCause(); - if (error instanceof IOException) { - throw error; - } else if (cause instanceof IOException) { - throw cause; - } else if (ExceptionUtils.isNetworkRelated(error)) { - throw new IOException(error); - } - - eventListener.onItemCompleted(""); - } - }; - } - - private Function>>>, - List> upsertBatch() { - return notificationList -> { - final List>> infoList = - new ArrayList<>(notificationList.size()); - for (final Notification>> n : notificationList) { - if (n.isOnNext()) { - infoList.add(n.getValue()); - } - } - - return subscriptionManager.upsertAll(infoList); - }; - } - - private Flowable> importFromChannelUrl() { - return Flowable.fromCallable(() -> NewPipe.getService(currentServiceId) - .getSubscriptionExtractor() - .fromChannelUrl(channelUrl)); - } - - private Flowable> importFromInputStream() { - Objects.requireNonNull(inputStream); - Objects.requireNonNull(inputStreamType); - - return Flowable.fromCallable(() -> NewPipe.getService(currentServiceId) - .getSubscriptionExtractor() - .fromInputStream(inputStream, inputStreamType)); - } - - private Flowable> importFromPreviousExport() { - return Flowable.fromCallable(() -> ImportExportJsonHelper.readFrom(inputStream, null)); - } - - protected void handleError(@NonNull final Throwable error) { - super.handleError(R.string.subscriptions_import_unsuccessful, error); - } -} diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/workers/ImportExportJsonHelper.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/workers/ImportExportJsonHelper.kt new file mode 100644 index 00000000000..b95bcd50857 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/workers/ImportExportJsonHelper.kt @@ -0,0 +1,72 @@ +/* + * Copyright 2018 Mauricio Colli + * ImportExportJsonHelper.java is part of NewPipe + * + * License: GPL-3.0+ + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.schabi.newpipe.local.subscription.workers + +import java.io.InputStream +import java.io.OutputStream +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeFromStream +import kotlinx.serialization.json.encodeToStream +import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor.InvalidSourceException + +/** + * A JSON implementation capable of importing and exporting subscriptions, it has the advantage + * of being able to transfer subscriptions to any device. + */ +object ImportExportJsonHelper { + private val json = Json { encodeDefaults = true } + + /** + * Read a JSON source through the input stream. + * + * @param in the input stream (e.g. a file) + * @return the parsed subscription items + */ + @JvmStatic + @Throws(InvalidSourceException::class) + fun readFrom(`in`: InputStream?): List { + if (`in` == null) { + throw InvalidSourceException("input is null") + } + + try { + @OptIn(ExperimentalSerializationApi::class) + return json.decodeFromStream(`in`).subscriptions + } catch (e: Throwable) { + throw InvalidSourceException("Couldn't parse json", e) + } + } + + /** + * Write the subscriptions items list as JSON to the output. + * + * @param items the list of subscriptions items + * @param out the output stream (e.g. a file) + */ + @OptIn(ExperimentalSerializationApi::class) + @JvmStatic + fun writeTo( + items: List, + out: OutputStream + ) { + json.encodeToStream(SubscriptionData(items), out) + } +} diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/workers/SubscriptionData.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/workers/SubscriptionData.kt new file mode 100644 index 00000000000..174ae758557 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/workers/SubscriptionData.kt @@ -0,0 +1,24 @@ +package org.schabi.newpipe.local.subscription.workers + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import org.schabi.newpipe.BuildConfig + +@Serializable +class SubscriptionData( + val subscriptions: List +) { + @SerialName("app_version") + private val appVersion = BuildConfig.VERSION_NAME + + @SerialName("app_version_int") + private val appVersionInt = BuildConfig.VERSION_CODE +} + +@Serializable +data class SubscriptionItem( + @SerialName("service_id") + val serviceId: Int, + val url: String, + val name: String +) diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/workers/SubscriptionExportWorker.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/workers/SubscriptionExportWorker.kt new file mode 100644 index 00000000000..09e99aa6f55 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/workers/SubscriptionExportWorker.kt @@ -0,0 +1,119 @@ +package org.schabi.newpipe.local.subscription.workers + +import android.content.Context +import android.content.pm.ServiceInfo +import android.net.Uri +import android.os.Build +import android.util.Log +import android.widget.Toast +import androidx.core.app.NotificationCompat +import androidx.core.net.toUri +import androidx.work.CoroutineWorker +import androidx.work.ExistingWorkPolicy +import androidx.work.ForegroundInfo +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.OutOfQuotaPolicy +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import androidx.work.workDataOf +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.reactive.awaitFirst +import kotlinx.coroutines.withContext +import org.schabi.newpipe.BuildConfig +import org.schabi.newpipe.NewPipeDatabase +import org.schabi.newpipe.R + +class SubscriptionExportWorker( + appContext: Context, + params: WorkerParameters +) : CoroutineWorker(appContext, params) { + // This is needed for API levels < 31 (Android S). + override suspend fun getForegroundInfo(): ForegroundInfo { + return createForegroundInfo(applicationContext.getString(R.string.export_ongoing)) + } + + override suspend fun doWork(): Result { + return try { + val uri = inputData.getString(EXPORT_PATH)!!.toUri() + val table = NewPipeDatabase.getInstance(applicationContext).subscriptionDAO() + val subscriptions = + table.getAll() + .awaitFirst() + .map { SubscriptionItem(it.serviceId, it.url ?: "", it.name ?: "") } + + val qty = subscriptions.size + val title = applicationContext.resources.getQuantityString(R.plurals.export_subscriptions, qty, qty) + setForeground(createForegroundInfo(title)) + + withContext(Dispatchers.IO) { + // Truncate file if it already exists + applicationContext.contentResolver.openOutputStream(uri, "wt")?.use { + ImportExportJsonHelper.writeTo(subscriptions, it) + } + } + + if (BuildConfig.DEBUG) { + Log.i(TAG, "Exported $qty subscriptions") + } + + withContext(Dispatchers.Main) { + Toast + .makeText(applicationContext, R.string.export_complete_toast, Toast.LENGTH_SHORT) + .show() + } + + Result.success() + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + Log.e(TAG, "Error while exporting subscriptions", e) + } + + withContext(Dispatchers.Main) { + Toast + .makeText(applicationContext, R.string.subscriptions_export_unsuccessful, Toast.LENGTH_SHORT) + .show() + } + + return Result.failure() + } + } + + private fun createForegroundInfo(title: String): ForegroundInfo { + val notification = + NotificationCompat + .Builder(applicationContext, NOTIFICATION_CHANNEL_ID) + .setSmallIcon(R.drawable.ic_newpipe_triangle_white) + .setOngoing(true) + .setProgress(-1, -1, true) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE) + .setContentTitle(title) + .build() + val serviceType = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC else 0 + return ForegroundInfo(NOTIFICATION_ID, notification, serviceType) + } + + companion object { + private const val TAG = "SubscriptionExportWork" + private const val NOTIFICATION_ID = 4567 + private const val NOTIFICATION_CHANNEL_ID = "newpipe" + private const val WORK_NAME = "exportSubscriptions" + private const val EXPORT_PATH = "exportPath" + + fun schedule( + context: Context, + uri: Uri + ) { + val data = workDataOf(EXPORT_PATH to uri.toString()) + val workRequest = + OneTimeWorkRequestBuilder() + .setInputData(data) + .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) + .build() + + WorkManager + .getInstance(context) + .enqueueUniqueWork(WORK_NAME, ExistingWorkPolicy.APPEND_OR_REPLACE, workRequest) + } + } +} diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/workers/SubscriptionImportWorker.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/workers/SubscriptionImportWorker.kt new file mode 100644 index 00000000000..cc8cf6f2411 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/workers/SubscriptionImportWorker.kt @@ -0,0 +1,242 @@ +package org.schabi.newpipe.local.subscription.workers + +import android.content.Context +import android.content.pm.ServiceInfo +import android.os.Build +import android.os.Parcelable +import android.util.Log +import android.webkit.MimeTypeMap +import android.widget.Toast +import androidx.core.app.NotificationCompat +import androidx.core.net.toUri +import androidx.work.CoroutineWorker +import androidx.work.Data +import androidx.work.ForegroundInfo +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import androidx.work.workDataOf +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.rx3.await +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext +import kotlinx.parcelize.Parcelize +import org.schabi.newpipe.BuildConfig +import org.schabi.newpipe.R +import org.schabi.newpipe.extractor.NewPipe +import org.schabi.newpipe.local.subscription.SubscriptionManager +import org.schabi.newpipe.util.ExtractorHelper + +class SubscriptionImportWorker( + appContext: Context, + params: WorkerParameters +) : CoroutineWorker(appContext, params) { + // This is needed for API levels < 31 (Android S). + override suspend fun getForegroundInfo(): ForegroundInfo { + return createForegroundInfo(applicationContext.getString(R.string.import_ongoing), null, 0, 0) + } + + override suspend fun doWork(): Result { + val subscriptions = + try { + loadSubscriptionsFromInput(SubscriptionImportInput.fromData(inputData)) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + Log.e(TAG, "Error while loading subscriptions from path", e) + } + withContext(Dispatchers.Main) { + Toast + .makeText(applicationContext, R.string.subscriptions_import_unsuccessful, Toast.LENGTH_SHORT) + .show() + } + return Result.failure() + } + + val mutex = Mutex() + var index = 1 + val qty = subscriptions.size + var title = + applicationContext.resources.getQuantityString(R.plurals.load_subscriptions, qty, qty) + + val channelInfoList = + try { + withContext(Dispatchers.IO.limitedParallelism(PARALLEL_EXTRACTIONS)) { + subscriptions + .map { + async { + val channelInfo = + ExtractorHelper.getChannelInfo(it.serviceId, it.url, true).await() + val channelTab = + ExtractorHelper.getChannelTab(it.serviceId, channelInfo.tabs[0], true).await() + + val currentIndex = mutex.withLock { index++ } + setForeground(createForegroundInfo(title, channelInfo.name, currentIndex, qty)) + + channelInfo to channelTab + } + }.awaitAll() + } + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + Log.e(TAG, "Error while loading subscription data", e) + } + withContext(Dispatchers.Main) { + Toast.makeText(applicationContext, R.string.subscriptions_import_unsuccessful, Toast.LENGTH_SHORT) + .show() + } + return Result.failure() + } + + title = applicationContext.resources.getQuantityString(R.plurals.import_subscriptions, qty, qty) + setForeground(createForegroundInfo(title, null, 0, 0)) + index = 0 + + val subscriptionManager = SubscriptionManager(applicationContext) + for (chunk in channelInfoList.chunked(BUFFER_COUNT_BEFORE_INSERT)) { + withContext(Dispatchers.IO) { + subscriptionManager.upsertAll(chunk) + } + index += chunk.size + setForeground(createForegroundInfo(title, null, index, qty)) + } + + withContext(Dispatchers.Main) { + Toast.makeText(applicationContext, R.string.import_complete_toast, Toast.LENGTH_SHORT) + .show() + } + + return Result.success() + } + + private suspend fun loadSubscriptionsFromInput(input: SubscriptionImportInput): List { + return withContext(Dispatchers.IO) { + when (input) { + is SubscriptionImportInput.ChannelUrlMode -> + NewPipe.getService(input.serviceId).subscriptionExtractor + .fromChannelUrl(input.url) + .map { SubscriptionItem(it.serviceId, it.url, it.name) } + + is SubscriptionImportInput.InputStreamMode -> + applicationContext.contentResolver.openInputStream(input.url.toUri())?.use { + val contentType = + MimeTypeMap.getFileExtensionFromUrl(input.url).ifEmpty { DEFAULT_MIME } + NewPipe.getService(input.serviceId).subscriptionExtractor + .fromInputStream(it, contentType) + .map { SubscriptionItem(it.serviceId, it.url, it.name) } + } + + is SubscriptionImportInput.PreviousExportMode -> + applicationContext.contentResolver.openInputStream(input.url.toUri())?.use { + ImportExportJsonHelper.readFrom(it) + } + } ?: emptyList() + } + } + + private fun createForegroundInfo( + title: String, + text: String?, + currentProgress: Int, + maxProgress: Int + ): ForegroundInfo { + val notification = + NotificationCompat + .Builder(applicationContext, NOTIFICATION_CHANNEL_ID) + .setSmallIcon(R.drawable.ic_newpipe_triangle_white) + .setOngoing(true) + .setProgress(maxProgress, currentProgress, currentProgress == 0) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE) + .setContentTitle(title) + .setContentText(text) + .addAction( + R.drawable.ic_close, + applicationContext.getString(R.string.cancel), + WorkManager.getInstance(applicationContext).createCancelPendingIntent(id) + ).apply { + if (currentProgress > 0 && maxProgress > 0) { + val progressText = "$currentProgress/$maxProgress" + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + setSubText(progressText) + } else { + setContentInfo(progressText) + } + } + }.build() + val serviceType = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC else 0 + + return ForegroundInfo(NOTIFICATION_ID, notification, serviceType) + } + + companion object { + // Log tag length is limited to 23 characters on API levels < 24. + private const val TAG = "SubscriptionImport" + + private const val NOTIFICATION_ID = 4568 + private const val NOTIFICATION_CHANNEL_ID = "newpipe" + private const val DEFAULT_MIME = "application/octet-stream" + private const val PARALLEL_EXTRACTIONS = 8 + private const val BUFFER_COUNT_BEFORE_INSERT = 50 + + const val WORK_NAME = "SubscriptionImportWorker" + } +} + +sealed class SubscriptionImportInput : Parcelable { + @Parcelize + data class ChannelUrlMode(val serviceId: Int, val url: String) : SubscriptionImportInput() + + @Parcelize + data class InputStreamMode(val serviceId: Int, val url: String) : SubscriptionImportInput() + + @Parcelize + data class PreviousExportMode(val url: String) : SubscriptionImportInput() + + fun toData(): Data { + val (mode, serviceId, url) = when (this) { + is ChannelUrlMode -> Triple(CHANNEL_URL_MODE, serviceId, url) + is InputStreamMode -> Triple(INPUT_STREAM_MODE, serviceId, url) + is PreviousExportMode -> Triple(PREVIOUS_EXPORT_MODE, null, url) + } + return workDataOf("mode" to mode, "service_id" to serviceId, "url" to url) + } + + companion object { + + private const val CHANNEL_URL_MODE = 0 + private const val INPUT_STREAM_MODE = 1 + private const val PREVIOUS_EXPORT_MODE = 2 + + fun fromData(data: Data): SubscriptionImportInput { + val mode = data.getInt("mode", PREVIOUS_EXPORT_MODE) + when (mode) { + CHANNEL_URL_MODE -> { + val serviceId = data.getInt("service_id", -1) + if (serviceId == -1) { + throw IllegalArgumentException("No service id provided") + } + val url = data.getString("url")!! + return ChannelUrlMode(serviceId, url) + } + + INPUT_STREAM_MODE -> { + val serviceId = data.getInt("service_id", -1) + if (serviceId == -1) { + throw IllegalArgumentException("No service id provided") + } + val url = data.getString("url")!! + return InputStreamMode(serviceId, url) + } + + PREVIOUS_EXPORT_MODE -> { + val url = data.getString("url")!! + return PreviousExportMode(url) + } + + else -> throw IllegalArgumentException("Unknown mode: $mode") + } + } + } +} diff --git a/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserPlaybackPreparer.kt b/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserPlaybackPreparer.kt index 890c83cfa8e..c0a2f966818 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserPlaybackPreparer.kt +++ b/app/src/main/java/org/schabi/newpipe/player/mediabrowser/MediaBrowserPlaybackPreparer.kt @@ -49,7 +49,7 @@ import org.schabi.newpipe.util.NavigationHelper */ class MediaBrowserPlaybackPreparer( private val context: Context, - private val setMediaSessionError: BiConsumer, // error string, error code + private val setMediaSessionError: BiConsumer, // error string, error code private val clearMediaSessionError: Runnable, private val onPrepare: Consumer ) : PlaybackPreparer { @@ -118,7 +118,7 @@ class MediaBrowserPlaybackPreparer( private fun onPrepareError(throwable: Throwable) { setMediaSessionError.accept( - ErrorInfo.getMessage(throwable, null, null).getString(context), + ErrorInfo.getMessage(throwable, null, null).getText(context), PlaybackStateCompat.ERROR_CODE_APP_ERROR ) } diff --git a/app/src/main/java/org/schabi/newpipe/settings/BackupRestoreSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/BackupRestoreSettingsFragment.java index baaa93e4445..11c4daedec4 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/BackupRestoreSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/BackupRestoreSettingsFragment.java @@ -16,7 +16,6 @@ import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; import androidx.preference.Preference; import androidx.preference.PreferenceManager; @@ -27,6 +26,7 @@ import org.schabi.newpipe.error.ErrorInfo; import org.schabi.newpipe.error.ErrorUtil; import org.schabi.newpipe.error.UserAction; +import org.schabi.newpipe.local.subscription.SubscriptionsImportExportHelper; import org.schabi.newpipe.settings.export.BackupFileLocator; import org.schabi.newpipe.settings.export.ImportExportManager; import org.schabi.newpipe.streams.io.NoFileManagerSafeGuard; @@ -34,12 +34,10 @@ import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.ZipHelper; -import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; -import java.util.Objects; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -57,18 +55,22 @@ public class BackupRestoreSettingsFragment extends BasePreferenceFragment { private final ActivityResultLauncher requestExportPathLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this::requestExportPathResult); + private SubscriptionsImportExportHelper importExportHelper; + @Override + public void onAttach(@NonNull final Context context) { + super.onAttach(context); + importExportHelper = new SubscriptionsImportExportHelper(this); + } + @Override public void onCreatePreferences(@Nullable final Bundle savedInstanceState, @Nullable final String rootKey) { - final File homeDir = ContextCompat.getDataDir(requireContext()); - Objects.requireNonNull(homeDir); - manager = new ImportExportManager(new BackupFileLocator(homeDir)); + manager = new ImportExportManager(new BackupFileLocator(requireContext())); importExportDataPathKey = getString(R.string.import_export_data_path); - addPreferencesFromResourceRegistry(); final Preference importDataPreference = requirePreference(R.string.import_data); @@ -123,6 +125,21 @@ ZIP_MIME_TYPE, getImportExportDataUri()), alertDialog.show(); return true; }); + + final Preference exportSubsPreference = + requirePreference(R.string.export_subscriptions_key); + exportSubsPreference.setOnPreferenceClickListener(reference -> { + importExportHelper.onExportSelected(); + return true; + }); + + final Preference importSubsPreference = + requirePreference(R.string.import_subscriptions_key); + importSubsPreference.setOnPreferenceClickListener(preference -> { + importExportHelper.onImportPreviousSelected(); + return true; + }); + } private void requestExportPathResult(final ActivityResult result) { @@ -181,9 +198,7 @@ private void importDatabase(final StoredFileHelper file, final Uri importDataUri } try { - if (!manager.ensureDbDirectoryExists()) { - throw new IOException("Could not create databases dir"); - } + manager.ensureDbDirectoryExists(); // replace the current database if (!manager.extractDb(file)) { diff --git a/app/src/main/java/org/schabi/newpipe/settings/export/BackupFileLocator.kt b/app/src/main/java/org/schabi/newpipe/settings/export/BackupFileLocator.kt index f44d4f3e2d5..97a7e642f1a 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/export/BackupFileLocator.kt +++ b/app/src/main/java/org/schabi/newpipe/settings/export/BackupFileLocator.kt @@ -1,11 +1,13 @@ package org.schabi.newpipe.settings.export -import java.io.File +import android.content.Context +import java.nio.file.Path +import kotlin.io.path.div /** * Locates specific files of NewPipe based on the home directory of the app. */ -class BackupFileLocator(private val homeDir: File) { +class BackupFileLocator(context: Context) { companion object { const val FILE_NAME_DB = "newpipe.db" @@ -17,13 +19,8 @@ class BackupFileLocator(private val homeDir: File) { const val FILE_NAME_JSON_PREFS = "preferences.json" } - val dbDir by lazy { File(homeDir, "/databases") } - - val db by lazy { File(dbDir, FILE_NAME_DB) } - - val dbJournal by lazy { File(dbDir, "$FILE_NAME_DB-journal") } - - val dbShm by lazy { File(dbDir, "$FILE_NAME_DB-shm") } - - val dbWal by lazy { File(dbDir, "$FILE_NAME_DB-wal") } + val db: Path = context.getDatabasePath(FILE_NAME_DB).toPath() + val dbJournal: Path = db.resolveSibling("$FILE_NAME_DB-journal") + val dbShm: Path = db.resolveSibling("$FILE_NAME_DB-shm") + val dbWal: Path = db.resolveSibling("$FILE_NAME_DB-wal") } diff --git a/app/src/main/java/org/schabi/newpipe/settings/export/ImportExportManager.kt b/app/src/main/java/org/schabi/newpipe/settings/export/ImportExportManager.kt index 83cca2e0b66..b5ab72f517c 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/export/ImportExportManager.kt +++ b/app/src/main/java/org/schabi/newpipe/settings/export/ImportExportManager.kt @@ -9,6 +9,8 @@ import java.io.FileNotFoundException import java.io.IOException import java.io.ObjectOutputStream import java.util.zip.ZipOutputStream +import kotlin.io.path.createParentDirectories +import kotlin.io.path.deleteIfExists import org.schabi.newpipe.streams.io.SharpOutputStream import org.schabi.newpipe.streams.io.StoredFileHelper import org.schabi.newpipe.util.ZipHelper @@ -28,11 +30,8 @@ class ImportExportManager(private val fileLocator: BackupFileLocator) { // previous file size, the file will retain part of the previous content and be corrupted ZipOutputStream(SharpOutputStream(file.openAndTruncateStream()).buffered()).use { outZip -> // add the database - ZipHelper.addFileToZip( - outZip, - BackupFileLocator.FILE_NAME_DB, - fileLocator.db.path - ) + val name = BackupFileLocator.FILE_NAME_DB + ZipHelper.addFileToZip(outZip, name, fileLocator.db) // add the legacy vulnerable serialized preferences (will be removed in the future) ZipHelper.addFileToZip( @@ -61,11 +60,10 @@ class ImportExportManager(private val fileLocator: BackupFileLocator) { /** * Tries to create database directory if it does not exist. - * - * @return Whether the directory exists afterwards. */ - fun ensureDbDirectoryExists(): Boolean { - return fileLocator.dbDir.exists() || fileLocator.dbDir.mkdir() + @Throws(IOException::class) + fun ensureDbDirectoryExists() { + fileLocator.db.createParentDirectories() } /** @@ -75,16 +73,13 @@ class ImportExportManager(private val fileLocator: BackupFileLocator) { * @return true if the database was successfully extracted, false otherwise */ fun extractDb(file: StoredFileHelper): Boolean { - val success = ZipHelper.extractFileFromZip( - file, - BackupFileLocator.FILE_NAME_DB, - fileLocator.db.path - ) + val name = BackupFileLocator.FILE_NAME_DB + val success = ZipHelper.extractFileFromZip(file, name, fileLocator.db) if (success) { - fileLocator.dbJournal.delete() - fileLocator.dbWal.delete() - fileLocator.dbShm.delete() + fileLocator.dbJournal.deleteIfExists() + fileLocator.dbWal.deleteIfExists() + fileLocator.dbShm.deleteIfExists() } return success 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 49e27d1082e..23dd6b2c761 100644 --- a/app/src/main/java/org/schabi/newpipe/util/Localization.java +++ b/app/src/main/java/org/schabi/newpipe/util/Localization.java @@ -426,12 +426,24 @@ private static double round(final double value, final int scale) { return new BigDecimal(value).setScale(scale, RoundingMode.HALF_UP).doubleValue(); } + /** + * A wrapper around {@code context.getResources().getQuantityString()} with some safeguard. + * + * @param context the Android context + * @param pluralId the ID of the plural resource + * @param zeroCaseStringId the resource ID of the string to use in case {@code count=0}, + * or 0 if the plural resource should be used in the zero case too + * @param count the number that should be used to pick the correct plural form + * @param formattedCount the formatting parameter to substitute inside the plural resource, + * ideally just {@code count} converted to string + * @return the formatted string with the correct pluralization + */ private static String getQuantity(@NonNull final Context context, @PluralsRes final int pluralId, @StringRes final int zeroCaseStringId, final long count, final String formattedCount) { - if (count == 0) { + if (count == 0 && zeroCaseStringId != 0) { return context.getString(zeroCaseStringId); } diff --git a/app/src/main/java/org/schabi/newpipe/util/ZipHelper.java b/app/src/main/java/org/schabi/newpipe/util/ZipHelper.java index b2aebac426b..bccfc7f3874 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ZipHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ZipHelper.java @@ -6,12 +6,12 @@ import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; @@ -37,9 +37,6 @@ */ public final class ZipHelper { - - private static final int BUFFER_SIZE = 2048; - @FunctionalInterface public interface InputStreamConsumer { void acceptStream(InputStream inputStream) throws IOException; @@ -55,17 +52,17 @@ private ZipHelper() { } /** - * This function helps to create zip files. Caution this will overwrite the original file. + * This function helps to create zip files. Caution, this will overwrite the original file. * * @param outZip the ZipOutputStream where the data should be stored in * @param nameInZip the path of the file inside the zip - * @param fileOnDisk the path of the file on the disk that should be added to zip + * @param path the path of the file on the disk that should be added to zip */ public static void addFileToZip(final ZipOutputStream outZip, final String nameInZip, - final String fileOnDisk) throws IOException { - try (FileInputStream fi = new FileInputStream(fileOnDisk)) { - addFileToZip(outZip, nameInZip, fi); + final Path path) throws IOException { + try (var inputStream = Files.newInputStream(path)) { + addFileToZip(outZip, nameInZip, inputStream); } } @@ -80,13 +77,13 @@ public static void addFileToZip(final ZipOutputStream outZip, final String nameInZip, final OutputStreamConsumer streamConsumer) throws IOException { final byte[] bytes; - try (ByteArrayOutputStream byteOutput = new ByteArrayOutputStream()) { + try (var byteOutput = new ByteArrayOutputStream()) { streamConsumer.acceptStream(byteOutput); bytes = byteOutput.toByteArray(); } - try (ByteArrayInputStream byteInput = new ByteArrayInputStream(bytes)) { - ZipHelper.addFileToZip(outZip, nameInZip, byteInput); + try (var byteInput = new ByteArrayInputStream(bytes)) { + addFileToZip(outZip, nameInZip, byteInput); } } @@ -97,49 +94,26 @@ public static void addFileToZip(final ZipOutputStream outZip, * @param nameInZip the path of the file inside the zip * @param inputStream the content to put inside the file */ - public static void addFileToZip(final ZipOutputStream outZip, - final String nameInZip, - final InputStream inputStream) throws IOException { - final byte[] data = new byte[BUFFER_SIZE]; - try (BufferedInputStream bufferedInputStream = - new BufferedInputStream(inputStream, BUFFER_SIZE)) { - final ZipEntry entry = new ZipEntry(nameInZip); - outZip.putNextEntry(entry); - int count; - while ((count = bufferedInputStream.read(data, 0, BUFFER_SIZE)) != -1) { - outZip.write(data, 0, count); - } - } + private static void addFileToZip(final ZipOutputStream outZip, + final String nameInZip, + final InputStream inputStream) throws IOException { + outZip.putNextEntry(new ZipEntry(nameInZip)); + inputStream.transferTo(outZip); } /** - * This will extract data from ZipInputStream. Caution this will overwrite the original file. + * This will extract data from ZipInputStream. Caution, this will overwrite the original file. * * @param zipFile the zip file to extract from * @param nameInZip the path of the file inside the zip - * @param fileOnDisk the path of the file on the disk where the data should be extracted to + * @param path the path of the file on the disk where the data should be extracted to * @return will return true if the file was found within the zip file */ public static boolean extractFileFromZip(final StoredFileHelper zipFile, final String nameInZip, - final String fileOnDisk) throws IOException { - return extractFileFromZip(zipFile, nameInZip, input -> { - // delete old file first - final File oldFile = new File(fileOnDisk); - if (oldFile.exists()) { - if (!oldFile.delete()) { - throw new IOException("Could not delete " + fileOnDisk); - } - } - - final byte[] data = new byte[BUFFER_SIZE]; - try (FileOutputStream outFile = new FileOutputStream(fileOnDisk)) { - int count; - while ((count = input.read(data)) != -1) { - outFile.write(data, 0, count); - } - } - }); + final Path path) throws IOException { + return extractFileFromZip(zipFile, nameInZip, input -> + Files.copy(input, path, StandardCopyOption.REPLACE_EXISTING)); } /** diff --git a/app/src/main/java/org/schabi/newpipe/util/image/ImageStrategy.kt b/app/src/main/java/org/schabi/newpipe/util/image/ImageStrategy.kt index c7e94c7f89d..d9d7a3c0759 100644 --- a/app/src/main/java/org/schabi/newpipe/util/image/ImageStrategy.kt +++ b/app/src/main/java/org/schabi/newpipe/util/image/ImageStrategy.kt @@ -186,7 +186,15 @@ object ImageStrategy { fun dbUrlToImageList(url: String?): List { return when (url) { null -> listOf() - else -> listOf(Image(url, -1, -1, ResolutionLevel.UNKNOWN)) + + else -> listOf( + Image( + url, + Image.HEIGHT_UNKNOWN, + Image.WIDTH_UNKNOWN, + ResolutionLevel.UNKNOWN + ) + ) } } } diff --git a/app/src/main/java/org/schabi/newpipe/util/text/TextViewExtensions.kt b/app/src/main/java/org/schabi/newpipe/util/text/TextViewExtensions.kt new file mode 100644 index 00000000000..d2efbf5411a --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/text/TextViewExtensions.kt @@ -0,0 +1,29 @@ +package org.schabi.newpipe.util.text + +import android.content.res.Resources +import android.text.SpannableString +import android.text.method.LinkMovementMethod +import android.text.util.Linkify +import android.util.Patterns +import android.widget.TextView +import androidx.annotation.StringRes +import androidx.core.text.parseAsHtml +import androidx.core.text.toHtml +import androidx.core.text.toSpanned + +/** + * Takes in a CharSequence [text] + * and makes raw HTTP URLs and HTML anchor tags clickable + */ +fun TextView.setTextWithLinks(text: CharSequence) { + val spanned = SpannableString(text) + // Using the pattern overload of addLinks since the one with the int masks strips all spans from the text before applying new ones + Linkify.addLinks(spanned, Patterns.WEB_URL, null) + this.text = spanned + this.movementMethod = LinkMovementMethod.getInstance() +} + +/** + * Gets text from string resource with [id] while preserving styling and allowing string format value substitution of [formatArgs] + */ +fun Resources.getText(@StringRes id: Int, vararg formatArgs: Any?): CharSequence = getText(id).toSpanned().toHtml().format(*formatArgs).parseAsHtml() diff --git a/app/src/main/res/values-aeb/strings.xml b/app/src/main/res/values-aeb/strings.xml deleted file mode 100644 index a6b3daec935..00000000000 --- a/app/src/main/res/values-aeb/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/values-ang/strings.xml b/app/src/main/res/values-ang/strings.xml deleted file mode 100644 index a6b3daec935..00000000000 --- a/app/src/main/res/values-ang/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ 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 8a840f82825..fd5f91553a0 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -903,4 +903,7 @@ تم تلقي خطأ HTTP 403 من الخادم أثناء التشغيل، ويرجح أن يكون السبب هو حظر عنوان IP أو مشكلات في إزالة التعتيم عن عنوان URL للبث رفض %1$s تقديم البيانات، وطلب تسجيل الدخول للتأكد من أن الطالب ليس روبوتًا.\n\nربما تم حظر عنوان IP الخاص بك مؤقتًا من قبل %1$s، يمكنك الانتظار بعض الوقت أو التبديل إلى عنوان IP مختلف (على سبيل المثال عن طريق تشغيل/إيقاف تشغيل VPN، أو التبديل من WiFi إلى بيانات الهاتف المحمول). هذا المحتوى غير متاح للبلد المحدد حاليًا.\n\nقم بتغيير اختيارك من ”الإعدادات > المحتوى > البلد الافتراضي للمحتوى“. + أعلنت Google أنه ابتداءً من عام 2026/2027، ستتطلب جميع التطبيقات على الأجهزة المعتمدة من Android من المطورين تقديم معلومات هويتهم الشخصية مباشرةً إلى Google. بما أن مطوري هذا التطبيق لا يوافقون على هذا الشرط، فلن يعمل هذا التطبيق على أجهزة Android المعتمدة بعد ذلك الوقت. + تفاصيل + حل diff --git a/app/src/main/res/values-ars/strings.xml b/app/src/main/res/values-ars/strings.xml deleted file mode 100644 index a6b3daec935..00000000000 --- a/app/src/main/res/values-ars/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ 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 deleted file mode 100644 index a6b3daec935..00000000000 --- a/app/src/main/res/values-ay/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/values-ayc/strings.xml b/app/src/main/res/values-ayc/strings.xml deleted file mode 100644 index bfc24d06d45..00000000000 --- a/app/src/main/res/values-ayc/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - Uka luparu ch’allt’aña qalltañataki. - \ 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 73ed98d7e78..c432b645d60 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -823,6 +823,26 @@ Oynadarkən serverdən alınan HTTP xətası 403, çox güman ki, yayım URL-si müddətinin bitməsi və ya IP qadağası ilə bağlıdır HTTP xətası %1$s oynadarkən serverdən alındı HTTP xətası 403 oynadarkən serverdən alındı, ehtimal ki, IP qadağası və ya yayım URL-nin deobfuscation problemləri ilə bağlıdır - %1$s sorğuçunun bot olmadığını təsdiqləmək üçün giriş tələb edərək data təmin etməkdən imtina etdi.\n\nIP-niz %1$s tərəfindən müvəqqəti şəkildə qadağan oluna bilər, bir müddət gözləyə və ya başqa IP-yə keçə bilərsiniz (məsələn, VPN-i açıb/qapatmaqla və ya WiFi-dan mobil dataya keçməklə). + %1$s sorğuçunun bot olmadığını təsdiqləmək üçün giriş tələb edərək data təmin etməkdən imtina etdi.\n\nIP-niz %1$s tərəfindən müvəqqəti şəkildə qadağan oluna bilər, bir müddət gözləyə və ya başqa IP-yə keçə bilərsiniz (məsələn, VPN-i açıb/qapatmaqla və ya WiFi-dan mobil dataya keçməklə).\n\nDaha çox məlumat üçün xahiş olunur bu Tez-tez Verilən Suallar qeydinə baxın. Bu məzmun hazırda seçilən məzmun ölkəsi üçün əlçatan deyil. \n\nSeçiminizi \"Tənzimləmələr > Məzmun > İlkin məzmun ölkəsi\"- dən dəyişin. + 2025 avqustunda, Google 2026-cı ilin sentyabrından etibarən tətbiqlərin quraşdırılması Play Store xaricində quraşdırılanlar daxil olmaqla, sertifikatlaşdırılan cihazlardakı bütün Android tətbiqləri üçün tərtibatçı təsdiqlənməsini tələb edəcək deyə bəyan etdi. NewPipe tərtibatçıları bu tələblə razılaşmadığı üçün NewPipe bu vaxtdan sonra artıq sertifikatlaşdırılan Android cihazlarında işləməyəcək. + Təfərrüatlar + Həll olunma + + %d abunəlik ixrac olunur… + %d abunəlik ixrac olunur… + + + %d abunəlik yüklənilir… + %d abunəlik yüklənilir… + + + %d abunəlik idxal olunur… + %d abunəlik idxal olunur… + + Abunəlikləri idxal et + Abunəlikləri ixrac et + Əvvəlki .json ixracından abunəlikləri idxal et + Abunəliklərinizi .json faylına köçürün + Əvvəlki köçürmədən idxal et diff --git a/app/src/main/res/values-azb/strings.xml b/app/src/main/res/values-azb/strings.xml deleted file mode 100644 index 55344e51920..00000000000 --- a/app/src/main/res/values-azb/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 87eee28d94f..943ee5a8c6f 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -830,6 +830,26 @@ HTTP грешка 403, получена от сървъра по време на възпроизвеждане, вероятно причинена от изтичане на URL адреса за стрийминг или забрана на IP адреса HTTP грешка %1$s получена от сървъра по време на възпроизвеждане HTTP грешка 403, получена от сървъра по време на възпроизвеждане, вероятно причинена от забрана на IP адреса или проблеми с деобфускацията на URL адреси за стрийминг - %1$s отказа да предостави данни, като поиска вход, за да потвърди, че заявителят не е бот.\n\nВашият IP адрес може да е временно забранен от %1$s. Можете да изчакате известно време или да превключите към друг IP адрес (например като включите/изключите VPN или като превключите от WiFi към мобилни данни). + %1$s отказа да предостави данни, като поиска вход, за да потвърди, че заявителят не е бот.\n\nВашият IP адрес може да е временно забранен от %1$s. Можете да изчакате известно време или да превключите към друг IP адрес (например като включите/изключите VPN или като превключите от WiFi към мобилни данни).\n\nМоля, вижте тази статия с ЧЗВ за повече информация. Това съдържание не е налично за текущо избраната държава на съдържанието.\n\nПроменете избора си от \"Настройки > Съдържание > Държава на съдържанието по подразбиране\". + През август 2025 г. Google обяви, че от септември 2026 г. инсталирането на приложения ще изисква проверка от разработчика за всички приложения за Android на сертифицирани устройства, включително тези, инсталирани извън Play Store. Тъй като разработчиците на NewPipe не са съгласни с това изискване, NewPipe вече няма да работи на сертифицирани устройства с Android след този период. + Детайли + Решение + + Изнасяне на %d абонамент… + Изнасяне на %d абонаменти… + + + Зареждане на %d абонамент… + Зареждане на %d абонаменти… + + + Внасяне на %d абонамент… + Внасяне на %d абонаменти… + + Внасяне на абонаменти + Изнасяне на абонаменти + Внасяне на абонаменти от предишен .json файл + Изнесете абонаментите си в .json файл + Внасяне от предишно изнасяне diff --git a/app/src/main/res/values-bqi/strings.xml b/app/src/main/res/values-bqi/strings.xml deleted file mode 100644 index a6b3daec935..00000000000 --- a/app/src/main/res/values-bqi/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ 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 283fb8a7d34..50a5b7ecd61 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -859,6 +859,32 @@ Během přehrávání byla ze serveru přijata chyba HTTP 403, pravděpodobně způsobená vypršením platnosti streamingové adresy URL nebo zákazem IP adresy Chyba HTTP %1$s obdržená ze serveru během přehrávání Chyba HTTP 403 obdržená od serveru během přehrávání, pravděpodobně způsobená zákazem IP adresy nebo problémy s deobfuskací streamovací adresy URL - %1$s odmítl poskytnout data, žádá o přihlášení k potvrzení, že žadatel není bot.\n\nVaše IP adresa mohla být dočasně zakázána %1$s, můžete nějakou dobu počkat nebo přepnout na jinou IP adresu (například zapnutím/vypnutím VPN nebo přepnutím z WiFi na mobilní data). + %1$s odmítl poskytnout data, žádá o přihlášení k potvrzení, že žadatel není bot.\n\nVaše IP adresa mohla být dočasně zablokována službou %1$s, můžete nějakou dobu počkat nebo přepnout na jinou IP adresu (například zapnutím/vypnutím VPN nebo přepnutím z Wi-Fi na mobilní data).\n\nPro více informací si přečtěte tento záznam v FAQ. Tento obsah není pro aktuálně vybranou zemi obsahu dostupný.\n\nZměňte výběr v nabídce \"Nastavení > Obsah > Výchozí země obsahu\". + Společnost Google oznámila, že od roku 2026/2027 budou všechny aplikace na certifikovaných zařízeních Android vyžadovat, aby vývojář odeslal své osobní identifikační údaje přímo společnosti Google. Jelikož vývojáři této aplikace s tímto požadavkem nesouhlasí, aplikace po tomto datu přestane na certifikovaných zařízeních Android fungovat. + Podrobnosti + Řešení + + Exportování %d odběru… + Exportování %d odběrů… + Exportování %d odběrů… + Exportování %d odběrů… + + + Načítání %d odběru… + Načítání %d odběrů… + Načítání %d odběrů… + Načítání %d odběrů… + + + Importování %d odběru… + Importování %d odběrů… + Importování %d odběrů… + Importování %d odběrů… + + Importovat odběry + Exportovat odběry + Importovat odběry z předchozího exportu .json + Exportovat odběry do souboru .json + Importovat z předchozího exportu diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b19314f939c..778321eccd6 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -242,8 +242,8 @@ Automatisch erzeugt Import von Export nach - Importiere … - Exportiere … + Wird importiert … + Wird exportiert … Datei importieren Vorheriger Export Beachte, dass diese Aktion das Netzwerk stark belasten kann. @@ -845,6 +845,26 @@ HTTP-Fehler 403 vom Server während der Wiedergabe erhalten, wahrscheinlich verursacht durch Ablauf der Streaming-URL oder eine IP-Sperre HTTP-Fehler %1$s vom Server während der Wiedergabe erhalten HTTP-Fehler 403 vom Server während der Wiedergabe erhalten, wahrscheinlich verursacht durch eine IP-Sperre oder Probleme beim Entschlüsseln der Streaming-URL - %1$s hat die Datenbereitstellung verweigert und verlangt eine Anmeldung, um zu bestätigen, dass es sich bei dem Anfragenden nicht um einen Bot handelt.\n\nDeine IP-Adresse wurde möglicherweise vorübergehend von %1$s gesperrt. Du kannst einige Zeit warten oder zu einer anderen IP-Adresse wechseln (z. B. durch Ein- und Ausschalten eines VPNs oder durch Wechseln von WLAN zu mobilen Daten). + %1$s hat die Datenbereitstellung verweigert und verlangt eine Anmeldung, um zu bestätigen, dass es sich bei dem Anfragenden nicht um einen Bot handelt.\n\nDeine IP-Adresse wurde möglicherweise vorübergehend von %1$s gesperrt. Du kannst einige Zeit warten oder zu einer anderen IP-Adresse wechseln (z. B. durch Ein- und Ausschalten eines VPNs oder durch Wechseln von WLAN zu mobilen Daten).\n\nWeitere Informationen findest du unter diesem FAQ-Eintrag. Dieser Inhalt ist für das aktuell ausgewählte Land des Inhalts nicht verfügbar.\n\nÄndere die Auswahl unter „Einstellungen > Inhalt > Bevorzugtes Land des Inhalts“. + Im August 2025 gab Google bekannt, dass ab September 2026 für die Installation von Apps eine Entwicklerüberprüfung für alle Android-Apps auf zertifizierten Geräten erforderlich sein wird, einschließlich derjenigen, die außerhalb des Play Store installiert wurden. Da die Entwickler von NewPipe dieser Forderung nicht nachkommen, wird NewPipe nach diesem Zeitpunkt auf zertifizierten Android-Geräten nicht mehr funktionieren. + Details + Lösung + + %d Abonnement wird exportiert … + %d Abonnements werden exportiert … + + + %d Abonnement wird geladen … + %d Abonnements werden geladen … + + + %d Abonnement wird importiert … + %d Abonnements werden importiert … + + Abonnements importieren + Abonnements exportieren + Importieren von Abonnements aus einem früheren .json-Export + Exportiere deine Abonnements in eine .json-Datei + Aus vorherigem Export importieren diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 17edecb59e0..336dacf7f92 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -845,6 +845,26 @@ Σφάλμα HTTP 403 που ελήφθη από τον διακομιστή κατά την αναπαραγωγή, πιθανώς λόγω λήξης διεύθυνσης URL ροής ή αποκλεισμού IP Σφάλμα HTTP %1$s ελήφθη από τον διακομιστή κατά την αναπαραγωγή Σφάλμα HTTP 403 ελήφθη από τον διακομιστή κατά την αναπαραγωγή, πιθανώς λόγω αποκλεισμού IP ή προβλημάτων απεμπλοκής URL ροής - Ο %1$s αρνήθηκε να παράσχει δεδομένα, ζητώντας σύνδεση για να επιβεβαιώσει ότι ο αιτών δεν είναι bot.\n\nΗ IP σας ενδέχεται να έχει αποκλειστεί προσωρινά από τον %1$s. Μπορείτε να περιμένετε λίγο ή να αλλάξετε IP (για παράδειγμα, ενεργοποιώντας/απενεργοποιώντας ένα VPN ή αλλάζοντας από WiFi σε δεδομένα κινητής τηλεφωνίας). + Ο %1$s αρνήθηκε να παράσχει δεδομένα, ζητώντας σύνδεση για να επιβεβαιώσει ότι ο αιτών δεν είναι bot.\n\nΗ IP σας ενδέχεται να έχει αποκλειστεί προσωρινά από τον %1$s. Μπορείτε να περιμένετε λίγο ή να αλλάξετε IP (για παράδειγμα, ενεργοποιώντας/απενεργοποιώντας ένα VPN ή αλλάζοντας από WiFi σε δεδομένα κινητής τηλεφωνίας).\n\nΑνατρέξτε σεαυτήν την καταχώρηση στις Συχνές Ερωτήσεις για περισσότερες πληροφορίες. Αυτό το περιεχόμενο δεν είναι διαθέσιμο για την τρέχουσα επιλεγμένη χώρα περιεχομένου.\n\nΑλλάξτε την επιλογή σας από \"Ρυθμίσεις > Περιεχόμενο > Προεπιλεγμένη χώρα περιεχομένου\". + Λεπτομέρειες + Λύση + Τον Αύγουστο του 2025, η Google ανακοίνωσε ότι από τον Σεπτέμβριο του 2026, η εγκατάσταση εφαρμογών θα απαιτεί επαλήθευση προγραμματιστή για όλες τις εφαρμογές Android σε πιστοποιημένες συσκευές, συμπεριλαμβανομένων εκείνων που είναι εγκατεστημένες εκτός του Play Store. Δεδομένου ότι οι προγραμματιστές του NewPipe δεν συμφωνούν με αυτήν την απαίτηση, το NewPipe δεν θα λειτουργεί πλέον σε πιστοποιημένες συσκευές Android μετά από αυτό το χρονικό διάστημα. + + Εξαγωγή %d συνδρομής… + Εξαγωγή %d συνδρομών… + + + Φόρτωση %d συνδρομής… + Φόρτωση %d συνδρομών… + + + Εισαγωγή %d συνδρομής… + Εισαγωγή %d συνδρομών… + + Εισαγωγή συνδρομών + Εξαγωγή συνδρομών + Εισαγωγή συνδρομών από προηγούμενη εξαγωγή + Εξαγωγή των συνδρομών σας σε αρχείο .json + Εισαγωγή από προηγούμενη εξαγωγή diff --git a/app/src/main/res/values-enm/strings.xml b/app/src/main/res/values-enm/strings.xml deleted file mode 100644 index a6b3daec935..00000000000 --- a/app/src/main/res/values-enm/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ 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 051d90d3434..43d34e91cd0 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -851,4 +851,7 @@ %sMM Este contenido no está disponible para el país seleccionado actualmente.\n\nCambia tu selección en «Ajustes > Contenido > País predefinido del contenido». Para usar el reproductor emergente, seleccione %1$s en el siguiente menú de la configuración de Android y habilite %2$s. + En Agosto de 2025, Google ha anunciado que, a partir de 2026/2027, todas las aplicaciones en dispositivos Android certificados requerirán que los desarrolladores envíen sus datos personales de identidad directamente a Google. Como los desarrolladores de NewPipe no están de acuerdo con este requisito, la aplicación dejará de funcionar en dispositivos Android certificados después de esa fecha. + Detalles + Solución diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 66c7a715125..24c32fefac8 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -831,5 +831,25 @@ Esitamise ajal lisas server andmevoogu HTTP oleku %1$s Esitamise ajal lisas server andmevoogu HTTP oleku 403 ning tavaliselt tähendab see, et sinu seadme IP-aadress on keelatud või voogedastuse võrguaadressi hägustamisvastastes meetmetes on viga See sisu pole saadaval hetkel kehtvas riigis.\n\nRiiki saad muuta: Seadistused > Sisu > Sisu vaikimisi riik. - %1$s keeldus andmete edastamisest ning eeldab sisselogimist tuvastamaks, et tegemist pole robotiga.\n\nLisaks võib olla juhtunud, et %1$s on lisanud sinu seadme ip-aadressi ajutisse keelunimekirja. Sa võid oodata natuke aega või vahetada võrguühendus viisi (näiteks lülitades VPN sisse/välja või kasutades WiFi asemel mobiilset internetiühendust). + %1$s keeldus andmete edastamisest ning eeldab sisselogimist tuvastamaks, et tegemist pole robotiga.\n\nLisaks võib olla juhtunud, et %1$s on lisanud sinu seadme ip-aadressi ajutisse keelunimekirja. Sa võid oodata natuke aega või vahetada võrguühendus viisi (näiteks lülitades VPN sisse/välja või kasutades WiFi asemel mobiilset internetiühendust).\n\nLisateavet leiad siit korduva kippumate küsimuste alajaotusest. + 2025. aasta augustis teatas Google, et alates septembrist 2026 uute rakenduste paigaldamine kõikides uutes Androidi seadmetes eeldab arendajate verifitseerimist, sealhulgas juhtudel, kui selline rakendus on paigaldatud väljastpoolt Google Play rakendustepoodi. Kuna NewPipe\'i arendajad pole sellise nõudmisega nõus, siis sellise aja saabumisel NewPipe enam ei toimi sertifitseeritud Androidi seadmetes. + Üksikasjad + Lahendus + + Eksportimisel on %d tellimus… + Eksportimisel on %d tellimust… + + + Laadimisel on %d tellimus… + Laadimisel on %d tellimust… + + + Importimisel on %d tellimus… + Importimisel on %d tellimust… + + Impordi tellimusi + Ekspordi tellimusi + Impordi tellimusi varasemeksporditud json-failist + Ekspirdi oma tellimused json-faili + Impordi tellimusi varasemeksporditud failist diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 85ec148de54..3b3a4af5d90 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -861,6 +861,29 @@ Erreur HTTP 403 reçue du serveur pendant la lecture, probablement causée par l\'expiration de l\'URL de streaming ou une interdiction d\'IP Erreur HTTP %1$s reçue du serveur pendant la lecture Erreur HTTP 403 reçue du serveur pendant la lecture, probablement causée par un bannissement d\'IP ou des problèmes de désobfuscation de l\'URL de streaming - %1$s a refusé de fournir des données et a demandé un identifiant pour confirmer que le demandeur n\'est pas un robot.\n\nVotre adresse IP a peut-être été temporairement bannie par %1$s. Vous pouvez patienter un peu ou changer d\'adresse IP (par exemple en activant/désactivant un VPN, ou en passant du Wi-Fi aux données mobiles). + %1$s a refusé de fournir des données et a demandé un identifiant pour confirmer que l\'auteur de la requête n\'est pas un robot.\n\nVotre adresse IP a peut-être été temporairement bloquée par %1$s. Vous pouvez patienter ou essayer une autre adresse IP (par exemple, en activant/désactivant un VPN ou en passant du Wi-Fi aux données mobiles).\n\nPour plus d\'informations, veuillez consulter cette FAQ. Ce contenu n\'est pas disponible pour le pays actuellement sélectionné.\n\nModifiez votre sélection dans « Paramètres > Contenu > Pays par défaut ». + En août 2025, Google a annoncé qu\'à compter de septembre 2026, l\'installation d\'applications nécessiterait une vérification par le développeur pour toutes les applications Android sur les appareils certifiés, y compris celles installées en dehors du Play Store. Les développeurs de NewPipe refusant cette exigence, NewPipe ne fonctionnera plus sur les appareils Android certifiés après cette date. + Détails + Solution + + Exportation de l\'abonnement %d… + Exportation de %d abonnements… + Exportation de %d abonnements… + + + Chargement de l\'abonnement %d… + Chargement de %d abonnements… + Chargement de %d abonnements… + + + Importation de l\'abonnement %d… + Importation de %d abonnements… + Importation de %d abonnements… + + Importer des abonnements + Exporter les abonnements + Importer des abonnements à partir d\'une exportation .json précédente + Exportez vos abonnements dans un fichier .json + Importer à partir d\'une exportation précédente diff --git a/app/src/main/res/values-frc/strings.xml b/app/src/main/res/values-frc/strings.xml deleted file mode 100644 index 5b919711cc6..00000000000 --- a/app/src/main/res/values-frc/strings.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - aucun streamer trouvé . Installez VLC? - non - ouvrir dans le browser - ouvrir dans le popup mode - ouvrir avec - partagez - installer le fichier stream - chercher - parameters - installer - Installer - marquer comme vu - "publié le %1$s" - aucun joueur de stream n\'est trouvé ( vous pouvez installez VLC pour jouer) - Annuler - OK - Oui - \ No newline at end of file diff --git a/app/src/main/res/values-gd/strings.xml b/app/src/main/res/values-gd/strings.xml deleted file mode 100644 index 55344e51920..00000000000 --- a/app/src/main/res/values-gd/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ 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 c3873c2a405..249a5a7643a 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -369,7 +369,7 @@ Cargando transmisión… Non se cargou: %d Actualizada a última información: %s - Grupos da canle + Grupos da canles %d día %d días @@ -388,7 +388,7 @@ Debido ás restricións de ExoPlayer, a duración da busca estableceuse en %d segundos Si, e visualizou parcialmente estes vídeos - Eliminaranse os vídeos vistos antes e despois de seren engadidos á lista de reprodución. \nEstás seguro? Isto non se pode desfacer.! + Eliminaranse as emisións vistas antes e despois de seren engadidas á lista de reprodución.\nEstás seguro? Borrar todos os vídeos vistos? Eliminar o visto Sistema predeterminado @@ -812,4 +812,11 @@ Pistas Lapelas a recuperar ao actualizar o feed. Esta opción non ten efecto se a canle se actualiza no modo rápido. Esta solución alternativa libera os códecs de video e os re-instancia cando muda a máscara, no canto de configurar a máscara directamente no códec. ExoPlayer xa emprega esta configuración nalgúns dispositivos con este problema e só afecta a Android 6 e versións posteriores.\n\nActivar esta opción pode minimizar erros de reprodución ao mudar o reprodutor de video actual ou mudar ao modo de pantalla completa + %sK + %sM + %sMM + Procurar %1$s + Procurar %1$s (%2$s) + Listas de reprodución + Páxina do grupo de canles diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index eb04149c66c..d85058656d3 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -483,7 +483,7 @@ %d सेकेंड %d सेकंड्स - देखे गए वीडियो हटायें? + देखे गए स्ट्रीम्स हटाएँ? देखे गए को हटा दें सिस्टम डिफ़ॉल्ट ऐप की भाषा @@ -529,7 +529,7 @@ ऑटोमैटिक (डिवाइस थीम) अपनी पसंदीदा नाइट थीम चुने — %s आप अपनी पसंदीदा नाइट थीम नीचे चुन सकते हैं - डाउनलोड शुरू हो गया है + डाउनलोड शुरू हुआ यह वीडियो आयु-प्रतिबंधित है। \nयूट्यूब की नई नीतियों के कारण न्यूपाइप किसी भी आयु प्रतिबंधित वीडियो स्ट्रीम का इस्तेमाल नहीं कर सकता है और इस कारण इसे वीडियो को प्ले करने में असमर्थ है। पियरट्यूब इंसटैंस @@ -669,7 +669,7 @@ चैनल विवरण दिखाएं आइटम्स का असल अपलोड समय दिखाएं सेवाओं से मूल पाठ स्ट्रीम आइटम में दिखाई देंगे - प्लेलिस्ट में शामिल, पहले और बाद में देखे जा चुके वीडियो हटा दिए जाएंगे। \nक्या यक़ीनन आप ऐसा चाह्ते हैं? इसे असंपादित नहीं किया जा सकेगा! + जो स्ट्रीम्स प्लेलिस्ट में जोड़ने से पहले या बाद में देखी जा चुकी हैं, उन्हें हटा दिया जाएगा।\nक्या यक़ीनन आप ऐसा चाह्ते हैं? %d मिनट %d मिनट्स @@ -845,6 +845,9 @@ पले करते समय सर्वर से HTTP error 403 मिला, शायद स्ट्रीमिंग URL एक्सपायर होने या IP बैन की वजह से हुआ पले करते समय सर्वर से HTTP error %1$s मिला पले करते समय सर्वर से HTTP error 403 मिला, जो शायद IP बैन या स्ट्रीमिंग URL डीओबफस्केशन की दिक्कतों की वजह से हुआ है - %1$s ने डेटा देने से मना कर दिया, और यह कन्फर्म करने के लिए लॉगिन मांगा कि रिक्वेस्ट करने वाला बोट नहीं है।\n\nहो सकता है कि %1$s ने आपके IP को कुछ समय के लिए बैन कर दिया हो, आप कुछ समय इंतज़ार कर सकते हैं या किसी दूसरे IP पर स्विच कर सकते हैं (जैसे VPN ऑन/ऑफ करके, या WiFi से मोबाइल डेटा पर स्विच करके)। + %1$s ने डेटा देने से मना कर दिया, और यह कन्फर्म करने के लिए लॉगिन मांगा कि रिक्वेस्ट करने वाला बोट नहीं है।\n\nहो सकता है कि %1$s ने आपके IP को कुछ समय के लिए बैन कर दिया हो, आप कुछ समय इंतज़ार कर सकते हैं या किसी दूसरे IP पर स्विच कर सकते हैं (जैसे VPN ऑन/ऑफ करके, या WiFi से मोबाइल डेटा पर स्विच करके)।\n\nअधिक जानकारी के लिए कृपया यह FAQ एंट्री देखें। यह कंटेंट अभी चुने गए देश के कंटेंट के लिए उपलब्ध नहीं है।\n\n\"सेटिंग्स > कंटेंट > डिफ़ॉल्ट कंटेंट देश\" से अपना चुनाव बदलें। + अगस्त 2025 में, Google ने घोषणा की कि सितंबर 2026 से, सर्टिफाइड डिवाइस पर सभी Android ऐप्स जिनमें Play Store के बाहर से इंस्टॉल किए गए ऐप्स भी शामिल हैं, को इंस्टॉल करने के लिए डेवलपर वेरिफिकेशन ज़रूरी होगा। चूंकि NewPipe के डेवलपर्स इस शर्त से सहमत नहीं हैं, इसलिए उस समय के बाद NewPipe सर्टिफाइड Android डिवाइस पर काम नहीं करेगा। + विवरण + समाधान diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 691e31567cd..2f6f4c09b36 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -816,6 +816,26 @@ A lejátszás közben a kiszolgáló 403-as HTTP-hibát adott vissza, valószínűleg a közvetítési hivatkozás érvényessége lejárt vagy a IP-tiltás miatt HTTP-hiba (%1$s) érkezett a kiszolgálótól a lejátszás során HTTP 403-as hiba érkezett a kiszolgálótól a lejátszás közben, valószínűleg IP-tiltás vagy a közvetítési hivatkozás feloldási problémák miatt - %1$s visszautasította az adatok szolgáltatását, és bejelentkezést kér annak megerősítésére, hogy a kérés nem robot által érkezik.\n\nElőfordulhat, hogy az IP-címét ideiglenesen letiltotta %1$s, várhat egy keveset, vagy váltson egy másik IP-címre (például VPN be-/kikapcsolásával, vagy Wi-Fi-ről mobiladat-forgalomra váltva). + %1$s visszautasította az adatok szolgáltatását, és bejelentkezést kér annak megerősítésére, hogy a kérés nem robot által érkezik.\n\nElőfordulhat, hogy az IP-címét ideiglenesen letiltotta %1$s, várhat egy keveset, vagy váltson egy másik IP-címre (például VPN be-/kikapcsolásával, vagy Wi-Fi-ről mobiladat-forgalomra váltva).\n\nTovábbi információért tekintse meg ezt a GYIK-bejegyzést. Ez a tartalom a jelenleg kiválasztott tartalom országában nem elérhető.\n\nVáltoztassa meg a „Beállítások > Tartalom >Tartalom alapértelmezett országa” menüpontban. + 2025 augusztusában a Google bejelentette, hogy 2026 szeptemberétől az alkalmazások telepítéséhez fejlesztői ellenőrzésre lesz szükség a tanúsított eszközökön található összes Android-alkalmazáshoz, beleértve a Play Áruházon kívül telepített alkalmazásokat is. Mivel a NewPipe fejlesztői nem értenek egyet ezzel a követelménnyel, a NewPipe ezután nem fog működni a tanúsított Android-eszközökön. + Részletek + Megoldás + + %d feliratkozás exportálása… + %d feliratkozások exportálása… + + + %d feliratkozás betöltése… + %d feliratkozások betöltése… + + + %d feliratkozás importálása… + %d feliratkozások importálása… + + Feliratkozások importálása + Feliratkozások exportálása + Feliratkozások importálása korábbi .json-fájlból + Feliratkozások exportálása .json-fájlba + Importálás korábbi exportból diff --git a/app/src/main/res/values-hy/strings.xml b/app/src/main/res/values-hy/strings.xml index 3be44ba7304..4eaf853dfb8 100644 --- a/app/src/main/res/values-hy/strings.xml +++ b/app/src/main/res/values-hy/strings.xml @@ -16,7 +16,7 @@ Լավ Ջնջել Սկսել - Հավանում եմ + Հավանումներ Չեմ հավանում Մաքրել Հրապարակվել է %1$s @@ -228,7 +228,7 @@ Դասավորել Գամված մեկնաբանություն Հաշիվը կասեցված է - + Մասին Ալբոմներ Այո Ոչ @@ -243,4 +243,39 @@ Անհայտ Նկատի ունե՞ս «%1$s» Բարձրություն + Լուծում + Մանրամասներ + + %s պատասխան + %s պատասխաններ + + Կիսվել նվագացանկով + Առաջ տանել + Նվագել + Տևողություն + Հետ տանել + Բացել նվագացանկը + Հավանումներ + Կարճեր + Մասնակի դիտված + Ամբողչովին դիտված + Միացված + Անջատված + Բաժանորդագրվածներ + Ներքին + Անձնական + Հարցնել որտեղ ներբեռնել + Կամայական ցանցով + Նվագացանկը ստեղծվեց + Նոր նվագացանկ + Ալբոմներ + Արվեստագետներ + Նվիրել + Անտեսել + %sՀզր + %sՄլն + %sԲլն + Ազդարարել + Այդպիսի պանակ չկա + Նվագացանկեր diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index eafd00e8d61..f8199f45c26 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -434,7 +434,7 @@ Hapus berkas yang diunduh Izinkan untuk ditampilkan di atas aplikasi lain Bahasa apl - Default sistem + Bawaan sistem Selesai Durasi maju/mundur cepat Tekan \"Selesai\" saat selesai @@ -746,7 +746,7 @@ Tab saluran Shorts Memuat Metadata… - Dapatjan tab saluran + Dapatkan tab saluran Tentang Album Tab untuk didapatkan ketika memperarui umpan. Opsi ini tidak memiliki efek jika saluran diperbarui menggunakan mode cepat. @@ -828,9 +828,12 @@ Kesalahan HTTP 403 diterima dari server saat memutar, dapat disebabkan oleh URL streaming kedaluwarsa atau pemblokiran IP Kesalahan HTTP %1$s diterima dari server saat memutar Kesalahan HTTP 403 diterima dari server saat memutar, dapat disebabkan oleh pemblokiran IP atau masalah deobfuskasi URL streaming - %1$s menolak memberikan data, meminta login untuk memastikan peminta bukan bot.\n\nAlamat IP Anda mungkin telah diblokir sementara oleh %1$s, Anda dapat menunggu beberapa saat atau beralih ke alamat IP yang berbeda (misalnya dengan mengaktifkan/menonaktifkan VPN, atau beralih dari WiFi ke data seluler). + %1$s menolak memberikan data, meminta login untuk memastikan peminta bukan bot.\n\nAlamat IP Anda mungkin telah diblokir sementara oleh %1$s, Anda dapat menunggu beberapa saat atau beralih ke alamat IP yang berbeda (misalnya dengan mengaktifkan/menonaktifkan VPN, atau beralih dari WiFi ke data seluler).\n\nHarap lihat <a href=\"%2$s\"></a>entri Pertanyaan ini</a> untuk informasi lebih lanjut. Konten ini tidak tersedia untuk negara konten yang saat ini dipilih.\n\nUbah pilihan Anda dari “Pengaturan > Konten > Negara konten bawaan”. %sK %sM %sB + Pada Agustus 2025, Google mengumumkan bahwa mulai September 2026, pemasangan aplikasi akan memerlukan verifikasi pengembang untuk semua aplikasi Android pada perangkat bersertifikasi, termasuk yang dipasang di luar Play Store. Karena pengembang NewPipe tidak menyetujui persyaratan ini, NewPipe tidak akan lagi berfungsi pada perangkat Android bersertifikasi setelah waktu tersebut. + Rincian + Solusi diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c3e513079ee..3dbd1b8a5ee 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -859,6 +859,29 @@ Errore HTTP 403 ricevuto dal server durante la riproduzione, probabilmente causato dalla scadenza dell\'URL in streaming o da un divieto dell\'IP Errore HTTP %1$s ricevuto dal server durante la riproduzione Errore HTTP 403 ricevuto dal server durante la riproduzione, probabilmente causato da un divieto dell\'IP o problemi di de-offuscamento dell\'URL in streaming - %1$s ha rifiutato di fornire i dati, chiedendo un accesso per confermare che il richiedente non sia un bot.\n\nIl tuo IP potrebbe essere stato temporaneamente vietato da %1$s, puoi aspettare un po\' di tempo o passare ad un IP diverso (ad esempio accendendo/spegnendo una VPN, o passando dal WiFi ai dati mobili). + %1$s ha rifiutato di fornire i dati, chiedendo un accesso per confermare che il richiedente non sia un bot.\n\nIl tuo IP potrebbe essere stato temporaneamente vietato da %1$s, puoi aspettare un po\' di tempo o passare ad un IP diverso (ad esempio accendendo/spegnendo una VPN, o passando dal WiFi ai dati mobili).\n\nLeggi questa voce nelle FAQ per maggiori informazioni. Questo contenuto non è disponibile per il Paese dei contenuti attualmente selezionato.\n\nModifica la selezione da \"Impostazioni > Contenuti > Paese dei contenuti predefinito\". + Ad agosto 2025, Google ha annunciato che a partire da settembre 2026, l\'installazione di app richiederà la verifica dello sviluppatore per tutte le app Android su dispositivi certificati, compresi quelli installati al di fuori del Play Store. Poiché gli sviluppatori di NewPipe non sono d\'accordo con questo requisito, NewPipe non funzionerà più su dispositivi Android certificati dopo quel mese. + Dettagli + Soluzione + + Esportazione di %d iscrizione… + Esportazione di %d iscrizioni… + Esportazione di %d iscrizioni… + + + Caricamento di %d iscrizione… + Caricamento di %d iscrizioni… + Caricamento di %d iscrizioni… + + + Importazione di %d iscrizione… + Importazione di %d iscrizioni… + Importazione di %d iscrizioni… + + Importa iscrizioni + Esporta iscrizioni + Importa iscrizioni da un\'esportazione .json precedente + Esporta le tue iscrizioni su un file .json + Importa da un\'esportazione precedente diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b0be8529246..e915bb80939 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -804,4 +804,8 @@ インポートされているエクスポートの設定は、NewPipe 0.27.0以降は非推奨であった脆弱な形式を使用します。 インポートされているエクスポートは信頼できる情報源からであり、将来的にはNewPipe 0.27.0かこれより新しいバージョンから得られるエクスポートのみを優先して使用します。 この脆弱な形式で設定をインポートするための対応はすぐに完全に削除され、新しいバージョンからエクスポートの設定をインポートすることは出来ません。 YouTubeの一時的なプレイリストとして共有 二次的 + Google は、2026/2027 年から、認定 Android デバイス上のすべてのアプリについて、開発者が個人の身元情報を直接 Google に提出することを必須にすると発表しました。本アプリの開発者はこの要件に同意していないため、このアプリはその時点以降、認定 Android デバイス上で動作しなくなります。 + 詳細 + 解決 + %sB diff --git a/app/src/main/res/values-ji/strings.xml b/app/src/main/res/values-ji/strings.xml deleted file mode 100644 index 55344e51920..00000000000 --- a/app/src/main/res/values-ji/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ 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 index 98b5e24751d..4f5fc13efdf 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -37,7 +37,7 @@ ნაგულისხმევი აუდიო ფორმატი აირჩიეთ თქვენი საყვარელი PeerTube ეგზემპლარები დაკვრის დატვირთვის ინტერვალის ზომა - შეცვალეთ დატვირთვის ინტერვალის ზომა (ამჟამად %s). დაბალმა მნიშვნელობამ შეიძლება დააჩქაროს საწყისი ვიდეოს ჩატვირთვა. ცვლილებები მოითხოვს მოთამაშის გადატვირთვას + შეცვალეთ დატვირთვის ინტერვალის ზომა (ამჟამად %s). დაბალმა მნიშვნელობამ შეიძლება დააჩქაროს საწყისი ვიდეოს ჩატვირთვა. მოითხოვეთ დადასტურება რიგის გასუფთავებამდე არაზუსტი ძიება საშუალებას აძლევს მოთამაშეს უფრო სწრაფად მოიძიოს პოზიციები შემცირებული სიზუსტით. 5, 15 ან 25 წამის ძიება ამით არ მუშაობს სწრაფი წინსვლა/-გადახვევა ძიების ხანგრძლივობა @@ -100,7 +100,7 @@ არევა Ბუფერიზაცია აუდიო - ღამის თემა + მუქი თემა ღია მუქი შავი @@ -654,7 +654,7 @@ იკითხეთ, სად უნდა ჩამოტვირთოთ თქვენ მოგეთხოვებათ სად შეინახოთ თითოეული ჩამოტვირთვა. \n ჩართეთ სისტემის საქაღალდის ამომრჩევი (SAF), თუ გსურთ ჩამოტვირთოთ გარე SD ბარათზე - ვიდეოები, რომლებიც უყურეთ დასაკრავ სიაში დამატებამდე და მის შემდეგ, წაიშლება. \n დარწმუნებული ხართ? ამის გაუქმება შეუძლებელია! + ვიდეოები, რომლებიც უყურეთ დასაკრავ სიაში დამატებამდე და მის შემდეგ, წაიშლება. \n დარწმუნებული ხართ? NewPipe არის copyleft უფასო პროგრამული უზრუნველყოფა: თქვენ შეგიძლიათ გამოიყენოთ, შეისწავლოთ, გააზიაროთ და გააუმჯობესოთ იგი სურვილისამებრ. კონკრეტულად თქვენ შეგიძლიათ გადაანაწილოთ და/ან შეცვალოთ იგი GNU-ს ზოგადი საჯარო ლიცენზიის პირობებით, როგორც ეს გამოქვეყნებულია თავისუფალი პროგრამული უზრუნველყოფის ფონდის მიერ, ლიცენზიის მე-3 ვერსიით, ან (თქვენი სურვილისამებრ) ნებისმიერი შემდგომი ვერსიით. ავტო ცარიელი გვერდი @@ -790,4 +790,33 @@ დაკვრის დროს სერვერიდან მიღებული HTTP შეცდომა 403, სავარაუდოდ, გამოწვეულია IP აკრძალვით ან სტრიმინგის URL-ის დებფუსკაციის პრობლემებით. %1$s-მა უარი თქვა მონაცემების მიწოდებაზე და ითხოვა შესვლა იმის დასადასტურებლად, რომ მომთხოვნი რობოტი არ არის.\n\nშესაძლოა, თქვენი IP მისამართი დროებით აიკრძალა %1$s-ის მიერ, შეგიძლიათ დაელოდოთ ცოტა ხანს ან გადახვიდეთ სხვა IP მისამართზე (მაგალითად, VPN-ის ჩართვით/გამორთვით, ან WiFi-დან მობილურ მონაცემებზე გადართვით). ეს კონტენტი ამჟამად არჩეული კონტენტის ქვეყნისთვის მიუწვდომელია.\n\nშეცვალეთ თქვენი არჩევანი „პარამეტრები > კონტენტი > ნაგულისხმევი კონტენტის ქვეყანა“-დან. + %1$s %2$s + ორიგინალი + გახმოვანებული + აღწერითი + მეორადი + ვიდეოები + ტრეკები + მოკლე ვიდეოები + ლაივი + არხები + დასაკრავი სიები + ალბომები + მოწონებები + შესახებ + არხის ჩანართები + რომელი ჩანართებია ნაჩვენები არხის გვერდებზე + დაკვრის რიგის გახსნა + სრულეკრანიან რეჟიმზე გადართვა + + %s პასუხი + %s პასუხები + + მეტის ჩვენება + ნაკლების ჩვენება + იმპორტირებული ექსპორტის პარამეტრები იყენებს დაუცველ ფორმატს, რომელიც მოძველებულია NewPipe 0.27.0 ვერსიიდან. დარწმუნდით, რომ იმპორტირებული ექსპორტი სანდო წყაროდან არის და მომავალში უპირატესობა მიანიჭეთ მხოლოდ NewPipe 0.27.0 ან უფრო ახალი ვერსიიდან მიღებული ექსპორტირებული პარამეტრების გამოყენებას. ამ დაუცველ ფორმატში პარამეტრების იმპორტის მხარდაჭერა მალე მთლიანად გაუქმდება და შემდეგ NewPipe-ის ძველი ვერსიები ვეღარ შეძლებენ ექსპორტირებული პარამეტრების იმპორტირებას ახალი ვერსიებიდან. + SoundCloud-ის ტოპ 50 გვერდი წაიშალა + SoundCloud-მა შეწყვიტა ორიგინალი ტოპ 50 ჩარტების გამოშვება. შესაბამისი ჩანართი წაიშალა თქვენი მთავარი გვერდიდან. + YouTube-ის კომბინირებული ტრენდული გვერდი წაშლილია + YouTube-მა 2025 წლის 21 ივლისიდან შეწყვიტა კომბინირებული ტრენდული გვერდის არსებობა. NewPipe-მა ნაგულისხმევი ტრენდული გვერდი ტრენდული პირდაპირი ტრანსლაციებით ჩაანაცვლა.\n\nასევე შეგიძლიათ აირჩიოთ სხვადასხვა ტრენდული გვერდები „პარამეტრები > მასალა > მთავარი გვერდის შინაარსი“-ში. diff --git a/app/src/main/res/values-kab/strings.xml b/app/src/main/res/values-kab/strings.xml index 055af88f9a6..b14b66b399d 100644 --- a/app/src/main/res/values-kab/strings.xml +++ b/app/src/main/res/values-kab/strings.xml @@ -223,4 +223,12 @@ Tibzimin Asebter d ilem Iɣewwaṛen n ExoPlayer + + %d n wass + %d n wussan + + + %s n tvidyut + %s n tvidyutin + diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 079dc45b4d6..c76a245632d 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -831,6 +831,23 @@ 재생 중 서버에서 HTTP 403 오류를 수신했으며, 스트리밍 URL이 만료되었거나 IP 차단으로 인해 발생했을 수 있습니다 재생 중 서버에서 HTTP %1$s 오류를 수신했습니다 재생 중 서버에서 HTTP 403 오류를 수신했으며, 스트리밍 URL 역난독화 문제나 IP 차단 때문일 수 있습니다 - %1$s에서 데이터 제공을 거부하고, 요청자가 봇이 아닌지 확인하기 위해 로그인을 요청하고 있습니다.\n\n아마 IP가 %1$s에서 임시 차단되었을 것이며, 잠시 기다리거나 다른 IP로 전환할 수 있습니다 (예를 들자면 VPN을 켜/끄거나, WiFi를 모바일 데이터로 바꾸세요). + %1$s에서 데이터 제공을 거부하고, 요청자가 봇이 아닌지 확인하기 위해 로그인을 요청하고 있습니다.\n\n아마 IP가 %1$s에서 임시 차단되었을 것이며, 잠시 기다리거나 다른 IP로 전환할 수 있습니다 (예를 들어 VPN을 켜/끄거나, WiFi를 모바일 데이터로 바꿔 보세요).\n\n자세한 정보는 여기 FAQ를 확인하세요. 이 콘텐츠는 현재 선택한 콘텐츠 지역에서 이용할 수 없습니다.\n\n\"설정 > 콘텐츠 > 기본 콘텐츠 국가\"에서 지역을 바꾸세요. + 2025년 8월, Google은 2026년 9월부터 인증된 기기에 앱을 설치하려면 Play 스토어 외 앱을 포함한 모든 Android 앱에 대해 개발자 인증을 받아야 한다고 발표했습니다. NewPipe 개발자는 이 요구 사항에 동의하지 않으므로, 이 이후 NewPipe는 더 이상 인증된 Android 기기에서 동작하지 않을 것입니다. + 자세히 + 해결책 + + 구독 %d건 내보내는 중… + + + 구독 %d건 불러오는 중… + + + 구독 %d건 가져오는 중… + + 구독 가져오기 + 구독 내보내기 + 이전에 내보낸 .json에서 구독을 가져옵니다 + 구독 현황을 .json 파일로 내보냅니다 + 이전 내보내기에서 가져오기 diff --git a/app/src/main/res/values-ks/strings.xml b/app/src/main/res/values-ks/strings.xml deleted file mode 100644 index a6b3daec935..00000000000 --- a/app/src/main/res/values-ks/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index e474f606c1f..60832287885 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -2,8 +2,8 @@ Nav Subtitri Atskaņošanas saraksta attēls nomainīts. - Atskaņošanas saraksts radīts - Dzēst atskaņošanas sarakstu\? + Atskaņošanas saraksts izveidots + Vai tiešām vēlaties dzēst šo atskaņošanas sarakstu? Iestatīt, kā atskaņošanas saraksta attēlu Pievienot atskaņošanas sarakstam Nosaukums @@ -29,10 +29,10 @@ Jauns un populārs Top 50 Nevarēja ielādēt komentārus - Vai jūs vēlaties ievietot arī iestatījumus? - Šis pārrakstīt jūsu tagadējo uzstādījumu. + Vai vēlaties ievietot arī iestatījumus? + Pašreizējie dati tiks aizstāti. Uzmanību: Ne visas datnes varēja ievietot. - Nav derīgs ZIP fails + Nederīga ZIP datne Ievietošana pabeigta Eksportēts Atlasiet kiosku @@ -47,16 +47,15 @@ Kādas cilnes rādīt galvenajā lapā Galvenā lapa Visvairāk Atskaņotais - Pēdējais Atskaņotais - Vai jūs vēlaties izdzēst šo lietu no meklēšanas vēstures\? + Pēdējais atskaņotais + Vai tiešām vēlaties izdzēst šo vaicājumu no meklēšanas vēstures? Vēsture Vēsture Izlasīt licenci Newpipe ir bezmaksas programmatūra: jūs varat izmantot, izpētīt, dalīties un uzlabot to jebkurā brīdī. Tieši jūs varat kopīgot un/ vai modificēt to saskaņā ar GNU Vispārējās Publiskās Licences noteikumiem, ko publicējusi Brīvās Programmatūras Fonds, vai nu 3. licences versija, vai (pēc jūsu izvēles) jebkura vēlāka versija. NewPipe Licence Izslasīt privātuma politiku - NewPipe projekts uztver jūsu privātumu ļoti nopietni . Tāpēc lietotne nesavāc datus bez jūsu piekrišanas. -\nNewPipe privātuma politika sīki izskaidro, kādi dati tiek nosūtīti un uzglabāti, nosūtot kļūdas ziņojumu. + Datu aizsardzība ir ļoti svarīga NewPipe projektam. Tāpēc lietotne neapkopo datus bez jūsu piekrišanas.\nNewPipe konfidencialitātes politika sīki izskaidro, kādi dati tiek nosūtīti un uzglabāti, kad nosūtiet avārijas ziņojumu. NewPipe Privātuna Politika Apmeklēt NewPipe mājaslapu, lai iegūtu vairāk informācijas un ziņu. Mājaslapa @@ -69,7 +68,7 @@ Libre, viegla atskaņošana uz Android. Licences Par un BUJ - Trešo pušu Licences + Trešo pušu licences Par NewPipe Lielākā daļa īpašo rakstzīmju Burti un cipari @@ -81,7 +80,7 @@ reCAPTCHA izaicinājums dots Nospiediet \"Pabeigts\", kad to atrisinat reCAPTCHA izaicinājums - 1 lieta izdzēsta. + 1 vienums dzēsts. Šī atļauja ir nepieciešama, lai \natvērtu popup režīmā Lūdzu nosakiet lejupielādes mapi iestatījumos vēlāk @@ -92,13 +91,13 @@ NewPipe lejupielādē Kļūda Procesi - Faila nosaukums + Datnes nosaukums Labi Pārsaukt Noraidīt Kontrolsumma - Izdzēst - Radīt + Dzēst + Izveidot / Saglabāt Pauzēt Sākt Nav komentāru @@ -154,10 +153,10 @@ Kas:\nRequest:\nContent Valoda:\nContent Valsts:\nApp Valoda:\nService:\nGMT Laiks:\nPackage:\nVersion:\nOS versija: Paziņojumi video apstrādes progresam Video haša paziņojums - Atcerēties pēdējo uznirstošā loga izmēru un pozīciju + Atceras pēdējo uznirstošā loga izmēru un pozīciju Atcerēties uznirstošā loga īpašības - Uznirstošā loga noklusējuma izšķirtspēja - Uznirstošs logs + Noklusējuma uznirstošā loga izšķirtspēja + Skatīt uznirstošā logā Atvērt uznirstošā logā Kas notika: Informācija: @@ -169,16 +168,16 @@ Ziņojiet pa e-pastu Piedotiet, tam nevajadzēja notikt. Dot atļauju rādīt pāri citām aplikācijām - Vai jūs vēlaties atjaunot noklusējumus\? - Atjaunot noklusējumus + Vai tiešām vēlaties atjaunot noklusējuma vērtības? + Atjaunot noklusējuma vērtības Nevarēja nolasīt saglabātās cilnes, tādēļ izmanto noklusējuma Neviens video nav pieejams lejupielādei Notika kļūda: %1$s - Faila nosaukums nevar būt tukšs - Fails neeksistē, vai atļauja to lasīt vai rakstīt, nav dota - Tāds fails/saturs neeksistē + Datnes nosaukums nevar būt tukšs + Datne neeksistē vai nav dota atļauja to lasīt vai rakstīt + Tāda datne/saturs neeksistē Tāda mape neeksistē - Fails pārvietots vai izdzēsts + Datne pārvietota vai dzēsta Netika atrasts audio Netika atrasti video Ārējie atskaņotāj neatbalsta šāda tipa saites @@ -191,26 +190,26 @@ Nevarēja apstrādāt mājaslapu Nevarēja ielādēt visus video attēlus Tīkla kļūda - Lejupielādēt uz SD karti nav iespējams. Atiestatīt lejupielāžu mapes lokāciju\? + Lejupielāde ārējā SD kartē nav iespējama. Vai tiešām vēlaties atiestatīt lejupielāžu mapi? Ārējā krātuve nepieejama Kļūda - Meklēšanas vēsture izdzēsta - Izdzēsy visu meklēšanas vēsturi\? - Izdzēš meklēto vārdu vēsturi - Izdzēst skatīšanās vēsturi - Atskaņošanas pozīcikas izdzēstas - Izdzēst visas atskaņošanas pozīcijas\? + Meklēšanas vēsture dzēsta + Vai tiešām vēlaties izdzēst visu meklēšanas vēsturi? + Izdzēš visus meklēšanas vaicājumus + Notīrīt meklēšanas vēsturi + Atskaņošanas pozīcijas dzēstas + Vai tiešām vēlaties dzēst visas atskaņošanas pozīcijas? Izdzēš visas atskaņošanas pozīcijas - Izdzēst atskaņošanas pozīcijas - Skatīšanās vēsture izdzēsta - Izdzēst visu skatīšanās vēsturi\? - Izdzēš atskaņoto videoklipu un atskaņošanas pozīciju vēsturi + Notīrīt atskaņošanas pozīcijas + Skatīšanās vēsture dzēsta + Vai tiešām vēlaties dzēst visu skatīšanās vēsturi? + Izdzēš atskaņoto video / audio un atskaņošanas pozīciju vēsturi Notīrīt skatīšanās vēsturi - Notīrīt sīkfailus , kurus NewPipe saglabā, kad jūs atrisinat reCAPTCHA + Izdzēš sīkdatnes, kuras NewPipe uzglabā, kad jūs atrisiniet reCAPTCHA Eksportēt vēsturi, abonementus, atskaņošanas sarakstus un iestatījumus Aizstās jūsu pašreizējo vēsturi, abonementus, atskaņošanas sarakstus un (pēc izvēles) iestatījumus - reCAPTCHA sīkfaili tika izdzēsti - Izdzēst reCAPTCHA sīkfailus + reCAPTCHA sīkdatnes dzēstas + Notīrīt reCAPTCHA sīkdatnes Eksportēt datubāzi Ievietot datubāzi Pārslēgt uz Galveno @@ -218,14 +217,14 @@ Pārslēgt uz Fonu [Nezināms] Paziņojumi par jaunām NewPipe versijām - Aplikācijas atjauninājuma paziņojums + Lietotnes atjauninājuma paziņojums Paziņojumi priekš NewPipe atskaņotāja NewPipe paziņojums - Fails + Datne Tikai Vienreiz Vienmēr Atskaņot Visu - Fails izdzēsts + Datne dzēsta Atsaukt Labākā izšķirtspēja Notīrīt @@ -281,17 +280,7 @@ NewPipe šo saturu vēl neatbalsta. \n \nCerams, ka to atbalstīs nākamajā versijā. - Vai jūs domājat, ka plūsmas atjaunināšana ir pārāk lēna\? Ja tā, mēģiniet iespējot ātro atjaunināšanu (to var mainīt iestatījumos vai nospiežot pogu zemāk). -\n -\nNewPipe piedāvā divas plūsmas atjaunināšanas stratēģijas: -\n• Notiek visa abonēšanas kanāla iegūšana, kas ir lēna, bet pabeigta. -\n• izmantojot īpašu servisu, kas ir ātrs, bet parasti nav pilnīgs. -\n -\nAtšķirība starp abiem ir tā, ka ātrajā parasti trūkst informācijas, piemēram, video ilgums vai veids (nevar atšķirt tiešraides video no parastajiem), un tas var atgriezt mazāk vienumu. -\n -\nYouTube ir pakalpojuma piemērs, kas piedāvā šo ātro metodi ar savu RSS plūsmu. -\n -\nTātad izvēle sakrīt ar vēlamo: ātrums vai precīza informācija. + Vai jūs domājat, ka plūsmas atjaunināšana ir pārāk lēna? Ja tā, mēģiniet iespējot ātro atjaunināšanu (to var mainīt iestatījumos vai nospiežot pogu zemāk). \n \nNewPipe piedāvā divas plūsmas atjaunināšanas stratēģijas: \n• Notiek visa abonēšanas kanāla iegūšana, kas ir lēna, bet pabeigta. \n• izmantojot īpašu servisu, kas ir ātrs, bet parasti nav pilnīgs. \n \nAtšķirība starp abiem ir tā, ka ātrajā parasti trūkst informācijas, piemēram, video ilgums vai veids (nevar atšķirt tiešraides video no parastajiem), un tas var atgriezt mazāk vienumu. \n \nYouTube ir pakalpojuma piemērs, kas piedāvā šo ātro metodi ar savu RSS plūsmu. \n \nTātad izvēle sakrīt ar vēlamo: ātrums vai precīza informācija. Izslēgt ātro režīmu Ieslēgt ātro režīmu Pieejams dažos pakalpojumos, tas parasti ir daudz ātrāk, taču var atgriezt ierobežotu daudzumu informācijas un bieži arī nepilnīgu informāciju (piemēram, nav video ilguma, vienuma veida, nav tiešraides statusa) @@ -314,7 +303,7 @@ Notiek plūsmas apstrāde … Notiek plūsmas ielāde… Nav ielādēts: %d - Plūsma pēdējoreiz atjaunināta: %s + Atjaunināta: %s Abonementu grupas Kas jauns @@ -337,10 +326,10 @@ %d sekundi %d sekundes - ExoPlayer ierobežojumu dēļ meklēšanas ilgums tika iestatīts uz %d sekundēm - Jā, un daļēji skatītos video - Tiešraides, kas pirms tam skatītas un pēc tam pievienotas atskaņošanas sarakstam, tiks noņemtas. \nVai tiešām turpināt? - Vai tiešām noņemt skatītās tiešraides? + ExoPlayer ierobežojumu dēļ tīšanas solis tika iestatīts uz %d sekundēm + Jā, un daļēji skatītos + Tiešraides, kas iepriekš noskatītas un pēc tam pievienotas atskaņošanas sarakstam, tiks noņemtas. \nVai tiešām turpināt? + Vai tiešām vēlaties noņemt skatītās tiešraides? Noņemt skatīto System default Lietotnes valoda @@ -360,17 +349,17 @@ Maksimālais mēģinājumu skaits pirms lejupielādes atcelšanas Maksimālais atkārtoto mēģinājumu skaits Stop - Dzēst lejupielādētos failus - Vai vēlaties notīrīt lejupielāžu vēsturi vai izdzēst visus lejupielādētos failus\? + Dzēst lejupielādētās datnes + Vai tiešām vēlaties dzēst lejupielāžu vēsturi un visas lejupielādētās datnes? Notīrīt lejupielāžu vēsturi Nevar atgūt šo lejupielādi Savienojums pārtraukts - Progress zaudēts, jo fails tika izdzēsts + Progress zaudēts, jo datne tika dzēsta Ierīcē nav vietas Strādājot ar failu, NewPipe tika aizvērts Pēcapstrāde neizdevās Nav atrasts - Serveris nepieņem vairāku procesu lejupielādes, mēģiniet vēlreiz ar @ string / msg_threads = 1 + Serveris nepieņem daudzpavedienu lejupielādes, mēģiniet vēlreiz ar @string/msg_threads = 1 Serveris nesūta datus Nevar izveidot savienojumu ar serveri Nevarēja atrast serveri @@ -380,9 +369,9 @@ Rādīt kļūdu Ir gaidāma lejupielāde ar šo nosaukumu Notiek lejupielāde ar šo nosaukumu - nevar pārrakstīt failu - Lejupielādēts fails ar šo nosaukumu jau pastāv - Fails ar šo nosaukumu jau pastāv + nevar pārrakstīt datni + Lejupielādētā datne ar šādu nosaukumu jau pastāv + Datne ar šādu nosaukumu jau pastāv Pārrakstīt Ģenerēt unikālu nosaukumu Darbību noraidīja sistēma @@ -394,11 +383,9 @@ Darbība, pārslēdzoties uz citu lietotni no galvenā video atskaņotāja — %s Minimizēt, pārslēdzot aplikāciju Solis - Klusuma laikā patīt uz priekšu + Klusuma brīžos patīt uz priekšu Atvienot (var izraisīt traucējumus) - Paturiet prātā, ka šī darbība var pieprasīt lielu datu daudzumu -\n -\nVai vēlaties turpināt\? + Paturiet prātā, ka šī darbība var pieprasīt lielu datu daudzumu\n\nVai vēlaties turpināt? Aizvērt Atvilkni Atvērt Atvilkni Vispopulārākais @@ -431,7 +418,7 @@ Pausēts Gaida Pabeigts - Ir pieejams Newpipe atjauninājums! + Pieejama jauna NewPipe versija! Automātiski Tīkls Saraksts @@ -446,8 +433,7 @@ Nav ierobežojuma Nepiekrist Piekrist - Lai ievērotu Eiropas Vispārējās datu aizsardzības regulu (GDPR), mēs pievēršam jūsu uzmanību NewPipe privātuma politikai. Lūdzu, rūpīgi izlasiet to. -\nJums ir ta jāpieņem, lai nosūtītu mums kļūdas ziņojumu. + Lai ievērotu Eiropas Vispārīgo datu aizsardzības regulu (GDPR), mēs vēršam jūsu uzmanību NewPipe konfidencialitātes politikai. Lūdzu, rūpīgi izlasiet to.\nJums tā ir jāpieņem, lai nosūtītu mums kļūdas ziņojumu. Atiestatīt Tonis Temps @@ -464,46 +450,46 @@ Rādīt oriģinālo laiku uz lietām Rādīt atmiņas noplūdes Subtitri - Automātiski radīti + Automātiski izveidots Pietuvināt Piepildīt Pielāgot Noklusējuma satura valoda Noklusējuma satura valsts - Nevarēja atpazīt saites URL. Atvērt ar citu aplikāciju\? + Nevarēja atpazīt saites URL. Vai atvērt citā lietotnē? Neatbalstīts saites URL Rādīt padomu, kad nospiežat fona vai popup pogu pie video \"Informācija:\" Rādīt \"Nospiediet, lai pievienotu\" padomu Automātiski atskaņot Lejupielādēt - Turpināt atskaņošanu pēc pārtraukumiem (piemēram, telefona zvana) + Turpina atskaņot video pēc pārtraukumiem (piemēram, telefona zvana) Turpināt atskaņošanu - Uzglabāt skatīto video vēsturi - Dzēst datus - Rādīt atskaņošanas pozīcijas indikatoru sarakstos + Uzglabā skatīto video vēsturi + Notīrīt datus + Rāda atskaņošanas pozīcijas indikatoru sarakstos Atskaņošanas pozīcija sarakstos Saglabāt pēdējo atskaņošanas pozīciju Atsākt atskaņošanu Skatīšanās vēsture Glabāt meklēšanas vēsturi lokāli (ierīces krātuvē) Meklēšanas vēsture - Izvēlieties, kādus ieteikumus rādīt, rakstot meklēšanas joslā + Atlasīt, kādus ieteikumus rādīt, ievadot vaicājumu meklēšanas joslā Meklēšanas ieteikumi - Automātiski atskaņot - Turpināt atskaņot videoklipus, automātiski pievienojot līdzīgus videoklipus - Automātiski atskaņot nākošo videoklipu - Kešatmiņas metadati notīrīti + Automātiski pievienot + Pievieno līdzīgus video atskaņošanas rindai, kad atskaņo pēdējo video, ja vien nav iespējota atkārtotā, malt uz riņķi, atskaņošana + Automātiski pievienot nākamo video + Metadatu kešatmiņa notīrīta Izdzēš visus kešatmiņā glabātos vietnes datus - Notīrīt kešatmiņas metadatus + Notīrīt kešatmiņā saglabātos metadatus Attēlu kešatmiņa notīrīta - Izslēdziet, lai paslēptu papildus informācijas laukus par video autoru, video saturu vai meklēšanas vaicājuma rezultātu + Izslēdziet, ja nevēlaties redzēt papildus informācijas laukus - video autoru, video saturu vai meklēšanas vaicājuma rezultātu Rādīt papildus informāciju Izslēdziet, ja nevēlaties redzēt video aprakstu un papildus informāciju Rādīt video aprakstu - Rādīt \'Nākošos\' un \'Līdzīgos\' videoklipus - Izslēdziet, lai paslēptu komentārus + Rādīt \'Nākamos\' un \'Līdzīgos\' video + Izslēdziet, ja vēlaties paslēpt komentārus Rādīt komentārus - Tagadējā atskaņošanas rinda tiks aizvietota + Pašreizējā atskaņošanas rinda tiks aizstāta/pārrakstīta Mainot vienu atskaņotāju uz citu, jūsu atskaņošanas rinda var tikt aizstāta/pārrakstīta Prasīt apstiprinājumu, pirms notīrīt atskaņošanas rindu Ātrās uz priekšu/atpakaļ tīšanas solis @@ -516,61 +502,61 @@ Noklusējuma video formāts Noklusējuma audio formāts Audio - Ļaut Android pielāgot paziņojuma krāsu atbilstoši galvenajai krāsai video attēlā (ņemiet vērā, ka tas nav pieejams visās ierīcēs) + Ļauj Android pielāgot paziņojuma krāsu atbilstoši galvenajai krāsai video attēlā (ņemiet vērā, ka tas nav pieejams visās ierīcēs) Kopīgot Atvērt ar Atvērt pārlūkā Atcelt Uzstādīt Netika atrasts video atskaņotājs (jūs variet uzstādīt VLC, lai to atskaņotu). - Netika atrasts video atskaņotājs. Uzstādīt VLC? + Netika atrasts video atskaņotājs. Vai uzstādīt VLC? Publicēts %1$s - Nospiediet uz meklēšanas ikonas, lai sāktu. + Nospiediet uz meklēšanas ikonas, lai atrastu vēlamo saturu. Pielāgot paziņojumu krāsu - Nekas + Neko Ielādējas Sajaukt Atkārtot - Jūs varat izvēlēties ne vairāk kā 3 darbības, kuras rādīs kompaktajā paziņojumā! - Rediģējiet katru paziņojuma darbību, pieskaroties tai. Izvēlieties trīs darbības, kuras rādīs kompaktā paziņojumā, izmantojot rūtiņas labajā pusē. + Jūs variet atlasīt ne vairāk kā 3 darbības, ko rādīt kompaktajā paziņojumā! + Rediģējiet katru zemāk redzamo paziņojuma darbību, pieskaroties tai. Atķeksējiet izvēles rūtiņas labajā pusē, lai atlasītu līdz pat trīm darbībām, kuras rādīt kompaktajā paziņojumā. Piektā darbības poga Ceturtā darbības poga Trešā darbības poga Otrā darbības poga Pirmā darbības poga - Apgriezt video attēlu, kuru rāda paziņojumā, no 16:9 uz 1:1 proporciju (iespējams, attēls būs izstiepts) - Apgriezt video attēlu uz 1:1 proporciju - Rādīt opciju atskaņot video ar Kodi mediju centru - Rādīt \"Atskaņot ar Kodi\" opciju - Uzstādīt trūkstošo Kore lietotni? - Atskaņot ar Kodi - Tikai dažas ierīcas var atskaņot 2K/4K videoklipus + Apgriež paziņojumā redzamo video sīkattēlu no 16:9 uz 1:1 malu attiecību (iespējams, attēls būs izstiepts) + Apgriezt video sīkattēlu uz 1:1 malu attiecību + Rādīt opciju atskaņot video Kodi mediju centrā + Rādīt \"Atskaņot Kodi\" opciju + Uzstādīt trūkstošo Kore, tālvadības pults, lietotni? + Atskaņot Kodi + Ne visas ierīcas var atskaņot 2K/4K izšķirtspējas video Rādīt augstākas izšķirtspējas Noklusējuma izšķirtspēja - Izvēlieties lejupielādes mapi priekš audio failiem - Lejupielādētie audio faili tiek glabāti šeit + Atlasīt lejupielādes mapi, kur glabāt audio datnes + Lejupielādētās audio datnes tiek glabātas šeit Audio lejupielādes mape - Izvēlaties lejupielādes mapi priekš video failiem + Atlasīt lejupielādes mapi, kur glabāt video datnes Lejupielādētās video datnes tiek glabātas šeit Video lejupielādes mape Pievienot - Klausīties fonā + Klausīt fonā Atlasiet cilni Saglabātie saraksti Abonementi Rādīt informāciju Abonementu nevarēja atjaunināt - Nevarēja mainīt abonementu + Abonementu nevarēja mainīt Atcelts kanāla abonements Atcelt abonementu Abonēts Abonēt Izmantot ārējo audio atskaņotāju - Noņem skaņu dažās izšķirtspējās + Dažās izšķirtspējās nav pieejami skaņas celiņi Izmantot ārējo video atskaņotāju Kopīgot ar - Tiek rādīti %s rezultāti - Vai jūs domājāt \"%1$s\"\? + Tiek rādīti %s vaicājuma rezultāti + Varbūt jūs gribējāt meklēt \"%1$s\"? Iestatījumi Meklēt Lejupielādēt video datni @@ -600,7 +586,7 @@ Valoda Vecuma ierobežojums License - Tagi + Birkas Kategorija Jums tiks jautāts, kur saglabāt katru lejupielādi Nerādīt @@ -613,18 +599,18 @@ Izslēgt multivides tuneļošanu Izslēdziet multivides tuneļošanu, ja jums video atskaņošanas laikā parādās melns ekrāns vai aizķeršanās. Ieslēgt teksta atlasīšanu video aprakstā - Lejupielādes mape vēl nav iestatīta, izvēlieties noklusējuma lejupielādes mapi + Lejupielādes mape vēl nav iestatīta, atlasiet noklusējuma lejupielādes mapi tagad Pavelciet atlasīto elementu pa kreisi vai labi, lai to aizvāktu - Lokālie meklēšanas ieteikumi + Lokālos meklēšanas ieteikumus Augstas kvalitātes (lielāks) Pārbaudīt atjauninājumus - Pašrocīgi pārbaudīt jaunas versijas pieejamību + Pašrocīgi veikt jaunas versijas pārbaudi Video atskaņošanas joslas sīktēla priekšskatījums - Pārbauda, vai ir atjauninājumi… + Notiek atjauninājumu pārbaude… Sākot ar Android 10, tikai“Krātuves Piekļuves Sistēma” ir atbalstīta Nevarēja ielādēt straumi priekš \'%s\'. Kļūda lādējot plūsmu - Autora konts tika slēgts.\nNewPipe turpmāk vairs nevarēs ielādēt šī kanāla plūsmas saturu.\nVai tiešām atteikties no šī kanāla abonēšanas? + Autora konts tika slēgts.\nNewPipe turpmāk vairs nevarēs ielādēt šī kanāla saturu.\nVai tiešām vēlaties atteikties no šī kanāla abonēšanas? Ātrās straumes režīms nesniedz vairāk informācijas par šo. Izslēgt teksta atlasīšanu video aprakstā Iekšeji @@ -635,20 +621,20 @@ Privātums Sarakstā neiekļauts Uzņēmums - Servera meklēšanas ieteikumi + Servera meklēšanas ieteikumus Atzīmēt kā noskatītu Apstrādā... Var aizņemt kādu laiku - Izdzēsa %1$s lejupielāžu - Izdzēsa %1$s lejupielādi - Izdzēsa %1$s lejupielādes + Dzēstas %1$s lejupielādes + Dzēsta %1$s lejupielāde + Dzēstas %1$s lejupielādes %s lejupielādes pabeigtas %s lejupielāde pabeigta %s lejupielādes pabeigtas - Tagad varat atlasīt tekstu video aprakstā. + Tagad variet atlasīt tekstu video aprakstā. Paziņojumi Avarēt atskaņotāju Pielāgojiet pašlaik atskaņotās plūsmas paziņojumu @@ -660,13 +646,13 @@ %s jauna tiešraide %s jaunas tiešraides - Paziņojumi par jaunām tiešraidēm abonementos + \@string/enable_streams_notifications_summary Bieži uzdotie jautājumi Paziņojumi, lai ziņotu par kļūdām Kļūdas ziņojuma paziņojums Atskaņošanas ielādes intervāla lielums NewPipe radās kļūdu, pieskarieties, lai ziņotu - Kreisā žesta darbība + Kreisās puses žesta darbība Neizdevās kopēt starpliktuvē Noņemt pastāvīgo sīktēlu Pārbaudīt, vai nav jaunas tiešraides @@ -677,21 +663,21 @@ LeakCanary nav pieejams Izveidot kļūdas paziņojumu Jebkurš tīkls - Jums ir jaunākā NewPipe versija - Noderīgi, piemēram, lietojot austiņas ar bojātām pogām - Atskaņos skaņu celiņu ar audio aprakstiem vājredzīgajiem, ja tāds ir pieejams - Ignorēt ierīces multimēdiju pogas - Izdzēst visus lejupielādētos failus\? + Jūs jau izmantojiet jaunāko NewPipe versiju + Noder, piemēram, kad lietojiet austiņas ar bojātām pogām + Atskaņos skaņas celiņu ar audio aprakstiem vājredzīgajiem, ja tāds ir pieejams + Ignorēt pieslēgtās ierīces multimēdiju pogas + Vai tiešām vēlaties dzēst visas lejupielādētās datnes? Jaunumi kanālā Dot priekšroku oriģinālajai skaņai - Atskaņos oriģinālo skaņu celiņu neatkarīgi no valodas + Atskaņos oriģinālo skaņas celiņu neatkarīgi no iestatītās valodas Dot priekšroku skaņu celiņam ar audio aprakstu - Izvēlēties žestu kreisajai atskaņotāja ekrāna pusei - Izvēlēties žestu labajai atskaņotāja ekrāna pusei - Labējā žesta darbība - Spilgtums - Skaļums - Nekā + Atlasiet žestu atskaņotāja ekrāna kreisajai pusei + Atlasiet žestu atskaņotāja ekrāna labajai pusei + Labās puses žesta darbība + Regulēt spilgtumu + Regulēt skaļumu + Darīt neko Abonementus var ievietot vai izgūt, izmantojot 3-punktoto izvēlni augšējā labajā ekrāna stūrī Ja Jums rodas problēmas ar lietotni, noteikti apskatiet šīs atbildes bieži uzdotiem jautājumiem! Skatīt tīkla vietnē @@ -701,18 +687,18 @@ Dublikāts pievienots %d reizi(-es) Rādīt \"avarēt atskaņotāju\" Karte - Spiediet, lai lejupielādētu %s - Dzēst dublikātus\? - Vai vēlaties dzēst visus tiešraižu dublikātus šajā sarakstā\? + Nospiediet, lai lejupielādētu %s + Vai tiešām vēlaties dzēst dublikātus? + Vai tiešām vēlaties noņemt visus dublētos vienumus šajā atskaņošanas sarakstā? Rādīt/slēpt tiešraides Ātrais režīms - Paziņot par jaunām tiešraidēm no abonementiem + Informē, ja pieejami jauni video / audio abonementos Procenti Pustonis - Paziņojumi par jaunām tiešraidēm + Paziņot par jauniem video / audio Pārbaužu biežums Galvenās cilnes atlasītāja pārvietošana uz apakšu - Rediģējiet katru turpmāk norādīto paziņojuma darbību, pieskaroties tai. Pirmās trīs darbības (atskaņošana/pauze, iepriekšējais un nākamais) ir iestatītas sistēmā, un tās nevar pielāgot. + Rediģējiet katru zemāk redzamo paziņojuma darbību, pieskaroties tai. Pirmās trīs darbības (atskaņot/pauze, iepriekšējais un nākamais) ir sistēmas iestatītas, un tās nevar pielāgot. Mainīt progresīvā satura ielādes intervāla lielumu (pašlaik %s). Mazāka vērtība var paātrināt to sākotnējo ielādi @@ -726,16 +712,14 @@ Par Sīkattēli Kārtot - NewPipe var pati automātiski pārbaudīt jaunas versijas pieejamību laiku pa laikam un informēt jūs, kad tā ir pieejama.\nVai jūs tiešām gribiet ieslēgt šo funkciju? + NewPipe pati var veikt jaunas versijas pārbaudi laiku pa laikam un informēt jūs, kad tā ir pieejama.\nVai tiešām vēlaties ieslēgt šo funkciju? Netika atrasts atbilstošs failu pārvaldnieks šai darbībai. \nLūdzu instalējiet failu pārvaldnieku vai pamēģiniet atspējot \'%s\' lejuplādēšanas iestatījumos oriģinālais Nepieciešams tīkla savienojums - Atiestatīt visus iestatījumus uz to sākotnējām vērtībām + Atiestata visus iestatījumus uz to sākotnējām vērtībām Atiestatīt iestatījumus - Visu iestatījumu atiestatošana atmetīs visus jūsu izvēlētos iestatījumus un restartēs aplikāciju. -\n -\nVai jūs esat droši, ka vēlaties turpināt? + Atiestatot iestatījumus, visi jūsu iestatītie iestatījumi tiks atmesti uz to noklusētajām vērtībām un lietotne palaista pa jaunu.\n\nVai tiešām vēlaties turpināt? Šī opcija ir pieejama tikai, ja %s ir izvēlēts kā motīvs Piespraustais komentārs Paziņojumi ir atspējoti @@ -760,7 +744,7 @@ Rādīt kļūdas paziņojumu Piegādāt kanālu cilnes Cilnes, kuras piegādāt, atjaunojot jauninājumus. Šai opcijai nav nekādas iedarbības, ja kanāls tiek atjaunots ātrajā režīmā. - Multivides tuneļošana tika atspēkota pēc noklusējuma tādēļ, ka ir zināms, ka jūsu ierīces modelis to neatbalsta. + Multivides tunelēšana tika atspējota pēc noklusējuma tādēļ, ka ir zināms, ka jūsu ierīces modelis to neatbalsta. Izvēlēties kvalitāti ārējiem atskaņotājiem ExoPlayer iestatījumi Kanālu cilnes @@ -771,8 +755,8 @@ Apakškanālu avatāri Augšuplādētāju avatāri Ilgums - Attīt - Patīt + Attīt - tīt atpakaļ + Tīt uz priekšu Izvēlēties attēlu kvalitāti un vai vispār ielādēt attēlus, lai samazinātu datu un atmiņas lietojumu. Izmaiņas iztīra iekšējās atmiņas un diska attēlu kešatmiņu — %s %s atbildes @@ -836,4 +820,17 @@ Atlasiet abonementu grupu YouTube likvidēja apvienoto pašlaik populārs “Ļaut rādīt virs citām lietotnēm” + Meklēt %1$s + Meklēt %1$s (%2$s) + SoundCloud Top 50 lapa likvidēta + Vēl nav izveidota neviena abonementu grupa + Konts slēgts\n\n%1$s norāda, ka iemesls kādēļ: %2$s + Atskaņošanas laikā no servera saņemta HTTP 403 kļūda, ko, iespējams, izraisīja straumēšanas URL derīguma beigu termiņš vai IP aizliegums + Atskaņošanas laikā no servera saņemta HTTP %1$s kļūda + Atskaņošanas laikā no servera saņemta HTTP 403 kļūda, ko, iespējams, izraisīja IP aizliegums vai straumēšanas URL atšifrēšanas (deobfuskācijas) problēmas + 2025. gada augustā Google paziņoja, ka, sākot ar 2026. gada septembri, lai uzstādītu lietotnes, būs nepieciešama izstrādātāja verifikācija visām Android lietotnēm sertificētajās ierīcēs, tostarp arī tām, kuras uzstādītas ārpus Play veikala. Tā kā NewPipe izstrādātāji nepiekrīt un negrib pieņemt šo prasību, pēc šī datuma NewPipe vairs nedarbosies sertificētajās Android ierīcēs. + Detalizētāka informācija + Risinājums + SoundCloud likvidēja oriģinālos Top 50 topus. Atbilstošā cilne noņemta no jūsu galvenās lapas. + Lai varētu izmantot uznirstošo atskaņotāju, lūdzu, atlasiet %1$s šajā Android iestatījumu izvēlnē un iespējojiet %2$s. diff --git a/app/src/main/res/values-nds/strings.xml b/app/src/main/res/values-nds/strings.xml deleted file mode 100644 index a6b3daec935..00000000000 --- a/app/src/main/res/values-nds/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ 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 2ff13b391f5..d8b00b38ae3 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -847,4 +847,9 @@ HTTP-fout 403 ontvangen van de server tijdens het afspelen, waarschijnlijk veroorzaakt door een ip-blokkade of problemen met de deobfuscatie van de streaming-url %1$s weigerde gegevens te verstrekken en vroeg om een login om te bevestigen dat de aanvrager geen bot is.\n\nUw ip-adres is mogelijk tijdelijk geblokkeerd door %1$s. U kunt even wachten of overschakelen naar een ander ip-adres (bijvoorbeeld door een vpn in of uit te schakelen, of door over te schakelen van wifi naar mobiele data). Deze inhoud is niet beschikbaar voor het momenteel geselecteerde inhouds­land.\n\nWijzig uw selectie via ‘Instellingen > Inhoud > Standaard­land voor inhoud’. + Details + Oplossing + Abonnementen importeren + Abonnementen exporteren + Importeren vanuit vorige export diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index cc0be8ae47f..161dcc886bf 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -24,7 +24,7 @@ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਜਾਣਕਾਰੀ ਵਿਖਾਓ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਅਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ - ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ + ਸਬਸਕ੍ਰਿਪਸ਼ਨਜ਼ ਬੁੱਕਮਾਰਕ ਕੀਤੀਆਂ ਪਲੇਲਿਸਟਾਂ ਨਵਾਂ ਕੀ ਹੈ ਬੈਕਗ੍ਰਾਊਂਡ @@ -104,10 +104,10 @@ ਬੈਕਗ੍ਰਾਊਂਡ ਮੋਡ ਵਿੱਚ ਚਲਾਓ ਪੌਪ-ਅਪ ਮੋਡ ਵਿੱਚ ਚਲਾਓ ਮੇਨ ਤੇ ਚਲਾਓ - ਡਾਟਾਬੇਸ ਆਯਾਤ ਕਰੋ - ਡਾਟਾਬੇਸ ਨਿਰਯਾਤ ਕਰੋ + ਡਾਟਾਬੇਸ ਇੰਪੋਰਟ ਕਰੋ + ਡਾਟਾਬੇਸ ਐਕਸਪੋਰਟ ਕਰੋ ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਇਤਿਹਾਸ, ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ, ਪਲੇਲਿਸਟਾਂ ਅਤੇ (ਚੋਣਵੇਂ ਤੌਰ \'ਤੇ) ਸੈਟਿੰਗਾਂ ਨੂੰ ਨਵੀਆਂ ਨਾਲ ਬਦਲ ਦਿੰਦਾ ਹੈ - ਇਤਿਹਾਸ, ਸੁਬਸਕ੍ਰਿਪਸ਼ਨਾਂ, ਪਲੇਲਿਸਟਾਂ ਅਤੇ ਸੈਟਿੰਗਾਂ ਨਿਰਯਾਤ ਕਰੋ + ਇਤਿਹਾਸ, ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ, ਪਲੇਲਿਸਟਾਂ ਅਤੇ ਸੈਟਿੰਗਾਂ ਐਕਸਪੋਰਟ ਕਰੋ ਵੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦੀ ਸੂਚੀ ਮਿਟਾਓ ਚਲਾਈਆਂ ਗਈਆਂ ਸਟ੍ਰੀਮਾਂ ਦੇ ਇਤਿਹਾਸ ਅਤੇ ਪਲੇ-ਸਥਿਤੀਆਂ ਨੂੰ ਮਿਟਾਉਂਦਾ ਹੈ ਕੀ ਵੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇ\? @@ -273,7 +273,7 @@ ਤੇ ਐਕਸਪੋਰਟ ਕਰੋ ਇੰਪੋਰਟ ਹੋ ਰਿਹਾ ਹੈ… ਐਕਸਪੋਰਟ ਹੋ ਰਿਹਾ ਹੈ… - ਇੰਪੋਰਟ ਫਾਈਲ + ਫ਼ਾਈਲ ਇੰਪੋਰਟ ਕਰੋ ਪਿੱਛਲਾ ਐਕਸਪੋਰਟ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਇੰਪੋਰਟ ਨਹੀਂ ਹੋ ਸਕੀਆਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਐਕਸਪੋਰਟ ਨਹੀਂ ਹੋ ਸਕੀਆਂ @@ -430,7 +430,7 @@ ਵੇਰਵੇ \'ਚੋਂ ਲਿਖਤ ਚੁਣਨਾ ਬੰਦ ਕਰੋ ਵੇਰਵੇ \'ਚੋਂ ਲਿਖਤ ਚੁਣਨਾ ਚਾਲੂ ਕਰੋ ਤੁਸੀਂ ਹੁਣ ਵੇਰਵੇ \'ਚੋਂ ਲਿਖਤ ਨੂੰ ਚੁਣ ਸਕਦੇ ਹੋ। ਨੋਟ ਕਰੋ ਕਿ ਪੰਨਾ ਜਗ-ਬੁੱਝ ਸਕਦਾ ਹੈ ਅਤੇ ਚੋਣ ਮੋਡ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਲਿੰਕ ਕਲਿੱਕ ਕਰਨ ਯੋਗ ਨਹੀਂ ਹੋ ਸਕਦੇ ਹਨ। - ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ ਹੋ ਗਿਐ + ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ ਹੋਇਆ ਤੁਸੀਂ ਆਪਣੀ ਪਸੰਦੀਦਾ ਰਾਤ ਦੀ ਥੀਮ ਹੇਠਾਂ ਚੁਣ ਸਕਦੇ ਹੋ ਆਪਣੀ ਪਸੰਦੀਦਾ ਰਾਤ ਦੀ ਥੀਮ ਚੁਣੋ — %s ਆਟੋਮੈਟਿਕ (ਡਿਵਾਈਸ ਥੀਮ) @@ -494,8 +494,8 @@ %d ਸਕਿੰਟ ਹਾਂ, ਅਤੇ ਅੱਧ-ਪਚੱਧੀਆਂ ਵੇਖੀਆਂ ਹੋਈਆਂ ਵੀ - ਪਲੇਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਪਹਿਲਾਂ ਤੇ ਬਾਅਦ ਵਿੱਚ ਵੇਖੇ ਜਾ ਚੁੱਕੇ ਵੀਡੀਓ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ। \nਕੀ ਵਾਕਿਆ ਹੀ ਤੁਸੀਂ ਇਹਨਾਂ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ? ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਵਾਪਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਣਾ! - ਵੇਖੇ ਹੋਏ ਵੀਡੀਓ ਹਟਾ ਦੇਈਏ? + ਪਲੇਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਪਹਿਲਾਂ ਤੇ ਬਾਅਦ ਵਿੱਚ ਵੇਖੀਆਂ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।\nਕੀ ਤੁਸੀਂ ਯਕੀਨਨ ਇਹ ਚਾਹੁੰਦੇ ਹੋ? + ਕੀ ਵੇਖੀਆਂ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਹਟਾਉਣਾ ਹੈ? ਵੇਖੇ ਹੋਏ ਨੂੰ ਹਟਾਓ ਸਿਸਟਮ ਡਿਫ਼ਾਲਟ ਐਪ ਦੀ ਭਾਸ਼ਾ @@ -651,8 +651,7 @@ %1$s ਡਾਊਨਲੋਡ ਹਟਾਏ ਚੈਨਲ ਦਾ ਅਵਤਾਰ ਥੰਮਨੇਲ - ਇਸ ਕਾਰਜ ਲਈ ਕੋਈ ਢੁਕਵਾਂ ਫਾਈਲ ਮੈਨੇਜਰ ਨਹੀਂ ਮਿਲਿਆ। -\nਕ੍ਰਿਪਾ ਕਰਕੇ ਸਟੋਰੇਜ ਐਕਸਿਸ ਫਰੇਮਵਰਕ SAF ਅਨੁਕੂਲ ਫਾਈਲ ਮੈਨੇਜਰ ਇੰਨਸਟਾਲ ਕਰੋ + ਇਸ ਕਾਰਜ ਲਈ ਕੋਈ ਢੁਕਵਾਂ ਫਾਈਲ ਮੈਨੇਜਰ ਨਹੀਂ ਮਿਲਿਆ।\nਕ੍ਰਿਪਾ ਕਰਕੇ ਸਟੋਰੇਜ ਐਕਸਿਸ ਫਰੇਮਵਰਕ SAF ਅਨੁਕੂਲ ਫਾਈਲ ਮੈਨੇਜਰ ਸਥਾਪਤ ਕਰੋ ਟੈਬਲੇਟ ਮੋਡ ਨੋਟੀਫਿਕੇਸ਼ਨ ਬੰਦ ਕੀਤੇ ਹੋਏ ਹਨ ਸਭ ਨੂੰ ਟੌਗਲ ਕਰੋ @@ -684,7 +683,7 @@ \n \nਤੁਹਾਡੀ ਚੋਣ ਇਸ ਗੱਲ ਤੇ ਮੁਨੱਸਰ ਕਰਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਗਤੀ ਤੇ ਸਟੀਕਤਾ ਵਿੱਚੋਂ ਕਿਸ ਨੂੰ ਪ੍ਰਾਥਮਿਕਤਾ ਦਿੰਦੇ ਹੋ। ਤੇਜ ਮੋਡ - 3-ਡੌਟ ਮੀਨੂ ਤੋਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਨੂੰ ਆਯਾਤ ਜਾਂ ਨਿਰਯਾਤ ਕਰੋ + 3-ਡੌਟ ਮੀਨੂ ਤੋਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਨੂੰ ਇੰਪੋਰਟ ਜਾਂ ਐਕਸਪੋਰਟ ਕਰੋ ਤੁਸੀਂ ਨਿਊਪਾਈਪ ਦਾ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਚਲਾ ਰਹੇ ਹੋ %s ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ ਇਹ ਵਿਕਲਪ ਤਾਂ ਹੀ ਉਪਲਬਧ ਹੁੰਦਾ ਹੈ ਜੇਕਰ %s ਨੂੰ ਥੀਮ ਲਈ ਚੁਣਿਆ ਜਾਂਦਾ ਹੈ @@ -827,6 +826,26 @@ ਪਲੇਅ ਕਰਦੇ ਸਮੇਂ ਸਰਵਰ ਤੋਂ HTTP error 403 ਪ੍ਰਾਪਤ ਹੋਇਆ, ਜੋ ਸ਼ਾਇਦ ਸਟ੍ਰੀਮਿੰਗ URL ਦੀ ਮਿਆਦ ਪੁੱਗਣ ਜਾਂ IP ਦੀ ਪਾਬੰਦੀ ਕਾਰਨ ਹੋਈ ਹੈ ਚਲਾਉਣ ਦੌਰਾਨ ਸਰਵਰ ਤੋਂ HTTP error %1$s ਪ੍ਰਾਪਤ ਹੋਇਆ ਪਲੇਅ ਕਰਦੇ ਸਮੇਂ ਸਰਵਰ ਤੋਂ HTTP error 403 ਪ੍ਰਾਪਤ ਹੋਇਆ, ਜੋ ਸ਼ਾਇਦ IP ਬੈਨ ਜਾਂ ਸਟ੍ਰੀਮਿੰਗ URL ਡੀਔਬਫਸਕੇਸ਼ਨ ਸਮੱਸਿਆਵਾਂ ਕਾਰਨ ਹੋਈ ਹੈ - %1$s ਨੇ ਡੇਟਾ ਪ੍ਰਦਾਨ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰ ਦਿੱਤਾ, ਅਤੇ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਲੌਗਇਨ ਕਰਨ ਲਈ ਕਿਹਾ ਕਿ ਬੇਨਤੀਕਰਤਾ ਬੋਟ ਨਹੀਂ ਹੈ।\n\nਹੋ ਸਕਦਾ ਹੈ ਕਿ %1$s ਨੇ ਤੁਹਾਡੇ IP ਨੂੰ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਪਾਬੰਦੀ ਲਗਾਈ ਹੋਵੇ, ਤੁਸੀਂ ਕੁਝ ਸਮਾਂ ਉਡੀਕ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਕਿਸੇ ਵੱਖਰੇ IP \'ਤੇ ਸਵਿੱਚ ਕਰ ਸਕਦੇ ਹੋ (ਉਦਾਹਰਣ ਵਜੋਂ VPN ਨੂੰ ਚਾਲੂ/ਬੰਦ ਕਰਕੇ, ਜਾਂ WiFi ਤੋਂ ਮੋਬਾਈਲ ਡੇਟਾ \'ਤੇ ਸਵਿੱਚ ਕਰਕੇ)। + %1$s ਨੇ ਡੇਟਾ ਪ੍ਰਦਾਨ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰ ਦਿੱਤਾ, ਅਤੇ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਲੌਗਇਨ ਕਰਨ ਲਈ ਕਿਹਾ ਕਿ ਬੇਨਤੀਕਰਤਾ ਬੋਟ ਨਹੀਂ ਹੈ।\n\nਹੋ ਸਕਦਾ ਹੈ ਕਿ %1$s ਨੇ ਤੁਹਾਡੇ IP ਨੂੰ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਪਾਬੰਦੀ ਲਗਾਈ ਹੋਵੇ, ਤੁਸੀਂ ਕੁਝ ਸਮਾਂ ਉਡੀਕ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਕਿਸੇ ਵੱਖਰੇ IP \'ਤੇ ਸਵਿੱਚ ਕਰ ਸਕਦੇ ਹੋ (ਉਦਾਹਰਣ ਵਜੋਂ VPN ਨੂੰ ਚਾਲੂ/ਬੰਦ ਕਰਕੇ, ਜਾਂ WiFi ਤੋਂ ਮੋਬਾਈਲ ਡੇਟਾ \'ਤੇ ਸਵਿੱਚ ਕਰਕੇ)।\n\nਹੋਰ ਜਾਣਕਾਰੀ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਇਹ FAQ ਐਂਟਰੀ ਵੇਖੋ। ਇਹ ਸਮੱਗਰੀ ਵਰਤਮਾਨ ਵਿੱਚ ਚੁਣੇ ਗਏ ਦੇਸ਼ ਦੀ ਸਮੱਗਰੀ ਲਈ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।\n\n\"ਸੈਟਿੰਗਾਂ > ਸਮੱਗਰੀ > ਡਿਫ਼ਾਲਟ ਸਮੱਗਰੀ ਦੇਸ਼\" ਤੋਂ ਆਪਣੀ ਚੋਣ ਬਦਲੋ। + ਅਗਸਤ 2025 ਵਿੱਚ, ਗੂਗਲ ਨੇ ਐਲਾਨ ਕੀਤਾ ਕਿ ਸਤੰਬਰ 2026 ਤੋਂ, ਐਪਸ ਨੂੰ ਸਥਾਪਿਤ ਕਰਨ ਲਈ ਪ੍ਰਮਾਣਿਤ ਡਿਵਾਈਸਾਂ \'ਤੇ ਸਾਰੇ ਐਂਡਰਾਇਡ ਐਪਸ ਲਈ ਡਿਵੈਲਪਰ ਤਸਦੀਕ ਦੀ ਲੋੜ ਹੋਵੇਗੀ, ਜਿਸ ਵਿੱਚ ਪਲੇ ਸਟੋਰ ਤੋਂ ਬਾਹਰ ਸਥਾਪਤ ਕੀਤੇ ਐਪਸ ਵੀ ਸ਼ਾਮਲ ਹਨ। ਕਿਉਂਕਿ ਨਿਊਪਾਈਪ ਦੇ ਡਿਵੈਲਪਰ ਇਸ ਲੋੜ ਨਾਲ ਸਹਿਮਤ ਨਹੀਂ ਹਨ, ਇਸ ਲਈ ਨਿਊਪਾਈਪ ਉਸ ਸਮੇਂ ਤੋਂ ਬਾਅਦ ਪ੍ਰਮਾਣਿਤ ਐਂਡਰਾਇਡ ਡਿਵਾਈਸਾਂ \'ਤੇ ਕੰਮ ਨਹੀਂ ਕਰੇਗੀ। + ਵੇਰਵੇ + ਹੱਲ + + %d ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਐਕਸਪੋਰਟ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… + %d ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਐਕਸਪੋਰਟ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ… + + + %d ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… + %d ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਲੋਡ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ… + + + %d ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਇੰਪੋਰਟ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… + %d ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਇੰਪੋਰਟ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ… + + ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਇੰਪੋਰਟ ਕਰੋ + ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਐਕਸਪੋਰਟ ਕਰੋ + ਪਹਿਲਾਂ ਕੀਤੇ .json ਐਕਸਪੋਰਟ ਤੋਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ + ਆਪਣੀਆਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਨੂੰ .json ਫਾਈਲ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕਰੋ + ਪਹਿਲਾਂ ਕੀਤੇ ਐਕਸਪੋਰਟ ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 60dab077d3f..3cf0405f96e 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -868,6 +868,32 @@ Podczas odtwarzania otrzymano od serwera błąd HTTP 403, prawdopodobnie spowodowany wygaśnięciem adresu URL strumienia lub blokadą adresu IP. Podczas odtwarzania otrzymano od serwera błąd HTTP %1$s. Podczas odtwarzania otrzymano od serwera błąd HTTP 403, prawdopodobnie spowodowany blokadą adresu IP lub problemami z odszyfrowaniem adresu URL strumienia. - %1$s odmówił dostarczenia danych, prosząc o zalogowanie się w celu potwierdzenia, że nie jest się botem.\n\nTwoje IP mogło zostać tymczasowo zablokowane przez %1$s. Możesz chwilę poczekać lub zmienić adres IP (na przykład włączając/wyłączając VPN lub przełączając się z sieci Wi-Fi na dane komórkowe). + %1$s odmówił dostarczenia danych, prosząc o zalogowanie się w celu potwierdzenia, że nie jest się botem.\n\nTwoje IP mogło zostać tymczasowo zablokowane przez %1$s. Możesz chwilę poczekać lub zmienić adres IP (na przykład włączając/wyłączając VPN lub przełączając się z sieci Wi-Fi na dane komórkowe).\n\nZobacz ten wpis w FAQ, aby uzyskać więcej informacji. Ta treść nie jest dostępna dla aktualnie wybranego kraju treści.\n\nZmień swój wybór w „Ustawienia > Zawartość > Domyślny kraj treści”. + W sierpniu 2025 r. Google ogłosił, że od września 2026 r. instalowanie aplikacji będzie wymagać weryfikacji ich twórców w przypadku wszystkich aplikacji na Androida na certyfikowanych urządzeniach, w tym tych zainstalowanych poza sklepem Google Play. Ponieważ programiści NewPipe nie zgadzają się z tym wymogiem, NewPipie nie będzie już działać na certyfikowanych urządzeniach z Androidem po tym czasie. + Szczegóły + Rozwiązanie + + Eksportowanie %d subskrypcji… + Eksportowanie %d subskrypcji… + Eksportowanie %d subskrypcji… + Eksportowanie %d subskrypcji… + + + Ładowanie %d subskrypcji… + Ładowanie %d subskrypcji… + Ładowanie %d subskrypcji… + Ładowanie %d subskrypcji… + + + Importowanie %d subskrypcji… + Importowanie %d subskrypcji… + Importowanie %d subskrypcji… + Importowanie %d subskrypcji… + + Importuj subskrypcje + Eksportuj subskrypcje + Zaimportuj subskrypcje z poprzedniego eksportu do .json + Wyeksportuj swoje subskrypcje do pliku .json + Importuj z poprzedniego eksportu diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 595fa961319..b454706edb6 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -859,6 +859,29 @@ Erro HTTP 403 recebido do servidor durante a reprodução, provavelmente causado por URL de streaming expirado ou IP banido Erro HTTP %1$s recebido do servidor durante reprodução Erro HTTP 403 recebido do servidor durante a reprodução, provavelmente causado por um banimento de IP ou problemas de desofuscação de URL de streaming - %1$s se recusou a fornecer dados, solicitando um login para confirmar que o solicitante não é um bot.\n\nSeu IP pode ter sido temporariamente banido por %1$s. Você pode esperar um pouco ou mudar para um IP diferente (por exemplo, ativando/desativando uma VPN ou alternando de Wi-Fi para dados móveis). + %1$s se recusou a fornecer dados, solicitando um login para confirmar que o solicitante não é um bot.\n\nSeu IP pode ter sido temporariamente banido por %1$s. Você pode esperar um pouco ou mudar para um IP diferente (por exemplo, ativando/desativando uma VPN ou alternando de Wi-Fi para dados móveis).\n\nConfira este artigo do FAQ para mais informações. Este conteúdo não está disponível para o país selecionado atualmente.\n\nAltere sua seleção acessando “Configurações > Conteúdo > País padrão do conteúdo”. + Em agosto de 2025, o Google anunciou que, a partir de setembro de 2026, a instalação de aplicativos exigirá a verificação do desenvolvedor para todos os aplicativos Android em dispositivos certificados, incluindo aqueles instalados fora da Play Store. Como os desenvolvedores do NewPipe não concordam com esse requisito, o NewPipe não funcionará mais em dispositivos Android certificados após essa data. + Detalhes + Solução + + Exportando %d inscrição… + Exportando %d inscrições… + Exportando %d inscrições… + + + Carregando %d inscrição… + Carregando %d inscrições… + Carregando %d inscrições… + + + Importando %d inscrição… + Importando %d inscrições… + Importando %d inscrições… + + Importar inscrições + Exportar inscrições + Importar inscrições do arquivo .json exportado anterior + Exportar inscrições para arquivo .json + Importar da exportação anterior diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index f14d2e40208..07d3c345c7e 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -144,7 +144,7 @@ Eliminar ficheiros descarregados Idioma da aplicação Utilizadores - Os vídeos que tenham sido vistos antes e depois de serem adicionados à lista de reprodução serão removidos. \nTem a certeza? Esta ação não pode ser revertida! + Os vídeos que tenham sido vistos antes e após serem adicionados à lista de reprodução serão removidos. \nTem a certeza? %s a ver %s a ver @@ -857,8 +857,11 @@ Entrada apagada Conta terminada\n\n%1$s fornece esta razão: %2$s Erro HTTP %1$s recebido do servidor ao reproduzir - %1$s recusou fornecer dados, pedindo por um login para confirmar que o solicitante não é um bot.\n\nO seu IP pode ter sido temporariamente banido por %1$s, pode esperar algum tempo ou mudar para um IP diferente (por exemplo, a ligar / desligar uma VPN, ou a alternar de Wi-Fi para dados móveis). + %1$s recusou fornecer dados, pedindo por um login para confirmar que o solicitante não é um bot.\n\nO seu IP pode ter sido temporariamente banido por %1$s, você pode esperar algum tempo ou mudar para um IP diferente (por exemplo, a ligar/desligar uma VPN, ou a alternar de Wi-Fi para dados móveis).\n\nConfira este artigo do FAQ para mais informações. Este conteúdo não está disponível para o país de conteúdo atualmente selecionado.\n\nAltere a sua seleção de \"Configurações > Conteúdo > País predefinido de conteúdo\". Erro HTTP 403 recebido do servidor durante a reprodução, provavelmente causado pela URL de streaming expirado ou IP banido Erro HTTP 403 recebido do servidor durante a reprodução, provavelmente causado por um bloqueio de IP ou problemas de desofuscação da URL de streaming + Em agosto de 2025, o Google anunciou que, a partir de setembro de 2026, a instalação de apps exigirá a verificação do programador para todas as apps Android em dispositivos certificados, incluindo aqueles instalados fora da Play Store. Como os programadores do NewPipe não concordam com este requisito, o NewPipe já não funcionará em dispositivos Android certificados após essa data. + Pormenores + Solução diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index b3d8fe7b414..a9106932698 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -517,7 +517,7 @@ Este vídeo está restringido a adultos. \n \nPara o poder ver, tem que ativar \"%1$s\" nas definições. - Os vídeos que tenham sido vistos antes e depois de serem adicionados à lista de reprodução serão removidos. \nTem a certeza? Esta ação não pode ser revertida! + Os vídeos que tenham sido vistos antes e após serem adicionados à lista de reprodução serão removidos. \nTem a certeza? Sim e também os vídeos parcialmente vistos Remover transmissões vistas? Remover visualizados @@ -857,8 +857,11 @@ Entrada apagada Conta terminada\n\n%1$s fornece esta razão: %2$s Erro HTTP %1$s recebido do servidor ao reproduzir - %1$s recusou fornecer dados, pedindo por um login para confirmar que o solicitante não é um bot.\n\nO seu IP pode ter sido temporariamente banido por %1$s, pode esperar algum tempo ou mudar para um IP diferente (por exemplo, a ligar / desligar uma VPN, ou a alternar de Wi-Fi para dados móveis). + %1$s recusou fornecer dados, pedindo por um login para confirmar que o solicitante não é um bot.\n\nO seu IP pode ter sido temporariamente banido por %1$s, você pode esperar algum tempo ou mudar para um IP diferente (por exemplo, a ligar/desligar uma VPN, ou a alternar de Wi-Fi para dados móveis).\n\nConfira este artigo do FAQ para mais informações. Este conteúdo não está disponível para o país de conteúdo atualmente selecionado.\n\nAltere a sua seleção de \"Configurações > Conteúdo > País predefinido de conteúdo\". Erro HTTP 403 recebido do servidor durante a reprodução, provavelmente causado pela URL de streaming expirado ou IP banido Erro HTTP 403 recebido do servidor durante a reprodução, provavelmente causado por um bloqueio de IP ou problemas de desofuscação da URL de streaming + Em agosto de 2025, o Google anunciou que, a partir de setembro de 2026, a instalação de apps exigirá a verificação do programador para todas as apps Android em dispositivos certificados, incluindo aqueles instalados fora da Play Store. Como os programadores do NewPipe não concordam com este requisito, o NewPipe já não funcionará em dispositivos Android certificados após essa data. + Detalhes + Solução diff --git a/app/src/main/res/values-rom/strings.xml b/app/src/main/res/values-rom/strings.xml deleted file mode 100644 index 55344e51920..00000000000 --- a/app/src/main/res/values-rom/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ 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 b3f92f16790..5bacb22ef7c 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -633,7 +633,7 @@ Ошибка загрузки подписки Открыть веб-сайт Аккаунт отключён - Начиная с Android 10 поддерживается только «Storage Access Framework» + Начиная с Android 10, поддерживается только \"Storage Access Framework\" Спрашивать, куда сохранять каждую загрузку Папка для загрузки ещё не выбрана, укажите папку для загрузки сейчас Отключить @@ -866,4 +866,7 @@ Во время воспроизведения получена ошибка HTTP 403 от сервера, вероятно, вызванная блокировкой IP-адреса или проблемами деобфускации URL-адреса потоковой передачи %1$s отказался предоставить данные, запросив логин для подтверждения, что запросчик не бот.\n\nВозможно, ваш IP-адрес временно заблокирован %1$s. Вы можете подождать некоторое время или переключиться на другой IP-адрес (например, включив/выключив VPN или переключившись с Wi-Fi на мобильный интернет). Этот контент недоступен для выбранной страны контента.\n\nИзмените свой выбор в разделе «Настройки > Контент > Страна контента по умолчанию». + В августе 2025 года, Google анонсировала, что с сентября 2026 года, установка приложений потребует верификации разработчика для всех Android приложений на сертифицированных устройствах, включая те, которые были установлены не через Play Store. Поскольку разработчики NewPipe не согласны с этим требованием, NewPipe перестанет работать на сертифицированных Android устройствах после этой даты. + Подробнее + Решение diff --git a/app/src/main/res/values-scn/strings.xml b/app/src/main/res/values-scn/strings.xml deleted file mode 100644 index a6b3daec935..00000000000 --- a/app/src/main/res/values-scn/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ 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 27f34c9db3a..0e3854ea4a4 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -860,6 +860,32 @@ Počas prehrávania bola zo servera prijatá chyba HTTP 403, pravdepodobne spôsobená vypršaním platnosti streamingovej adresy URL alebo zákazom IP adresy Chyba HTTP %1$s prijatá zo servera počas prehrávania Chyba HTTP 403 prijatá zo servera počas prehrávania, pravdepodobne spôsobená zákazom IP adresy alebo problémami s deobfuskáciou streamingovej URL adresy - %1$s odmietol poskytnúť údaje, žiada o prihlásenie na potvrdenie, že žiadateľ nie je bot.\n\nVaša IP adresa mohla byť dočasne zakázaná %1$s, môžete nejaký čas počkať alebo prejsť na inú IP adresu (napríklad zapnutím/vypnutím VPN alebo prepnutím z WiFi na mobilné dáta). + %1$s odmietol poskytnúť údaje, žiada o prihlásenie na potvrdenie, že žiadateľ nie je bot.\n\nVaša IP adresa mohla byť dočasne zakázaná %1$s, môžete nejaký čas počkať alebo prejsť na inú IP adresu (napríklad zapnutím/vypnutím VPN alebo prepnutím z WiFi na mobilné dáta).\n\nPozrite si túto časť FAQ pre viac informácií. Tento obsah nie je dostupný pre aktuálne zvolenú krajinu obsahu.\n\nZmeňte výber v ponuke \"Nastavenia > Obsah > Predvolená krajina obsahu\". + V auguste 2025 spoločnosť Google oznámila, že od septembra 2026 bude inštalácia aplikácií vyžadovať overenie vývojára pre všetky aplikácie Android na certifikovaných zariadeniach, vrátane tých, ktoré sú inštalované mimo obchodu Play Store. Keďže vývojári NewPipe s touto požiadavkou nesúhlasia, NewPipe po tomto termíne nebude na certifikovaných zariadeniach Android fungovať. + Podrobnosti + Riešenie + + Exportovanie %d odberu… + Exportovanie %d odberov… + Exportovanie %d odberov… + Exportovanie %d odberov… + + + Načítanie %d odberu… + Načítanie %d odberov… + Načítanie %d odberov… + Načítanie %d odberov… + + + Importovanie %d odberu… + Importovanie %d odberov… + Importovanie %d odberov… + Importovanie %d odberov… + + Importovať odbery + Exportovať odbery + Import odberov z predchádzajúceho exportu .json + Export vašich odberov do súboru .json + Importovať z predchádzajúceho exportu diff --git a/app/src/main/res/values-so/strings.xml b/app/src/main/res/values-so/strings.xml index dc2a89c9c70..d242f8e3c09 100644 --- a/app/src/main/res/values-so/strings.xml +++ b/app/src/main/res/values-so/strings.xml @@ -1,12 +1,12 @@ - Dhaafinta dagdaga ah + Isticmaal Dhaafinta dagdaga ah Xusuusnow meeshii iyo cabirkii udambeeyay ee daaqada Xusuusnow fadhiga daaqada - Madow + Mugdi Nashqada Nooca muuqaalka - Nooca dhagaysiga + Nooca Maqaalka Androidka hakuu baddalo midabka ogaysiiska galka waxa daaran asagoo kusalaynaya midabka galka shayga daaran (aalladahoo dhan looma wada heli karo nidaamkan) Midabbee ogaysiiska Soo Kicinaya @@ -14,25 +14,25 @@ Ku celi Ugu badnaan waxad dooran kartaa sadex shay iney ka muuqdaan ogaysiiska yar! Wax ka baddal hawsha ogaysiiska adigoo dushooda ku dhufanaya. Dooro ilaa sadex kamida si ay uga muuqdaan ogaysiiska yar adigoo saxaya santuuqa dhanka midig kaga yaala - Batoonka hawsha shanaad - Batoonka hawsha afraad - Batoonka hawsha sadexaad - Batoonka hawsha labaad - Batoonka hawsha koowaad + Batoonka shanaad + Batoonka afraad + Batoonka saddexaad + Batoonka labaad + Batoonka koowaad La ekaysii galka muuqaalka xaga ogaysiisyada ka muuqda cabirka 1:1 ayadoo laga soo baddalayo 16:9 Galka la ekaysii cabirka 1:1 - Soo bandhig istikhyaar ah in muuqaalka lagu furo xarunta madadaalada Kodi + Soo bandhig istikhyaar ah in muuqaalka lagu furo Kodi Soodhig istikhyaarka \"Ku fur Kodi\" - Kushub appka maqan ee Kore\? + Soo deji appka maqan ee Kore? Ku fur Kodi Aalladaha qaar kaliya ayaa furi kara muuqaalada 2K/4K ga ah - Tus tayooyinka kasii sareeeya + Tus tayooyinka sare Tayada muuqaalka daaqada Tayada muuqaalka - Dooro khaanada dhagaysiga lasoo dajiyo - Dooro khaanada muuqaalada lasoo dajiyo - Dhagaysiyada lasoo dajiyay halkan ayaa lagu kaydiyaa - Muuqaalada lasoo dajiyo halkan ayaa lagu kaydiyaa + Dooro Khaanada soo dejinta ee faylasha maqalka ah + Dooro khaanada Muuqaallada lagu soo dejinayo + Dhagaysiyada lasoo dajiyay halkan ayaa lagu kaydiyey + Muuqaalada lasoo dajiyo halkan ayaa lagu kaydiyey Khaanada dajinta dhagaysiga Khaanada dajinta muuqaalada Ku Dar @@ -41,17 +41,17 @@ Dooro Daaqada La calaamadsaday Rukunka - Faahfaahinta + Tus Faahfaahinta Lama cusbooneysiin karo rukunka Lama baddali karo rukunka Kanaalka waad iskajoojisay Iskajooji Rukunka Rukuntay Rukumo - Isticmaal dhagaysi daare dibada ah + Isticmaal dhagaysi Daare dibada ah Codka ayuu ka saaraa tayada muuqaalada qaar Isticmaal muuqaal daare dibada ah - La wadaag + Ku La wadaag Kutusaya natiijooyinka: %s Ma waxaad ka waday \"%1$s\"\? Fadhiga @@ -64,7 +64,7 @@ Wax fura lama helin shaygan. (waxaad Ku shuban kartaa VLC si aad u furto). Wax fura lama helin shaygan. Ku shubo VLC\? Lasoo galiyay: %1$s - Ku dhufo waynaysada 🔍 si aad wax uraadiso. + Ku dhufo raadinta si aad wax uraadiso. Shay magacan leh ayaa horay ujiray Ku badal Usamee magac gaar ah @@ -262,7 +262,7 @@ Fadlan hubi in arin cilladdan ka hadlaya horay loo wariyay. Marka wax horay u jiray la wariyo markale, wakhti ayaad naga qaadaysaa wakhtigaas oo aan cilada ku sixi la hayn. Ku wari xaga GitHub-ka Koobiyee warka oo diyaarsan - Khaladkan email ahaan ku warceli + Khaladkan email ahaan uga war bixi Waan ka xunahay, sidaa inay dhacdo ma ahayn. U ogolow appka inuu dul fuulo applicationada kale Ma rabtaa inaad sidii hore kuceliso\? @@ -400,11 +400,11 @@ Tus faallooyinka Hormada daareha hadda wax shidaya waa la baddali doonaa Kala baddalka daareha waxay badali kartaa hormada sidaas darteed waydii in la xaqiijiyo intaan hormada la tirtirin - Xaqiijinta tirtirka hormada + Weydii xaqiijin ka hor intaadan tirtirin saf-ka Wakhtiga horay udhaafinta/dibucelinta - Mugdi - Caddaan - Dhagaysi + Madow + Iftiin + Maqal Waxba Raadi Daji @@ -491,7 +491,7 @@ Ayadooy ugu wacantahay xayiraad xaga ExoPlayer-ka ah xadka dhaaf-dhaafinta waa %d ilbiriqsi Haa, sidoo kale ku dar muuqaalada qayb laga daawaday - Muuqaalada la daawaday kahor iyo kadib markii xulka lagu daray waa la saari doonaa. \nMa hubtaa? Arrinkan dib looma soocelin karo! + Muuqaalada la daawaday kahor iyo kadib markii xulka lagu daray waa la saari doonaa. \nMa hubtaa? Saar muuqaalada la daawaday? Saar kuwa la daawaday Aaladu saytahay @@ -520,7 +520,7 @@ Habayntii way guuldareystay Lama helin Martigaliyuhu ma aqbalo dajinta qaybaha badan leh, iskula day @string/msg_threads = 1 - Kuma xidhi karo martigaliyaha + Kuma xidhmi karo server-ka Lama heli karo martigaliyaha Lama samayn karo iskuxidh amni ah khaanadii la rabay lama samayn karo @@ -630,7 +630,7 @@ Soojeedinada raadinta banaanka Soojeedinada raadinta gudaha Cabirka soodaarida udhexeeya - Jabi Daareha + Jabi Daaraha Haa Maya Raadi %1$s diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 1e58d2184c0..28099ef5bb1 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -847,4 +847,7 @@ HTTP-fel 403 mottogs från servern under spelning, troligen orsakat av en IP-avstängning eller problem med deobfuskering av streaming-URL:er %1$s vägrade att tillhandahålla data och bad om en inloggning för att bekräfta att den som begärde detta inte är en bot.\n\nDin IP-adress kan ha blivit tillfälligt avstängd av %1$s. Du kan vänta en stund eller byta till en annan IP-adress (till exempel genom att slå på/av ett VPN eller genom att byta från WiFi till mobildata). Detta innehåll är inte tillgängligt för det valda innehållslandet.\n\nÄndra ditt val från \"Inställningar > Innehåll > Standardinnehållsland\". + Google har meddelat att från och med 2026/2027 kommer alla appar på certifierade Android-enheter att kräva att utvecklarna lämnar sina personliga identitetsuppgifter direkt till Google. Eftersom utvecklarna av denna app inte accepterar detta krav kommer appen inte längre att fungera på certifierade Android-enheter efter den tiden. + Detaljer + Lösning diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 76215fa0d96..6eb49e6a1cc 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -845,6 +845,26 @@ Oynatırken sunucudan HTTP 403 hatası alındı, akış URL’si bitmiş ya da IP engellenmiş olabilir Oynatırken sunucudan HTTP %1$s hatası alındı Oynatırken sunucudan HTTP 403 hatası alındı, IP engeli ya da akış URL’si çözme sorunları olabilir - %1$s veri sağlamayı geri çevirdi, istekçinin robot olmadığını doğrulaması için oturum açmasını istiyor.\n\n%1$s, IP adresinizi geçici olarak engellemiş olabilir, bir süre bekleyebilir ya da başka IP\'ye geçebilirsiniz (örneğin VPN\'i açıp/kapatarak ya da WiFi\'den mobil veriye geçerek). + %1$s veri sağlamıyor, istekçinin robot olmadığını doğrulaması için oturum açmasını istiyor.\n\n%1$s, IP adresinizi geçici olarak engellemiş olabilir, bir süre bekleyebilir ya da başka IP\'ye geçebilirsiniz (örneğin VPN\'i açıp/kapatarak ya da WiFi\'den mobil veriye geçerek).\n\nDaha çok bilgi için bu SSS girdisine bakın. Bu içerik şu anda seçili içerik ülkesinde kullanılamıyor.\n\nSeçiminizi \"Ayarlar > İçerik > Öntanımlı içerik ülkesi\"nden değiştirin. + Google, Eylül 2026\'dan sonra sertifikalı Android aygıtlarda Play Store dışından kurulmuşlarla birlikte tüm uygulamaların, geliştiricilerin kişisel kimlik bilgilerini doğrudan Google’a göndermesini gerektireceğini duyurdu. NewPipe geliştiricileri bu zorunluluğu kabul etmediğinden, NewPipe bu tarihten sonra sertifikalı Android aygıtlarda çalışmayacaktır. + Ayrıntılar + Çözüm + + %d abonelik dışa aktarılıyor… + %d abonelik dışa aktarılıyor… + + + %d abonelik yükleniyor… + %d abonelik yükleniyor… + + + %d abonelik içeri aktarılıyor… + %d abonelik içeri aktarılıyor… + + Abonelikleri içeri aktar + Abonelikleri dışarı aktar + Abonelikleri önceki dışarı aktarmadaki .json dosyası ile içeri aktar + Aboneliklerini bir .json dosyasında dışarı aktar + Önceki dışarı aktarmadan içe aktar diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index c6dcdbdc1e7..c3595ebece1 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -491,7 +491,7 @@ Звичайний режим Швидкий режим Доступно для деяких служб, швидке, але може повертати не весь вміст каналу і часто неповну інформацію (тривалість, тип елемента, статус трансляції) - Оновлення з RSS, коли воно є + Отримувати з виділеної стрічки, коли доступно Оновлювати постійно Період актуальності підписок після поновлення — %s Поріг оновлення підписок @@ -510,8 +510,8 @@ Останнє оновлення: %s Через обмеження ExoPlayer точність перемотування становить %d секунд Так, а також частково переглянуті відео - Відео, які Ви переглядали до та після додавання в добірку, вилучатимуться. \nВи впевнені? Це незворотна дія! - Видалити переглянуті відео? + Потоки, які були переглянуті до та після додавання в добірку, будуть видалені. \nВи впевнені? + Видалити переглянуті потоки? Видалити переглянуті Створено автоматично (автора не знайдено) ∞ вiдео @@ -604,7 +604,7 @@ Обрізати мініатюру відео показувану в сповіщенні з пропорцій 16: 9 до 1:1 Вимкнення тунелювання медіаданих за наявності чорного екрана або гальмування під час відтворення відео. Вимкнути тунелювання медіа - «Фреймворк доступу до сховища» (SAF) підтримується лише починаючи з Android 10 + Починаючи з Android 10, підтримується тільки \"Storage Access Framework\" Вас питатиме, куди зберігати кожне завантаження Не вказано теки завантаження, оберіть типову теку завантаження зараз Відкрити вебсайт @@ -866,4 +866,7 @@ Під час відтворення від сервера отримано помилку HTTP 403, ймовірно, через заборону IP-адреси або проблеми з деобфускацією URL-адреси потокової передачі %1$s відмовився надати дані, запитуючи логін для підтвердження того, що запитувач не є ботом.\n\nВаша IP-адреса могла бути тимчасово заблокована %1$s. Ви можете почекати деякий час або перейти на іншу IP-адресу (наприклад, увімкнувши/вимкнувши VPN або переключившись з Wi-Fi на мобільні дані). Цей контент недоступний для вибраної країни контенту.\n\nЗмініть свій вибір у розділі \"Налаштування > Контент > Країна контенту за замовчуванням\". + У серпні 2025 року, Google анонсувала, що з вересня 2026 року, для встановлення застосунків буде потрібна верифікація розробника для всіх Android застосунків на сертифікованих пристроях, включаючи ті, що були встановлені не через Play Store. Оскільки розробники NewPipe не згодні з цією вимогою, NewPipe перестане працювати на сертифікованих Android пристроях після цієї дати. + Детальніше + Вирішення diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index e43b2f5df65..755fa7becf0 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -62,7 +62,7 @@ Lỗi Lỗi kết nối mạng Không thể tải tất cả hình thu nhỏ - Không thể phân tích cú pháp trang web vì trang này đã ngừng hoạt động vào 21/07/2025. + Không thể phân tích cú pháp web. 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 @@ -821,8 +821,8 @@ Phim và chương trình đang thịnh hành Âm nhạc đang thịnh hành Đã xảy ra lỗi HTTP 403 trong khi phát, có thể do URL phát sóng đã hết hạn hoặc bị ban IP - %1$s đã từ chối cung cấp dữ liệu, cần phải đăng nhập để xác nhận yêu cầu viên ko phải là bot.\n\nIP này có vẻ đã bị ban tạm thời bởi %1$s, bạn có thể đợi một lúc hoặc chuyển sang IP khác (ví dụ như việc tắt / bật lại VPN, hoặc là chuyển mạng từ WIFI sang 4G/5G). - Nội dung này không được hỗ trợ tại quốc gia mà bạn chọn.\n\nHãy đổi quốc gia trong phần \"Cài đặt > Nội dung > Nội dung quốc gia mặc định\". + %1$s đã từ chối cung cấp dữ liệu, cần phải đăng nhập để xác nhận requester của NewPipe ko phải là bot.\n\nIP này có vẻ đã bị ban tạm thời bởi %1$s, bạn có thể đợi một lúc hoặc chuyển sang IP khác (ví dụ như việc tắt / bật lại VPN, hoặc là chuyển mạng từ WIFI sang 4G/5G).\n\nXem qua phần FAQ này đẻ biết thêm chi tiết + Nội dung này không được hỗ trợ tại quốc gia mà bạn chọn.\n\nHãy đổi quốc gia trong phần \"Cài đặt > Nội dung > Quốc gia nội dung mặc định\". Để sử dụng tính năng phát video nổi, hãy chọn %1$s trong Cài đặt Android và bật tính năng %2$s. Đã xảy ra lỗi HTTP 403 trong khi phát, có thể IP này đã bị ban hoặc vấn đề phát URL deobfuscation \"Cho phép hiển thị trên ứng dụng khác\" @@ -831,4 +831,7 @@ Tài khoản bị vô hiệu hóa. \n\n%1$s cung cấp lý do này: %2$s Entry đã xóa Đã xảy ra lỗi HTTP %1$s trong khi phát + Từ tháng 8 năm 2025, Google đã thông báo rằng kể từ tháng 9 năm 2026, việc cài app sẽ yêu cầu các nhà phát triển phải xác minh trên những thiết bị đã chứng nhận, kể cả đối với các ứng dụng ngoài Play Store. Vì các nhà phát triển của NewPipe không đồng ý với điều kiện này, nên có lẽ NewPipe sẽ không còn hoạt động trên các máy Android được chứng nhận sau thời điểm ấy. + Chi tiết + Giải pháp diff --git a/app/src/main/res/values-vmf/strings.xml b/app/src/main/res/values-vmf/strings.xml deleted file mode 100644 index b1cb4e77412..00000000000 --- a/app/src/main/res/values-vmf/strings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - im brüscher öffn - passd scho - passd scho - stoarnieren - iser - net - tealn - diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index ea92db43f36..881829c90cf 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -831,6 +831,23 @@ 播放时从服务器收到 HTTP 403 错误,可能因串流 URL 过期或 IP 封锁导致 播放时从服务器收到 HTTP %1$s 错误 播放时从服务器收到 HTTP 403 错误,可能因 IP 封锁或串流 URL 解密问题导致 - %1$s 拒绝提供数据, 要求登录确认请求方不是机器人。\n\n你的 IP 可能已经暂时被 %1$s 封禁,你可以等待一段时间或切换到不同 IP (比如开/关 VPN, 或者从 WiFi 连接切换到移动数据)。 + %1$s 拒绝提供数据, 要求登录确认请求方不是机器人。\n\n你的 IP 可能已经暂时被 %1$s 封禁,你可以等待一段时间或切换到不同 IP (比如开/关 VPN, 或者从 WiFi 连接切换到移动数据)。\n\n请见 此 FAQ条目 获取更多信息。 此内容对当前选中的内容地区不可用。\n\n要更改选择,请前往 “设置 > 内容 > 默认内容地区”。 + 2025 年 8 月,Google 宣布自 2026 年 9 月起,在已认证设备上安装所有安卓应用都需要开发者验证身份,包括在 Play 商店之外安装的应用。由于 NewPipe 开发者反对此要求,NewPipe 在此时间点后不会再在已认证设备上工作。 + 详情 + 解决方案 + + 正在导出 %d 个订阅… + + + 正在加载 %d 个订阅… + + + 正在导入 %d 个订阅… + + 导入订阅 + 导出订阅 + 从之前的 .json 导出文件导入订阅 + 导出订阅到 .json 文件 + 从之前的导出文件导入 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index cca70f771d4..9240a6cddb7 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -343,7 +343,7 @@ 生成獨特的名稱 覆寫 有已下載的同名檔案 - 已有進行中的下載與此同名 + 已有正在進行的下載與此同名 顯示錯誤 無法建立檔案 無法建立目的地資料夾 @@ -377,7 +377,7 @@ 檔案已被移動或刪除 同名的檔案已存在 無法覆寫檔案 - 已有擱置中的下載與此同名 + 已有正在擱置的下載與此同名 NewPipe 在處理檔案時被關閉 裝置上沒有剩餘的空間 進度遺失,因為檔案已被刪除 @@ -811,6 +811,23 @@ 播放時收到來自伺服器的 HTTP 錯誤 403,可能因串流網址過期或 IP 封鎖所致 播放時收到來自伺服器的 HTTP 錯誤 %1$s 播放時收到來自伺服器的 HTTP 錯誤 403,可能因 IP 封鎖或串流網址去混淆化問題所致 - %1$s 拒絕提供資料,要求登入以確認請求者並非機器人。\n\n您的 IP 位址可能已被 %1$s 暫時封鎖,您可稍候片刻或切換至其他 IP 位址(例如開啟/關閉 VPN,或從 Wi-Fi 切換至行動數據)。 + %1$s 拒絕提供資料,要求登入以確認請求者並非機器人。\n\n您的 IP 位址可能已被 %1$s 暫時封鎖,您可稍候片刻或切換至其他 IP 位址(例如開啟/關閉 VPN,或從 Wi-Fi 切換至行動數據)。\n\n更多資訊請參見此 FAQ 條目 此內容目前無法於您所選的國家/地區提供。\n\n請至「設定」→「內容」→「預設內容國家」變更您的選擇。 + 2025年8月,Google 宣佈自2026年9月起,所有經認證裝置上的 Android 應用程式(包含不是透過 Play 商店安裝的應用程式)皆須通過開發者驗證方可安裝。由於 NewPipe 開發團隊不接受此項要求,該應用程式屆時將無法在經認證的 Android 裝置上運作。 + 詳細資訊 + 解決方案 + + 正在匯出 %d 個訂閱… + + + 正在載入 %d 個訂閱… + + + 正在匯入 %d 個訂閱… + + 匯入訂閱 + 匯出訂閱 + 匯出您的訂閱至 .json 檔案 + 從先前匯出的 .json 匯入訂閱 + 從先前的匯出檔案匯入 diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index d8592b90500..f49ed3dad73 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -10,6 +10,8 @@ saved_tabs_key + kao_last_checked + download_path download_path_audio @@ -411,6 +413,8 @@ import_export_data_path import_data export_data + import_subscriptions_key + export_subscriptions_key clear_cookie @@ -1211,7 +1215,6 @@ fi fil fr - frc gl gu he @@ -1312,7 +1315,6 @@ Suomen kieli Wikang Filipino Français - Français (Louisiana) Galego ગુજરાતી עברית diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7df964aed51..3ec84bfffbb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -501,6 +501,18 @@ Show an error snackbar Create an error notification + + Exporting %d subscription… + Exporting %d subscriptions… + + + Loading %d subscription… + Loading %d subscriptions… + + + Importing %d subscription… + Importing %d subscriptions… + Import Import from Export to @@ -508,6 +520,11 @@ Exporting… Import file Previous export + Import subscriptions" + Export subscriptions + Import subscriptions from a previous .json export" + Export your subscriptions to a .json file + Import from previous export Could not import subscriptions Could not export subscriptions Import YouTube subscriptions from Google takeout: @@ -878,6 +895,9 @@ HTTP error 403 received from server while playing, likely caused by streaming URL expiration or an IP ban HTTP error %1$s received from server while playing HTTP error 403 received from server while playing, likely caused by an IP ban or streaming URL deobfuscation issues - %1$s refused to provide data, asking for a login to confirm the requester is not a bot.\n\nYour IP might have been temporarily banned by %1$s, you can wait some time or switch to a different IP (for example by turning on/off a VPN, or by switching from WiFi to mobile data). + %1$s refused to provide data, asking for a login to confirm the requester is not a bot.\n\nYour IP might have been temporarily banned by %1$s, you can wait some time or switch to a different IP (for example by turning on/off a VPN, or by switching from WiFi to mobile data).\n\nPlease see this FAQ entry for more information. This content is not available for the currently selected content country.\n\nChange your selection from \"Settings > Content > Default content country\". + In August 2025, Google announced that as of September 2026, installing apps will require developer verification for all Android apps on certified devices, including those installed outside of the Play Store. Since the developers of NewPipe do not agree to this requirement, NewPipe will no longer work on certified Android devices after that time. + Details + Solution diff --git a/app/src/main/res/xml/backup_restore_settings.xml b/app/src/main/res/xml/backup_restore_settings.xml index ef6a3cde3a6..ff52948f0b1 100644 --- a/app/src/main/res/xml/backup_restore_settings.xml +++ b/app/src/main/res/xml/backup_restore_settings.xml @@ -22,4 +22,18 @@ android:summary="@string/reset_settings_summary" app:singleLineTitle="false" app:iconSpaceReserved="false" /> + + + + \ No newline at end of file diff --git a/app/src/test/java/org/schabi/newpipe/local/subscription/services/ImportExportJsonHelperTest.java b/app/src/test/java/org/schabi/newpipe/local/subscription/services/ImportExportJsonHelperTest.java index 4f0f125ecc1..96bca973311 100644 --- a/app/src/test/java/org/schabi/newpipe/local/subscription/services/ImportExportJsonHelperTest.java +++ b/app/src/test/java/org/schabi/newpipe/local/subscription/services/ImportExportJsonHelperTest.java @@ -5,11 +5,11 @@ import org.junit.Test; import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor; -import org.schabi.newpipe.extractor.subscription.SubscriptionItem; +import org.schabi.newpipe.local.subscription.workers.ImportExportJsonHelper; +import org.schabi.newpipe.local.subscription.workers.SubscriptionItem; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; @@ -23,26 +23,22 @@ public void testEmptySource() throws Exception { final String emptySource = "{\"app_version\":\"0.11.6\",\"app_version_int\": 47,\"subscriptions\":[]}"; - final List items = ImportExportJsonHelper.readFrom( - new ByteArrayInputStream(emptySource.getBytes(StandardCharsets.UTF_8)), null); + final var items = ImportExportJsonHelper.readFrom( + new ByteArrayInputStream(emptySource.getBytes(StandardCharsets.UTF_8))); assertTrue(items.isEmpty()); } @Test public void testInvalidSource() { - final List invalidList = Arrays.asList( - "{}", - "", - null, - "gibberish"); + final var invalidList = Arrays.asList("{}", "", null, "gibberish"); for (final String invalidContent : invalidList) { try { if (invalidContent != null) { final byte[] bytes = invalidContent.getBytes(StandardCharsets.UTF_8); - ImportExportJsonHelper.readFrom((new ByteArrayInputStream(bytes)), null); + ImportExportJsonHelper.readFrom(new ByteArrayInputStream(bytes)); } else { - ImportExportJsonHelper.readFrom(null, null); + ImportExportJsonHelper.readFrom(null); } fail("didn't throw exception"); @@ -58,38 +54,24 @@ public void testInvalidSource() { @Test public void ultimateTest() throws Exception { // Read from file - final List itemsFromFile = readFromFile(); + final var itemsFromFile = readFromFile(); // Test writing to an output final String jsonOut = testWriteTo(itemsFromFile); // Read again - final List itemsSecondRead = readFromWriteTo(jsonOut); + final var itemsSecondRead = readFromWriteTo(jsonOut); // Check if both lists have the exact same items - if (itemsFromFile.size() != itemsSecondRead.size()) { + if (!itemsFromFile.equals(itemsSecondRead)) { fail("The list of items were different from each other"); } - - for (int i = 0; i < itemsFromFile.size(); i++) { - final SubscriptionItem item1 = itemsFromFile.get(i); - final SubscriptionItem item2 = itemsSecondRead.get(i); - - final boolean equals = item1.getServiceId() == item2.getServiceId() - && item1.getUrl().equals(item2.getUrl()) - && item1.getName().equals(item2.getName()); - - if (!equals) { - fail("The list of items were different from each other"); - } - } } private List readFromFile() throws Exception { - final InputStream inputStream = getClass().getClassLoader().getResourceAsStream( - "import_export_test.json"); - final List itemsFromFile = ImportExportJsonHelper.readFrom( - inputStream, null); + final var inputStream = getClass().getClassLoader() + .getResourceAsStream("import_export_test.json"); + final var itemsFromFile = ImportExportJsonHelper.readFrom(inputStream); if (itemsFromFile.isEmpty()) { fail("ImportExportJsonHelper.readFrom(input) returned a null or empty list"); @@ -98,10 +80,10 @@ private List readFromFile() throws Exception { return itemsFromFile; } - private String testWriteTo(final List itemsFromFile) throws Exception { - final ByteArrayOutputStream out = new ByteArrayOutputStream(); - ImportExportJsonHelper.writeTo(itemsFromFile, out, null); - final String jsonOut = out.toString("UTF-8"); + private String testWriteTo(final List itemsFromFile) { + final var out = new ByteArrayOutputStream(); + ImportExportJsonHelper.writeTo(itemsFromFile, out); + final String jsonOut = out.toString(StandardCharsets.UTF_8); if (jsonOut.isEmpty()) { fail("JSON returned by writeTo was empty"); @@ -111,10 +93,8 @@ private String testWriteTo(final List itemsFromFile) throws Ex } private List readFromWriteTo(final String jsonOut) throws Exception { - final ByteArrayInputStream inputStream = new ByteArrayInputStream( - jsonOut.getBytes(StandardCharsets.UTF_8)); - final List secondReadItems = ImportExportJsonHelper.readFrom( - inputStream, null); + final var inputStream = new ByteArrayInputStream(jsonOut.getBytes(StandardCharsets.UTF_8)); + final var secondReadItems = ImportExportJsonHelper.readFrom(inputStream); if (secondReadItems.isEmpty()) { fail("second call to readFrom returned an empty list"); diff --git a/app/src/test/java/org/schabi/newpipe/settings/ImportAllCombinationsTest.kt b/app/src/test/java/org/schabi/newpipe/settings/ImportAllCombinationsTest.kt index c7f53f3aca8..7a90a472125 100644 --- a/app/src/test/java/org/schabi/newpipe/settings/ImportAllCombinationsTest.kt +++ b/app/src/test/java/org/schabi/newpipe/settings/ImportAllCombinationsTest.kt @@ -3,7 +3,9 @@ package org.schabi.newpipe.settings import android.content.SharedPreferences import java.io.File import java.io.IOException -import java.nio.file.Files +import kotlin.io.path.createTempFile +import kotlin.io.path.exists +import kotlin.io.path.fileSize import org.junit.Assert import org.junit.Test import org.mockito.Mockito @@ -47,10 +49,10 @@ class ImportAllCombinationsTest { BackupFileLocator::class.java, Mockito.withSettings().stubOnly() ) - val db = File.createTempFile("newpipe_", "") - val dbJournal = File.createTempFile("newpipe_", "") - val dbWal = File.createTempFile("newpipe_", "") - val dbShm = File.createTempFile("newpipe_", "") + val db = createTempFile("newpipe_", "") + val dbJournal = createTempFile("newpipe_", "") + val dbWal = createTempFile("newpipe_", "") + val dbShm = createTempFile("newpipe_", "") Mockito.`when`(fileLocator.db).thenReturn(db) Mockito.`when`(fileLocator.dbJournal).thenReturn(dbJournal) Mockito.`when`(fileLocator.dbShm).thenReturn(dbShm) @@ -62,7 +64,7 @@ class ImportAllCombinationsTest { Assert.assertFalse(dbJournal.exists()) Assert.assertFalse(dbWal.exists()) Assert.assertFalse(dbShm.exists()) - Assert.assertTrue("database file size is zero", Files.size(db.toPath()) > 0) + Assert.assertTrue("database file size is zero", db.fileSize() > 0) } } else { runTest { @@ -70,7 +72,7 @@ class ImportAllCombinationsTest { Assert.assertTrue(dbJournal.exists()) Assert.assertTrue(dbWal.exists()) Assert.assertTrue(dbShm.exists()) - Assert.assertEquals(0, Files.size(db.toPath())) + Assert.assertEquals(0, db.fileSize()) } } diff --git a/app/src/test/java/org/schabi/newpipe/settings/ImportExportManagerTest.kt b/app/src/test/java/org/schabi/newpipe/settings/ImportExportManagerTest.kt index e2ff221344d..482b382375f 100644 --- a/app/src/test/java/org/schabi/newpipe/settings/ImportExportManagerTest.kt +++ b/app/src/test/java/org/schabi/newpipe/settings/ImportExportManagerTest.kt @@ -4,8 +4,15 @@ import android.content.SharedPreferences import com.grack.nanojson.JsonParser import java.io.File import java.io.ObjectInputStream -import java.nio.file.Files +import java.nio.file.Paths import java.util.zip.ZipFile +import kotlin.io.path.createTempDirectory +import kotlin.io.path.createTempFile +import kotlin.io.path.deleteIfExists +import kotlin.io.path.div +import kotlin.io.path.exists +import kotlin.io.path.fileSize +import kotlin.io.path.inputStream import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertThrows @@ -46,7 +53,7 @@ class ImportExportManagerTest { @Test fun `The settings must be exported successfully in the correct format`() { - val db = File(classloader.getResource("settings/newpipe.db")!!.file) + val db = Paths.get(classloader.getResource("settings/newpipe.db")!!.toURI()) `when`(fileLocator.db).thenReturn(db) val expectedPreferences = mapOf("such pref" to "much wow") @@ -81,29 +88,29 @@ class ImportExportManagerTest { @Test fun `Ensuring db directory existence must work`() { - val dir = Files.createTempDirectory("newpipe_").toFile() - Assume.assumeTrue(dir.delete()) - `when`(fileLocator.dbDir).thenReturn(dir) + val path = createTempDirectory("newpipe_") / BackupFileLocator.FILE_NAME_DB + Assume.assumeTrue(path.parent.deleteIfExists()) + `when`(fileLocator.db).thenReturn(path) ImportExportManager(fileLocator).ensureDbDirectoryExists() - assertTrue(dir.exists()) + assertTrue(path.parent.exists()) } @Test fun `Ensuring db directory existence must work when the directory already exists`() { - val dir = Files.createTempDirectory("newpipe_").toFile() - `when`(fileLocator.dbDir).thenReturn(dir) + val path = createTempDirectory("newpipe_") / BackupFileLocator.FILE_NAME_DB + `when`(fileLocator.db).thenReturn(path) ImportExportManager(fileLocator).ensureDbDirectoryExists() - assertTrue(dir.exists()) + assertTrue(path.parent.exists()) } @Test fun `The database must be extracted from the zip file`() { - val db = File.createTempFile("newpipe_", "") - val dbJournal = File.createTempFile("newpipe_", "") - val dbWal = File.createTempFile("newpipe_", "") - val dbShm = File.createTempFile("newpipe_", "") + val db = createTempFile("newpipe_", "") + val dbJournal = createTempFile("newpipe_", "") + val dbWal = createTempFile("newpipe_", "") + val dbShm = createTempFile("newpipe_", "") `when`(fileLocator.db).thenReturn(db) `when`(fileLocator.dbJournal).thenReturn(dbJournal) `when`(fileLocator.dbShm).thenReturn(dbShm) @@ -117,15 +124,15 @@ class ImportExportManagerTest { assertFalse(dbJournal.exists()) assertFalse(dbWal.exists()) assertFalse(dbShm.exists()) - assertTrue("database file size is zero", Files.size(db.toPath()) > 0) + assertTrue("database file size is zero", db.fileSize() > 0) } @Test fun `Extracting the database from an empty zip must not work`() { - val db = File.createTempFile("newpipe_", "") - val dbJournal = File.createTempFile("newpipe_", "") - val dbWal = File.createTempFile("newpipe_", "") - val dbShm = File.createTempFile("newpipe_", "") + val db = createTempFile("newpipe_", "") + val dbJournal = createTempFile("newpipe_", "") + val dbWal = createTempFile("newpipe_", "") + val dbShm = createTempFile("newpipe_", "") `when`(fileLocator.db).thenReturn(db) val emptyZip = File(classloader.getResource("settings/nodb_noser_nojson.zip")?.file!!) @@ -136,7 +143,7 @@ class ImportExportManagerTest { assertTrue(dbJournal.exists()) assertTrue(dbWal.exists()) assertTrue(dbShm.exists()) - assertEquals(0, Files.size(db.toPath())) + assertEquals(0, db.fileSize()) } @Test diff --git a/build.gradle.kts b/build.gradle.kts index 2c9173f575c..13e33dce55b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,5 +9,6 @@ plugins { alias(libs.plugins.jetbrains.kotlin.kapt) apply false alias(libs.plugins.google.ksp) apply false alias(libs.plugins.jetbrains.kotlin.parcelize) apply false + alias(libs.plugins.jetbrains.kotlinx.serialization) apply false alias(libs.plugins.sonarqube) apply false } diff --git a/fastlane/metadata/android/azb/short_description.txt b/fastlane/metadata/android/azb/short_description.txt deleted file mode 100644 index 4f991f505f6..00000000000 --- a/fastlane/metadata/android/azb/short_description.txt +++ /dev/null @@ -1 +0,0 @@ -اندرویددا یوتیوب اوچون بیر اؤزگور و یونگول قاپاخ. diff --git a/fastlane/metadata/android/cs/changelogs/1007.txt b/fastlane/metadata/android/cs/changelogs/1007.txt index 7035a111220..1d2c6d259a6 100644 --- a/fastlane/metadata/android/cs/changelogs/1007.txt +++ b/fastlane/metadata/android/cs/changelogs/1007.txt @@ -1 +1,11 @@ -Opraveno nepřehrávání jakéhokoli streamu ve službě YouTube +Oprava chyby „Obsah není k dispozici“: videa z YouTube lze nyní opět přehrávat! + +Další opravy chyb z verze 0.28.1: +• Přetahování položek playlistu pouze na sousední pozice +• Blikání názvu/komentářů mezi aktuálním a předchozím videem +• Nefunkční možnost „Spustit hlavní přehrávač na celou obrazovku“ + +Další vylepšení: +• [YouTube] Opětovné povolení přetáčení živých přenosů až o 4 hodiny zpět +• Nepřetáčení živého videa při přehrávání na pozadí +• Nové uživatelské rozhraní pro „Odebrat zhlédnuté“ diff --git a/fastlane/metadata/android/cs/changelogs/1009.txt b/fastlane/metadata/android/cs/changelogs/1009.txt new file mode 100644 index 00000000000..7c430938787 --- /dev/null +++ b/fastlane/metadata/android/cs/changelogs/1009.txt @@ -0,0 +1,14 @@ +Důležité +Přidány informace a výzva k akci v rámci kampaně Keep Android Open: https://www.keepandroidopen.org/ + +Vylepšeno +[Feed] Změna pořadí aktualizace starších odběrů +Zrušeno kupení stránek s komentáři +Nepředávání události kliknutí podkladovým zobrazením při kliknutí na stránku s podrobnostmi o videu + +Opraveno +Rozložení záhlaví odpovědí na komentáře bez avataru +Několik oprav rozhraní souvisejících s přehrávačem +[SoundCloud] Oprava streamů s dlouhými ID + +a další opravy a vylepšení! diff --git a/fastlane/metadata/android/de/changelogs/1009.txt b/fastlane/metadata/android/de/changelogs/1009.txt new file mode 100644 index 00000000000..31d65bc86c9 --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/1009.txt @@ -0,0 +1,14 @@ +Wichtig +Informationen zur Kampagne „Keep Android Open“: https://keepandroidopen.org/de/ + +Verbessert +[Feed] Die Reihenfolge, in der veraltete Abos aktualisiert werden +Kommentarseiten nicht stapeln +Beim Klicken auf die Videodetailseite keine Klickereignisse an darunterliegende Ansichten weiterleiten + +Behoben +Layout der Kommentarantworten ohne Profilbild +Mehrere Player-bezogene Korrekturen der Bedienoberfläche +[SoundCloud] Streams mit langen IDs + +und weitere Korrekturen und Verbesserungen! diff --git a/fastlane/metadata/android/de/changelogs/999.txt b/fastlane/metadata/android/de/changelogs/999.txt index 059b4e0811e..770017d0682 100644 --- a/fastlane/metadata/android/de/changelogs/999.txt +++ b/fastlane/metadata/android/de/changelogs/999.txt @@ -7,6 +7,6 @@ Verbessert • [Bandcamp] Anzeige zusätzlicher Informationen im Radio-Kiosk Behoben -• [YouTube] Behebung gelegentlicher HTTP-403-Fehler am Anfang oder in der Mitte von Videos -• [YouTube] Extrahieren von Avataren und Banner aus mehr Kanal-Header-Typen -• [Bandcamp] Verschiedene Fehler behoben und HTTPS wird stets verwendet +• [YouTube] Gelegentliche HTTP-403-Fehler am Anfang oder in der Mitte von Videos +• [YouTube] Extrahieren von Profilbildern und Banner aus mehr Kanal-Header-Typen +• [Bandcamp] Verschiedene Fehler behoben und HTTPS wird immer verwendet diff --git a/fastlane/metadata/android/en-US/changelogs/1009.txt b/fastlane/metadata/android/en-US/changelogs/1009.txt new file mode 100644 index 00000000000..51cc9896da7 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1009.txt @@ -0,0 +1,14 @@ +Important +Information on and call for action for the Keep Android Open campaign added: https://www.keepandroidopen.org/ + +Improved +[Feed] Shuffle the order outdated subscriptions are updated in +Do not stack comment pages +Do not pass click events to underlying views when clicking on video detail page + +Fixed +Comment replies header layout without avatar image +Multiple player-related UI fixes +[SoundCloud] Fix streams with long IDs + +and more fixes and improvements! diff --git a/fastlane/metadata/android/fr/changelogs/1009.txt b/fastlane/metadata/android/fr/changelogs/1009.txt new file mode 100644 index 00000000000..468ab4cec1d --- /dev/null +++ b/fastlane/metadata/android/fr/changelogs/1009.txt @@ -0,0 +1,15 @@ +Important +Informations et appel à l'action pour la campagne Keep Android Open ajoutés : https://www.keepandroidopen.org/ + +Améliorations +[Flux] Ordre de mise à jour des abonnements obsolètes aléatoire +Pages de commentaires non empilées +Événements de clic désactivés sur la page de détails d'une vidéo + + +Corrections +Affichage de l'en-tête des réponses aux commentaires sans image d'avatar +Corrections d'interface utilisateur pour plusieurs lecteurs +[SoundCloud] Correction des flux avec des identifiants longs + +Et bien d'autres corrections et améliorations ! diff --git a/fastlane/metadata/android/hi/changelogs/1007.txt b/fastlane/metadata/android/hi/changelogs/1007.txt index 071ab64e338..82f70fc696e 100644 --- a/fastlane/metadata/android/hi/changelogs/1007.txt +++ b/fastlane/metadata/android/hi/changelogs/1007.txt @@ -1 +1,10 @@ -फिक्स्ड YouTube कोई स्ट्रीम नहीं चला रहा है +इस हॉटफ़िक्स रिलीज़ से "Content not available" एरर ठीक हो गया है: अब YouTube वीडियो फिर से चलाए जा सकते हैं! + +इससे 0.28.1 में आई कुछ और गड़बड़ियाँ भी ठीक हो गई हैं: +• प्लेलिस्ट आइटम को खींचकर सिर्फ़ आस-पास की जगहों पर ही ले जा पाना +• मौजूदा और पिछले वीडियो के बीच टाइटल/कमेंट्स का बार-बार बदलना +• "Start main player in fullscreen" ऑप्शन का काम न करना + +दूसरे सुधार: +• [YouTube] लाइवस्ट्रीम को 4 घंटे तक पीछे ले जाने की सुविधा फिर से चालू +• बैकग्राउंड में चलते समय लाइवस्ट्रीम वीडियो लोड न करना diff --git a/fastlane/metadata/android/hi/changelogs/1008.txt b/fastlane/metadata/android/hi/changelogs/1008.txt new file mode 100644 index 00000000000..c5e33511910 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/1008.txt @@ -0,0 +1,4 @@ +∙ स्ट्रीम को पिछली प्लेबैक स्थिति से फिर से शुरू करने की समस्या ठीक की गई +∙ [YouTube] ज़्यादा चैनल URL फ़ॉर्मैट के लिए सपोर्ट जोड़ा गया +∙ [YouTube] ज़्यादा वीडियो मेटा-इन्फ़ो फ़ॉर्मैट के लिए सपोर्ट जोड़ा गया +∙ अनुवाद अपडेट किए गए diff --git a/fastlane/metadata/android/hi/changelogs/1009.txt b/fastlane/metadata/android/hi/changelogs/1009.txt new file mode 100644 index 00000000000..13387ec5249 --- /dev/null +++ b/fastlane/metadata/android/hi/changelogs/1009.txt @@ -0,0 +1,14 @@ +ज़रूरी +'Keep Android Open' कैंपेन के बारे में जानकारी और कार्रवाई के लिए अपील जोड़ी गई: https://www.keepandroidopen.org/ + +बेहतर +[फ़ीड] पुरानी सब्सक्रिप्शन के अपडेट होने का क्रम बदला गया +कमेंट पेज एक के ऊपर एक न दिखें +वीडियो डिटेल पेज पर क्लिक करने पर, क्लिक इवेंट नीचे के व्यूज़ तक न पहुँचें + +ठीक किया गया +कमेंट रिप्लाई हेडर लेआउट में अवतार इमेज न दिखना +प्लेयर से जुड़े कई UI सुधार +[SoundCloud] लंबी ID वाले स्ट्रीम को ठीक किया गया + +और भी कई सुधार और बेहतर बदलाव! diff --git a/fastlane/metadata/android/id/changelogs/1006.txt b/fastlane/metadata/android/id/changelogs/1006.txt new file mode 100644 index 00000000000..b098c7e3e64 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/1006.txt @@ -0,0 +1,16 @@ +# Peningkatan +Pertahankan pemutar saat ini ketika mengklik stempel waktu +Cobalah untuk memulihkan misi pengunduhan yang tertunda jika memungkinkan +Tambahkan opsi untuk menghapus unduhan tanpa ikut menghapus berkas +Izin Overlay: menampilkan dialog penjelasan untuk Android > R +Mendukung tautan on.soundcloud saat membuka +Banyak perbaikan dan optimasi kecil. + +# Telah diperbaiki +Memperbaiki format penghitungan pendek untuk versi Android di bawah 7 +Memperbaiki notifikasi berhantu +Memperbaiki berkas SRT +Memperbaiki banyak sekali kerusakan + +# Pengembangan +Modernisasi kode internal diff --git a/fastlane/metadata/android/id/changelogs/1008.txt b/fastlane/metadata/android/id/changelogs/1008.txt new file mode 100644 index 00000000000..26580f4729b --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/1008.txt @@ -0,0 +1,4 @@ +∙ Memperbaiki masalah melanjutkan pemutaran pengaliran dari posisi pemutaran terakhir +∙ [YouTube] Menambahkan dukungan untuk lebih banyak format Tautan saluran +∙ [YouTube] Menambahkan dukungan untuk lebih banyak format metainfo video +∙ Pembaruan terjemahan diff --git a/fastlane/metadata/android/id/changelogs/1009.txt b/fastlane/metadata/android/id/changelogs/1009.txt new file mode 100644 index 00000000000..46e5ebceb40 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/1009.txt @@ -0,0 +1,14 @@ +Penting +Informasi dan ajakan untuk bertindak terkait kampanye Keep Android Open telah ditambahkan: https://www.keepandroidopen.org/ + +Improved +[Feed] Acak urutan pembaruan langganan yang sudah kedaluwarsa di +Jangan menumpuk halaman komentar +Jangan meneruskan peristiwa klik ke tampilan yang mendasarinya saat mengklik halaman detail video. + +Telah Diperbaiki +Tata letak header balasan komentar tanpa gambar avatar +Perbaikan antarmuka pengguna terkait pemain ganda +[SoundCloud] Perbaiki aliran data dengan ID yang panjang + +dan masih banyak perbaikan dan peningkatan lainnya! diff --git a/fastlane/metadata/android/it/changelogs/1008.txt b/fastlane/metadata/android/it/changelogs/1008.txt new file mode 100644 index 00000000000..c8924ecc1e3 --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/1008.txt @@ -0,0 +1,4 @@ +∙ Corretto il problema di ripresa degli streaming dall'ultima posizione di riproduzione +∙ [YouTube] Aggiunto il supporto per più formati di URL dei canali +∙ [YouTube] Aggiunto il supporto per più formati di metainformazioni video +∙ Traduzioni aggiornate diff --git a/fastlane/metadata/android/it/changelogs/1009.txt b/fastlane/metadata/android/it/changelogs/1009.txt new file mode 100644 index 00000000000..5e0110e494c --- /dev/null +++ b/fastlane/metadata/android/it/changelogs/1009.txt @@ -0,0 +1,14 @@ +Importante +Informazioni e invito all'azione per la campagna Keep Android Open aggiunte: https://www.keepandroidopen.org/ + +Migliorato +[Feed] Riordina l'ordine in cui vengono aggiornati gli abbonamenti obsoleti +Non sovrapporre le pagine dei commenti +Non passare gli eventi clic alle viste sottostanti quando si fa clic sulla pagina dei dettagli del video + +Corretto +Layout dell'intestazione delle risposte ai commenti senza immagine avatar +Correzioni multiple all'interfaccia utente relative al player +[SoundCloud] Correzione degli stream con ID lunghi + +e altre correzioni e miglioramenti! diff --git a/fastlane/metadata/android/ja/changelogs/1001.txt b/fastlane/metadata/android/ja/changelogs/1001.txt new file mode 100644 index 00000000000..4f89e86bcda --- /dev/null +++ b/fastlane/metadata/android/ja/changelogs/1001.txt @@ -0,0 +1,6 @@ +改善策 +・Android 13以降ではプレーヤーの通知設定の変更を常に許可してください + +修正済 +・データベース/登録チャンネルのエクスポートで既存のファイルが切り捨てられず、エクスポートが破損する可能性がある問題を修正 +・タイムスタンプをクリックするとプレーヤーが最初から再開される問題を修正 diff --git a/fastlane/metadata/android/ja/changelogs/1002.txt b/fastlane/metadata/android/ja/changelogs/1002.txt new file mode 100644 index 00000000000..78cf732a692 --- /dev/null +++ b/fastlane/metadata/android/ja/changelogs/1002.txt @@ -0,0 +1,4 @@ +YouTubeでストリームが再生されない問題を修正しました。 + +このリリースでは、YouTubeの動画の詳細が読み込まれないという最も深刻なエラーのみを修正しています。 +他にも問題があることを認識しており、近日中に別のリリースで解決する予定です。 diff --git a/fastlane/metadata/android/ka/changelogs/1005.txt b/fastlane/metadata/android/ka/changelogs/1005.txt index e08f2639fb2..dd1ccba43b6 100644 --- a/fastlane/metadata/android/ka/changelogs/1005.txt +++ b/fastlane/metadata/android/ka/changelogs/1005.txt @@ -3,13 +3,15 @@ • არხების ჯგუფების მთავარი ეკრანის ჩანართებად დაყენების დაშვება • [YouTube] გაზიარება, როგორც დროებითი დასაკრავი სია • [SoundCloud] მოწონებების არხის ჩანართი + გაუმჯობესებულია • უკეთესი მინიშნებები ძიების ზოლში • ჩამოტვირთვის თარიღის ჩვენება ჩამოტვირთვებში • Android 13-ის თითოეული აპლიკაციის ენის გამოყენება + .გამოსწორებულია • გამოსწორდა ტექსტის ფერების დარღვევა ბნელ რეჟიმში • [YouTube] გამოსწორდა დასაკრავი სიების 100-ზე მეტი ერთეულს არ აჩვენებს • [YouTube] გამოსწორდა დაკარგული რეკომენდებული ვიდეოები -• გამოსწორდა ისტორიის სიის ხედში ავარიების გამოსწორება +• გამოსწორდა ისტორიის სიის ხედში ავარიები • გამოსწორდა დროის ნიშნულები კომენტარების პასუხებში diff --git a/fastlane/metadata/android/ka/changelogs/1006.txt b/fastlane/metadata/android/ka/changelogs/1006.txt new file mode 100644 index 00000000000..800c0e86aba --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/1006.txt @@ -0,0 +1,27 @@ +# გაუმჯობესებული + +დროის ნიშნულებზე დაწკაპუნებისას მიმდინარე დამკვრელის შენარჩუნება + +შესაძლებლობის შემთხვევაში, შეეცადეთ აღადგინოთ ჩამოტვირთვის მომლოდინე მისიები + +დაემატა ჩამოტვირთვის წაშლის ვარიანტი ფაილის წაშლის გარეშე + +გადაფარვის ნებართვა: Android > R-ისთვის განმარტებითი დიალოგის ჩვენება + +მხარდაჭერა on.soundcloud ბმულის გახსნისთვის + +ბევრი მცირე გაუმჯობესება და ოპტიმიზაცია + +# გამოსწორებულია + + გასწორდა მოკლე რაოდენობის ფორმატირება Android-ის 7-ზე დაბალი ვერსიებისთვის + + გასწორდა მოჩვენებითი შეტყობინებებები + + გასწორდა SRT სუბტიტრების ფაილები + +გამოსწორებულია უამრავი ავარია + +# განვითარება + +შიდა კოდის მოდერნიზაცია diff --git a/fastlane/metadata/android/ka/changelogs/1008.txt b/fastlane/metadata/android/ka/changelogs/1008.txt new file mode 100644 index 00000000000..2a96e080046 --- /dev/null +++ b/fastlane/metadata/android/ka/changelogs/1008.txt @@ -0,0 +1,7 @@ +∙ ბოლო დაკვრის პოზიციაზე სტრიმინგის განახლების პრობლემა გამოსწორდა + +∙ [YouTube] დაემატა მეტი არხის URL ფორმატების მხარდაჭერა + +∙ [YouTube] დაემატა მეტი ვიდეო მეტაინფო ფორმატების მხარდაჭერა + +∙ განახლდა თარგმანები diff --git a/fastlane/metadata/android/lv/changelogs/1001.txt b/fastlane/metadata/android/lv/changelogs/1001.txt index 4525874fdcf..39fab6e790e 100644 --- a/fastlane/metadata/android/lv/changelogs/1001.txt +++ b/fastlane/metadata/android/lv/changelogs/1001.txt @@ -1,6 +1,6 @@ Uzlabojumi -• Vienmēr atļauj nomainīt atskaņotāja paziņojumu iestatījumus uz ierīcēm ar Android 13+ +• Vienmēr atļauj nomainīt atskaņotāja paziņojumu iestatījumus uz Android 13+ ierīcēm Salabots -• Datubāzes/abonementu izgūšana vairs neapcērp iepriekš eksistējošo datni, kas, iespējams, izraisīja bojātu datni +• Datubāzes/abonementu izgūšana vairs neapcērp iepriekš eksistējošo datni, kas, iespējams, radīja bojātu datni • Novērsta atskaņotāja atsākšana no paša sākuma, kad noklikšķina uz laika zīmoga diff --git a/fastlane/metadata/android/lv/changelogs/64.txt b/fastlane/metadata/android/lv/changelogs/64.txt index 9a362aa95a3..fc5d297642c 100644 --- a/fastlane/metadata/android/lv/changelogs/64.txt +++ b/fastlane/metadata/android/lv/changelogs/64.txt @@ -5,4 +5,4 @@ - pievienots (darbojošs) multimediju sesijas atbalsts #1433 ### Salabots -- Salabota lietotnes nobrukšana, kad atvēra Lejupielādes (labojums pieejams relīzes laidienos) #1441 +- Salabota lietotnes nobrukšana, kad atvēra Lejupielādes (labojums pieejams izlaiduma laidienos) #1441 diff --git a/fastlane/metadata/android/lv/changelogs/770.txt b/fastlane/metadata/android/lv/changelogs/770.txt index a46cda84a83..b4b97028058 100644 --- a/fastlane/metadata/android/lv/changelogs/770.txt +++ b/fastlane/metadata/android/lv/changelogs/770.txt @@ -1,4 +1,4 @@ Izmaiņas 0.17.2 versijā Salabots -• Novērsta problēma, ka videoklips bija nepieejams +• Novērsta problēma, ka video bija nepieejams diff --git a/fastlane/metadata/android/lv/changelogs/850.txt b/fastlane/metadata/android/lv/changelogs/850.txt index 20c79661b88..cc8e048ac76 100644 --- a/fastlane/metadata/android/lv/changelogs/850.txt +++ b/fastlane/metadata/android/lv/changelogs/850.txt @@ -1 +1 @@ -Šī versijas relīze iekļauj atjaunināto YouTube vietnes versiju. Vecās vietnes versijas atbalsts tiks pārtraukta martā, un tāpēc jums ir nepieciešams atjaunināt NewPipe. +Šis versijas izlaidums iekļauj atjaunināto YouTube vietnes versiju. Vecās vietnes versijas pieejamība tiks pārtraukta martā, un tāpēc jums ir nepieciešams atjaunināt NewPipe. diff --git a/fastlane/metadata/android/lv/changelogs/910.txt b/fastlane/metadata/android/lv/changelogs/910.txt index 8e7b9d2273a..06eecc81ac7 100644 --- a/fastlane/metadata/android/lv/changelogs/910.txt +++ b/fastlane/metadata/android/lv/changelogs/910.txt @@ -1 +1 @@ -Salabota datu bāzes migrācija, kas retos gadījumos neļāva NewPipe palaisties. +Salabota datubāzes migrācija, kas retos gadījumos neļāva NewPipe palaisties. diff --git a/fastlane/metadata/android/lv/changelogs/950.txt b/fastlane/metadata/android/lv/changelogs/950.txt index f9a82fe2028..699bd8a4632 100644 --- a/fastlane/metadata/android/lv/changelogs/950.txt +++ b/fastlane/metadata/android/lv/changelogs/950.txt @@ -1,4 +1,4 @@ -Šajā versijā ir veikti tikai trīs nelieli labojumi: +Šajā versijā veikti tikai trīs nelieli labojumi: • Salabota piekļuve krātuvei Android 10+ operētājsistēmās • Salabota kiosku atvēršana -• Salabota ilguma noteikšana ilgiem videoklipiem +• Salabota ilguma noteikšana ilgiem video diff --git a/fastlane/metadata/android/lv/changelogs/956.txt b/fastlane/metadata/android/lv/changelogs/956.txt new file mode 100644 index 00000000000..eafb4c727d4 --- /dev/null +++ b/fastlane/metadata/android/lv/changelogs/956.txt @@ -0,0 +1 @@ +[YouTube] Novērsta lietotnes avarēšana pie jebkuras video ielādes diff --git a/fastlane/metadata/android/lv/changelogs/982.txt b/fastlane/metadata/android/lv/changelogs/982.txt new file mode 100644 index 00000000000..a775fd35b71 --- /dev/null +++ b/fastlane/metadata/android/lv/changelogs/982.txt @@ -0,0 +1 @@ +Novērsta problēma, kuras dēļ YouTube nevarēja atskaņot nevienu straumi. diff --git a/fastlane/metadata/android/lv/changelogs/985.txt b/fastlane/metadata/android/lv/changelogs/985.txt new file mode 100644 index 00000000000..0ad24abc45f --- /dev/null +++ b/fastlane/metadata/android/lv/changelogs/985.txt @@ -0,0 +1 @@ +Novērsta problēma, kuras dēļ YouTube nevarēja atskaņot nevienu straumi diff --git a/fastlane/metadata/android/lv/changelogs/989.txt b/fastlane/metadata/android/lv/changelogs/989.txt index f680eced4f0..c131df9e4e6 100644 --- a/fastlane/metadata/android/lv/changelogs/989.txt +++ b/fastlane/metadata/android/lv/changelogs/989.txt @@ -1,3 +1,3 @@ -• [YouTube] Novērsta bezgalīgā video ielāde pie jebkuru video atskaņošanu -• [YouTube] Novērsta dažu videoklipu lēnā ielāde (straumēšanas ierobežošanas problēma) +• [YouTube] Novērsta bezgalīgi ilgā video ielāde pie jebkuru video atskaņošanu +• [YouTube] Novērsta dažu video lēnā ielāde (straumēšanas ierobežošanas problēma) • Atjaunināta jsoup bibliotēka uz 1.15.3 versiju, kas ietver drošības labojumus diff --git a/fastlane/metadata/android/lv/changelogs/998.txt b/fastlane/metadata/android/lv/changelogs/998.txt index 79e4f31629d..f69425343e7 100644 --- a/fastlane/metadata/android/lv/changelogs/998.txt +++ b/fastlane/metadata/android/lv/changelogs/998.txt @@ -1,4 +1,4 @@ Salabota YouTube nespēja atskaņot jebkādu straumi HTTP 403 kļūdu dēļ. Nejaušas HTTP 403 kļūdas YouTube video skatīšanās laikā vēl nav novērstas. -Konkrētā problēma tiks atrisināta nākamajā labojumfailu laidienā, cik drīz vien iespējams. +Konkrētā problēma tiks atrisināta cik drīz vien iespējama nākamajā labojumfailu izlaidumā. diff --git a/fastlane/metadata/android/pa/changelogs/1008.txt b/fastlane/metadata/android/pa/changelogs/1008.txt new file mode 100644 index 00000000000..ff98b576175 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/1008.txt @@ -0,0 +1,4 @@ +∙ ਫਿਕਸਡ ਆਖਰੀ ਪਲੇਬੈਕ ਸਥਿਤੀ 'ਤੇ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਰਿਜ਼ਿਊਮ ਕਰਨਾ ਠੀਕ ਕੀਤਾ ਗਿਆ +∙ [YouTube] ਹੋਰ ਚੈਨਲ URL ਫਾਰਮੈਟਾਂ ਲਈ ਸਮਰਥਨ ਜੁਟਾਇਆ ਗਿਆ +∙ [YouTube] ਹੋਰ ਵੀਡੀਓ ਮੈਟਾਇਨਫੋ ਫਾਰਮੈਟਾਂ ਲਈ ਸਮਰਥਨ ਜੁਟਾਇਆ ਗਿਆ +∙ ਅੱਪਡੇਟ ਕੀਤੇ ਅਨੁਵਾਦ diff --git a/fastlane/metadata/android/pa/changelogs/1009.txt b/fastlane/metadata/android/pa/changelogs/1009.txt new file mode 100644 index 00000000000..0b3b521f448 --- /dev/null +++ b/fastlane/metadata/android/pa/changelogs/1009.txt @@ -0,0 +1,15 @@ +ਮਹੱਤਵਪੂਰਨ +ਕੀਪ ਐਂਡਰਾਇਡ ਓਪਨ ਮੁਹਿੰਮ ਲਈ ਜਾਣਕਾਰੀ ਅਤੇ ਕਾਰਵਾਈ ਲਈ ਸੱਦਾ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ: https://www.keepandroidopen.org/ + +ਫਿਕਸਡ +[ਫੀਡ] ਪੁਰਾਣੀਆਂ ਗਾਹਕੀਆਂ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤੇ ਜਾਣ ਦੇ ਕ੍ਰਮ ਨੂੰ ਸ਼ਫਲ ਕਰੋ + +ਟਿੱਪਣੀ ਪੰਨਿਆਂ ਨੂੰ ਸਟੈਕ ਨਾ ਕਰੋ +ਵੀਡੀਓ ਵੇਰਵੇ ਪੰਨੇ 'ਤੇ ਕਲਿੱਕ ਕਰਦੇ ਸਮੇਂ ਕਲਿੱਕ ਇਵੈਂਟਾਂ ਨੂੰ ਅੰਡਰਲਾਈੰਗ ਵਿਯੂਜ਼ ਵਿੱਚ ਨਾ ਭੇਜੋ + +ਸਥਿਰ +ਅਵਤਾਰ ਚਿੱਤਰ ਤੋਂ ਬਿਨਾਂ ਟਿੱਪਣੀ ਜਵਾਬਾਂ ਦਾ ਸਿਰਲੇਖ ਲੇਆਉਟ +ਮਲਟੀਪਲ ਪਲੇਅਰ-ਸਬੰਧਤ UI ਫਿਕਸ +[ਸਾਊਂਡ ਕਲਾਉਡ] ਲੰਬੇ ਆਈਡੀ ਨਾਲ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਫਿਕਸ ਕਰੋ + +ਅਤੇ ਹੋਰ ਫਿਕਸ ਅਤੇ ਸੁਧਾਰ! diff --git a/fastlane/metadata/android/pl/changelogs/1009.txt b/fastlane/metadata/android/pl/changelogs/1009.txt new file mode 100644 index 00000000000..7f99742a73d --- /dev/null +++ b/fastlane/metadata/android/pl/changelogs/1009.txt @@ -0,0 +1,14 @@ +Ważne +- Dodano informację i wezwanie do działania w ramach kampanii Keep Android Open: https://www.keepandroidopen.org/ + +Ulepszone +- [Kanał] Losowa kolejność aktualizacji nieaktualnych subskrypcji +- Nienakładanie się stron komentarzy +- Nieprzekazywanie naciśnięć do przesłoniętych widoków przy naciskaniu strony szczegółów wideo + +Naprawione +- Układ nagłówka odpowiedzi na komentarze bez awatara +- Wiele poprawek UI związanych z odtwarzaczem +- [SoundCloud] Strumienie z długimi ID + +i wiele innych! diff --git a/fastlane/metadata/android/ro/changelogs/1000.txt b/fastlane/metadata/android/ro/changelogs/1000.txt new file mode 100644 index 00000000000..6ceb4642fd3 --- /dev/null +++ b/fastlane/metadata/android/ro/changelogs/1000.txt @@ -0,0 +1,11 @@ +Îmbunătățiri +• Descrierea listei de redare poate fi extinsă sau restrânsă la clic +• Gestionare automată a linkurilor subscribeto.me pentru PeerTube +• Redarea unui singur element pornește doar din ecranul Istoric + +Remedieri +• Corectată vizibilitatea butonului RSS +• Rezolvată blocarea previzualizării în bara de căutare +• Corectată adăugarea elementelor fără miniatură +• Reparat pop-up-ul pentru elemente corelate +• Corectată ordinea în „Adaugă la lista de redare” diff --git a/fastlane/metadata/android/ro/changelogs/1001.txt b/fastlane/metadata/android/ro/changelogs/1001.txt new file mode 100644 index 00000000000..2a8af34cd48 --- /dev/null +++ b/fastlane/metadata/android/ro/changelogs/1001.txt @@ -0,0 +1,6 @@ +Îmbunătățit +• Se permite întotdeauna modificarea preferințelor de notificare ale jucătorului pe Android 13+ + +Remediat +• S-a remediat problema care împiedica exportul bazei de date/abonamentelor să trunchieze un fișier deja existent, ceea ce putea duce la un export corupt +• S-a remediat problema reluării playerului de la început la clic pe un timestamp diff --git a/fastlane/metadata/android/ro/changelogs/1002.txt b/fastlane/metadata/android/ro/changelogs/1002.txt new file mode 100644 index 00000000000..32148e1b5a9 --- /dev/null +++ b/fastlane/metadata/android/ro/changelogs/1002.txt @@ -0,0 +1,4 @@ +S-a remediat eroarea care împiedica YouTube să redea niciun stream. + +Această versiune rezolvă doar cea mai urgentă eroare care împiedică încărcarea detaliilor videoclipurilor YouTube. +Știm că există și alte probleme și vom lansa în curând o versiune separată pentru a le rezolva. diff --git a/fastlane/metadata/android/ro/changelogs/1003.txt b/fastlane/metadata/android/ro/changelogs/1003.txt new file mode 100644 index 00000000000..e52ece7a6bf --- /dev/null +++ b/fastlane/metadata/android/ro/changelogs/1003.txt @@ -0,0 +1,6 @@ +Aceasta este o actualizare rapidă care corectează erori YouTube: +• [YouTube] Repară încărcarea informațiilor video, erorile HTTP 403 la redare și redarea unor videoclipuri cu restricție de vârstă +• Corectează problema dimensiunii subtitrărilor care nu se actualiza +• Corectează descărcarea dublă a informațiilor la deschiderea unui stream +• [SoundCloud] Elimină streamurile protejate DRM care nu puteau fi redate +• Traduceri actualizate diff --git a/fastlane/metadata/android/ro/changelogs/1004.txt b/fastlane/metadata/android/ro/changelogs/1004.txt new file mode 100644 index 00000000000..c2751a98247 --- /dev/null +++ b/fastlane/metadata/android/ro/changelogs/1004.txt @@ -0,0 +1,3 @@ +Această versiune remediază problema YouTube care oferea doar un flux video la 360p. + +Rețineți că soluția utilizată în această versiune este probabil temporară și, pe termen lung, protocolul video SABR trebuie implementat, însă membrii TeamNewPipe sunt ocupați în prezent, așa că orice ajutor ar fi foarte apreciat! https://github.com/TeamNewPipe/NewPipe/issues/12248 diff --git a/fastlane/metadata/android/sk/changelogs/1009.txt b/fastlane/metadata/android/sk/changelogs/1009.txt new file mode 100644 index 00000000000..de262999430 --- /dev/null +++ b/fastlane/metadata/android/sk/changelogs/1009.txt @@ -0,0 +1,14 @@ +Dôležité +Pridané informácie a výzva k akcii v rámci kampane Keep Android Open: https://www.keepandroidopen.org/ + +Vylepšené +[Feed] Prehodenie poradia, v ktorom sa aktualizujú neaktuálne odbery +Nehromadenie stránok s komentármi +Pri kliknutí na stránku s podrobnosťami o videu sa neprenášajú udalosti kliknutia do podkladových zobrazení + +Opravené +Rozloženie záhlavia odpovedí na komentáre bez avataru +Viacero opráv používateľského rozhrania súvisiacich s prehrávačom +[SoundCloud] Oprava streamov s dlhými ID + +a ďalšie opravy a vylepšenia! diff --git a/fastlane/metadata/android/sq/changelogs/1000.txt b/fastlane/metadata/android/sq/changelogs/1000.txt new file mode 100644 index 00000000000..1aaab653947 --- /dev/null +++ b/fastlane/metadata/android/sq/changelogs/1000.txt @@ -0,0 +1,12 @@ +Përmirësuar +• Bëni përshkrimin e listës së luajtjes të klikueshme për të treguar më shumë / më pak përmbajtje +• [PeerTube] Trajtoni lidhjet e shembujve`subscribeto.me` automatikisht +• Filloni vetëm të luani një artikull të vetëm në ekranin e historisë +Rregulluar +• U rregulla dukshmëria e butonit RS +• U rregulluan përplasjet e shikimit të shiritit +• U rregullua lista e luajtjes së një artikulli më pak tablotë +• U rregullua dalja nga dialogu i shkarkimit para se të shfaqet +• U rregulla shfaqja e radhës së listës së artikujve të lidhur +•U rregullua rendi në shtimin e dialogut të listës së luajtjes +• U rregullua paraqitja e artikullit të faqerojtësve të listës së luajtjes diff --git a/fastlane/metadata/android/sq/full_description.txt b/fastlane/metadata/android/sq/full_description.txt new file mode 100644 index 00000000000..04a94e97d47 --- /dev/null +++ b/fastlane/metadata/android/sq/full_description.txt @@ -0,0 +1 @@ +NewPipe nuk përdor ndonjë bibliotekë kornizash të Google, ose API të YouTube. Ajo vetëm analizon faqen e internetit në mënyrë që të fitojë informacionin që i nevojitet. Prandaj, ky aplikacion mund të përdoret në pajisje pa instaluar Shërbimet e google. Gjithashtu, nuk keni nevojë për një llogari në YouTube për të përdorur NewPipe, dhe është FLOSS diff --git a/fastlane/metadata/android/sv/changelogs/1008.txt b/fastlane/metadata/android/sv/changelogs/1008.txt new file mode 100644 index 00000000000..2008602f5c7 --- /dev/null +++ b/fastlane/metadata/android/sv/changelogs/1008.txt @@ -0,0 +1,4 @@ +∙ Åtgärdade återupptagning av strömmar vid senaste uppspelningsposition +∙ [YouTube] Lade till stöd för fler kanal-URL-format +∙ [YouTube] Lade till stöd för fler videometainfo-format +∙ Uppdaterade översättningar diff --git a/fastlane/metadata/android/ta/changelogs/1000.txt b/fastlane/metadata/android/ta/changelogs/1000.txt index 43842685fa5..5377ef633d2 100644 --- a/fastlane/metadata/android/ta/changelogs/1000.txt +++ b/fastlane/metadata/android/ta/changelogs/1000.txt @@ -1,13 +1,13 @@ -மேம்படுத்தப்பட்டது - / மேலும் / குறைவான உள்ளடக்கத்தைக் காட்ட பிளேலிச்ட் விளக்கத்தைச் சொடுக்கு செய்யவும் - • [PEERTUBE] `charbisto.me` உதாரணமாக இணைப்புகளைத் தானாகவே கையாளவும் - The வரலாற்றுத் திரையில் ஒற்றை உருப்படியை மட்டுமே இயக்கத் தொடங்குங்கள் +மேம்படுத்தப்பட்டது +• அதிகமான / குறைவான உள்ளடக்கத்தைக் காட்ட, பிளேலிச்ட் விளக்கத்தை சொடுக்கு செய்யக்கூடியதாக மாற்றவும் +• [PeerTube] தானாகவே `subscribeto.me` நிகழ்வு இணைப்புகளைக் கையாளவும் +• வரலாற்றுத் திரையில் ஒற்றை உருப்படியை மட்டும் இயக்கத் தொடங்குங்கள் - சரி - RS RSS பொத்தான் தெரிவுநிலையை சரிசெய்யவும் - See gaekbar முன்னோட்ட செயலிழப்புகளை சரிசெய்யவும் - Play ஒரு சிறுபடம் இல்லாத உருப்படியைப் பிளேலிச்டிங் சரிசெய்யவும் - The பதிவிறக்க உரையாடல் தோன்றுவதற்கு முன்பு வெளியேறுவதை சரிசெய்யவும் - Tied தொடர்புடைய உருப்படிகளைச் சரிசெய்யவும் பட்டியல் enqueue பாப்அப் - Plale பிளேலிச்ட் உரையாடலில் கூட்டு இல் ஆர்டரை சரிசெய்யவும் - Plale பிளேலிச்ட் புத்தகக்குறி உருப்படி தளவமைப்பை சரிசெய்யவும் +சரி செய்யப்பட்டது +• RSS பொத்தான் தெரிவுநிலையை சரிசெய்யவும் +• சீக்பார் முன்னோட்ட செயலிழப்புகளை சரிசெய்யவும் +• சிறுபடம் இல்லாத உருப்படியை பிளேலிச்ட் செய்வதை சரிசெய்யவும் +• பதிவிறக்க உரையாடல் தோன்றும் முன் அதிலிருந்து வெளியேறுவதைச் சரிசெய்யவும் +• தொடர்புடைய உருப்படிகளின் பட்டியல் என்கியூ பாப்அப்பை சரிசெய்யவும் +• பிளேலிச்ட் உரையாடலில் சேர்க்கும் வரிசையை சரிசெய்யவும் +• பிளேலிச்ட் புத்தகக்குறி உருப்படி தளவமைப்பைச் சரிசெய்யவும் diff --git a/fastlane/metadata/android/ta/changelogs/1005.txt b/fastlane/metadata/android/ta/changelogs/1005.txt new file mode 100644 index 00000000000..2d3b17a1938 --- /dev/null +++ b/fastlane/metadata/android/ta/changelogs/1005.txt @@ -0,0 +1,17 @@ +புதியது +• ஆண்ட்ராய்டு Autoக்கான ஆதரவைச் சேர்க்கவும் +• ஊட்ட குழுக்களை முதன்மையான திரை தாவல்களாக அமைக்க அனுமதிக்கவும் +• [YouTube] தற்காலிக பிளேலிச்ட்டாகப் பகிரவும் +• [SoundCloud] சேனல் தாவலை விரும்புகிறது + +மேம்படுத்தப்பட்டது +• சிறந்த தேடல் பட்டி குறிப்புகள் +• பதிவிறக்கங்களில் பதிவிறக்க தேதியைக் காட்டு +• ஒவ்வொரு ஆப்ச் மொழிக்கும் ஆண்ட்ராய்டு 13ஐப் பயன்படுத்தவும் + +சரி செய்யப்பட்டது +• உடைந்த உரை வண்ணங்களை இருண்ட பயன்முறையில் சரிசெய்யவும் +• [YouTube] 100 உருப்படிகளுக்கு மேல் ஏற்றப்படாமல் இருக்கும் பிளேலிச்ட்களை சரிசெய்யவும் +• [YouTube] விடுபட்ட பரிந்துரைக்கப்பட்ட வீடியோக்களை சரிசெய்யவும் +• வரலாறு பட்டியல் காட்சியில் சிதைவுகளைச் சரிசெய்யவும் +• கருத்து பதில்களில் நேர முத்திரைகளை சரிசெய்யவும் diff --git a/fastlane/metadata/android/ta/changelogs/1006.txt b/fastlane/metadata/android/ta/changelogs/1006.txt new file mode 100644 index 00000000000..98d1b4756d6 --- /dev/null +++ b/fastlane/metadata/android/ta/changelogs/1006.txt @@ -0,0 +1,16 @@ +# மேம்படுத்தப்பட்டது +நேர முத்திரைகளைக் சொடுக்கு செய்யும் போது தற்போதைய பிளேயரை வைத்திருங்கள் +முடிந்தால், நிலுவையிலுள்ள பதிவிறக்கப் பணிகளை மீட்டெடுக்க முயற்சிக்கவும் +கோப்பை நீக்காமல் பதிவிறக்கத்தை நீக்க விருப்பத்தைச் சேர்க்கவும் +மேலடுக்கு அனுமதி: Android > R க்கான விளக்க உரையாடலைக் காண்பி +உதவி on.soundcloud இணைப்பு திறப்பு +நிறைய சிறிய மேம்பாடுகள் மற்றும் மேம்படுத்தல்கள் + +# சரி செய்யப்பட்டது +7க்குக் கீழே உள்ள ஆண்ட்ராய்டு பதிப்புகளுக்கான குறுகிய எண்ணிக்கை வடிவமைப்பைச் சரிசெய்யவும் +பேய் அறிவிப்புகளை சரிசெய்யவும் +SRT வசனக் கோப்புகளுக்கான திருத்தங்கள் +நிலையான டன் விபத்துக்கள் + +#வளர்ச்சி +உள் குறியீடு நவீனமயமாக்கல் diff --git a/fastlane/metadata/android/ta/changelogs/1008.txt b/fastlane/metadata/android/ta/changelogs/1008.txt new file mode 100644 index 00000000000..e25981458f8 --- /dev/null +++ b/fastlane/metadata/android/ta/changelogs/1008.txt @@ -0,0 +1,4 @@ +∙ கடைசி பிளேபேக் நிலையில் நிலையான ரெச்யூமிங் ச்ட்ரீம்கள் +∙ [YouTube] மேலும் சேனல் முகவரி வடிவங்களுக்கான உதவி சேர்க்கப்பட்டது +∙ [YouTube] மேலும் வீடியோ metainfo வடிவங்களுக்கான உதவி சேர்க்கப்பட்டது +∙ புதுப்பிக்கப்பட்ட மொழிபெயர்ப்புகள் diff --git a/fastlane/metadata/android/ta/changelogs/1009.txt b/fastlane/metadata/android/ta/changelogs/1009.txt new file mode 100644 index 00000000000..da35a071b5f --- /dev/null +++ b/fastlane/metadata/android/ta/changelogs/1009.txt @@ -0,0 +1,14 @@ +முக்கியமானது +Keep ஆண்ட்ராய்டு திற பிரச்சாரத்திற்கான செய்தி மற்றும் நடவடிக்கைக்கான அழைப்பு சேர்க்கப்பட்டது: https://www.keepandroidopen.org/ + +மேம்படுத்தப்பட்டது +[Feed] ஆர்டர் காலாவதியான சந்தாக்கள் புதுப்பிக்கப்பட்டதை மாற்றவும் +கருத்துப் பக்கங்களை அடுக்க வேண்டாம் +வீடியோ விவரம் பக்கத்தில் சொடுக்கு செய்யும் போது, சொடுக்கு நிகழ்வுகளை அடிப்படை பார்வைகளுக்கு அனுப்ப வேண்டாம் + +சரி செய்யப்பட்டது +அவதார் படம் இல்லாமல் தலைப்பு தளவமைப்பை கருத்து பதிலளிக்கிறது +பல பிளேயர் தொடர்பான இடைமுகம் திருத்தங்கள் +[SoundCloud] நீண்ட ஐடிகளுடன் ச்ட்ரீம்களை சரிசெய்யவும் + +மேலும் திருத்தங்கள் மற்றும் மேம்பாடுகள்! diff --git a/fastlane/metadata/android/ta/changelogs/65.txt b/fastlane/metadata/android/ta/changelogs/65.txt index 05fd375e6ed..ebea2e29d37 100644 --- a/fastlane/metadata/android/ta/changelogs/65.txt +++ b/fastlane/metadata/android/ta/changelogs/65.txt @@ -1,26 +1,26 @@ -### மேம்பாடுகள் +### மேம்பாடுகள் -- பர்கர்மெனு ஐகான் அனிமேஷன் முடக்கு #1486 -- பதிவிறக்கங்கள் நீக்க #1472 செயல்தவிர்க்கவும் -- பங்கு மெனுவில் விருப்பத்தைப் பதிவிறக்கவும் #1498 -- நீண்ட குழாய் மெனு # 1454 பங்கு விருப்பத்தை சேர்க்கப்பட்டது -- வெளியேறும் #1354 இல் முக்கிய வீரரைக் குறைக்கவும் -- நூலக பதிப்பு மேம்படுத்தல் மற்றும் தரவுத்தள காப்பு திருத்தம் #1510 -- ExoPlayer 2.8.2 மேம்படுத்தல் #1392 - - வேகமான வேக மாற்றத்திற்கான வெவ்வேறு படி அளவுகளை ஆதரிக்க பின்னணி வேகக் கட்டுப்பாட்டு உரையாடலை மறுவேலை செய்தது. - - பின்னணி வேக கட்டுப்பாடு மௌனங்கள் போது வேகமாக முன்னோக்கி ஒரு நிலைமாற்றி சேர்க்கப்பட்டது. இது ஆடியோபுக்குகள் மற்றும் சில இசை வகைகளுக்கு உதவியாக இருக்க வேண்டும், மேலும் உண்மையான தடையற்ற அனுபவத்தைக் கொண்டுவர முடியும் (மேலும் நிறைய மௌனங்களுடன் ஒரு பாடலை உடைக்க முடியும் =). - - மெட்டாடேட்டாவை கைமுறையாக செய்வதை விட, பிளேயரில் உள்நாட்டில் மீடியாவுடன் மெட்டாடேட்டாவை அனுப்ப அனுமதிக்க மறுசீரமைக்கப்பட்ட ஊடக மூல தீர்மானம். இப்போது எங்களிடம் மெட்டாடேட்டாவின் ஒற்றை ஆதாரம் உள்ளது மற்றும் பிளேபேக் தொடங்கும் போது நேரடியாக கிடைக்கும். - - நிலையான தொலை பிளேலிஸ்ட் மெட்டாடேட்டா பிளேலிஸ்ட் துண்டு திறக்கப்படும் போது புதிய மெட்டாடேட்டா கிடைக்கும் போது புதுப்பிக்கப்படவில்லை. - - பல்வேறு UI திருத்தங்கள்: #1383, பின்னணி பிளேயர் அறிவிப்பு கட்டுப்பாடுகள் இப்போது எப்போதும் வெள்ளை, எளிதாக ஃப்ளிங்கிங் மூலம் பாப்அப் பிளேயர் மூட எளிதாக -- மல்டிசர்வீஸிற்கான மறுசீரமைக்கப்பட்ட கட்டமைப்புடன் புதிய பிரித்தெடுத்தலைப் பயன்படுத்தவும் +- பர்கர்மெனு படவுரு அனிமேசனை முடக்கு #1486 +- பதிவிறக்கங்களின் நீக்குதலை செயல்தவிர்க்கவும் #1472 +- சேர் பட்டியல் #1498 இல் பதிவிறக்க விருப்பம் +- நீண்ட தட்டு பட்டியல் #1454 இல் பகிர்வு விருப்பம் சேர்க்கப்பட்டது +- வெளியேறும் #1354 இல் முதன்மையான வீரரைக் குறைக்கவும் +- நூலக பதிப்பு புதுப்பித்தல் மற்றும் தரவுத்தள காப்புப்பிரதி திருத்தம் #1510 +- ExoPlayer 2.8.2 மேம்படுத்தல் #1392 +- வேகமான வேக மாற்றத்திற்காக வெவ்வேறு படி அளவுகளை ஆதரிக்க, பிளேபேக் வேகக் கட்டுப்பாட்டு உரையாடலை மீண்டும் உருவாக்கியது. +- பிளேபேக் வேகக் கட்டுப்பாட்டில் நிசப்தத்தின் போது வேகமாக முன்னோக்கிச் செல்வதற்கான நிலைமாற்றம் சேர்க்கப்பட்டது. இது ஆடியோபுக்குகள் மற்றும் சில இசை வகைகளுக்கு உதவியாக இருக்க வேண்டும், மேலும் ஒரு உண்மையான தடையற்ற அனுபவத்தைக் கொண்டு வர முடியும் (மேலும் நிறைய அமைதியுடன் ஒரு பாடலை உடைக்க முடியும் =\\). +- மீடியா மூலத் தெளிவுத்திறன் மறுவடிவமைக்கப்பட்ட மீடியாவை கைமுறையாகச் செய்வதை விட, பிளேயரில் உள்ள மீடியாவுடன் சேர்த்து அனுப்ப அனுமதிக்கிறது. இப்போது எங்களிடம் மெட்டாடேட்டாவின் ஒற்றை சான்று உள்ளது மற்றும் பிளேபேக் தொடங்கும் போது நேரடியாகக் கிடைக்கும். +- பிளேலிச்ட் துண்டு திறக்கப்படும்போது புதிய மேனிலை தரவு கிடைக்கும்போது நிலையான ரிமோட் பிளேலிச்ட் மேனிலை தரவு புதுப்பிக்கப்படாது. +- பல்வேறு இடைமுகம் திருத்தங்கள்: #1383, பின்னணி பிளேயர் அறிவிப்புக் கட்டுப்பாடுகள் இப்போது எப்போதும் வெண்மையாக இருக்கும், மேல்தோன்றல் பிளேயரை ஃபிலிங் செய்வதன் மூலம் மூடுவது எளிது +- பல சேவைகளுக்கு மறுசீரமைக்கப்பட்ட கட்டமைப்புடன் புதிய பிரித்தெடுக்கும் கருவியைப் பயன்படுத்தவும் -### திருத்தங்கள் +### திருத்தங்கள் -- #1440 உடைந்த வீடியோ தகவல் தளவமைப்பு #1491 சரி -- வரலாறு திருத்தம் #1497 பார்க்க - - #1495, பயனர் பிளேலிஸ்ட்டை அணுகியவுடன் மெட்டாடேட்டாவை (சிறுபடம், தலைப்பு மற்றும் வீடியோ எண்ணிக்கை) புதுப்பிப்பதன் மூலம். - - #1475, பயனர் விவரம் துண்டு வெளிப்புற பிளேயர் ஒரு வீடியோ தொடங்கும் போது தரவுத்தளத்தில் ஒரு பார்வை பதிவு மூலம். -- பாப்அப் பயன்முறையில் க்ரீன் டைம்அவுட்டை சரிசெய்யவும். #1463 (நிலையான #640) -- முக்கிய வீடியோ பிளேயர் திருத்தம் #1509 - - [#1412] பிளேயர் செயல்பாடு பின்னணியில் இருக்கும்போது புதிய நோக்கம் பெறும்போது பிளேயர் NPE ஐ ஏற்படுத்தும் நிலையான மீண்டும் பயன்முறை. - - பாப்அப் செய்ய நிலையான வீரர் குறைக்க பாப்அப் அனுமதி வழங்கப்படாதபோது வீரர் அழிக்க முடியாது. +- சரி #1440 உடைந்த வீடியோ செய்தி தளவமைப்பு #1491 +- சரித்திர சரித்திரத்தைக் காண்க #1497 +- #1495, பயனர் பிளேலிச்ட்டை அணுகியவுடன் மெட்டாடேட்டாவை (சிறுபடம், தலைப்பு மற்றும் வீடியோ எண்ணிக்கை) புதுப்பித்தல். +- #1475, விவரத் துண்டில் வெளிப்புற பிளேயரில் பயனர் வீடியோவைத் தொடங்கும் போது தரவுத்தளத்தில் பார்வையைப் பதிவு செய்வதன் மூலம். +- மேல்தோன்றல் பயன்முறையில் திரையின் காலக்கெடுவை சரிசெய்யவும். #1463 (நிலையான #640) +- முதன்மை வீடியோ பிளேயர் திருத்தம் #1509 +- [#1412] பிளேயர் செயல்பாடு பின்னணியில் இருக்கும்போது புதிய எண்ணம் பெறப்படும்போது பிளேயர் NPEயை ஏற்படுத்தும் நிலையான ரிப்பீட் பயன்முறை. +- மேல்தோன்றல் இசைவு வழங்கப்படாதபோது பிளேயரை பாப்அப்பிற்குக் குறைப்பது நிலையானது பிளேயரை அழிக்காது. diff --git a/fastlane/metadata/android/ta/changelogs/66.txt b/fastlane/metadata/android/ta/changelogs/66.txt index ba6cfae1cd8..b3076700d77 100644 --- a/fastlane/metadata/android/ta/changelogs/66.txt +++ b/fastlane/metadata/android/ta/changelogs/66.txt @@ -1,21 +1,33 @@ -# v0.13.7 இன் சேஞ்ச் +v0.13.7 இன் # சேஞ்ச்லாக் -### சரி செய்யப்பட்டது -- v0.13.6 வரிசை வடிகட்டி சிக்கல்களை சரிசெய்யவும் +### சரி செய்யப்பட்டது +- v0.13.6 இன் வரிசை வடிகட்டி சிக்கல்களை சரிசெய்யவும் -# v0.13.6 இன் சேஞ்ச் +# சேஞ்ச்லாக் இன் v0.13.6 -### மேம்பாடுகள் +### மேம்பாடுகள் -- பர்கர்மெனு ஐகான் அனிமேஷன் முடக்கு #1486 -- பதிவிறக்கங்கள் நீக்க #1472 செயல்தவிர்க்கவும் -- பங்கு மெனுவில் விருப்பத்தைப் பதிவிறக்கவும் #1498 -- நீண்ட குழாய் மெனு # 1454 பங்கு விருப்பத்தை சேர்க்கப்பட்டது -- வெளியேறும் #1354 இல் முக்கிய வீரரைக் குறைக்கவும் -- நூலக பதிப்பு மேம்படுத்தல் மற்றும் தரவுத்தள காப்பு திருத்தம் #1510 +- பர்கர்மெனு படவுரு அனிமேசனை முடக்கு #1486 +- பதிவிறக்கங்களின் நீக்குதலை செயல்தவிர்க்கவும் #1472 +- சேர் பட்டியல் #1498 இல் பதிவிறக்க விருப்பம் +- நீண்ட தட்டு பட்டியல் #1454 இல் பகிர்வு விருப்பம் சேர்க்கப்பட்டது +- வெளியேறும் #1354 இல் முதன்மையான வீரரைக் குறைக்கவும் +- நூலக பதிப்பு புதுப்பித்தல் மற்றும் தரவுத்தள காப்புப்பிரதி திருத்தம் #1510 +- ExoPlayer 2.8.2 மேம்படுத்தல் #1392 +- வேகமான வேக மாற்றத்திற்காக வெவ்வேறு படி அளவுகளை ஆதரிக்க, பிளேபேக் வேகக் கட்டுப்பாட்டு உரையாடலை மீண்டும் உருவாக்கியது. +- பிளேபேக் வேகக் கட்டுப்பாட்டில் நிசப்தத்தின் போது வேகமாக முன்னோக்கிச் செல்வதற்கான நிலைமாற்றம் சேர்க்கப்பட்டது. இது ஆடியோபுக்குகள் மற்றும் சில இசை வகைகளுக்கு உதவியாக இருக்க வேண்டும், மேலும் ஒரு உண்மையான தடையற்ற அனுபவத்தைக் கொண்டு வர முடியும் (மேலும் நிறைய அமைதியுடன் ஒரு பாடலை உடைக்க முடியும் =\\). +- மீடியா மூலத் தெளிவுத்திறன் மறுவடிவமைக்கப்பட்ட மீடியாவை கைமுறையாகச் செய்வதை விட, பிளேயரில் உள்ள மீடியாவுடன் சேர்த்து அனுப்ப அனுமதிக்கிறது. இப்போது எங்களிடம் மெட்டாடேட்டாவின் ஒற்றை சான்று உள்ளது மற்றும் பிளேபேக் தொடங்கும் போது நேரடியாகக் கிடைக்கும். +- பிளேலிச்ட் துண்டு திறக்கப்படும்போது புதிய மேனிலை தரவு கிடைக்கும்போது நிலையான ரிமோட் பிளேலிச்ட் மேனிலை தரவு புதுப்பிக்கப்படாது. +- பல்வேறு இடைமுகம் திருத்தங்கள்: #1383, பின்னணி பிளேயர் அறிவிப்புக் கட்டுப்பாடுகள் இப்போது எப்போதும் வெண்மையாக இருக்கும், மேல்தோன்றல் பிளேயரை ஃபிலிங் செய்வதன் மூலம் மூடுவது எளிது +- பல சேவைகளுக்கு மறுசீரமைக்கப்பட்ட கட்டமைப்புடன் புதிய பிரித்தெடுக்கும் கருவியைப் பயன்படுத்தவும் -- ExoPlayer 2.8.2 மேம்படுத்தல் #1392 - - வேகமான வேக மாற்றத்திற்கான வெவ்வேறு படி அளவுகளை ஆதரிக்க பின்னணி வேகக் கட்டுப்பாட்டு உரையாடலை மறுவேலை செய்தது. - - பின்னணி வேக கட்டுப்பாடு மௌனங்கள் போது வேகமாக முன்னோக்கி ஒரு நிலைமாற்றி சேர்க்கப்பட்டது. இது ஆடியோபுக்குகள் மற்றும் சில இசை வகைகளுக்கு உதவியாக இருக்க வேண்டும், மேலும் உண்மையான தடையற்ற அனுபவத்தைக் கொண்டுவர முடியும் (மேலும் நிறைய மௌனங்களுடன் ஒரு பாடலை உடைக்க முடியும் =). - - மெட்டாடேட்டாவை கைமுறையாக செய்வதை விட, பிளேயரில் உள்நாட்டில் மீடியாவுடன் மெட்டாடேட்டாவை அனுப்ப அனுமதிக்க மறுசீரமைக்கப்பட்ட ஊடக மூல தீர்மானம். இப்போது எங்களிடம் மெட்டாடேட்டாவின் ஒற்றை ஆதாரம் உள்ளது மற்றும் பிளேபேக் தொடங்கும் போது நேரடியாக கிடைக்கும். - - நிலையான தொலை பிளேலிஸ்ட் மெட்டாடேட்டா இல்லை +### திருத்தங்கள் + +- சரி #1440 உடைந்த வீடியோ செய்தி தளவமைப்பு #1491 +- சரித்திர சரித்திரத்தைக் காண்க #1497 +- #1495, பயனர் பிளேலிச்ட்டை அணுகியவுடன் மெட்டாடேட்டாவை (சிறுபடம், தலைப்பு மற்றும் வீடியோ எண்ணிக்கை) புதுப்பித்தல். +- #1475, விவரத் துண்டில் வெளிப்புற பிளேயரில் பயனர் வீடியோவைத் தொடங்கும் போது தரவுத்தளத்தில் பார்வையைப் பதிவு செய்வதன் மூலம். +- மேல்தோன்றல் பயன்முறையில் திரையின் காலக்கெடுவை சரிசெய்யவும். #1463 (நிலையான #640) +- முதன்மை வீடியோ பிளேயர் திருத்தம் #1509 +- [#1412] பிளேயர் செயல்பாடு பின்னணியில் இருக்கும்போது புதிய எண்ணம் பெறப்படும்போது பிளேயர் NPEயை ஏற்படுத்தும் நிலையான ரிப்பீட் பயன்முறை. +- மேல்தோன்றல் இசைவு வழங்கப்படாதபோது பிளேயரை பாப்அப்பிற்குக் குறைப்பது நிலையானது பிளேயரை அழிக்காது. diff --git a/fastlane/metadata/android/ta/changelogs/68.txt b/fastlane/metadata/android/ta/changelogs/68.txt index 9bada1861d0..1d0b6ca1a09 100644 --- a/fastlane/metadata/android/ta/changelogs/68.txt +++ b/fastlane/metadata/android/ta/changelogs/68.txt @@ -1,31 +1,31 @@ -# v0.14.1 மாற்றங்கள் +v0.14.1 இன் # மாற்றங்கள் -### சரி செய்யப்பட்டது -- வீடியோ url #1659 மறைகுறியாக்க சரி தோல்வி -- நிலையான விளக்கம் இணைப்பு நன்றாக பிரித்தெடுக்க இல்லை #1657 +### சரி செய்யப்பட்டது +- வீடியோ முகவரி #1659 ஐ மறைகுறியாக்குவதில் தோல்வி சரி செய்யப்பட்டது +- நிலையான விளக்கம் இணைப்பு நன்றாக பிரித்தெடுக்கப்படவில்லை #1657 -# v0.14.0 மாற்றங்கள் +v0.14.0 இன் # மாற்றங்கள் -### புதியது -- புதிய அலமாரியின் வடிவமைப்பு #1461 -- புதிய வாடிக்கையாளர்களின் முன் பக்கம் #1461 +### புதியது +- புதிய டிராயர் வடிவமைப்பு #1461 +- புதிய தனிப்பயனாக்கக்கூடிய முதல் பக்கம் #1461 -### மேம்பாடுகள் +### மேம்பாடுகள் - மறுவேலை செய்யப்பட்ட சைகை கட்டுப்பாடுகள் #1604 -- பாப்அப் பிளேயர் #1597 மூட புதிய வழி +- மேல்தோன்றல் பிளேயரை மூடுவதற்கான புதிய வழி #1597 - -### சரி செய்யப்பட்டது -- சந்தா எண்ணிக்கை கிடைக்காதபோது பிழையை சரிசெய்யவும். #1649 ஐ மூடுகிறது. - - அந்த சந்தர்ப்பங்களில் "சந்தாதாரர் எண்ணிக்கை கிடைக்கவில்லை" என்பதைக் காட்டு -- YouTube பிளேலிஸ்ட் காலியாக இருக்கும்போது NPE ஐ சரிசெய்யவும் -- SoundCloud இல் கியோஸ்க்குகளுக்கான விரைவான திருத்தம் -- Refactor மற்றும் பிழைத்திருத்தம் #1623 - - சுழற்சி தேடல் விளைவாக #1562 சரி - - சரி சீக் பட்டி நிலையாக இடப்படவில்லை - - YT பிரீமியம் வீடியோ சரியாக தடுக்கப்படவில்லை என்பதை சரிசெய்யவும் - - சில நேரங்களில் ஏற்றப்படாத வீடியோக்களை சரிசெய்யவும் (DASH பாகுபடுத்தல் காரணமாக) - - வீடியோ விளக்கத்தில் இணைப்புகளை சரிசெய்யவும் - - யாராவது வெளிப்புற SDCARD க்கு பதிவிறக்க முயற்சிக்கும்போது எச்சரிக்கையைக் காட்டு - - எதுவும் காட்டப்படவில்லை விதிவிலக்கு தூண்டுதல்கள் அறிக்கை சரி - - சிறு அண்ட்ராய்டு பின்னணி பிளேயர் காட்டப்படவில்லை 8.1 [இங்கே பார்க்கவும்](https://github.com/TeamNewPip +### சரி செய்யப்பட்டது +- சந்தா எண்ணிக்கை கிடைக்காதபோது பிழையை சரிசெய்யவும். மூடுகிறது #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/ta/changelogs/69.txt b/fastlane/metadata/android/ta/changelogs/69.txt index 0c2c47e48cf..e5e5ab606d7 100644 --- a/fastlane/metadata/android/ta/changelogs/69.txt +++ b/fastlane/metadata/android/ta/changelogs/69.txt @@ -1,19 +1,19 @@ -### புதியது - - சந்தாக்களில் #1516 இல் நீண்ட-தட்டுதல் நீக்கவும் பகிரவும் - - டேப்லெட் யுஐ மற்றும் கட்டம் பட்டியல் தளவமைப்பு #1617 +### புதியது +- நீண்ட நேரம் நீக்கு மற்றும் சந்தாக்கள் #1516 இல் பகிரவும் +- டேப்லெட் இடைமுகம் மற்றும் கட்டம் பட்டியல் தளவமைப்பு #1617 - ### மேம்பாடுகள் - - கடைசியாக பயன்படுத்தப்பட்ட விகித விகிதத்தை #1748 சேமித்து மீண்டும் ஏற்றவும் - - முழு வீடியோ பெயர்களுடன் பதிவிறக்கங்களின் செயல்பாட்டில் நேரியல் தளவமைப்பை இயக்கவும் #1771 - - சந்தாக்கள் தாவல் #1516 க்குள் இருந்து நேரடியாக சந்தாக்களை நீக்கி பகிரவும் - - நாடக வரிசை ஏற்கனவே #1783 முடிந்துவிட்டால், இப்போது வீடியோ விளையாடுவதைத் தூண்டுகிறது - - தொகுதி மற்றும் ஒளி சைகைகளுக்கான தனி அமைப்புகள் #1644 - - உள்ளூர்மயமாக்கலுக்கான ஆதரவைச் சேர்க்கவும் #1792 +### மேம்பாடுகள் +- கடைசியாகப் பயன்படுத்திய #1748 விகிதத்தை சேமித்து மீண்டும் ஏற்றவும் +- முழு வீடியோ பெயர்கள் #1771 உடன் பதிவிறக்கங்கள் செயல்பாட்டில் நேரியல் தளவமைப்பை இயக்கவும் +- சந்தாக்கள் தாவல் #1516 இலிருந்து நேரடியாக சந்தாக்களை நீக்கி பகிரவும் +- ப்ளே வரிசை ஏற்கனவே #1783 முடிவடைந்திருந்தால், இப்போது வரிசைப்படுத்துவது வீடியோவை இயக்கத் தூண்டுகிறது +- தொகுதி மற்றும் பிரகாச சைகைகளுக்கான தனி அமைப்புகள் #1644 +- உள்ளூர்மயமாக்கல் #1792க்கான ஆதரவைச் சேர்க்கவும் - ### திருத்தங்கள் - - நேர பாகுபடுத்தும் நேரத்தை சரிசெய்யவும். வடிவம், எனவே புதிய பக்கத்தை பின்லாந்தில் பயன்படுத்தலாம் - - சந்தா எண்ணிக்கையை சரிசெய்யவும் - - பநிஇ 28+ சாதனங்களுக்கான முன் பணி அனுமதியை #1830 சேர்க்கவும் +### திருத்தங்கள் +- க்கு நேரம் பாகுபடுத்துதல். வடிவம், எனவே நியூபைப்பை ஃபின்லாந்தில் பயன்படுத்தலாம் +- சந்தா எண்ணிக்கையை சரிசெய்யவும் +- பநிஇ 28+ சாதனங்களுக்கு முன்புற பணி அனுமதியைச் சேர்க்கவும் #1830 - ### அறியப்பட்ட பிழைகள் - - அண்ட்ராய்டு பி இல் பிளேபேக் நிலையை சேமிக்க முடியாது +### தெரிந்த பிழைகள் +- பிளேபேக் நிலையை Android P இல் சேமிக்க முடியாது diff --git a/fastlane/metadata/android/ta/changelogs/70.txt b/fastlane/metadata/android/ta/changelogs/70.txt index a314d7ac9de..747ee2f1622 100644 --- a/fastlane/metadata/android/ta/changelogs/70.txt +++ b/fastlane/metadata/android/ta/changelogs/70.txt @@ -1,25 +1,25 @@ -கவனம்: இந்த பதிப்பு கடைசியாக இருப்பதைப் போலவே ஒரு பிழைத்திருத்தமாகும். இருப்பினும் 17 முதல் முழு பணிநிறுத்தம் காரணமாக. உடைந்த பதிப்பு சிறந்தது, பின்னர் பதிப்பு இல்லை. சரி? ¯ \ _ (ツ) _/ +கவனம்: கடந்த பதிப்பைப் போலவே இந்தப் பதிப்பும் ஒரு பக்ஃபெச்டாக இருக்கலாம். எனினும் 17 முதல் முழு பணிநிறுத்தம் காரணமாக. உடைந்த பதிப்பு சிறந்த பதிப்பு இல்லை. சரியா? ¯\_(ツ)_/¯ - ### மேம்பாடுகள் - * பதிவிறக்கம் செய்யப்பட்ட கோப்புகளை இப்போது ஒரு சொடுக்கு #1879 உடன் திறக்கலாம் - * ஆண்ட்ராய்டு 4.1 - 4.3 #1884 க்கான ஆதரவை கைவிடவும் - * பழைய பிளேயரை அகற்று #1884 - * தற்போதைய நாடக வரிசையில் இருந்து ச்ட்ரீம்களை வலதுபுறமாக ச்வைப் செய்வதன் மூலம் அகற்றவும் #1915 - * ஒரு புதிய ச்ட்ரீம் கைமுறையாக #1878 - * பதிவிறக்கங்களுக்கான போச்ட்ரோசெசிங் மற்றும் காணாமல் போன அம்சங்களை செயல்படுத்துதல் #1759 bykapodamy - * பிந்தைய செயலாக்க உள்கட்டமைப்பு - * சரியான பிழை "உள்கட்டமைப்பு" (பதிவிறக்கத்திற்கு) - * பல பதிவிறக்கங்களுக்கு பதிலாக வரிசை - * பயன்பாட்டு தரவுக்கு சீரியலைச் நிலுவையில் உள்ள பதிவிறக்கங்களை (`.கிகா` கோப்புகள்) நகர்த்தவும் - * அதிகபட்ச பதிவிறக்க மீண்டும் முயற்சிக்கவும் - * சரியான மல்டி-த்ரெட் பதிவிறக்கம் இடைநிறுத்தம் - * மொபைல் நெட்வொர்க்கிற்கு மாறும்போது பதிவிறக்கங்களை நிறுத்துங்கள் (ஒருபோதும் செயல்படாது, 2 வது புள்ளியைப் பார்க்கவும்) - * அடுத்த பதிவிறக்கங்களுக்கான நூல் எண்ணிக்கையைச் சேமிக்கவும் - * நிறைய முரண்பாடுகள் சரி செய்யப்பட்டன +### மேம்பாடுகள் +பதிவிறக்கம் செய்யப்பட்ட கோப்புகளை இப்போது ஒரே கிளிக்கில் திறக்கலாம் #1879 +* ஆண்ட்ராய்டு 4.1 - 4.3 #1884க்கான ஆதரவை கைவிடவும் +* பழைய பிளேயரை அகற்றவும் #1884 +* ச்ட்ரீம்களை வலது #1915 க்கு ச்வைப் செய்வதன் மூலம் தற்போதைய பிளே வரிசையிலிருந்து அகற்றவும் +* ஒரு புதிய ச்ட்ரீம் கைமுறையாக #1878 வரிசைப்படுத்தப்படும் போது தானாக வரிசைப்படுத்தப்பட்ட ச்ட்ரீமை அகற்றவும் +* பதிவிறக்கங்களுக்கான பின்செயலாக்குதல் மற்றும் @kapodamy ஆல் விடுபட்ட நற்பொருத்தங்கள் #1759 செயல்படுத்துதல் +* செயலாக்கத்திற்குப் பின் உள்கட்டமைப்பு +* சரியான பிழை கையாளுதல் "உள்கட்டமைப்பு" (பதிவிறக்குபவருக்கு) +* பல பதிவிறக்கங்களுக்குப் பதிலாக வரிசை +* வரிசைப்படுத்தப்பட்ட நிலுவையிலுள்ள பதிவிறக்கங்களை (`.giga` கோப்புகள்) பயன்பாட்டுத் தரவுக்கு நகர்த்தவும் +* அதிகபட்ச பதிவிறக்க மறு முயற்சியை செயல்படுத்தவும் +* முறையான பல நூல் பதிவிறக்கம் இடைநிறுத்தம் +* மொபைல் நெட்வொர்க்கிற்கு மாறும்போது பதிவிறக்கங்களை நிறுத்துங்கள் (ஒருபோதும் வேலை செய்யாது, 2வது புள்ளியைப் பார்க்கவும்) +* அடுத்த பதிவிறக்கங்களுக்கு நூல் எண்ணிக்கையைச் சேமிக்கவும் +* பல முரண்பாடுகள் சரி செய்யப்பட்டன - ### சரி செய்யப்பட்டது - * இயல்புநிலை தெளிவுத்திறனுடன் செயலிழப்பை சரிசெய்யவும் சிறந்த மற்றும் வரையறுக்கப்பட்ட மொபைல் தரவு தீர்மானம் #1835 - * பாப்-அப் பிளேயர் செயலிழப்பு சரி #1874 - * பின்னணி பிளேயரைத் திறக்க முயற்சிக்கும்போது NPE #1901 - * ஆட்டோ வரிசை இயக்கப்பட்டிருக்கும் போது புதிய ச்ட்ரீம்களைச் செருகுவதை சரிசெய்யவும் #1878 - * டெசிபரிங் சட்டவுன் சிக்கல் சரி செய்யப்பட்டது +### சரி செய்யப்பட்டது +* சிறந்த மற்றும் வரையறுக்கப்பட்ட மொபைல் டேட்டா தெளிவுத்திறன் #1835க்கு அமைக்கப்பட்ட இயல்புநிலை தெளிவுத்திறனுடன் செயலிழப்பை சரிசெய்யவும் +* பாப்-அப் பிளேயர் செயலிழப்பு சரி செய்யப்பட்டது #1874 +* NPE பின்னணி பிளேயர் #1901 ஐ திறக்க முயற்சிக்கும்போது +* தானாக வரிசைப்படுத்துதல் #1878 இயக்கப்பட்டிருக்கும் போது புதிய ச்ட்ரீம்களைச் செருகுவதை சரிசெய்யவும் +* டிசைப்பரிங் சட்டவுன் சிக்கல் சரி செய்யப்பட்டது diff --git a/fastlane/metadata/android/ta/changelogs/71.txt b/fastlane/metadata/android/ta/changelogs/71.txt index 278cb41c070..4c677d3a087 100644 --- a/fastlane/metadata/android/ta/changelogs/71.txt +++ b/fastlane/metadata/android/ta/changelogs/71.txt @@ -1,10 +1,10 @@ -### மேம்பாடுகள் - * அறிவிலிமையம் பில்டிற்கான பயன்பாட்டு புதுப்பிப்பு அறிவிப்பை சேர்க்கவும் (#1608 bykrtkush) - * பதிவிறக்கத்தின் பல்வேறு மேம்பாடுகள் (#1944 bykapodamy): - * காணாமல் போன வெள்ளை ஐகான்களைச் சேர்த்து, படவுரு வண்ணங்களை மாற்ற ஆர்ட்கோர்டு வழியைப் பயன்படுத்தவும் - * ஐடரேட்டர் துவக்கப்பட்டதா என்பதை சரிபார்க்கவும் (திருத்தங்கள் #2031) - * புதிய மக்சரில் "பிந்தைய செயலாக்க தோல்வியுற்ற" பிழையுடன் மீண்டும் பதிவிறக்கங்களை மீண்டும் எடுக்க அனுமதிக்கவும் - * புதிய MPEG-4 மக்சர் ஒத்திசைவு அல்லாத வீடியோ மற்றும் ஆடியோ ச்ட்ரீம்களை சரிசெய்கிறது (#2039) +### மேம்பாடுகள் +* GitHub உருவாக்கத்திற்கான பயன்பாட்டு புதுப்பிப்பு அறிவிப்பைச் சேர்க்கவும் (#1608 by @krtkush) +* டவுன்லோடருக்கு பல்வேறு மேம்பாடுகள் (#1944 by @kapodamy): +* விடுபட்ட வெள்ளை ஐகான்களைச் சேர்த்து, படவுரு வண்ணங்களை மாற்ற ஆர்ட்கோர்டு வழியைப் பயன்படுத்தவும் +* இடிரேட்டர் துவக்கப்பட்டதா என சரிபார்க்கவும் (சரிசெய்தல் #2031) +* புதிய muxer இல் "பிந்தைய செயலாக்கம் தோல்வியடைந்தது" பிழையுடன் மீண்டும் பதிவிறக்கங்களை அனுமதிக்கவும் +* புதிய MPEG-4 muxer ஒத்திசைவற்ற வீடியோ மற்றும் ஆடியோ ச்ட்ரீம்களை சரிசெய்கிறது (#2039) - ### சரி செய்யப்பட்டது - * யூடியூப் லைவ் ச்ட்ரீம்கள் குறுகிய காலத்திற்குப் பிறகு விளையாடுவதை நிறுத்துகின்றன (#1996 @yausername) +### சரி செய்யப்பட்டது +* YouTube லைவ் ச்ட்ரீம்கள் சிறிது நேரத்திற்குப் பிறகு இயங்குவதை நிறுத்துகின்றன (#1996 by @yausername) diff --git a/fastlane/metadata/android/ta/changelogs/740.txt b/fastlane/metadata/android/ta/changelogs/740.txt index f3c18d5bc57..ce8085728e7 100644 --- a/fastlane/metadata/android/ta/changelogs/740.txt +++ b/fastlane/metadata/android/ta/changelogs/740.txt @@ -1,23 +1,23 @@ -

மேம்பாடுகள்

-
    -
  • கருத்துக்களில் இணைப்புகளை சொடுக்கு செய்யக்கூடியது, உரை அளவை அதிகரிக்கவும்
  • -
  • கருத்துகளில் நேர முத்திரை இணைப்புகளைக் சொடுக்கு செய்வதைத் தேடுங்கள்
  • -
  • அண்மைக் காலத்தில் தேர்ந்தெடுக்கப்பட்ட நிலையின் அடிப்படையில் விருப்பமான தாவலைக் காட்டு
  • -
  • ' பின்னணி ' பிளேலிச்ட் சாளரத்தில்
  • -
  • பகிரப்பட்ட உரையை முகவரி இல்லாதபோது தேடுங்கள்
  • -
  • சேர் & quot; தற்போதைய நேரத்தில் பகிரவும் & quot; முதன்மையான வீடியோ பிளேயருக்கு பொத்தான்
  • -
  • வீடியோ வரிசை முடிந்ததும் முதன்மையான பிளேயருக்கு மூடு பொத்தானைச் சேர்க்கவும்
  • -
  • & quot; பின்னணியில் நேரடியாக விளையாடுங்கள் & quot; வீடியோ பட்டியல் உருப்படிகளுக்கான லாங் பிரச் மெனுவுக்கு
  • -
  • விளையாட்டு/enqueue கட்டளைகளுக்கான ஆங்கில மொழிபெயர்ப்புகளை மேம்படுத்தவும்
  • -
  • சிறிய செயல்திறன் மேம்பாடுகள்
  • -
  • பயன்படுத்தப்படாத கோப்புகளை அகற்று
  • -
  • எக்சோப்ளேயரை 2.9.6 க்கு புதுப்பிக்கவும்
  • -
  • வன்கவர்வு இணைப்புகளுக்கு ஆதரவைச் சேர்க்கவும்
  • -
-

சரி செய்யப்பட்டது

-
    -
  • நிலையான சுருள் w/ கருத்துகள் மற்றும் தொடர்புடைய ச்ட்ரீம்கள் முடக்கப்பட்டன -
  • நிலையான CheckFornewAppversionTask அது செய்யப்படும்போது செயல்படுத்தப்படும் ' t
  • -
  • நிலையான YouTube சந்தா இறக்குமதி: தவறான முகவரி உடன் புறக்கணித்து, வெற்று தலைப்பைக் கொண்டு வைக்கவும்
  • -
  • தவறான YouTube முகவரி ஐ சரிசெய்யவும்: கையொப்பம் குறிச்சொல் பெயர் எப்போதும் ச்ட்ரீம்களை ஏற்றுவதைத் தடுக்கும் "கையொப்பம்"
  • -
+

மேம்பாடுகள்

+
    +
  • கருத்துகளில் இணைப்புகளைக் சொடுக்கு செய்யக்கூடியதாக ஆக்குங்கள், உரை அளவை அதிகரிக்கவும்
  • +
  • கருத்துகளில் நேரமுத்திரை இணைப்புகளைக் சொடுக்கு செய்வதைத் தேடுங்கள்
  • +
  • சமீபத்தில் தேர்ந்தெடுக்கப்பட்ட மாநிலத்தின் அடிப்படையில் விருப்பமான தாவலைக் காட்டு
  • +'பின்னணி' பிளேலிச்ட் சாளரத்தில் +
  • பகிர்ந்த உரை முகவரி இல்லாவிடில் தேடவும்
  • +
  • சேர் "தற்போதைய நேரத்தில் பகிர்" முக்கிய வீடியோ பிளேயருக்கான பொத்தான்
  • +
  • வீடியோ வரிசை முடிந்ததும் மெயின் பிளேயருக்கு மூடு பட்டனைச் சேர்க்கவும்
  • +
  • சேர் "பின்னணியில் நேரடியாக விளையாடு" வீடியோ பட்டியல் உருப்படிகளுக்கான மெனுவை நீண்ட அழுத்தவும்
  • +
  • Play/Enqueue கட்டளைகளுக்கான ஆங்கில மொழிபெயர்ப்புகளை மேம்படுத்தவும்
  • +
  • சிறிய செயல்திறன் மேம்பாடுகள்
  • +
  • பயன்படுத்தாத கோப்புகளை அகற்று
  • +
  • ExoPlayerஐ 2.9.6க்கு புதுப்பிக்கவும்
  • +
  • Invidious இணைப்புகளுக்கான ஆதரவைச் சேர்க்கவும்
  • +
+

நிலையானது

+
    +
  • நிலையான ச்க்ரோல் w/ கருத்துகள் மற்றும் தொடர்புடைய ச்ட்ரீம்கள் முடக்கப்பட்டன
  • +
  • நிச்சயமான CheckForNewAppVersionTask செயல்படாத போது செயல்படுத்தப்படுகிறது
  • +
  • நிலையான யூடியூப் சந்தா இறக்குமதி: தவறான முகவரி உள்ளவற்றைப் புறக்கணித்து, வெற்று தலைப்பில் உள்ளவற்றை வைத்திருங்கள்
  • +
  • தவறான YouTube முகவரி ஐ சரிசெய்யவும்: கையொப்ப குறிச்சொல் பெயர் எப்போதும் ச்ட்ரீம்களை ஏற்றுவதைத் தடுக்கும் "கையொப்பம்" அல்ல
  • +
diff --git a/fastlane/metadata/android/ta/changelogs/750.txt b/fastlane/metadata/android/ta/changelogs/750.txt index 08631498c46..f975f7b71f3 100644 --- a/fastlane/metadata/android/ta/changelogs/750.txt +++ b/fastlane/metadata/android/ta/changelogs/750.txt @@ -1,22 +1,22 @@ -புதியது - பிளேபேக் விண்ணப்பம் #2288 - Last கடைசியாக நீங்கள் நிறுத்திய இடத்தில் நீரோடைகளை மீண்டும் தொடங்குங்கள் - பதிவிறக்க மேம்பாடுகள் #2149 - St வெளிப்புற எச்டி-கார்டுகளில் பதிவிறக்கங்களை சேமிக்க சேமிப்பக அணுகல் கட்டமைப்பைப் பயன்படுத்தவும் - Mp புதிய எம்பி 4 மக்சர் - பதிவிறக்கம் பதிவிறக்கத்தைத் தொடங்குவதற்கு முன் பதிவிறக்க கோப்பகத்தை விருப்பமாக மாற்றவும் - Meade மீட்டெடுக்கப்பட்ட நெட்வொர்க்குகளை மரியாதை +புதியது +பிளேபேக் ரெச்யூம் #2288 +• கடைசியாக நீங்கள் நிறுத்திய ச்ட்ரீம்களை மீண்டும் தொடங்கவும் +டவுன்லோடர் மேம்பாடுகள் #2149 +• வெளிப்புற SD கார்டுகளில் பதிவிறக்கங்களைச் சேமிக்க சேமிப்பக அணுகல் கட்டமைப்பைப் பயன்படுத்தவும் +• புதிய mp4 muxer +• பதிவிறக்கத்தைத் தொடங்கும் முன் பதிவிறக்க கோப்பகத்தை விருப்பமாக மாற்றவும் +• மீட்டர் நெட்வொர்க்குகளை மதிக்கவும் - மேம்படுத்தப்பட்டது - • அகற்றப்பட்ட செமா சரங்கள் #2295 - Life செயல்பாட்டு வாழ்க்கை சுழற்சி #2444 இன் போது கையாளுதல் (ஆட்டோ) சுழற்சி மாற்றங்கள் - Long நீண்ட அழுத்த மெனுக்களை சீரானதாக மாற்றவும் #2368 +மேம்படுத்தப்பட்டது +• நீக்கப்பட்ட செமா சரங்கள் #2295 +• செயல்பாட்டு வாழ்க்கைச் சுழற்சியின் போது (தானியங்கு) சுழற்சி மாற்றங்களைக் கையாளவும் #2444 +• நீண்ட அழுத்த மெனுக்களை சீரான #2368 ஆக்குங்கள் - சரி - • நிலையான தேர்ந்தெடுக்கப்பட்ட வசன பாதை பெயர் காண்பிக்கப்படவில்லை #2394 - பயன்பாடு பயன்பாட்டு புதுப்பிப்பு தோல்வியுற்றால் செயலிழக்க வேண்டாம் (கிதுப் பதிப்பு) #2423 - • நிலையான பதிவிறக்கங்கள் 99.9% #2440 இல் சிக்கியுள்ளன - Play ப்ளே வரிசை மேனிலை தரவு #2453 ஐப் புதுப்பிக்கவும் - • [சவுண்ட்க்ளூட்] பிளேலிச்ட்கள் டீம்நியூபைப்/நியூபிபீக்ச்ட்ராக்டர்#170 ஐ ஏற்றும்போது நிலையான செயலிழப்பு - • [YouTube] நிலையான கால அளவு paresd teamnewpipe/newPipeextractor#177 ஆக இருக்க முடியாது +சரி செய்யப்பட்டது +• நிலையான தேர்ந்தெடுக்கப்பட்ட வசன டிராக் பெயர் #2394 காட்டப்படவில்லை +• ஆப்ச் புதுப்பிப்பு தோல்வியுற்றால் செயலிழக்க வேண்டாம் (GitHub பதிப்பு) #2423 +• நிலையான பதிவிறக்கங்கள் 99.9% #2440 இல் சிக்கியுள்ளன +• பிளே வரிசை மேனிலை தரவு #2453ஐப் புதுப்பிக்கவும் +• [SoundCloud] பிளேலிச்ட்களை ஏற்றும்போது நிலையான செயலிழப்பு TeamNewPipe/NewPipeExtractor#170 +• [YouTube] நிலையான கால அளவு TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/ta/changelogs/760.txt b/fastlane/metadata/android/ta/changelogs/760.txt index b2252d1795b..2ef083c0066 100644 --- a/fastlane/metadata/android/ta/changelogs/760.txt +++ b/fastlane/metadata/android/ta/changelogs/760.txt @@ -1,43 +1,43 @@ -0.17.1 இல் மாற்றங்கள் +0.17.1 இல் மாற்றங்கள் - புதியது - • தாய் உள்ளூர்மயமாக்கல் +புதியது +• தாய் உள்ளூர்மயமாக்கல் - மேம்படுத்தப்பட்டது - The பிளேலிச்ட்களுக்கான லாங்-பிரச் மெனுக்களில் மீண்டும் விளையாடத் தொடங்குங்கள் #2518 - SAF SAF / மரபு கோப்பு பிக்கர் #2521 க்கு சுவிட்சைச் சேர்க்கவும் +மேம்படுத்தப்பட்டது +• பிளேலிச்ட்களுக்கான நீண்ட அழுத்த மெனுக்களில் மீண்டும் விளையாடத் தொடங்கும் செயலைச் சேர்க்கவும் #2518 +• SAF / மரபு கோப்பு தேர்வி #2521க்கான சுவிட்சைச் சேர்க்கவும் - சரி - இடு பயன்பாடுகளை மாற்றும்போது பதிவிறக்கங்களில் காணாமல் போகும் பொத்தான்களை சரிசெய்யவும் #2487 - Watch வாட்ச் வரலாறு முடக்கப்பட்டிருந்தாலும் பிளேபேக் நிலை சேமிக்கப்படுகிறது - Tiews பட்டியல் காட்சிகள் #2517 இல் பிளேபேக் நிலையால் ஏற்படும் குறைக்கப்பட்ட செயல்திறனை சரிசெய்யவும் - • [பிரித்தெடுத்தல்] recaptchaactivity #2527, TeamNewPipe/NewPipeextractor #186 ஐ சரிசெய்யவும் - • [பிரித்தெடுத்தல்] [YouTube] பிளேலிச்ட்கள் முடிவுகளில் இருக்கும்போது சாதாரண தேடல் பிழையை சரிசெய்யவும் teamnewpipe/newPipeextractor#185 +சரி செய்யப்பட்டது +• பயன்பாடுகள் #2487 ஐ மாற்றும்போது பதிவிறக்கங்கள் பார்வையில் மறைந்து வரும் பொத்தான்களை சரிசெய்யவும் +• பார்வை வரலாறு முடக்கப்பட்டிருந்தாலும், ஃபிக்ச் பிளேபேக் நிலை சேமிக்கப்படும் +• பட்டியல் காட்சிகள் #2517 இல் பிளேபேக் நிலை காரணமாக குறைக்கப்பட்ட செயல்திறனை சரிசெய்யவும் +• [எக்ச்ட்ராக்டர்] ReCaptchaActivity #2527, TeamNewPipe/NewPipeExtractor#186 +• [எக்ச்ட்ராக்டர்] [YouTube] பிளேலிச்ட்கள் முடிவுகளில் இருக்கும்போது சாதாரண தேடல் பிழையை சரிசெய்யவும் TeamNewPipe/NewPipeExtractor#185 - 0.17.0 இல் மாற்றங்கள் +0.17.0 இல் மாற்றங்கள் - புதியது - பிளேபேக் விண்ணப்பம் #2288 - Last கடைசியாக நீங்கள் நிறுத்திய இடத்தில் நீரோடைகளை மீண்டும் தொடங்குங்கள் - பதிவிறக்க மேம்பாடுகள் #2149 - St வெளிப்புற எச்டி-கார்டுகளில் பதிவிறக்கங்களை சேமிக்க சேமிப்பக அணுகல் கட்டமைப்பைப் பயன்படுத்தவும் - Mp புதிய எம்பி 4 மக்சர் - பதிவிறக்கம் பதிவிறக்கத்தைத் தொடங்குவதற்கு முன் பதிவிறக்க கோப்பகத்தை விருப்பமாக மாற்றவும் - Meade மீட்டெடுக்கப்பட்ட நெட்வொர்க்குகளை மரியாதை +புதியது +பிளேபேக் ரெச்யூம் #2288 +• கடைசியாக நீங்கள் நிறுத்திய ச்ட்ரீம்களை மீண்டும் தொடங்கவும் +டவுன்லோடர் மேம்பாடுகள் #2149 +• வெளிப்புற SD கார்டுகளில் பதிவிறக்கங்களைச் சேமிக்க சேமிப்பக அணுகல் கட்டமைப்பைப் பயன்படுத்தவும் +• புதிய mp4 muxer +• பதிவிறக்கத்தைத் தொடங்கும் முன் பதிவிறக்க கோப்பகத்தை விருப்பமாக மாற்றவும் +• மீட்டர் நெட்வொர்க்குகளை மதிக்கவும் - மேம்படுத்தப்பட்டது - • அகற்றப்பட்ட செமா சரங்கள் #2295 - Life செயல்பாட்டு வாழ்க்கை சுழற்சி #2444 இன் போது கையாளுதல் (ஆட்டோ) சுழற்சி மாற்றங்கள் - Long நீண்ட அழுத்த மெனுக்களை சீரானதாக மாற்றவும் #2368 +மேம்படுத்தப்பட்டது +• நீக்கப்பட்ட செமா சரங்கள் #2295 +• செயல்பாட்டு வாழ்க்கைச் சுழற்சியின் போது (தானியங்கு) சுழற்சி மாற்றங்களைக் கையாளவும் #2444 +• நீண்ட அழுத்த மெனுக்களை சீரான #2368 ஆக்குங்கள் - சரி - • நிலையான தேர்ந்தெடுக்கப்பட்ட வசன பாதை பெயர் காண்பிக்கப்படவில்லை #2394 - பயன்பாடு பயன்பாட்டு புதுப்பிப்பு தோல்வியுற்றால் செயலிழக்க வேண்டாம் (கிதுப் பதிப்பு) #2423 - • நிலையான பதிவிறக்கங்கள் 99.9% #2440 இல் சிக்கியுள்ளன - Play ப்ளே வரிசை மேனிலை தரவு #2453 ஐப் புதுப்பிக்கவும் - • [சவுண்ட்க்ளூட்] பிளேலிச்ட்கள் டீம்நியூபைப்/நியூபிபீக்ச்ட்ராக்டர்#170 ஐ ஏற்றும்போது நிலையான செயலிழப்பு - • [YouTube] நிலையான கால அளவு paresd teamnewpipe/newPipeextractor#177 ஆக இருக்க முடியாது +சரி செய்யப்பட்டது +• நிலையான தேர்ந்தெடுக்கப்பட்ட வசன டிராக் பெயர் #2394 காட்டப்படவில்லை +• ஆப்ச் புதுப்பிப்பு தோல்வியுற்றால் செயலிழக்க வேண்டாம் (GitHub பதிப்பு) #2423 +• நிலையான பதிவிறக்கங்கள் 99.9% #2440 இல் சிக்கியுள்ளன +• பிளே வரிசை மேனிலை தரவு #2453ஐப் புதுப்பிக்கவும் +• [SoundCloud] பிளேலிச்ட்களை ஏற்றும்போது நிலையான செயலிழப்பு TeamNewPipe/NewPipeExtractor#170 +• [YouTube] நிலையான கால அளவு TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/ta/changelogs/780.txt b/fastlane/metadata/android/ta/changelogs/780.txt index 7d6d57a1c61..56e6bcfe720 100644 --- a/fastlane/metadata/android/ta/changelogs/780.txt +++ b/fastlane/metadata/android/ta/changelogs/780.txt @@ -1,12 +1,12 @@ -0.17.3 இல் மாற்றங்கள் +0.17.3 இல் மாற்றங்கள் - மேம்படுத்தப்பட்டது - The பிளேபேக் நிலைகளை அழிக்க விருப்பம் சேர்க்கப்பட்டது #2550 - The கோப்பு பிக்கர் #2591 இல் மறைக்கப்பட்ட கோப்பகங்களைக் காட்டு - புதிய NewPipe #2488 உடன் திறக்கப்பட வேண்டிய `invidio.us` நிகழ்வுகளிலிருந்து முகவரி களை ஆதரிக்கவும் - `Music.youtube.com` urls teamnewpipe/newPipeextractor#194 க்கான ஆதரவைச் சேர்க்கவும் +மேம்படுத்தப்பட்டது +• பிளேபேக் நிலைகளை அழிக்க விருப்பம் சேர்க்கப்பட்டது #2550 +• கோப்பு தேர்வி #2591 இல் மறைக்கப்பட்ட கோப்பகங்களைக் காட்டு +• NewPipe #2488 உடன் திறக்கப்பட வேண்டிய `invidio.us` நிகழ்வுகளின் உதவி URLகள் +• `music.youtube.com` URLகளுக்கான ஆதரவைச் சேர்க்கவும் TeamNewPipe/NewPipeExtractor#194 - சரி - • [YouTube] நிலையான 'java.lang.ilegalargumentexception #192 - • [YouTube] நிலையான நேரடி ச்ட்ரீம்கள் டீம்நியூபைப்/நியூபிபீக்ச்ட்ராக்டர்#195 வேலை செய்யாது - And ஆண்ட்ராய்டு பை ஒரு ச்ட்ரீம் பதிவிறக்கும்போது நிலையான செயல்திறன் சிக்கல் #2592 +சரி செய்யப்பட்டது +• [YouTube] நிலையான 'java.lang.IllegalArgumentException #192 +• [YouTube] நிலையான நேரடி ச்ட்ரீம்கள் வேலை செய்யவில்லை TeamNewPipe/NewPipeExtractor#195 +• ச்ட்ரீம் #2592 ஐப் பதிவிறக்கும் போது ஆண்ட்ராய்டு பையில் செயல்திறன் சிக்கல் சரி செய்யப்பட்டது diff --git a/fastlane/metadata/android/ta/changelogs/790.txt b/fastlane/metadata/android/ta/changelogs/790.txt index 1c9236d44a9..20ddb787cc7 100644 --- a/fastlane/metadata/android/ta/changelogs/790.txt +++ b/fastlane/metadata/android/ta/changelogs/790.txt @@ -1,14 +1,14 @@ -மேம்படுத்தப்பட்டது - Bland பார்வையற்றவர்களுக்கான அணுகலை மேம்படுத்த கூடுதல் தலைப்புகளைச் சேர்க்கவும் #2655 - பதிவிறக்கம் பதிவிறக்க கோப்புறையின் மொழியை மிகவும் சீரானதாகவும், தெளிவற்றதாகவும் மாற்றவும் #2637 +மேம்படுத்தப்பட்டது +• பார்வையற்றவர்களுக்கான அணுகலை மேம்படுத்த மேலும் தலைப்புகளைச் சேர்க்கவும் #2655 +• பதிவிறக்க கோப்புறை அமைப்பை மிகவும் சீரானதாகவும் தெளிவற்றதாகவும் மாற்றவும் #2637 - சரி - The தொகுதியில் கடைசி பைட் பதிவிறக்கம் செய்யப்பட்டதா என்று சரிபார்க்கவும் #2646 - ஒளிதோற்றம் வீடியோ விவரம் துண்டு #2672 இல் நிலையான ச்க்ரோலிங் - Teark இரட்டை தேடல் தெளிவான பெட்டி அனிமேசன்களை ஒரு #2695 க்கு அகற்று - • [சவுண்ட்க்ளூட்] கிளையன்ட்_ஐடி பிரித்தெடுத்தல் #2745 ஐ சரிசெய்யவும் +சரி செய்யப்பட்டது +• பிளாக்கில் கடைசி பைட் #2646 பதிவிறக்கம் செய்யப்பட்டுள்ளதா எனச் சரிபார்க்கவும் +• வீடியோ விவரத் துண்டு #2672 இல் ச்க்ரோலிங் சரி செய்யப்பட்டது +• இரட்டை தேடல் தெளிவான பெட்டி அனிமேசன்களை #2695 க்கு அகற்றவும் +• [SoundCloud] கிளையன்ட்_ஐடி பிரித்தெடுத்தலை சரிசெய்யவும் #2745 - வளர்ச்சி - புதிய நியூபிபீக்ச்ட்ராக்டரிடமிருந்து பெறப்பட்ட காணாமல் போன சார்புகளை நியூபைப் #2535 இல் சேர்க்கவும் - And Androidx #2685 க்கு இடம்பெயர்வு - Ex எக்சோப்ளேயருக்கு புதுப்பிப்பு 2.10.6 #2697, #2736 +வளர்ச்சி +• NewPipeExtractor இலிருந்து பெறப்பட்ட விடுபட்ட சார்புகளை NewPipe #2535 இல் சேர்க்கவும் +• AndroidX #2685க்கு மாற்றவும் +• ExoPlayer 2.10.6 #2697, #2736 க்கு புதுப்பிக்கவும் diff --git a/fastlane/metadata/android/ta/changelogs/800.txt b/fastlane/metadata/android/ta/changelogs/800.txt index 9108f0dea96..e67680227ca 100644 --- a/fastlane/metadata/android/ta/changelogs/800.txt +++ b/fastlane/metadata/android/ta/changelogs/800.txt @@ -1,27 +1,27 @@ -புதியது - P பி 2 பி (#2201) இல்லாமல் PEERTUBE உதவி [பீட்டா]: - ஒப்பி Peertube நிகழ்வுகளிலிருந்து வீடியோக்களைப் பார்த்து பதிவிறக்கவும் - Per முழுமையான PEERTUBE உலகத்தை அணுக அமைப்புகளில் நிகழ்வுகளைச் சேர்க்கவும் - And ஆண்ட்ராய்டு 4.4 மற்றும் 7.1 இல் எச்எச்எல் ஏண்ட்சேக்குகளில் சிக்கல்கள் இருக்கலாம், இதன் விளைவாக பிணைய பிழையின் விளைவாக சில நிகழ்வுகளை அணுகலாம். +புதியது +• P2P இல்லாமல் PeerTube உதவி (#2201) [பீட்டா]: +◦ PeerTube நிகழ்வுகளில் இருந்து வீடியோக்களைப் பார்க்கவும் பதிவிறக்கவும் +◦ முழுமையான PeerTube உலகத்தை அணுக அமைப்புகளில் நிகழ்வுகளைச் சேர்க்கவும் +◦ ஆண்ட்ராய்டு 4.4 மற்றும் 7.1 இல் SSL ஏண்ட்சேக்குகளில் சிக்கல்கள் இருக்கலாம், சில நிகழ்வுகளை அணுகும்போது பிணையப் பிழை ஏற்படலாம். - • பதிவிறக்குபவர் (#2679): - பதிவிறக்கம் பதிவிறக்க ETA ஐக் கணக்கிடுங்கள் - OP OGG ஆக OPUS (WEBM கோப்புகள்) பதிவிறக்கவும் - Pac நீண்ட இடைநிறுத்தத்திற்குப் பிறகு பதிவிறக்கங்களை மீண்டும் தொடங்குவதற்கான காலாவதியான பதிவிறக்க இணைப்புகளை மீட்டெடுக்கவும் +• பதிவிறக்குபவர் (#2679): +◦ பதிவிறக்க ETAஐக் கணக்கிடவும் +◦ ஓபசை (வெப்எம் கோப்புகள்) ogg ஆகப் பதிவிறக்கவும் +◦ நீண்ட இடைநிறுத்தத்திற்குப் பிறகு பதிவிறக்கங்களை மீண்டும் தொடங்க, காலாவதியான பதிவிறக்க இணைப்புகளை மீட்டெடுக்கவும் - மேம்படுத்தப்பட்டது - Contase விருப்பமான உள்ளடக்க நாட்டில் ஏற்படும் மாற்றங்கள் குறித்து கியோச்கிராக்மென்ட்டை அறிந்து கொள்ளுங்கள் மற்றும் அனைத்து முக்கிய தாவல்களின் செயல்திறனை மேம்படுத்தவும் #2742 - Tract பிரித்தெடுத்தல் #2713 இலிருந்து புதிய உள்ளூர்மயமாக்கல் மற்றும் பதிவிறக்க செயலாக்கங்களைப் பயன்படுத்தவும் - • "இயல்புநிலை கியோச்க்" சரத்தை மொழிபெயர்க்கக்கூடியதாக மாற்றவும் - • கருப்பு கருப்பொருள் #2569 க்கான கருப்பு வழிசெலுத்தல் பட்டி +மேம்படுத்தப்பட்டது +• விருப்பமான உள்ளடக்க நாட்டில் ஏற்படும் மாற்றங்கள் குறித்து கியோச்க் ஃபிராக்மென்ட்டுக்கு தெரியப்படுத்தவும் மற்றும் அனைத்து முக்கிய தாவல்களின் செயல்திறனை மேம்படுத்தவும் #2742 +• எக்ச்ட்ராக்டர் #2713 இலிருந்து புதிய உள்ளூர்மயமாக்கல் மற்றும் டவுன்லோடர் செயலாக்கங்களைப் பயன்படுத்தவும் +• "இயல்புநிலை கியோச்க்" சரத்தை மொழிபெயர்க்கலாம் +• கருப்பு கருப்பொருள் #2569க்கான கருப்பு வழிசெலுத்தல் பட்டி - சரி - Pop பாப்அப் பிளேயரை நகர்த்தும்போது பாப்அப் பிளேயரை நகர்த்த முடியாத ஒரு பிழை சரி செய்யப்பட்டது, பாப்அப் பிளேயரை நகர்த்தும்போது #2772 - Allial ஒரு பதிவேற்றியைக் காணாமல் பிளேலிச்ட்களை அனுமதிக்கவும், இந்த சிக்கல் தொடர்பான செயலிழப்புகளை சரிசெய்யவும் #2724, டீம்நியூபைப்/நியூபிபீக்ச்ட்ராக்டர் #219 - And ஆண்ட்ராய்டு 4.4 சாதனங்களில் (API 19/KITKAT) TLS1.1/1.2 ஐ இயக்குதல் TLS ஏண்ட்சேக்கை MEDIACCC மற்றும் சில PEERTUBE நிகழ்வுகள் #2792 - • [சவுண்ட்க்ளூட்] நிலையான கிளையண்ட்_ஐடி பிரித்தெடுத்தல் டீம்நியூபைப்/நியூபிபீக்ச்ட்ராக்டர்#217 - • [சவுண்ட்க்ளூட்] ஆடியோ ச்ட்ரீம் பிரித்தெடுத்தலை சரிசெய்யவும் +சரி செய்யப்பட்டது +• மேல்தோன்றல் பிளேயரை நகர்த்தும்போது மற்றொரு விரலை வைத்தால் மேல்தோன்றல் பிளேயரை நகர்த்த முடியாத பிழை சரி செய்யப்பட்டது #2772 +• பதிவேற்றியவரைக் காணாத பிளேலிச்ட்களை அனுமதிக்கவும் மேலும் இந்தச் சிக்கல் தொடர்பான செயலிழப்புகளைச் சரிசெய்யவும் #2724, TeamNewPipe/NewPipeExtractor#219 +• MediaCCC மற்றும் சில PeerTube நிகழ்வுகளுடன் TLS ஏண்ட்சேக்கை சரிசெய்ய Android 4.4 சாதனங்களில் (API 19/KitKat) TLS1.1/1.2 ஐ இயக்குகிறது #2792 +• [SoundCloud] நிலையான கிளையன்ட்_ஐடி பிரித்தெடுத்தல் TeamNewPipe/NewPipeExtractor#217 +• [SoundCloud] ஆடியோ ச்ட்ரீம் பிரித்தெடுத்தலை சரிசெய்யவும் - வளர்ச்சி - Ex எக்சோப்ளேயரை 2.10.8 #2791, #2816 க்கு புதுப்பிக்கவும் - • கிரேடில் 3.5.1 ஆகப் புதுப்பித்து, கோட்லின் உதவி #2714 ஐச் சேர்க்கவும் +வளர்ச்சி +• ExoPlayer ஐ 2.10.8 #2791, #2816 க்கு புதுப்பிக்கவும் +• Gradleஐ 3.5.1க்கு புதுப்பித்து, Kotlin ஆதரவைச் சேர்க்கவும் #2714 diff --git a/fastlane/metadata/android/ta/changelogs/810.txt b/fastlane/metadata/android/ta/changelogs/810.txt index b4a697b6e7b..205cc5b8e7d 100644 --- a/fastlane/metadata/android/ta/changelogs/810.txt +++ b/fastlane/metadata/android/ta/changelogs/810.txt @@ -1,19 +1,19 @@ -புதியது - The பின்னணியில் விளையாடும்போது பூட்டுத் திரையில் வீடியோ சிறுபடத்தைக் காட்டுங்கள் +புதியது +• பின்னணியில் விளையாடும்போது பூட்டுத் திரையில் வீடியோ சிறுபடத்தைக் காட்டு - மேம்படுத்தப்பட்டது - Fact பின்னணி / பாப்அப் பொத்தானை நீண்ட நேரம் அழுத்தும்போது வரிசைப்படுத்த உள்ளக பிளேலிச்ட்டைச் சேர்க்கவும் - Page முதன்மையான பக்க தாவல்களை உருட்டலாம் மற்றும் ஒரு தாவல் மட்டுமே இருக்கும்போது மறைக்கவும் - Player பின்னணி பிளேயரில் அறிவிப்பு சிறு புதுப்பிப்புகளின் அளவைக் கட்டுப்படுத்துங்கள் - Local வெற்று உள்ளக பிளேலிச்ட்களுக்கு போலி சிறு உருவத்தைச் சேர்க்கவும் - *. - Dopstion பதிவிறக்கம் செய்யப்பட்ட கோப்புகளை நீக்க பொத்தானைச் சேர்க்கவும் அல்லது வரலாற்றை "பதிவிறக்கங்களில்" பதிவிறக்கவும் - • [YouTube] /c /groldened_url சேனல் இணைப்புகளுக்கு ஆதரவைச் சேர்க்கவும் +மேம்படுத்தப்பட்டது +• பின்னணி / மேல்தோன்றல் பட்டனை நீண்ட நேரம் அழுத்தும் போது உள்ளக பிளேலிச்ட்டை வரிசையில் சேர்க்கவும் +• முதன்மையான பக்க தாவல்களை ச்க்ரோல் செய்யக்கூடியதாக மாற்றவும் மற்றும் ஒரே ஒரு தாவல் இருக்கும் போது மறைக்கவும் +• பின்னணி பிளேயரில் அறிவிப்பு சிறுபட புதுப்பிப்புகளின் வரம்பு +• காலியான உள்ளக பிளேலிச்ட்களுக்கு போலி சிறுபடத்தைச் சேர்க்கவும் +• *.webm க்குப் பதிலாக *.opus கோப்பு நீட்டிப்பைப் பயன்படுத்தவும், பதிவிறக்க கீழ்தோன்றும் இடத்தில் "WebM Opus" என்பதற்குப் பதிலாக வடிவமைப்பு லேபிளில் "opus" என்பதைக் காட்டவும் +• "பதிவிறக்கங்களில்" பதிவிறக்கப்பட்ட கோப்புகள் அல்லது பதிவிறக்க வரலாற்றை நீக்க பொத்தானைச் சேர்க்கவும் +• [YouTube] /c/shortened_url சேனல் இணைப்புகளுக்கு ஆதரவைச் சேர்க்கவும் - சரி - புழம்பு நியூ பைப்பிற்கு ஒரு வீடியோவைப் பகிர்ந்துகொண்டு அதன் ச்ட்ரீம்களை நேரடியாக பதிவிறக்கும் போது பல சிக்கல்கள் சரி செய்யப்பட்டன - • நிலையான பிளேயர் அதன் உருவாக்கும் நூலில் இருந்து அணுகல் - • நிலையான தேடல் முடிவு பேசிங் - • [YouTube] NPE ஐ ஏற்படுத்தும் பூச்யத்தில் நிலையான மாறுதல் - • [YouTube] ஒரு Invidio.us முகவரி ஐத் திறக்கும்போது நிலையான பார்வை கருத்துகள் - • [சவுண்ட்க்ளூட்] புதுப்பிக்கப்பட்ட கிளையண்ட்_ஐடி +சரி செய்யப்பட்டது +• நியூபைப்பில் வீடியோவைப் பகிரும்போதும் அதன் ச்ட்ரீம்களை நேரடியாகப் பதிவிறக்கும்போதும் பல சிக்கல்கள் சரி செய்யப்பட்டன +• அதன் உருவாக்கத் தொடரிலிருந்து நிலையான பிளேயர் அணுகல் +• நிலையான தேடல் முடிவு பக்கமாக்கல் +• [YouTube] NPE க்கு காரணமான பூச்யத்தில் மாறுதல் நிலையானது +• [YouTube] invidio.us urlஐத் திறக்கும்போது கருத்துகளைப் பார்ப்பது நிலையானது +• [SoundCloud] updated client_id diff --git a/fastlane/metadata/android/ta/changelogs/840.txt b/fastlane/metadata/android/ta/changelogs/840.txt index 44eed054d94..50f999f871f 100644 --- a/fastlane/metadata/android/ta/changelogs/840.txt +++ b/fastlane/metadata/android/ta/changelogs/840.txt @@ -1,22 +1,22 @@ -புதியது - பயன்பாடு பயன்பாட்டு மொழியை மாற்ற மொழி தேர்வாளரைச் சேர்த்தது - Mally பிளேயர் மடக்கக்கூடிய மெனுவுக்கு கோடி பொத்தானை அனுப்பவும் - Press நீண்ட பத்திரிகையில் கருத்துகளை நகலெடுக்கும் திறன் சேர்க்கப்பட்டது +புதியது +• பயன்பாட்டு மொழியை மாற்ற, மொழி தேர்வி சேர்க்கப்பட்டது +• பிளேயர் மடிக்கக்கூடிய பட்டியலில் 'கோடிக்கு அனுப்பு' பட்டன் சேர்க்கப்பட்டது +• நீண்ட அழுத்தத்தில் கருத்துகளை நகலெடுக்கும் திறன் சேர்க்கப்பட்டது - மேம்படுத்தப்பட்டது - Rececaptaca செயல்பாட்டை சரிசெய்து, பெறப்பட்ட குக்கீகளை சரியாக சேமிக்கவும் - பெறுநர் டி டாட்-மெனுவை அலமாரிக்கு ஆதரவாக மற்றும் மறைக்க வரலாறு பொத்தானை அமைப்புகளில் வாட்ச் வரலாறு இயக்கப்படாதபோது - And ஆண்ட்ராய்டு 6 மற்றும் அதற்குப் பிறகு அமைப்புகளில் மற்ற பயன்பாடுகளின் இசைவு மீது காட்சி கேட்கவும் - Bouk புக்மார்க்கெட் பிராக்மென்ட்டில் நீண்ட காலமாக சொடுக்கு செய்வதன் மூலம் உள்ளக பிளேலிச்ட்டை மறுபெயரிடுங்கள் - Per பல்வேறு PEERTUBE மேம்பாடுகள் - • பல ஆங்கில மூல சரங்களை மேம்படுத்தியது +மேம்படுத்தப்பட்டது +• ReCaptcha செயல்பாட்டைச் சரிசெய்து, பெறப்பட்ட குக்கீகளை சரியாகச் சேமிக்கவும் +• டிராயருக்கு ஆதரவாக புள்ளி-மெனு அகற்றப்பட்டது மற்றும் அமைப்புகளில் பார்வை வரலாறு இயக்கப்படாதபோது வரலாற்றை மறைக்கும் பட்டன் +• ஆண்ட்ராய்டு 6 மற்றும் அதற்குப் பிந்தைய பதிப்பில் உள்ள அமைப்புகளில், பிற ஆப்சைக் காட்ட இசைவு கேட்கவும் +• புத்தகக்குறி ஃபிராக்மென்ட்டில் நீண்ட நேரம் சொடுக்கு செய்வதன் மூலம் உள்ளக பிளேலிச்ட்டின் பெயரை மாற்றவும் +• பல்வேறு PeerTube மேம்பாடுகள் +• பல ஆங்கில மூல சரங்கள் மேம்படுத்தப்பட்டது - சரி - • நிலையான பிளேயர் மீண்டும் தொடங்குகிறது, இருப்பினும் இது "பயன்பாட்டு சுவிட்சைக் குறைத்தல்" இயக்கப்பட்டிருக்கும்போது, புதிய அளவைக் குறைக்கும்போது அது இடைநிறுத்தப்படுகிறது - The சைகைக்கு ஆரம்ப பிரகாச மதிப்பை சரிசெய்யவும் - • நிலையான .SRT வசன பதிவிறக்கங்கள் அனைத்து வரி இடைவெளிகளும் இல்லை - And சில ஆண்ட்ராய்டு 5 சாதனங்கள் CTF இணக்கமானவை அல்ல என்பதால் SD கார்டுக்கு நிலையான பதிவிறக்கம் தோல்வியடைகிறது - And ஆண்ட்ராய்டு Kitkat இல் நிலையான பதிவிறக்குதல் - • நிலையான ஊழல் வீடியோ .mp4 கோப்பு ஆடியோ கோப்பாக அங்கீகரிக்கப்பட்டுள்ளது - சீன மொழி குறியீடுகள் உட்பட பல உள்ளூர்மயமாக்கல் சிக்கல்கள் நிலையானவை - • [YouTube] விளக்கத்தில் உள்ள நேர முத்திரைகள் மீண்டும் சொடுக்கு செய்யக்கூடியவை +சரி செய்யப்பட்டது +• ஃபிக்ச்டு பிளேயர் மீண்டும் தொடங்கும், இருப்பினும் "மினிமைச் ஆன் ஆப் ஆப் ச்விட்ச்" விருப்பம் இயக்கப்பட்டு, நியூபைப் சிறிதாக்கப்பட்டால் அது இடைநிறுத்தப்பட்டது. +• சைகைக்கான ஆரம்ப பிரகாச மதிப்பை சரிசெய்யவும் +• நிலையான .srt வசனப் பதிவிறக்கங்கள் அனைத்து வரி முறிவுகளையும் கொண்டிருக்கவில்லை +• சில Android 5 சாதனங்கள் CTF இணங்காததால் SD கார்டில் நிலையான பதிவிறக்கம் தோல்வியடைந்தது +• ஆண்ட்ராய்டு KitKat இல் பதிவிறக்குவது நிலையானது +• நிலையான சிதைந்த வீடியோ .mp4 கோப்பு ஆடியோ கோப்பாக அங்கீகரிக்கப்படுகிறது +• தவறான சீன மொழி குறியீடுகள் உட்பட பல உள்ளூர்மயமாக்கல் சிக்கல்கள் சரி செய்யப்பட்டன +• [YouTube] விளக்கத்தில் உள்ள நேர முத்திரைகள் மீண்டும் சொடுக்கு செய்யலாம் diff --git a/fastlane/metadata/android/ta/changelogs/900.txt b/fastlane/metadata/android/ta/changelogs/900.txt index 5cd4788ddc6..d2e534eec47 100644 --- a/fastlane/metadata/android/ta/changelogs/900.txt +++ b/fastlane/metadata/android/ta/changelogs/900.txt @@ -1,14 +1,14 @@ -புதியது - • சந்தா குழுக்கள் மற்றும் வரிசைப்படுத்தப்பட்ட ஊட்டங்கள் - • வீரர்களில் முடக்கு பொத்தான் +புதியது +• சந்தா குழுக்கள் மற்றும் வரிசைப்படுத்தப்பட்ட ஊட்டங்கள் +• பிளேயர்களில் முடக்கு பொத்தான் - மேம்படுத்தப்பட்டது - Music இசை.youtube.com மற்றும் media.ccc.de இணைப்புகளை நியூபைப்பில் திறக்க அனுமதிக்கவும் - Settements தோற்றத்திலிருந்து உள்ளடக்கத்திற்கு இரண்டு அமைப்புகளை இடமாற்றம் செய்யுங்கள் - Seecediveditional 5, 15, 25 நொடி தேடு விருப்பங்களை மறைக்கவும். +மேம்படுத்தப்பட்டது +• NewPipe இல் music.youtube.com மற்றும் media.ccc.de இணைப்புகளைத் திறக்க அனுமதிக்கவும் +• தோற்றத்தில் இருந்து உள்ளடக்கத்திற்கு இரண்டு அமைப்புகளை மாற்றவும் +• inexact search இயக்கப்பட்டிருந்தால், 5, 15, 25 second தேடல் விருப்பங்களை மறை - சரி - விரலிடைத் தோல் சில வெப்எம் வீடியோக்கள் தேட முடியாது - And ஆண்ட்ராய்டில் தரவுத்தள காப்புப்பிரதி ப - பதிவிறக்கம் செய்யப்பட்ட கோப்பைப் பகிரும்போது செயலிழப்பு - You டன் யூடியூப் பிரித்தெடுத்தல் சிக்கல் மற்றும் பல ... +சரி செய்யப்பட்டது +• சில WebM வீடியோக்களை தேட முடியாது +• ஆண்ட்ராய்டு P இல் தரவுத்தள காப்புப்பிரதி +• பதிவிறக்கம் செய்யப்பட்ட கோப்பைப் பகிரும்போது செயலிழக்கும் +• டன் YouTube பிரித்தெடுத்தல் சிக்கல் மற்றும் பல ... diff --git a/fastlane/metadata/android/ta/changelogs/930.txt b/fastlane/metadata/android/ta/changelogs/930.txt index 7635500bd87..5cb7a842579 100644 --- a/fastlane/metadata/android/ta/changelogs/930.txt +++ b/fastlane/metadata/android/ta/changelogs/930.txt @@ -1,19 +1,19 @@ -புதியது - You யூடியூப் இசையில் தேடுங்கள் - And அடிப்படை ஆண்ட்ராய்டு டிவி ஆதரவு +புதியது +• YouTube Music இல் தேடவும் +• அடிப்படை ஆண்ட்ராய்டு TV உதவி - மேம்படுத்தப்பட்டது - அனைத்தும் உள்ளக பிளேலிச்ட்டிலிருந்து பார்த்த அனைத்து வீடியோக்களையும் அகற்றும் திறனைச் சேர்த்தது - Contence விபத்துக்கு பதிலாக உள்ளடக்கம் இன்னும் ஆதரிக்கப்படாதபோது செய்தியைக் காட்டு - Pop மேம்பட்ட பாப்அப் பிளேயர் பிஞ்ச் சைகைகளுடன் மறுஅளவிடுகிறது - Sananment சேனலில் பின்னணி மற்றும் பாப்அப் பொத்தான்களில் நீண்ட அழுத்தத்தில் உள்ள ச்ட்ரீம்கள் - Tra டிராயர் தலைப்பு தலைப்பின் மேம்பட்ட அளவு கையாளுதல் +மேம்படுத்தப்பட்டது +• உள்ளக பிளேலிச்ட்டில் இருந்து பார்த்த அனைத்து வீடியோக்களையும் அகற்றும் திறன் சேர்க்கப்பட்டது +• செயலிழப்பதற்குப் பதிலாக உள்ளடக்கம் இன்னும் ஆதரிக்கப்படாதபோது செய்தியைக் காட்டு +• பிஞ்ச் சைகைகள் மூலம் மேம்படுத்தப்பட்ட மேல்தோன்றல் பிளேயர் அளவு +• சேனலில் பின்னணி மற்றும் மேல்தோன்றல் பொத்தான்களில் நீண்ட நேரம் அழுத்தினால் ச்ட்ரீம்களை என்கியூவில் வைக்கவும் +• டிராயர் எடர் தலைப்பின் மேம்படுத்தப்பட்ட அளவு கையாளுதல் - சரி - Age நிலையான அகவை தடைசெய்யப்பட்ட உள்ளடக்க அமைப்பு செயல்படவில்லை - • சில வகையான ரெக்காப்டாக்கள் சரி செய்யப்பட்டன - B புக்மார்க்குகளைத் திறக்கும்போது நிலையான செயலிழப்பு பிளேலிச்ட் `NULL` - பிணையம் பிணையம் தொடர்பான விதிவிலக்குகளின் நிலையான கண்டறிதல் - Sub சந்தாக்கள் துண்டில் குழு வரிசை பொத்தானின் நிலையான தெரிவுநிலை +சரி செய்யப்பட்டது +• நிர்ணயிக்கப்பட்ட அகவை வரம்பிடப்பட்ட உள்ளடக்க அமைப்பு வேலை செய்யவில்லை +• குறிப்பிட்ட வகையான reCAPTCHAகள் சரி செய்யப்பட்டன +• பிளேலிச்ட் `பூச்யமாக' இருக்கும் போது புக்மார்க்குகளைத் திறக்கும்போது நிலையான செயலிழப்பு +• பிணையம் தொடர்பான விதிவிலக்குகளை நிலையான கண்டறிதல் +• சந்தாத் துண்டில் குழு வரிசை பட்டனின் நிலையான தெரிவுநிலை - மேலும் +மேலும் diff --git a/fastlane/metadata/android/ta/changelogs/940.txt b/fastlane/metadata/android/ta/changelogs/940.txt index 738a70d1b71..cea749c098c 100644 --- a/fastlane/metadata/android/ta/changelogs/940.txt +++ b/fastlane/metadata/android/ta/changelogs/940.txt @@ -1,16 +1,16 @@ -புதியது - Chound சவுண்ட்க்ளூட் கருத்துகளுக்கான ஆதரவைச் சேர்க்கவும் - You யூடியூப் தடைசெய்யப்பட்ட பயன்முறை அமைப்பைச் சேர்க்கவும் - The Peretube பெற்றோர் சேனல் விவரங்களைக் காட்டு +புதியது +• SoundCloud கருத்துகளுக்கான ஆதரவைச் சேர்க்கவும் +• YouTube கட்டுப்படுத்தப்பட்ட பயன்முறை அமைப்பைச் சேர்க்கவும் +• PeerTube பெற்றோர் சேனல் விவரங்களைக் காட்டு - மேம்படுத்தப்பட்டது - Surects உதவி சேவைகளுக்கு மட்டுமே கோர் பொத்தானைக் காட்டு - Navigational வழிசெலுத்தல் பார் அல்லது ச்டேட்டச்பாரில் தொடங்கும் பிளேயர் சைகைகள் - Retry பணி வண்ணத்தின் அடிப்படையில் மீண்டும் மீண்டும் மாற்றவும் மற்றும் குழுசேர் பொத்தான்கள் பின்னணி வண்ணம் +மேம்படுத்தப்பட்டது +• ஆதரிக்கப்படும் சேவைகளுக்கு மட்டும் கோர் பட்டனைக் காட்டு +• NavigationBar அல்லது StatusBar இல் தொடங்கும் பிளேயர் சைகைகளைத் தடுக்கவும் +• பணி நிறத்தின் அடிப்படையில் மீண்டும் முயற்சிக்கவும் & குழுசேரவும் பொத்தான்களின் பின்னணி நிறத்தை மாற்றவும் - சரி - The பதிவிறக்கம் உரையாடல் முடக்கம் சரிசெய்யவும் - • உலாவி பொத்தானைத் திறக்கவும் இப்போது உலாவியில் உண்மையில் திறக்கிறது - வீடியோக்களைத் திறப்பதில் விபத்தை சரிசெய்யவும், "இந்த ச்ட்ரீமை இயக்க முடியவில்லை" +சரி செய்யப்பட்டது +• பதிவிறக்க உரையாடல் முடக்கத்தை சரிசெய்யவும் +• உலாவியில் திற பொத்தான் இப்போது உண்மையில் உலாவியில் திறக்கும் +• வீடியோக்களைத் திறப்பதில் ஏற்படும் செயலிழப்பு மற்றும் "இந்த ச்ட்ரீமை இயக்க முடியவில்லை" - மேலும் +மேலும் diff --git a/fastlane/metadata/android/ta/changelogs/951.txt b/fastlane/metadata/android/ta/changelogs/951.txt index 5059ce78a94..edb9c6c74a7 100644 --- a/fastlane/metadata/android/ta/changelogs/951.txt +++ b/fastlane/metadata/android/ta/changelogs/951.txt @@ -1,17 +1,17 @@ -புதியது - குழு ஊட்டக் குழு உரையாடலில் சந்தா தேர்வாளருக்கான தேடலைச் சேர்க்கவும் - குழு குழுவாகக் காட்ட ஊட்டக் குழு உரையாடலில் வடிகட்டியைச் சேர்க்கவும் - Page முதன்மையான பக்கத்தில் பிளேலிச்ட் தாவலைச் சேர்க்கவும் - Pact பின்னணி/பாப்-அப் பிளேயர் வரிசையில் வேகமாக முன்னோக்கி/முன்னாடி - தேடல் தேடல் ஆலோசனையைக் காண்பி: நீங்கள் சொல்வது மற்றும் முடிவைக் காட்டினீர்களா? +புதியது +• ஊட்டக் குழு உரையாடலில் சந்தா தேர்விக்கான தேடலைச் சேர்க்கவும் +• தொகுக்கப்படாத சந்தாக்களை மட்டும் காட்ட ஊட்டக் குழு உரையாடலில் வடிப்பானைச் சேர்க்கவும் +• முதன்மைப் பக்கத்தில் பிளேலிச்ட் தாவலைச் சேர்க்கவும் +• பின்னணி/பாப்-அப் பிளேயர் வரிசையில் வேகமாக முன்னோக்கி/ரீவைண்ட் +• தேடல் பரிந்துரையைக் காட்டு: அதற்கான முடிவைக் காட்டுகிறீர்களா? - மேம்படுத்தப்பட்டது - Application மக்சட் கோப்புகளில் பயன்பாட்டு மெட்டாடேட்டாவை எழுதுவதை விடுங்கள் - தோல்வியுற்ற நீரோடைகளை வரிசையில் இருந்து அகற்ற வேண்டாம் - பெறுநர் கருவிப்பட்டி வண்ணத்துடன் பொருந்தக்கூடிய நிலை பட்டி வண்ணத்தைப் புதுப்பிக்கவும் +மேம்படுத்தப்பட்டது +• கலவையான கோப்புகளில் பயன்பாட்டு மெட்டாடேட்டாவை எழுதுவதை கைவிடவும் +• தோல்வியுற்ற ச்ட்ரீம்களை வரிசையில் இருந்து அகற்ற வேண்டாம் +• கருவிப்பட்டியின் நிறத்துடன் பொருந்த, நிலைப் பட்டியின் நிறத்தைப் புதுப்பிக்கவும் - சரி - • மிதக்கும் புள்ளி ஒட்டுமொத்த பிழைகள் காரணமாக நிலையான ஆடியோ/வீடியோ டிசின்க் - • [PEERTUBE] நீக்கப்பட்ட கருத்துகளைக் கையாளவும் +சரி செய்யப்பட்டது +• ஃப்ளோட்டிங் பாயின்ட் க்யூமுலேட்டிவ் பிழைகளால் ஏற்படும் நிலையான ஆடியோ/வீடியோ ஒத்திசைவு +• [PeerTube] நீக்கப்பட்ட கருத்துகளைக் கையாளவும் - மேலும் +மேலும் diff --git a/fastlane/metadata/android/ta/changelogs/954.txt b/fastlane/metadata/android/ta/changelogs/954.txt index 5943b457e34..c902e7a5b89 100644 --- a/fastlane/metadata/android/ta/changelogs/954.txt +++ b/fastlane/metadata/android/ta/changelogs/954.txt @@ -1,9 +1,9 @@ -Applic புதிய பயன்பாட்டு பணிப்பாய்வு: விவரம் பக்கத்தில் வீடியோக்களை இயக்கவும், பிளேயரைக் குறைக்க ச்வைப் செய்யவும் - • மீடியாச்டைல் அறிவிப்புகள்: அறிவிப்புகள், செயல்திறன் மேம்பாடுகள் ஆகியவற்றில் தனிப்பயனாக்கக்கூடிய செயல்கள் - பூச்சி டெச்க்டாப் பயன்பாடாக நியூபிப்பைப் பயன்படுத்தும் போது அடிப்படை மறுஅளவிடுதல் +• புதிய பயன்பாட்டுப் பணிப்பாய்வு: விவரப் பக்கத்தில் வீடியோக்களை இயக்கவும், பிளேயரைக் குறைக்க கீழே ச்வைப் செய்யவும் +• MediaStyle அறிவிப்புகள்: அறிவிப்புகளில் தனிப்பயனாக்கக்கூடிய செயல்கள், செயல்திறன் மேம்பாடுகள் +• டெச்க்டாப் பயன்பாடாக NewPipe ஐப் பயன்படுத்தும் போது அடிப்படை மறுஅளவிடுதல் - ஆதரிக்கப்படாத முகவரி சிற்றுண்டி விசயத்தில் திறந்த விருப்பங்களுடன் உரையாடலைக் காட்டு - Re தொலைதூரங்களை பெற முடியாதபோது தேடல் பரிந்துரை அனுபவத்தை மேம்படுத்தவும் - இயல்புநிலை இயல்புநிலை வீடியோ தகுதி 720p60 (பயன்பாட்டில் உள்ள பிளேயர்) மற்றும் 480p (பாப்-அப் பிளேயர்) ஆக அதிகரித்தது +• ஆதரிக்கப்படாத URL டோச்ட்டின் போது திறந்த விருப்பங்களுடன் உரையாடலைக் காட்டு +• தொலைவில் உள்ளவற்றைப் பெற முடியாதபோது, தேடல் பரிந்துரை அனுபவத்தை மேம்படுத்தவும் +• இயல்புநிலை வீடியோ தகுதி 720p60 (இன்-ஆப் பிளேயர்) மற்றும் 480p (பாப்-அப் பிளேயர்) ஆக அதிகரிக்கப்பட்டது - • டன் பிழை திருத்தங்கள் மற்றும் பல +• பல பிழை திருத்தங்கள் மற்றும் பல diff --git a/fastlane/metadata/android/ta/changelogs/957.txt b/fastlane/metadata/android/ta/changelogs/957.txt index 3b4c1ea7e2b..c9e57658dd9 100644 --- a/fastlane/metadata/android/ta/changelogs/957.txt +++ b/fastlane/metadata/android/ta/changelogs/957.txt @@ -1,10 +1,10 @@ -என் குறிப்பிட்ட enqueue செயல்களை ஒன்றில் ஒன்றிணைக்கவும் - Player வீரரை மூடி இரண்டு விரல் சைகை - Rec ரெகாப்ட்சா குக்கீகளை அழிக்க அனுமதிக்கவும் - அறிவிப்பை வண்ணமயமாக்காத விருப்பம் - புதிய நியூபைப் மற்றும் பிற முரண்பாடுகளைப் பகிரும்போது எல்லையற்ற இடையக, தரமற்ற நடத்தை ஆகியவற்றை சரிசெய்ய வீடியோ விவரங்கள் எவ்வாறு திறக்கப்படுகின்றன என்பதை மேம்படுத்தவும் - You யூடியூப் வீடியோக்களை விரைவுபடுத்தி, அகவை தடைசெய்யப்பட்டவற்றை சரிசெய்யவும் - Ford வேகமான முன்னோக்கி/முன்னோடிகளில் செயலிழப்பை சரிசெய்யவும் - Promang சிறு உருவங்களை இழுப்பதன் மூலம் பட்டியல்களை மறுசீரமைக்க வேண்டாம் - Pop எப்போதும் பாப்அப் பண்புகளை நினைவில் கொள்ளுங்கள் - Sandandali மொழியைச் சேர்க்கவும் +• குறிப்பிட்ட வரிசை செயல்களை ஒன்றாக இணைக்கவும் +• பிளேயரை மூட இரண்டு விரல் சைகை +• reCAPTCHA குக்கீகளை அழிக்க அனுமதிக்கவும் +• அறிவிப்பை வண்ணமாக்காத விருப்பம் +• நியூபைப்பில் பகிரும் போது எல்லையற்ற பஃபரிங், தரமற்ற நடத்தை மற்றும் பிற முரண்பாடுகளை சரிசெய்ய வீடியோ விவரங்கள் எவ்வாறு திறக்கப்படுகின்றன என்பதை மேம்படுத்தவும் +• YouTube வீடியோக்களை விரைவுபடுத்துங்கள் மற்றும் அகவை வரம்புக்குட்பட்டவற்றை சரிசெய்யவும் +• வேகமாக முன்னோக்கி/முன்னோக்கிச் செல்லும் போது செயலிழப்பை சரிசெய்யவும் +• சிறுபடங்களை இழுத்து பட்டியல்களை மறுசீரமைக்க வேண்டாம் +• மேல்தோன்றல் பண்புகளை எப்போதும் நினைவில் கொள்ளுங்கள் +• சந்தாலி மொழியைச் சேர்க்கவும் diff --git a/fastlane/metadata/android/ta/changelogs/958.txt b/fastlane/metadata/android/ta/changelogs/958.txt index 6d9b9e041ea..71f673627f9 100644 --- a/fastlane/metadata/android/ta/changelogs/958.txt +++ b/fastlane/metadata/android/ta/changelogs/958.txt @@ -1,15 +1,15 @@ -புதிய மற்றும் மேம்பட்ட: - The பூட்டுத் திரையில் சிறுபடத்தை மறைக்க மீண்டும் சேர்க்கப்பட்ட விருப்பம் - தீவனம் தீவனத்தை புதுப்பிக்க இழுக்கவும் - Lical உள்ளக பட்டியல்களைப் பெறும்போது மேம்பட்ட செயல்திறன் +புதியது மற்றும் மேம்படுத்தப்பட்டது: +• பூட்டுத் திரையில் சிறுபடத்தை மறைக்க விருப்பம் மீண்டும் சேர்க்கப்பட்டது +• ஊட்டத்தைப் புதுப்பிக்க இழுக்கவும் +• உள்ளக பட்டியல்களைப் பெறும்போது மேம்படுத்தப்பட்ட செயல்திறன் - சரி: - Bipe நியூபைப் ராமில் இருந்து அகற்றப்பட்ட பிறகு அதைத் தொடங்கும்போது நிலையான செயலிழப்பு - இணைய இணைப்பு இல்லாதபோது தொடக்கத்தில் நிலையான செயலிழப்பு - • நிலையான மரியாதைக்குரிய பிரகாசம்- மற்றும் தொகுதி-குறிப்பிட்ட அமைப்புகள் - • [YouTube] நிலையான நீண்ட பிளேலிச்ட்கள் +சரி செய்யப்பட்டது: +• RAM இலிருந்து அகற்றப்பட்ட பிறகு NewPipe ஐத் தொடங்கும் போது நிலையான செயலிழப்பு +• இணைய இணைப்பு இல்லாதபோது தொடக்கத்தில் நிலையான செயலிழப்பு +• ஒளி மற்றும் வால்யூம் சைகை அமைப்புகளைப் பொறுத்து சரி செய்யப்பட்டது +• [YouTube] நிலையான நீண்ட பிளேலிச்ட்கள் - மற்றவை: - • குறியீடு தூய்மைப்படுத்தல் மற்றும் பல உள் மேம்பாடுகள் - • சார்பு புதுப்பிப்புகள் - • மொழிபெயர்ப்பு புதுப்பிப்புகள் +மற்றவை: +• குறியீடு தூய்மை மற்றும் பல உள் மேம்பாடுகள் +• சார்பு மேம்படுத்தல்கள் +• மொழிபெயர்ப்பு புதுப்பிப்புகள் diff --git a/fastlane/metadata/android/ta/changelogs/964.txt b/fastlane/metadata/android/ta/changelogs/964.txt index da068f948e8..be6de6f0615 100644 --- a/fastlane/metadata/android/ta/changelogs/964.txt +++ b/fastlane/metadata/android/ta/changelogs/964.txt @@ -1,8 +1,8 @@ -Player பிளேயர் கட்டுப்பாடுகளில் அத்தியாயங்களுக்கான உதவி சேர்க்கப்பட்டது - • [PEERTUBE] செபியா தேடலைச் சேர்த்தது - Wideed வீடியோ விவரம் பார்வையில் மீண்டும் சேர்க்கப்பட்ட பகிர்வு பொத்தானை மற்றும் ச்ட்ரீம் விளக்கத்தை தாவல் தளவமைப்பில் நகர்த்தியது - • ஒளி சைகை முடக்கப்பட்டிருந்தால் பிரகாசத்தை மீட்டெடுப்பதை முடக்கு - கோடியில் வீடியோவை இயக்க பட்டியல் உருப்படியைச் சேர்த்தது - Star சில சாதனங்களில் இயல்புநிலை உலாவி அமைக்கப்படும்போது நிலையான செயலிழப்பு மற்றும் பங்கு உரையாடல்களை மேம்படுத்தவும் - Full முழு அளவிலான பிளேயரில் வன்பொருள் விண்வெளி பொத்தானைக் கொண்டு நாடகம்/இடைநிறுத்துங்கள் - • [Media.ccc.de] பல்வேறு திருத்தங்கள் மற்றும் மேம்பாடுகள் +• பிளேயர் கட்டுப்பாடுகளில் அத்தியாயங்களுக்கான உதவி சேர்க்கப்பட்டது +• [PeerTube] Sepia தேடல் சேர்க்கப்பட்டது +• வீடியோ விவரக் காட்சியில் பகிர்வு பொத்தான் மீண்டும் சேர்க்கப்பட்டு, தாவல் தளவமைப்பிற்கு ச்ட்ரீம் விளக்கம் நகர்த்தப்பட்டது +• ஒளி சைகை முடக்கப்பட்டிருந்தால், பிரகாசத்தை மீட்டெடுப்பதை முடக்கவும் +• கோடியில் வீடியோவை இயக்க பட்டியல் உருப்படி சேர்க்கப்பட்டது +• சில சாதனங்களில் இயல்புநிலை உலாவி அமைக்கப்படாதபோது நிலையான செயலிழப்பு மற்றும் பகிர்வு உரையாடல்களை மேம்படுத்தலாம் +• முழுத்திரை பிளேயரில் ஆர்டுவேர் ச்பேச் பட்டன் மூலம் பிளே/இடைநிறுத்தத்தை நிலைமாற்று +• [media.ccc.de] பல்வேறு திருத்தங்கள் மற்றும் மேம்பாடுகள் diff --git a/fastlane/metadata/android/ta/changelogs/966.txt b/fastlane/metadata/android/ta/changelogs/966.txt index e7f22ff4411..6e1ca232244 100644 --- a/fastlane/metadata/android/ta/changelogs/966.txt +++ b/fastlane/metadata/android/ta/changelogs/966.txt @@ -1,14 +1,14 @@ -புதியது: - பணி ஒரு புதிய சேவையைச் சேர்க்கவும்: பேண்ட்கேம்ப் +புதிய: +• புதிய சேவையைச் சேர்க்கவும்: Bandcamp - மேம்படுத்தப்பட்டது: - பயன்பாடு பயன்பாட்டைப் பெற ஒரு விருப்பத்தைச் சேர்க்கவும் சாதனத்தின் கருப்பொருளைப் பின்தொடரவும் - Ever மேம்பட்ட பிழை பேனலைக் காண்பிப்பதன் மூலம் சில செயலிழப்புகளைத் தடுக்கவும் - Contentance கிடைக்காத உள்ளடக்கம் ஏன் பற்றிய கூடுதல் தகவலைக் காட்டுங்கள் - • வன்பொருள் விண்வெளி பொத்தான் விளையாட்டு/இடைநிறுத்தத்தைத் தூண்டுகிறது - பெறுநர் சிற்றுண்டி "பதிவிறக்கம்" சிற்றுண்டியைக் காட்டு +மேம்படுத்தப்பட்டது: +• சாதனத்தின் கருப்பொருளை ஆப்சைப் பின்பற்றுவதற்கான விருப்பத்தைச் சேர்க்கவும் +• மேம்படுத்தப்பட்ட பிழை பேனலைக் காண்பிப்பதன் மூலம் சில செயலிழப்புகளைத் தடுக்கவும் +• உள்ளடக்கம் ஏன் கிடைக்கவில்லை என்பது பற்றிய கூடுதல் தகவலைக் காட்டு +• ஆர்டுவேர் ச்பேச் பட்டன் பிளே/இடைநிறுத்தத்தை தூண்டுகிறது +• "பதிவிறக்கம் தொடங்கியது" டோச்ட்டைக் காட்டு - சரி: - The பின்னணியில் விளையாடும்போது வீடியோ விவரங்களில் மிகச் சிறிய சிறுபடத்தை சரிசெய்யவும் - The குறைக்கப்பட்ட பிளேயரில் வெற்று தலைப்பை சரிசெய்யவும் - Rest கடைசி மறுசீரமைப்பு பயன்முறையை சரியாக மீட்டெடுக்கவில்லை +சரி செய்யப்பட்டது: +• பின்னணியில் விளையாடும் போது வீடியோ விவரங்களில் மிகச் சிறிய சிறுபடத்தைச் சரிசெய்யவும் +• குறைக்கப்பட்ட பிளேயரில் வெற்று தலைப்பை சரிசெய்யவும் +• சரியாக மீட்டெடுக்கப்படாத கடைசி மறுஅளவிடுதல் பயன்முறையைச் சரிசெய்யவும் diff --git a/fastlane/metadata/android/ta/changelogs/969.txt b/fastlane/metadata/android/ta/changelogs/969.txt index 93e0a695db2..e1496df7c16 100644 --- a/fastlane/metadata/android/ta/changelogs/969.txt +++ b/fastlane/metadata/android/ta/changelogs/969.txt @@ -1,8 +1,8 @@ -Storage வெளிப்புற சேமிப்பகத்தில் நிறுவலை அனுமதிக்கவும் - • [பேண்ட்கேம்ப்] முதல் மூன்று கருத்துகளை ச்ட்ரீமில் காண்பிப்பதற்கான ஆதரவைச் சேர்த்தது - பதிவிறக்கம் பதிவிறக்கம் தொடங்கும் போது 'பதிவிறக்கம் தொடங்கியது' சிற்றுண்டியைக் காட்டுங்கள் - Cook குக்கீ சேமிக்கப்படாதபோது ரெக்காப்ட்சா குக்கீயை அமைக்க வேண்டாம் - • [பிளேயர்] கேச் செயல்திறனை மேம்படுத்தவும் - • [பிளேயர்] நிலையான பிளேயர் தானாகவே விளையாடுவதில்லை - பதிவிறக்கம் பதிவிறக்கங்களை நீக்கும்போது முந்தைய சிற்றுண்டிகளை நிராகரிக்கவும் - • பட்டியலில் இல்லாத பொருளை நீக்க முயற்சித்தது +• வெளிப்புற சேமிப்பகத்தில் நிறுவலை அனுமதிக்கவும் +• [Bandcamp] ச்ட்ரீமில் முதல் மூன்று கருத்துகளைக் காண்பிப்பதற்கான உதவி சேர்க்கப்பட்டது +• பதிவிறக்கம் தொடங்கும் போது 'பதிவிறக்கம் தொடங்கியது' டோச்ட்டை மட்டும் காட்டவும் +• குக்கீகள் சேமிக்கப்படாதபோது reCaptcha குக்கீயை அமைக்க வேண்டாம் +• [பிளேயர்] கேச் செயல்திறனை மேம்படுத்தவும் +• [பிளேயர்] நிலையான பிளேயர் தானாகவே விளையாடுவதில்லை +• பதிவிறக்கங்களை நீக்கும் போது முந்தைய ச்நாக்பார்களை நிராகரிக்கவும் +• பட்டியலில் இல்லாத பொருளை நீக்க முயற்சிப்பது சரி செய்யப்பட்டது diff --git a/fastlane/metadata/android/ta/changelogs/970.txt b/fastlane/metadata/android/ta/changelogs/970.txt index 6db5c681014..c3b3e414742 100644 --- a/fastlane/metadata/android/ta/changelogs/970.txt +++ b/fastlane/metadata/android/ta/changelogs/970.txt @@ -1,11 +1,11 @@ -புதியது - Met உள்ளடக்க மெட்டாடேட்டாவைக் காண்பி (குறிச்சொற்கள், வகைகள், உரிமம், ...) விளக்கத்திற்கு கீழே - (தொலைநிலை (உள்ளூர் அல்லாத) பிளேலிச்ட்களில் "சேனல் விவரங்களைக் காட்டு" விருப்பத்தை சேர்த்தது - Lang நீண்ட அழுத்த பட்டியலில் "உலாவியில் திறக்கவும்" விருப்பத்தை சேர்க்கவும் +புதியது +• விளக்கத்திற்குக் கீழே உள்ளடக்க மெட்டாடேட்டாவை (குறிச்சொற்கள், வகைகள், உரிமம், ...) காட்டு +• ரிமோட் (உள்ளூர் அல்லாத) பிளேலிச்ட்களில் "சேனல் விவரங்களைக் காட்டு" விருப்பம் சேர்க்கப்பட்டது +• பட்டியலில் "உலாவியில் திற" விருப்பம் சேர்க்கப்பட்டது - சரி - ஒளிதோற்றம் வீடியோ விவரம் பக்கத்தில் நிலையான சுழற்சி செயலிழப்பு - • நிலையான "கோடி உடன் விளையாடுங்கள்" பொத்தானை பிளேயரில் எப்போதும் கோரை நிறுவத் தூண்டுகிறது - • நிலையான மற்றும் மேம்படுத்தப்பட்ட அமைப்பு இறக்குமதி மற்றும் ஏற்றுமதி பாதைகள் - • [YouTube] எண்ணிக்கை போன்ற நிலையான கருத்து - மேலும் பல +சரி செய்யப்பட்டது +• வீடியோ விவரம் பக்கத்தில் நிலையான சுழற்சி செயலிழப்பு +• பிளேயரில் நிலையான "கோடியுடன் விளையாடு" பொத்தான் எப்போதும் கோரை நிறுவும்படி கேட்கும் +• நிலையான மற்றும் மேம்படுத்தப்பட்ட அமைப்பு இறக்குமதி மற்றும் ஏற்றுமதி பாதைகள் +• [YouTube] எண்ணிக்கை போன்ற நிலையான கருத்து +மேலும் பல diff --git a/fastlane/metadata/android/ta/changelogs/972.txt b/fastlane/metadata/android/ta/changelogs/972.txt index e89986f6a99..30f6ef86f44 100644 --- a/fastlane/metadata/android/ta/changelogs/972.txt +++ b/fastlane/metadata/android/ta/changelogs/972.txt @@ -1,14 +1,14 @@ -புதியது - நேர முத்திரைகள் மற்றும் ஏச்டேக்குகளை விளக்கத்தில் அங்கீகரிக்கவும் - கையேடு டேப்லெட் பயன்முறை அமைப்பு சேர்க்கப்பட்டது - ஒரு ஊட்டத்தில் விளையாடிய பொருட்களை மறைக்கும் திறன் சேர்க்கப்பட்டது +புதியது +விளக்கத்தில் நேர முத்திரைகள் மற்றும் ஏச்டேக்குகளை அங்கீகரிக்கவும் +கைமுறை டேப்லெட் பயன்முறை அமைப்பு சேர்க்கப்பட்டது +விளையாடிய பொருட்களை ஊட்டத்தில் மறைக்கும் திறன் சேர்க்கப்பட்டது - மேம்படுத்தப்பட்டது - சேமிப்பக அணுகல் கட்டமைப்பை சரியாக ஆதரிக்கவும் - கிடைக்காத மற்றும் நிறுத்தப்பட்ட சேனல்களின் சிறந்த பிழை - ஆண்ட்ராய்டு 10+ பயனர்களுக்கான ஆண்ட்ராய்டு பகிர்வு தாள் இப்போது உள்ளடக்க தலைப்பைக் காட்டுகிறது. - புதுப்பிக்கப்பட்ட நிகழ்வுகள் மற்றும் குழாய் இணைப்புகளை ஆதரிக்கின்றன. +மேம்படுத்தப்பட்டது +சேமிப்பக அணுகல் கட்டமைப்பை சரியாக ஆதரிக்கவும் +கிடைக்காத மற்றும் நிறுத்தப்பட்ட சேனல்களின் சிறந்த பிழை கையாளுதல் +Android 10+ பயனர்களுக்கான ஆண்ட்ராய்டு பகிர்வுத் தாள் இப்போது உள்ளடக்கத் தலைப்பைக் காட்டுகிறது. +இன்வைடியச் நிகழ்வுகள் மற்றும் உதவி பைப் இணைப்புகள் புதுப்பிக்கப்பட்டன. - சரி - [YouTube] அகவை தடைசெய்யப்பட்ட உள்ளடக்கம் - தேர்வு உரையாடலைத் திறக்கும்போது கசிந்த சாளர விதிவிலக்கைத் தடுக்கவும் +சரி செய்யப்பட்டது +[YouTube] அகவை வரம்பிடப்பட்ட உள்ளடக்கம் +தேர்வு உரையாடலைத் திறக்கும்போது கசிந்த சாளர விதிவிலக்கைத் தடுக்கவும் diff --git a/fastlane/metadata/android/ta/changelogs/975.txt b/fastlane/metadata/android/ta/changelogs/975.txt index 30cef49657a..fa19c8dbc61 100644 --- a/fastlane/metadata/android/ta/changelogs/975.txt +++ b/fastlane/metadata/android/ta/changelogs/975.txt @@ -1,17 +1,17 @@ -புதியது - Sting தேடும் போது சிறு முன்னோட்டத்தைக் காட்டு - Abable ஊனமுற்ற கருத்துகளைக் கண்டறிதல் - தீவனம் பார்த்தபடி தீவன உருப்படியைக் குறிக்க அனுமதிக்கவும் - The கருத்து இதயங்களைக் காட்டு +புதியது +• தேடும் போது சிறுபட மாதிரிக்காட்சியைக் காட்டு +• முடக்கப்பட்ட கருத்துகளைக் கண்டறியவும் +• ஊட்டப் பொருளைப் பார்த்ததாகக் குறிக்க அனுமதிக்கவும் +• கருத்து இதயங்களைக் காட்டு - மேம்படுத்தப்பட்டது - Met மேனிலை தரவு மற்றும் குறிச்சொற்கள் தளவமைப்பை மேம்படுத்தவும் - உ இடைமுகம் கூறுகளுக்கு பணி வண்ணத்தைப் பயன்படுத்துங்கள் +மேம்படுத்தப்பட்டது +• மேனிலை தரவு மற்றும் குறிச்சொற்களின் தளவமைப்பை மேம்படுத்தவும் +• இடைமுகம் கூறுகளுக்கு பணி வண்ணத்தைப் பயன்படுத்துங்கள் - சரி - Min மினி பிளேயரில் சிறு உருவத்தை சரிசெய்யவும் - The நகல் வரிசை உருப்படிகளில் முடிவற்ற இடையகத்தை சரிசெய்யவும் - Player சில பிளேயர் சுழற்சி மற்றும் வேகமாக மூடுவது போன்ற திருத்தங்கள் - • பின்னணியில் ஏற்றப்பட்ட மீதமுள்ள ரெக்காப்ட்சாவை சரிசெய்யவும் - தீவனம் ஊட்டத்தை புதுப்பிக்கும்போது கிளிக்குகளை முடக்கு - பதிவிறக்கம் சில பதிவிறக்க செயலிழப்புகளை சரிசெய்யவும் +சரி செய்யப்பட்டது +• மினி பிளேயரில் சிறுபடத்தை சரிசெய்யவும் +• நகல் வரிசை உருப்படிகளில் முடிவற்ற இடையகத்தை சரிசெய்யவும் +• சுழற்சி மற்றும் வேகமாக மூடுவது போன்ற சில பிளேயர் திருத்தங்கள் +• பின்னணியில் மீதமுள்ள ReCAPTCHA ஐ சரிசெய்யவும் +• ஊட்டத்தைப் புதுப்பிக்கும்போது கிளிக்குகளை முடக்கவும் +• சில டவுன்லோடர் செயலிழப்புகளை சரிசெய்யவும் diff --git a/fastlane/metadata/android/ta/changelogs/976.txt b/fastlane/metadata/android/ta/changelogs/976.txt index fa27c4036f9..d6644fea812 100644 --- a/fastlane/metadata/android/ta/changelogs/976.txt +++ b/fastlane/metadata/android/ta/changelogs/976.txt @@ -1,10 +1,10 @@ -Full முழு திரையில் நேரடியாக பிளேயரைத் திறக்க விருப்பம் சேர்க்கப்பட்டது - தேடல் எந்த வகையான தேடல் பரிந்துரைகளைக் காட்ட வேண்டும் என்பதைத் தேர்ந்தெடுக்க அனுமதிக்கவும் - • இருண்ட கருப்பொருள் இப்போது இருண்ட + இருண்ட ச்பிளாச் திரை சேர்க்கப்பட்டது - Un தேவையற்ற கோப்புகளை சாம்பல் நிறமாக்குவதற்கு மேம்படுத்தப்பட்ட கோப்பு பிக்கர் - You நிலையான இறக்குமதி YouTube சந்தாக்கள் - • ச்ட்ரீம் மீண்டும் இயக்க மீண்டும் மறுதொடக்கம் பொத்தானைத் தட்டவும் தேவைப்படுகிறது - Auldion நிலையான இறுதி ஆடியோ அமர்வு - • [Android TV] DPAD ஐப் பயன்படுத்தும் போது நிலையான நீண்ட சீக்பார் தாவல்கள் +• பிளேயரை முழுத்திரையில் நேரடியாகத் திறக்க விருப்பம் சேர்க்கப்பட்டது +• எந்த வகையான தேடல் பரிந்துரைகளைக் காட்ட வேண்டும் என்பதைத் தேர்ந்தெடுக்க அனுமதிக்கவும் +• டார்க் கருப்பொருள் இப்போது டார்க் + டார்க் ச்பிளாச் திரை சேர்க்கப்பட்டது +• தேவையற்ற கோப்புகளை சாம்பல் நிறமாக்க மேம்படுத்தப்பட்ட கோப்பு தேர்வி +• YouTube சந்தாக்களை இறக்குமதி செய்வது சரி செய்யப்பட்டது +• ச்ட்ரீமை மீண்டும் இயக்க, ரீப்ளே பட்டனை மீண்டும் தட்ட வேண்டும் +• நிலையான நிறைவு ஆடியோ அமர்வு +• [Android TV] DPad ஐப் பயன்படுத்தும் போது நிலையான நீண்ட சீக்பார் சம்ப்கள் - மேலும் மாற்றங்களைக் காண, கீழேயுள்ள இணைப்புகள் தாவலில் இருந்து சேஞ்ச்லாக் (மற்றும் வலைப்பதிவு இடுகை) காண்க. +மேலும் மாற்றங்களைப் பார்க்க, கீழே உள்ள இணைப்புகள் தாவலில் இருந்து சேஞ்ச்லாக் (மற்றும் வலைப்பதிவு இடுகை) பார்க்கவும். diff --git a/fastlane/metadata/android/ta/changelogs/977.txt b/fastlane/metadata/android/ta/changelogs/977.txt index 9c4aba10fdf..3cc1a787329 100644 --- a/fastlane/metadata/android/ta/changelogs/977.txt +++ b/fastlane/metadata/android/ta/changelogs/977.txt @@ -1,10 +1,10 @@ -Press நீண்ட அழுத்த பட்டியலில் "அடுத்து விளையாடுங்கள்" பொத்தானைச் சேர்த்துள்ளார் - You நோக்கம் வடிப்பானில் யூடியூப் சார்ட்ச் பாதை முன்னொட்டு சேர்க்கப்பட்டது - • நிலையான அமைப்புகள் இறக்குமதி - The வரிசை திரையில் பிளேயர் பொத்தான்களுடன் ச்வாப் சீக்பார் நிலையை மாற்றவும் - Metiase மீடியாசெசன் மேனேசர் தொடர்பான பல்வேறு திருத்தங்கள் - Videed வீடியோ முடிவுக்குப் பிறகு நிலையான சீக்பார் முடிக்கப்படவில்லை - Re ரியல் டெக்டிவியில் மீடியா சுரங்கப்பாதை - • விரிவாக்கப்பட்ட குறைக்கப்பட்ட பிளேயர் பொத்தான்கள் சொடுக்கு செய்யக்கூடிய பகுதி +• நீண்ட அழுத்த பட்டியலில் "அடுத்து விளையாடு" பொத்தான் சேர்க்கப்பட்டது +• யூடியூப் சார்ட்ச் பாதை முன்னொட்டு இன்டென்ட் ஃபில்டரில் சேர்க்கப்பட்டது +• நிலையான அமைப்புகள் இறக்குமதி +• வரிசை திரையில் பிளேயர் பட்டன்களுடன் சீக்பார் நிலையை மாற்றவும் +• MediasessionManager தொடர்பான பல்வேறு திருத்தங்கள் +• வீடியோ முடிந்த பிறகு நிலையான சீக்பார் முடிக்கப்படவில்லை +• RealtekATV இல் முடக்கப்பட்ட மீடியா டன்னலிங் +• விரிவாக்கப்பட்ட குறைக்கப்பட்ட பிளேயர் பொத்தான்கள் சொடுக்கு செய்யக்கூடிய பகுதி - மேலும் மாற்றங்களைக் காண, கீழேயுள்ள இணைப்புகள் தாவலில் இருந்து சேஞ்ச்லாக் (மற்றும் வலைப்பதிவு இடுகை) காண்க. +மேலும் மாற்றங்களைப் பார்க்க, கீழே உள்ள இணைப்புகள் தாவலில் இருந்து சேஞ்ச்லாக் (மற்றும் வலைப்பதிவு இடுகை) பார்க்கவும். diff --git a/fastlane/metadata/android/ta/changelogs/980.txt b/fastlane/metadata/android/ta/changelogs/980.txt index 3c5d3864746..482d345f4e9 100644 --- a/fastlane/metadata/android/ta/changelogs/980.txt +++ b/fastlane/metadata/android/ta/changelogs/980.txt @@ -1,13 +1,13 @@ -புதியது - Men மெனுவைப் பகிர "பிளேலிச்ட்டில் சேர்" விருப்பத்தை சேர்க்கப்பட்டது - 2 Y2U.BE மற்றும் PEERTUBE குறுகிய இணைப்புகளுக்கான உதவி சேர்க்கப்பட்டது +புதியது +• மெனுவைப் பகிர "பிளேலிச்ட்டில் சேர்" விருப்பம் சேர்க்கப்பட்டது +• y2u.be மற்றும் PeerTube குறுகிய இணைப்புகளுக்கான உதவி சேர்க்கப்பட்டது - மேம்படுத்தப்பட்டது - Flaple பிளேபேக்-ச்பீட்-கட்டுப்பாடுகள் மிகவும் கச்சிதமானவை - • ஃபீட் இப்போது புதிய உருப்படிகளை எடுத்துக்காட்டுகிறது - • "பார்த்த உருப்படிகளைக் காட்டு" விருப்பம் இப்போது சேமிக்கப்படுகிறது +மேம்படுத்தப்பட்டது +• பிளேபேக்-வேக-கட்டுப்பாடுகள் மிகவும் கச்சிதமானவை +• தீவனம் இப்போது புதிய உருப்படிகளை முன்னிலைப்படுத்துகிறது +• ஊட்டத்தில் "பார்த்த பொருட்களைக் காட்டு" விருப்பம் இப்போது சேமிக்கப்பட்டது - சரி - You நிலையான YouTube லைக்குகள் மற்றும் பிரித்தெடுத்தல் ஆகியவற்றை விரும்புகிறது - The பின்னணியில் இருந்து திரும்பிய பிறகு நிலையான தானியங்கி மறுபதிப்பு - மேலும் பல +சரி செய்யப்பட்டது +• நிலையான YouTube விருப்பு வெறுப்புகள் பிரித்தெடுத்தல் +• பின்புலத்தில் இருந்து திரும்பிய பிறகு, தானியங்கி ரீப்ளே சரி செய்யப்பட்டது +மேலும் பல diff --git a/fastlane/metadata/android/ta/changelogs/983.txt b/fastlane/metadata/android/ta/changelogs/983.txt index e6093309609..46f1a6e3589 100644 --- a/fastlane/metadata/android/ta/changelogs/983.txt +++ b/fastlane/metadata/android/ta/changelogs/983.txt @@ -1,9 +1,9 @@ -புதிய இரட்டை-தட்டு-க்கு-தேடு இடைமுகம் மற்றும் நடத்தை சேர்க்கவும் - அமைப்புகளைத் தேடச் செய்யுங்கள் - பின் செய்யப்பட்ட கருத்துகளை முன்னிலைப்படுத்தவும் - FSFE இன் PEERTUBE நிகழ்வுக்கு திறந்த-பயன்பாட்டுடன் திறந்த நிலையில் சேர்க்கவும் - பிழை அறிவிப்புகளைச் சேர்க்கவும் - பிளேயர் மாற்றத்தில் முதல் வரிசை உருப்படியின் மறுபயன்பாட்டை சரிசெய்யவும் - தோல்வியுற்றதற்கு முன் லைவ்ச்ட்ரீம்களின் போது இடையகப்படுத்தும்போது அதிக நேரம் காத்திருங்கள் - உள்ளக தேடல் முடிவுகளின் வரிசையை சரிசெய்யவும் - விளையாட்டு வரிசையில் வெற்று உருப்படி புலங்களை சரிசெய்யவும் +புதிய இருமுறை தட்டுவதன் மூலம் தேடும் இடைமுகம் மற்றும் நடத்தையைச் சேர்க்கவும் +தேடக்கூடிய அமைப்புகளை உருவாக்கவும் +பின் செய்யப்பட்ட கருத்துகளை முன்னிலைப்படுத்தவும் +FSFE இன் PeerTube நிகழ்விற்கு திறந்த பயன்பாட்டு ஆதரவைச் சேர்க்கவும் +பிழை அறிவிப்புகளைச் சேர்க்கவும் +பிளேயரை மாற்றும்போது முதல் வரிசை உருப்படியை மீண்டும் இயக்குவதை சரிசெய்யவும் +லைவ்ச்ட்ரீம்களின் போது இடையீடு செய்யும் போது, தோல்வியடையும் முன் அதிக நேரம் காத்திருக்கவும் +உள்ளக தேடல் முடிவுகளின் வரிசையை சரிசெய்யவும் +விளையாட்டு வரிசையில் வெற்று உருப்படி புலங்களை சரிசெய்யவும் diff --git a/fastlane/metadata/android/ta/changelogs/984.txt b/fastlane/metadata/android/ta/changelogs/984.txt index f05c88884c4..86f73d14056 100644 --- a/fastlane/metadata/android/ta/changelogs/984.txt +++ b/fastlane/metadata/android/ta/changelogs/984.txt @@ -1,7 +1,7 @@ -முழு திரையையும் நிரப்பவும், டேப்லெட்டுகள் மற்றும் டிவிகளில் ச்க்ரோலிங் சரிசெய்யவும் போதுமான ஆரம்ப உருப்படிகளை பட்டியல்களில் ஏற்றவும் - பட்டியல்கள் மூலம் ச்க்ரோலிங் செய்யும் போது சீரற்ற செயலிழப்புகளை சரிசெய்யவும் - கணினி இடைமுகம் இன் கீழ் பிளேயர் விரைவாக மேலடுக்கு வளைவைத் தேடுங்கள் - மல்டி சாளரத்தில் விளையாடும்போது கட்அவுட்களில் மாற்றங்களை மாற்றவும், சில தொலைபேசிகளில் தவறாக இடம்பிடித்த வீரர் பின்னடைவை ஏற்படுத்துகிறது - CompileSDK ஐ 30 முதல் 31 வரை அதிகரிக்கவும் - பிழை அறிக்கையிடல் நூலகத்தைப் புதுப்பிக்கவும் - பிளேயரில் சில குறியீட்டை மறுபரிசீலனை செய்யுங்கள் +முழுத் திரையையும் நிரப்பவும், டேப்லெட்டுகள் மற்றும் டிவிகளில் ச்க்ரோலிங் செய்வதை சரிசெய்யவும் போதுமான ஆரம்ப உருப்படிகளை பட்டியல்களில் ஏற்றவும் +பட்டியல்கள் மூலம் ச்க்ரோலிங் செய்யும் போது சீரற்ற செயலிழப்புகளை சரிசெய்யவும் +பிளேயர் ஃபாச்ட் சீக் ஓவர்லே ஆர்க் சிச்டம் யுஐயின் கீழ் செல்ல வேண்டும் +மல்டி விண்டோவில் விளையாடும் போது கட்அவுட்களுக்கு மாற்றங்களை மாற்றவும், இதனால் சில ஃபோன்களில் பிளேயரின் தவறான பின்னடைவு ஏற்படுகிறது +compileSdk ஐ 30 இலிருந்து 31 ஆக அதிகரிக்கவும் +பிழை அறிக்கையிடல் நூலகத்தைப் புதுப்பிக்கவும் +பிளேயரில் சில குறியீட்டை மறுவடிவமைக்கவும் diff --git a/fastlane/metadata/android/ta/changelogs/986.txt b/fastlane/metadata/android/ta/changelogs/986.txt index 0ab07442f9b..8b73c2dfa2b 100644 --- a/fastlane/metadata/android/ta/changelogs/986.txt +++ b/fastlane/metadata/android/ta/changelogs/986.txt @@ -1,16 +1,16 @@ -புதியது - Streams புதிய ச்ட்ரீம்களுக்கான அறிவிப்புகள் - Procetion பின்னணி மற்றும் வீடியோ பிளேயர்களுக்கு இடையில் தடையற்ற மாற்றம் - சே செமிடோன்களால் சுருதியை மாற்றவும் - Player முக்கிய பிளேயர் வரிசையை பிளேலிச்ட்டில் சேர்க்கவும் +புதியது +• புதிய ச்ட்ரீம்களுக்கான அறிவிப்புகள் +• பின்னணி மற்றும் வீடியோ பிளேயர்களுக்கு இடையே தடையற்ற மாற்றம் +• செமிடோன்கள் மூலம் சுருதியை மாற்றவும் +• பிளேலிச்ட்டில் முதன்மையான பிளேயர் வரிசையைச் சேர்க்கவும் - மேம்படுத்தப்பட்டது - விரைவு வேகம்/சுருதி படி அளவை நினைவில் கொள்ளுங்கள் - ஒளிதோற்றம் வீடியோ பிளேயரில் ஆரம்ப நீண்ட இடையகத்தைத் தணித்தல் - And ஆண்ட்ராய்டு டிவிக்கு பிளேயர் இடைமுகம் ஐ மேம்படுத்தவும் - பதிவிறக்கம் செய்யப்பட்ட அனைத்து கோப்புகளையும் நீக்குவதற்கு முன் உறுதிப்படுத்தவும் +மேம்படுத்தப்பட்டது +• வேகம்/சுருதி படி அளவை நினைவில் கொள்ளுங்கள் +• வீடியோ பிளேயரில் ஆரம்ப நீண்ட இடையகத்தைத் தணிக்கவும் +• ஆண்ட்ராய்டு TVக்கான பிளேயர் UIஐ மேம்படுத்தவும் +• பதிவிறக்கம் செய்யப்பட்ட அனைத்து கோப்புகளையும் நீக்கும் முன் உறுதிப்படுத்தவும் - சரி - ஊடகம் மீடியா பொத்தானை சரிசெய்யவும் பிளேயர் கட்டுப்பாடுகளை மறைக்கவில்லை - Player பிளேயர் வகை மாற்றத்தில் பிளேபேக் மீட்டமைப்பை சரிசெய்யவும் - Plale பிளேலிச்ட் உரையாடலை சுழற்றுவதை சரிசெய்யவும் +சரி செய்யப்பட்டது +• பிளேயர் கட்டுப்பாடுகளை மறைக்காத மீடியா பொத்தான்களை சரிசெய்யவும் +• பிளேயரின் வகை மாற்றத்தில் பிளேபேக் மீட்டமைப்பை சரிசெய்யவும் +• பிளேலிச்ட் உரையாடலைச் சுழற்றுவதைச் சரிசெய்யவும் diff --git a/fastlane/metadata/android/ta/changelogs/987.txt b/fastlane/metadata/android/ta/changelogs/987.txt index bad021dc255..9506125e33a 100644 --- a/fastlane/metadata/android/ta/changelogs/987.txt +++ b/fastlane/metadata/android/ta/changelogs/987.txt @@ -1,12 +1,12 @@ -புதியது - Provelive முற்போக்கான HTTP ஐத் தவிர வேறு உதவி விநியோக முறைகள்: வேகமான பின்னணி ஏற்றுதல் நேரம், PEERTUBE மற்றும் SoundCloud க்கான திருத்தங்கள், அண்மைக் காலத்தில் முடிவடைந்த யூடியூப் லைவ்ச்ட்ரீம்களின் பின்னணி - ரிமோட் பிளேலிச்ட்டை உள்ளக ஒன்றில் சேர்க்க பொத்தானைச் சேர்க்கவும் - And ஆண்ட்ராய்டு 10+ பகிர்வு தாளில் பட முன்னோட்டம் +புதியது +• முற்போக்கான HTTPயைத் தவிர வேறு டெலிவரி முறைகள்: வேகமான பிளேபேக் ஏற்றுதல் நேரம், PeerTube மற்றும் SoundCloudக்கான திருத்தங்கள், அண்மைக் காலத்தில் முடிவடைந்த YouTube லைவ்ச்ட்ரீம்களின் பிளேபேக் +• உள்ளக ஒன்றில் ரிமோட் பிளேலிச்ட்டைச் சேர்க்க பொத்தானைச் சேர்க்கவும் +• ஆண்ட்ராய்டு 10+ பகிர்வு தாளில் பட முன்னோட்டம் - மேம்படுத்தப்பட்டது - Flaple பிளேபேக் அளவுருக்கள் உரையாடலை மேம்படுத்தவும் - The சந்தா இறக்குமதி/ஏற்றுமதி பொத்தான்களை மூன்று-டாட் மெனுவுக்கு நகர்த்தவும் +மேம்படுத்தப்பட்டது +• பிளேபேக் அளவுருக்கள் உரையாடலை மேம்படுத்தவும் +• சந்தா இறக்குமதி/ஏற்றுமதி பொத்தான்களை மூன்று-புள்ளி மெனுவிற்கு நகர்த்தவும் - சரி - Plale பிளேலிச்ட்டில் இருந்து முழுமையாகப் பார்த்த வீடியோக்களை அகற்றுவதை சரிசெய்யவும் - இடை, சராசரி பகிர்வு பட்டியல் கருப்பொருள் மற்றும் "பிளேலிச்ட்டில் சேர்" உள்ளீட்டை சரிசெய்யவும் +சரி செய்யப்பட்டது +• பிளேலிச்ட்டில் இருந்து முழுமையாகப் பார்த்த வீடியோக்களை அகற்றுவதைச் சரிசெய்யவும் +• பகிர்வு பட்டியல் கருப்பொருள் மற்றும் "பிளேலிச்ட்டில் சேர்" உள்ளீட்டைச் சரிசெய்தல் diff --git a/fastlane/metadata/android/ta/changelogs/990.txt b/fastlane/metadata/android/ta/changelogs/990.txt index 089a2717dbe..52c6bd0e8b8 100644 --- a/fastlane/metadata/android/ta/changelogs/990.txt +++ b/fastlane/metadata/android/ta/changelogs/990.txt @@ -1,15 +1,15 @@ -இந்த வெளியீடு ஆண்ட்ராய்டு 4.4 KITKAT க்கான ஆதரவைக் குறைக்கிறது, இப்போது குறைந்தபட்ச பதிப்பு ஆண்ட்ராய்டு 5 Lollipop! +இந்த வெளியீடு ஆண்ட்ராய்டு 4.4 KitKat க்கான ஆதரவைக் குறைக்கிறது, இப்போது குறைந்தபட்ச பதிப்பு ஆண்ட்ராய்டு 5 Lollipop! - புதியது - Long நீண்ட அழுத்த மெனுவிலிருந்து பதிவிறக்கவும் - Voor எதிர்கால வீடியோக்களை தீவனத்தில் மறைக்கவும் - Lal உள்ளக பிளேலிச்ட்களைப் பகிரவும் +புதியது +• நீண்ட அழுத்த மெனுவிலிருந்து பதிவிறக்கவும் +• எதிர்கால வீடியோக்களை ஊட்டத்தில் மறைக்கவும் +• உள்ளக பிளேலிச்ட்களைப் பகிரவும் - மேம்படுத்தப்பட்டது - Play பிளேயர் குறியீட்டை சிறிய கூறுகளாக மாற்றியமைத்தல்: குறைவான ரேம் பயன்படுத்தப்பட்டது, குறைவான பிழைகள் - Prum சிறுபடங்களின் அளவிலான பயன்முறையை மேம்படுத்தவும் - • வெக்டர்-ஐச் பட ஒதுக்கிடங்கள் +மேம்படுத்தப்பட்டது +• பிளேயர் குறியீட்டை சிறிய கூறுகளாக மாற்றவும்: குறைவான ரேம் பயன்படுத்தப்பட்டது, குறைவான பிழைகள் +• சிறுபடங்களின் அளவு பயன்முறையை மேம்படுத்தவும் +• வெக்டார்-ஐச் பட பிளேச்ஓல்டர்கள் - சரி - Player பிளேயர் அறிவிப்புடன் பல்வேறு சிக்கல்களை சரிசெய்யவும்: காலாவதியான/காணாமல் போன ஊடகத் செய்தி, சிதைந்த சிறுபடம் - 1/4 திரையைப் பயன்படுத்தி முழுத்திரை சரிசெய்யவும் +சரி செய்யப்பட்டது +• பிளேயர் அறிவிப்பில் உள்ள பல்வேறு சிக்கல்களைச் சரிசெய்யவும்: காலாவதியான/காணாமல் போன மீடியா செய்தி, சிதைந்த சிறுபடம் +• 1/4 திரையைப் பயன்படுத்தி முழுத்திரையை சரிசெய்யவும் diff --git a/fastlane/metadata/android/ta/changelogs/991.txt b/fastlane/metadata/android/ta/changelogs/991.txt index bab6d806e4e..6e4a24723c8 100644 --- a/fastlane/metadata/android/ta/changelogs/991.txt +++ b/fastlane/metadata/android/ta/changelogs/991.txt @@ -1,13 +1,13 @@ -புதியது - Banel பிழை பேனலில் "உலாவியில் திறக்க" பொத்தானைச் சேர்க்கவும் - Carges சேனல் குழுக்களை பட்டியலாகக் காண்பிக்க விருப்பத்தைச் சேர்க்கவும் - Time [YouTube] நேர முத்திரை முகவரி ஐப் பகிர்ந்து கொள்ள ச்ட்ரீம் பிரிவுகளில் நீண்ட சொடுக்கு செய்யவும் - Min மினி பிளேயரில் பிளே வரிசை பொத்தானைச் சேர்க்கவும் +புதியது +• பிழை பேனலில் "உலாவியில் திற" பொத்தானைச் சேர்க்கவும் +• சேனல் குழுக்களை பட்டியலாகக் காண்பிக்க விருப்பத்தைச் சேர்க்கவும் +• [YouTube] நேர முத்திரை URLஐப் பகிர, ச்ட்ரீம் பிரிவுகளில் நீண்ட சொடுக்கு செய்யவும் +• மினி பிளேயரில் பிளே வரிசை பொத்தானைச் சேர்க்கவும் - மேம்படுத்தப்பட்டது - Ic ஐச்லாந்திய உள்ளூர்மயமாக்கலைச் சேர்த்து, பல மொழிபெயர்ப்புகளைப் புதுப்பித்தது - • பல உள் மேம்பாடுகள் +மேம்படுத்தப்பட்டது +• ஐச்லாண்டிக் உள்ளூர்மயமாக்கலைச் சேர்க்கவும் மற்றும் பல பிற மொழிபெயர்ப்புகளைப் புதுப்பிக்கவும் +• பல உள் மேம்பாடுகள் - சரி - The பல விபத்துக்களை சரிசெய்யவும் - • [YouTube] சில நாடுகளில் சேனல்கள், அர்ப்பணிப்பு அல்லாத தீவனம் மற்றும் பணித்தொகுப்பு பின்னணி சிக்கல்களை சரிசெய்யவும் +சரி செய்யப்பட்டது +• பல செயலிழப்புகளைச் சரிசெய்யவும் +• [YouTube] சில நாடுகளில் ஏற்றப்படும் சேனல்கள், பிரத்யேகமற்ற ஊட்டம் மற்றும் தீர்விற்கான பின்னணி சிக்கல்களை சரிசெய்யவும் diff --git a/fastlane/metadata/android/ta/changelogs/992.txt b/fastlane/metadata/android/ta/changelogs/992.txt index 482d4bcf54a..d2c02d1d36e 100644 --- a/fastlane/metadata/android/ta/changelogs/992.txt +++ b/fastlane/metadata/android/ta/changelogs/992.txt @@ -1,17 +1,17 @@ -புதியது - ஒளிதோற்றம் வீடியோ விவரங்களில் சந்தாதாரர் எண்ணிக்கை - The வரிசையிலிருந்து பதிவிறக்கவும் - • நிரந்தரமாக ஒரு பிளேலிச்ட் சிறுபடத்தை அமைக்கவும் - • நீண்ட அழுத்த ஏச்டேக்குகள் மற்றும் இணைப்புகள் - பார்வை அட்டை பார்வை பயன்முறை +புதியது +• வீடியோ விவரங்களில் சந்தாதாரர் எண்ணிக்கை +• வரிசையில் இருந்து பதிவிறக்கவும் +• பிளேலிச்ட் சிறுபடத்தை நிரந்தரமாக அமைக்கவும் +• ஏச்டேக்குகள் மற்றும் இணைப்புகளை நீண்ட நேரம் அழுத்தவும் +• அட்டை பார்வை முறை - மேம்படுத்தப்பட்டது - Ming பெரிய மினி-பிளேயர் மூடு பொத்தான் - • மென்மையான சிறுபடம் கீழ்நோக்கி - And இலக்கு ஆண்ட்ராய்டு 13 (API 33) - • தேடுவது இனி வீரரை இடைநிறுத்தாது +மேம்படுத்தப்பட்டது +• பெரிய மினி பிளேயர் மூடும் பொத்தான் +• மென்மையான சிறுபடம் குறைத்தல் +• இலக்கு ஆண்ட்ராய்டு 13 (API 33) +• தேடுவது இனி வீரர் இடைநிறுத்தப்படாது - சரி - Tex டெக்ச்/மவுசில் மேலடுக்கை சரிசெய்யவும் - Adio தனி ஆடியோ ச்ட்ரீம்கள் இல்லாத பின்னணி பிளேயரை அனுமதிக்கவும் - You பல்வேறு யூடியூப் திருத்தங்கள் மற்றும் பல… +சரி செய்யப்பட்டது +• DeX/mouse மீது மேலடுக்கை சரிசெய்யவும் +• தனி ஆடியோ ச்ட்ரீம்கள் இல்லாமல் பின்னணி பிளேயரை அனுமதிக்கவும் +• பல்வேறு YouTube திருத்தங்கள் மற்றும் பல… diff --git a/fastlane/metadata/android/ta/changelogs/993.txt b/fastlane/metadata/android/ta/changelogs/993.txt index cafc30ad152..165d547c8fa 100644 --- a/fastlane/metadata/android/ta/changelogs/993.txt +++ b/fastlane/metadata/android/ta/changelogs/993.txt @@ -1,12 +1,12 @@ -புதியது - Play பிளேலிச்ட் நகல்களைச் சேர்க்கும்போது எச்சரிக்கையைச் சேர்க்கவும், அவற்றை அகற்ற பொத்தானைச் சேர்க்கவும் - Ward வன்பொருள் பொத்தான்களை புறக்கணிக்க அனுமதிக்கவும் - Fient ஓரளவு பார்த்த வீடியோக்களை தீவனத்தில் மறைக்க அனுமதிக்கவும் +புதியது +• பிளேலிச்ட் நகல்களைச் சேர்க்கும்போது எச்சரிக்கையைச் சேர்க்கவும், அவற்றை அகற்ற பொத்தானைச் சேர்க்கவும் +• வன்பொருள் பொத்தான்களைப் புறக்கணிப்பதை அனுமதிக்கவும் +• ஊட்டத்தில் ஓரளவு பார்த்த வீடியோக்களை மறைக்க அனுமதிக்கவும் - மேம்படுத்தப்பட்டது - Scree பெரிய திரைகளில் மேலும் கட்டம் நெடுவரிசைகளைப் பயன்படுத்தவும் - Sigsters அமைப்புகளுடன் முன்னேற்ற குறிகாட்டிகளை ஒத்துப்போகச் செய்யுங்கள் +மேம்படுத்தப்பட்டது +• பெரிய திரைகளில் அதிக கட்ட நெடுவரிசைகளைப் பயன்படுத்தவும் +• முன்னேற்றக் குறிகாட்டிகளை அமைப்புகளுடன் ஒத்துப்போகச் செய்யவும் - சரி - ஆண்ட்ராய்டு ஆண்ட்ராய்டு 11+ இல் உலாவி முகவரி கள், பதிவிறக்கங்கள் மற்றும் வெளிப்புற பிளேயர்களைத் திறப்பதை சரிசெய்யவும் - Mi மியுய் மீது இரண்டு தட்டுகள் தேவைப்படும் முழுத்திரை மூலம் தொடர்புகொள்வதை சரிசெய்யவும் +சரி செய்யப்பட்டது +• ஆண்ட்ராய்டு 11+ இல் திறக்கும் உலாவி URLகள், பதிவிறக்கங்கள் மற்றும் வெளிப்புற பிளேயர்களைச் சரிசெய்யவும் +• MIUI இல் இரண்டு தட்டுகள் தேவைப்படும் முழுத்திரையுடன் தொடர்புகொள்வதை சரிசெய்யவும் diff --git a/fastlane/metadata/android/ta/changelogs/994.txt b/fastlane/metadata/android/ta/changelogs/994.txt index b68d3db8525..4c4930ffcaa 100644 --- a/fastlane/metadata/android/ta/changelogs/994.txt +++ b/fastlane/metadata/android/ta/changelogs/994.txt @@ -1,15 +1,15 @@ -புதியது - Adio பல ஆடியோ தடங்கள்/மொழிகளை ஆதரிக்கவும் - The திரையின் எந்த பக்கத்திலும் தொகுதி மற்றும் ஒளி சைகைகளை அமைப்பதை அனுமதிக்கவும் - The திரையின் அடிப்பகுதியில் முதன்மையான பாடல்களைக் காண்பிப்பதற்கான ஆதரவு +புதியது +• பல ஆடியோ டிராக்குகள்/மொழிகளை ஆதரிக்கவும் +• திரையின் எந்தப் பக்கத்திலும் ஒலியளவு மற்றும் பிரகாச சைகைகளை அமைக்க அனுமதிக்கவும் +• திரையின் அடிப்பகுதியில் முதன்மையான தாவல்களைக் காண்பிப்பதற்கான உதவி - மேம்படுத்தப்பட்டது - • [பேண்ட்கேம்ப்] ஊதியச் சுவருக்குப் பின்னால் தடங்களைக் கையாளவும் +மேம்படுத்தப்பட்டது +• [பேண்ட்கேம்ப்] பே சுவரின் பின்னால் டிராக்குகளைக் கையாளவும் - சரி - • [YouTube] ச்ட்ரீம்களுக்கான 403 HTTP பிழைகள் - Play பிளேலிச்ட் பார்வையில் இருந்து முதன்மையான பிளேயருக்கு மாறும்போது கருப்பு பிளேயர் - பணி பிளேயர் பணி நினைவக கசிவு - • [PEERTUBE] பதிவேற்றியவர் மற்றும் துணைப்பிரிவு அவதாரங்கள் மாற்றப்பட்டன +சரி செய்யப்பட்டது +• [YouTube] ச்ட்ரீம்களுக்கான 403 HTTP பிழைகள் +• பிளேலிச்ட் பார்வையில் இருந்து மெயின் பிளேயருக்கு மாறும்போது பிளாக் பிளேயர் +• பிளேயர் பணி நினைவகம் கசிவு +• [PeerTube] பதிவேற்றி மற்றும் துணை சேனல் அவதாரங்கள் மாற்றப்பட்டன - மேலும் +மேலும் diff --git a/fastlane/metadata/android/ta/changelogs/995.txt b/fastlane/metadata/android/ta/changelogs/995.txt index 321e1144093..587a75c59c6 100644 --- a/fastlane/metadata/android/ta/changelogs/995.txt +++ b/fastlane/metadata/android/ta/changelogs/995.txt @@ -1,16 +1,16 @@ -புதியது - வாய்க்கால் சேனல் தாவல்களை ஆதரிக்கவும் - • படத் தரத்தைத் தேர்ந்தெடுக்கவும் - அனைத்தும் அனைத்து படங்களுக்கும் முகவரி களைப் பெறுங்கள் +புதியது +• உதவி சேனல் தாவல்கள் +• படத்தின் தரத்தைத் தேர்ந்தெடுக்கவும் +• அனைத்து படங்களுக்கும் URLகளைப் பெறுங்கள் - மேம்படுத்தப்பட்டது - Player பிளேயர் இடைமுகங்களின் அணுகல் - ஒளிதோற்றம் வீடியோ-மட்டும் பதிவிறக்கங்களுக்கான சிறந்த ஆடியோ தேர்வு - Play பிளேலிச்ட் மற்றும் வீடியோ பெயர்களை பகிரப்பட்ட பிளேலிச்ட் உள்ளடக்கத்தில் சேர்க்க விருப்பம் +மேம்படுத்தப்பட்டது +• பிளேயர் இடைமுகங்களின் அணுகல் +• வீடியோ மட்டும் பதிவிறக்கம் செய்ய சிறந்த ஆடியோ தேர்வு +• பகிரப்பட்ட பிளேலிச்ட் உள்ளடக்கத்தில் பிளேலிச்ட் மற்றும் வீடியோ பெயர்களைச் சேர்ப்பதற்கான விருப்பம் - சரி - • [YouTube] எண்ணிக்கை போல - Pop பாப்அப்கள் மற்றும் செயலிழப்புகளுக்கு பதிலளிக்காத பிளேயரை சரிசெய்யவும் - Pill மொழி பிக்கரில் தவறான மொழிகளைத் தேர்ந்தெடுப்பது - • பிளேயர் ஆடியோ கவனம் ஊமையை மதிக்கவில்லை - • பிளேலிச்ட் உருப்படி கூடுதலாக எப்போதாவது வேலை செய்யவில்லை +சரி செய்யப்பட்டது +• [YouTube] லைக் எண்ணிக்கையை சரிசெய்தல் +• பாப்அப்கள் மற்றும் செயலிழப்புகளுக்கு பதிலளிக்காத பிளேயரை சரிசெய்யவும் +• மொழித் தேர்வில் தவறான மொழிகளின் தேர்வு +• பிளேயர் ஆடியோ கவனம் முடக்கத்தை மதிக்கவில்லை +• பிளேலிச்ட் உருப்படி சேர்த்தல் எப்போதாவது வேலை செய்யாது diff --git a/fastlane/metadata/android/ta/changelogs/997.txt b/fastlane/metadata/android/ta/changelogs/997.txt index a85000d8498..9ba9cd46277 100644 --- a/fastlane/metadata/android/ta/changelogs/997.txt +++ b/fastlane/metadata/android/ta/changelogs/997.txt @@ -1,17 +1,17 @@ -புதியது - கருத்து கருத்து பதில்களைச் சேர்க்கவும் - Blay பிளேலிச்ட்களை மறுவரிசைப்படுத்த அனுமதிக்கவும் - Play பிளேலிச்ட் விளக்கம் மற்றும் கால அளவைக் காட்டு - Settets அமைப்புகளை மீட்டமைக்க அனுமதிக்கவும் +புதியது +• கருத்து பதில்களைச் சேர்க்கவும் +• பிளேலிச்ட்களை மறுவரிசைப்படுத்த அனுமதிக்கவும் +• பிளேலிச்ட் விளக்கம் மற்றும் கால அளவைக் காட்டு +• அமைப்புகளை மீட்டமைக்க அனுமதிக்கவும் - மேம்படுத்தப்பட்டது - • [Android 13+] தனிப்பயன் அறிவிப்பு செயல்களை மீட்டெடுங்கள் - புதுப்பிப்பு புதுப்பிப்பு சோதனைக்கு ஒப்புதல் கோருங்கள் - • பஃபர் செய்யும் போது அறிவிப்பு நாடகம்/இடைநிறுத்தத்தை அனுமதிக்கவும் - Settents சில அமைப்புகளை மறுவரிசைப்படுத்தவும் +மேம்படுத்தப்பட்டது +• [Android 13+] தனிப்பயன் அறிவிப்பு செயல்களை மீட்டெடுக்கவும் +• புதுப்பிப்பு சரிபார்ப்புக்கு ஒப்புதல் கோரவும் +• இடையகத்தின் போது அறிவிப்பை இயக்க/இடைநிறுத்த அனுமதிக்கவும் +• சில அமைப்புகளை மறுவரிசைப்படுத்தவும் - சரி - • [YouTube] கருத்துக்களை ஏற்றாத கருத்துக்கள், மற்றும் பிற திருத்தங்கள் மற்றும் மேம்பாடுகள் - Settrimation அமைப்புகள் இறக்குமதியில் பாதிப்பைத் தீர்க்கவும், சாதொபொகு க்கு மாறவும் - பதிவிறக்கம் பல்வேறு பதிவிறக்க திருத்தங்கள் - தேடல் உரையை ஒழுங்கமைக்கவும் +சரி செய்யப்பட்டது +• [YouTube] கருத்துகள் ஏற்றப்படாமல் இருப்பதை சரிசெய்தல், மேலும் பிற திருத்தங்கள் மற்றும் மேம்பாடுகள் +• அமைப்புகள் இறக்குமதியில் உள்ள பாதிப்பைத் தீர்த்து, JSONக்கு மாறவும் +• பல்வேறு பதிவிறக்க திருத்தங்கள் +• தேடல் உரையை ஒழுங்கமைக்கவும் diff --git a/fastlane/metadata/android/ta/changelogs/999.txt b/fastlane/metadata/android/ta/changelogs/999.txt index ea8e7f6d02e..f588170c7a5 100644 --- a/fastlane/metadata/android/ta/changelogs/999.txt +++ b/fastlane/metadata/android/ta/changelogs/999.txt @@ -1,12 +1,12 @@ -இந்த ஆட்ஃபிக்ச் வெளியீடு YouTube வீடியோக்களின் நடுவில் HTTP 403 பிழைகளை சரிசெய்கிறது. +இந்த ஆட்ஃபிக்ச் வெளியீடு YouTube வீடியோக்களின் நடுவில் HTTP 403 பிழைகளை சரிசெய்கிறது. - புதியது - • [SoundCloud] on.soundcloud.com முகவரி களுக்கு ஆதரவைச் சேர்க்கவும் +புதியது +• [SoundCloud] on.soundcloud.com URLகளுக்கான ஆதரவைச் சேர்க்கவும் - மேம்படுத்தப்பட்டது - • [பேண்ட்கேம்ப்] ரேடியோ கியோச்கில் கூடுதல் தகவலைக் காட்டுங்கள் +மேம்படுத்தப்பட்டது +• [பேண்ட்கேம்ப்] ரேடியோ கியோச்கில் கூடுதல் தகவலைக் காட்டு - சரி - • [YouTube] அவ்வப்போது HTTP 403 பிழைகளை ஆரம்பத்தில் அல்லது வீடியோக்களின் நடுவில் சரிசெய்யவும் - • [YouTube] மேலும் சேனல் தலைப்பு வகைகளிலிருந்து அவதார் மற்றும் பேனரை பிரித்தெடுக்கவும் - • [பேண்ட்கேம்ப்] பல்வேறு பிழைகளை சரிசெய்து எப்போதும் https ஐப் பயன்படுத்துங்கள் +சரி செய்யப்பட்டது +• [YouTube] வீடியோக்களின் தொடக்கத்திலோ அல்லது நடுவிலோ அவ்வப்போது HTTP 403 பிழைகளைச் சரிசெய்யவும் +• [YouTube] அதிக சேனல் தலைப்பு வகைகளிலிருந்து அவதார் மற்றும் பேனரைப் பிரித்தெடுக்கவும் +• [Bandcamp] பல்வேறு பிழைகளை சரிசெய்து எப்போதும் HTTPS ஐப் பயன்படுத்தவும் diff --git a/fastlane/metadata/android/tr/changelogs/1005.txt b/fastlane/metadata/android/tr/changelogs/1005.txt index 46b3142f710..9673114f119 100644 --- a/fastlane/metadata/android/tr/changelogs/1005.txt +++ b/fastlane/metadata/android/tr/changelogs/1005.txt @@ -1,17 +1,2 @@ -Yeni -• Android Auto desteği eklendi -• Akış gruplarının ana ekran sekmeleri olarak ayarlanmasına izin verme -• [YouTube] Geçici oynatma listesi olarak paylaşma -• [SoundCloud] Beğenilen kanal sekmesi - -Geliştirildi -• Daha iyi arama çubuğu önerileri -• İndirilenler'de indirme tarihini gösterimi -• Android 13 uygulama başı dil kullanma - -Düzeltildi -• Karanlık modda bozuk metin renkleri düzeltildi -• [YouTube] 100'den fazla öğeyi yüklemeyen oynatma listeleri düzeltildi -• [YouTube] Eksik önerilen videolar düzeltildi -• Geçmiş listesi görünümündeki çökmeler düzeltildi -• Yorum yanıtlarındaki zaman damgaları düzeltildi +Yeni: Android Auto desteği eklendi. Akış grupları ana ekran sekmesi yapılabilir. [YouTube] Geçici oynatma listesi olarak paylaşma. [SoundCloud] Beğenilen kanallar sekmesi geliştirildi. Daha iyi arama çubuğu önerileri. İndirilenler’de indirme tarihi gösterimi. Android 13 uygulama başı dil kullanımı. +Düzeltildi: Karanlık modda bozuk metin renkleri. [YouTube] 100+ öğe yükleyemeyen oynatma listeleri. Eksik önerilen videolar. Geçmiş listesi çökmeleri. Yorum yanıtı zaman damgaları. diff --git a/fastlane/metadata/android/vi/changelogs/1000.txt b/fastlane/metadata/android/vi/changelogs/1000.txt index e812a4feadc..bc376259043 100644 --- a/fastlane/metadata/android/vi/changelogs/1000.txt +++ b/fastlane/metadata/android/vi/changelogs/1000.txt @@ -1,13 +1,13 @@ -Những cải thiện -• Làm cho mô tả của danh sách phát có thể nhấp vào để hiển thị nhiều / ít nội dung hơn -• [PeerTube] Tự động xử lý các liên kết như 'subscribeto.me' -• Chỉ bắt đầu phát một mục trong màn hình lịch sử +Cải thiện +• Chạm mô tả danh sách phát để xem thêm / thu gọn +• [PeerTube] Tự xử lý liên kết `subscribeto.me` +• Chỉ phát một mục trong màn hình lịch sử -Đã sửa các lỗi trước đó -• Sửa lỗi khả năng hiển thị nút RSS -• Khắc phục sự cố xem trước thanh tìm kiếm -• Sửa danh sách phát một mục không có hình xem trước -• Sửa lỗi việc thoát khỏi hộp thoại tải xuống trước khi nó xuất hiện -• Sửa cửa sổ bật lên cho danh sách các mục liên quan khi xếp hàng. -• Sửa thứ tự trong hộp thoại được thêm vào danh sách phát -• Đã điều chỉnh bố cục của mục đánh dấu trong danh sách phát +Đã sửa +• Hiển thị nút RSS +• Crash xem trước thanh tua +• Tạo danh sách phát với mục không có thumbnail +• Thoát hộp thoại "Tải xuống" trước khi hiển thị +• Popup thêm mục liên quan vào hàng chờ +• Thứ tự trong hộp thoại "Thêm vào danh sách phát" +• Bố cục mục đánh dấu danh sách phát diff --git a/fastlane/metadata/android/vi/changelogs/1003.txt b/fastlane/metadata/android/vi/changelogs/1003.txt index 3f32949c507..982a79efc98 100644 --- a/fastlane/metadata/android/vi/changelogs/1003.txt +++ b/fastlane/metadata/android/vi/changelogs/1003.txt @@ -1,4 +1,6 @@ -Đã sửa lỗi YouTube không phát bất kỳ luồng nào. - -Bản phát hành này chỉ giải quyết lỗi cấp bách nhất khiến video YouTube không tải thông tin chi tiết về video. -Chúng tôi biết có những vấn đề khác và chúng tôi sẽ sớm đưa ra một bản phát hành riêng để giải quyết những vấn đề đó. +Đây là bản vá khẩn sửa lỗi YouTube: +• [YouTube] Sửa lỗi không tải thông tin video, lỗi HTTP 403 khi phát và khôi phục phát một số video giới hạn độ tuổi +• Cỡ chữ phụ đề không thay đổi +• Tải thông tin hai lần khi mở stream +• [SoundCloud] Loại bỏ stream DRM không thể phát +• Cập nhật bản dịch diff --git a/fastlane/metadata/android/vi/changelogs/1005.txt b/fastlane/metadata/android/vi/changelogs/1005.txt index 7eeb567b77e..86a38a38d5b 100644 --- a/fastlane/metadata/android/vi/changelogs/1005.txt +++ b/fastlane/metadata/android/vi/changelogs/1005.txt @@ -1,17 +1,17 @@ Mới -• Hỗ trợ cho Android Auto -• Cho phép đặt nhóm nguồn cấp dữ liệu làm tab màn hình chính -• [YouTube] Chia sẻ dưới dạng danh sách phát tạm thời -• [SoundCloud] Tab kênh thích +• Hỗ trợ Android Auto +• Cho phép đặt nhóm feed làm tab màn hình chính +• [YouTube] Chia sẻ dạng danh sách phát tạm thời +• [SoundCloud] Tab kênh đã thích Cải thiện -• Gợi ý thanh tìm kiếm tốt hơn -• Hiển thị ngày tải xuống trong mục Tải xuống -• Sử dụng cài đặt ngôn ngữ cho từng ứng dụng (Android 13+) +• Gợi ý thanh tìm kiếm rõ hơn +• Hiển thị ngày tải trong Tải xuống +• Dùng ngôn ngữ riêng cho ứng dụng (Android 13) Đã sửa -• Màu chữ bị hỏng ở chế độ tối -• [YouTube] Danh sách phát không tải được hơn 100 mục -• [YouTube] Thiếu video được đề xuất -• Sập trong Lịch sử -• Dấu thời gian trong phần trả lời bình luận +• Màu chữ lỗi trong chế độ tối +• [YouTube] Playlist không tải quá 100 mục +• [YouTube] Thiếu video đề xuất +• Crash trong danh sách Lịch sử +• Timestamp trong phản hồi bình luận diff --git a/fastlane/metadata/android/vi/changelogs/1006.txt b/fastlane/metadata/android/vi/changelogs/1006.txt new file mode 100644 index 00000000000..baf2ab52bc8 --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/1006.txt @@ -0,0 +1,16 @@ +Cải thiện +• Giữ trình phát hiện tại khi nhấn timestamp +• Thử khôi phục các tác vụ tải xuống đang chờ +• Tùy chọn xóa bản tải mà không xóa tệp +• Quyền Overlay: hiển thị hộp thoại giải thích (Android > R) +• Hỗ trợ mở liên kết on.soundcloud +• Nhiều cải thiện và tối ưu nhỏ + +Đã sửa +• Định dạng số rút gọn cho Android < 7 +• Thông báo "ma" +• Lỗi phụ đề SRT +• Nhiều crash + +Phát triển +• Hiện đại hóa mã nội bộ diff --git a/fastlane/metadata/android/vi/changelogs/1007.txt b/fastlane/metadata/android/vi/changelogs/1007.txt index d2086b62c1f..6265fcf52f1 100644 --- a/fastlane/metadata/android/vi/changelogs/1007.txt +++ b/fastlane/metadata/android/vi/changelogs/1007.txt @@ -1 +1,11 @@ -Đã sửa lỗi YouTube không phát bất kỳ luồng nào +Bản vá khẩn sửa lỗi "Nội dung không khả dụng": video YouTube đã phát lại bình thường. + +Cũng sửa một số lỗi từ 0.28.1: +• Kéo mục trong playlist chỉ sang được vị trí liền kề +• Tiêu đề/bình luận nhấp nháy giữa video hiện tại và trước đó +• Tùy chọn "Mở trình phát chính toàn màn hình" không hoạt động + +Cải thiện khác: +• [YouTube] Có thể tua lại livestream tối đa 4 giờ +• Không tải video livestream khi phát nền +• Giao diện mới cho "Xóa đã xem" diff --git a/fastlane/metadata/android/vi/changelogs/1008.txt b/fastlane/metadata/android/vi/changelogs/1008.txt new file mode 100644 index 00000000000..ee92a2384ee --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/1008.txt @@ -0,0 +1,4 @@ +• Đã sửa lỗi phát lại livestreams tại điểm phát cuối +• [Youtube] hỗ trợ thêm nhiều dạng URL kênh +• [Youtube] hỗ trợ thêm nhiều format cho video metainfo +• Đã cải thiện các bản dịch diff --git a/fastlane/metadata/android/vi/changelogs/1009.txt b/fastlane/metadata/android/vi/changelogs/1009.txt new file mode 100644 index 00000000000..f47bddcd7f2 --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/1009.txt @@ -0,0 +1,13 @@ +Quan trọng +Đã bổ sung thông tin kêu gọi hành động cho chiến dịch Keep Android Open: https://www.keepandroidopen.org/ + +Đã cải thiện +[Feed] Cập nhật các đăng ký cũ theo thứ tự ngẫu nhiên +Các trang bình luận không còn chồng lên nhau +Không truyền sự kiện nhấn xuống view bên dưới trên trang chi tiết video + +Đã sửa +Lỗi không hiện ảnh avatar ở phần comment +Những lỗi liên quan đến UI của phần trình phát +[SoundCloud] các luồng phát có ID dài +Và nhiều sửa lỗi, cải thiện khác diff --git a/fastlane/metadata/android/vi/changelogs/66.txt b/fastlane/metadata/android/vi/changelogs/66.txt index 99b09fe058b..2e28f70bd23 100644 --- a/fastlane/metadata/android/vi/changelogs/66.txt +++ b/fastlane/metadata/android/vi/changelogs/66.txt @@ -7,15 +7,15 @@ ### Cải tiến -- Tắt hoạt ảnh biểu tượng burgermenu #1486 -- hoàn tác xóa tải xuống #1472 +- Tắt animation của biểu tượng burgermenu #1486 +- hoàn tác các tải xuống đã xóa #1472 - Tùy chọn tải xuống trong menu chia sẻ #1498 -- Đã thêm tùy chọn chia sẻ vào menu nhấn dài #1454 -- Thu nhỏ trình phát chính ở lối ra #1354 -- Phiên bản thư viện cập nhật và bản sửa lỗi sao lưu cơ sở dữ liệu #1510 -- ExoPlayer 2.8.2 Cập nhật #1392 -- Làm lại hộp thoại kiểm soát tốc độ phát lại để hỗ trợ các kích cỡ bước khác nhau nhằm thay đổi tốc độ nhanh hơn. -- Đã thêm nút chuyển đổi để tua đi nhanh trong khi im lặng trong điều khiển tốc độ phát lại. Điều này sẽ hữu ích cho sách nói và một số thể loại âm nhạc nhất định, đồng thời có thể mang lại trải nghiệm liền mạch thực sự (và có thể ngắt một bài hát có nhiều khoảng lặng =\\). +- Đã thêm tùy chọn chia sẻ vào menu nhấn giữ #1454 +- Thu nhỏ trình phát chính khi thoát #1354 +- Cập nhật phiên bản thư viện và bản sửa lỗi sao lưu cơ sở dữ liệu #1510 +- Cập nhật ExoPlayer lên bản 2.8.2 #1392 +- Làm lại hộp thoại kiểm soát tốc độ phát lại để hỗ trợ các số lần nhân đôi khác nhau nhằm thay đổi tốc độ nhanh hơn. +- Đã thêm nút chuyển đổi để tuanhanh trong khi im lặng trong điều khiển tốc độ phát lại. Điều này sẽ hữu ích cho sách nói và một số thể loại âm nhạc nhất định, đồng thời có thể mang lại trải nghiệm liền mạch thực sự (và có thể ngắt một bài hát có nhiều khoảng lặng =\\). - Độ phân giải nguồn phương tiện được tái cấu trúc để cho phép truyền siêu dữ liệu cùng với phương tiện nội bộ trong trình phát thay vì thực hiện thủ công. Bây giờ chúng tôi có một nguồn siêu dữ liệu duy nhất và có sẵn trực tiếp khi quá trình phát lại bắt đầu. - Đã sửa lỗi siêu dữ liệu danh sách phát từ xa không cập nhật khi có siêu dữ liệu mới khi mở đoạn danh sách phát. - Nhiều bản sửa lỗi giao diện người dùng khác nhau: #1383, các điều khiển thông báo trình phát nền giờ đây luôn có màu trắng, dễ dàng tắt trình phát cửa sổ bật lên thông qua thao tác ném diff --git a/fastlane/metadata/android/vi/changelogs/68.txt b/fastlane/metadata/android/vi/changelogs/68.txt index 2247be255b9..f3c7b74993a 100644 --- a/fastlane/metadata/android/vi/changelogs/68.txt +++ b/fastlane/metadata/android/vi/changelogs/68.txt @@ -1,31 +1,21 @@ -# thay đổi của v0.14.1 +# Thay đổi -### Đã sửa -- Đã sửa lỗi không giải mã được url video #1659 -- Sửa lỗi link mô tả không giải nén tốt #1657 +### v0.14.1 +Đã sửa +• Lỗi không giải mã được URL video (#1659) +• Lỗi liên kết trong mô tả video (#1657) -# thay đổi của v0.14.0 +### v0.14.0 +Mới +• Thiết kế ngăn kéo mới +• Trang chủ có thể tùy chỉnh -### Mới -- Thiết kế ngăn kéo mới #1461 -- Trang trước có thể tùy chỉnh mới #1461 +Cải tiến +• Cử chỉ điều khiển được làm lại +• Cách mới để đóng trình phát cửa sổ bật lên -### Cải tiến -- Điều khiển cử chỉ được làm lại #1604 -- Cách mới để đóng trình phát cửa sổ bật lên #1597 - -### Đã sửa -- Sửa lỗi khi không có số lượng đăng ký. Đóng #1649. -- Hiển thị "Không có số lượng người đăng ký" trong những trường hợp đó -- Khắc phục NPE khi danh sách phát YouTube trống -- Sửa nhanh các ki-ốt trong SoundCloud -- Tái cấu trúc và sửa lỗi #1623 -- Sửa kết quả tìm kiếm theo chu kỳ #1562 -- Sửa lỗi thanh Tìm kiếm không được bố trí tĩnh -- Sửa lỗi video YT Premium không bị chặn đúng cách -- Khắc phục Video đôi khi không tải (do phân tích cú pháp DASH) -- Sửa các liên kết trong phần mô tả video -- Hiển thị cảnh báo khi ai đó cố gắng tải xuống thẻ sdcard bên ngoài -- sửa lỗi không hiển thị báo cáo kích hoạt ngoại lệ -- hình thu nhỏ không hiển thị trong trình phát nền dành cho android 8.1 [xem tại đây](https://github.com/TeamNewPipe/NewPipe/issues/943) -- Sửa lỗi đăng ký máy thu phát sóng. Đóng #1641. +Đã sửa +• Lỗi hiển thị số lượng người đăng ký +• Lỗi danh sách phát YouTube trống +• Lỗi tìm kiếm, liên kết mô tả và tải video +• Một số lỗi trình phát, hình thu nhỏ và đăng ký diff --git a/fastlane/metadata/android/vi/changelogs/71.txt b/fastlane/metadata/android/vi/changelogs/71.txt index 6eb1ad511b9..e2145ae3449 100644 --- a/fastlane/metadata/android/vi/changelogs/71.txt +++ b/fastlane/metadata/android/vi/changelogs/71.txt @@ -1,10 +1,6 @@ ### Cải thiện -* Thêm thông báo cập nhật ứng dụng cho bản dựng GitHub (#1608 bởi @krtkush) -* Nhiều cải tiến cho trình tải xuống (#1944 bởi @kapodamy): -* Thêm biểu tượng trắng bị thiếu và sử dụng cách thức cố định để thay đổi màu biểu tượng -* Kiểm tra xem trình lặp có được khởi tạo hay không (sửa lỗi #2031) -* Cho phép tải xuống lại với lỗi "xử lý hậu kỳ thất bại" trong bộ ghép nối mới -* Bộ ghép nối MPEG-4 mới sửa lỗi luồng video và âm thanh không đồng bộ (#2039) +* Thêm thông báo cập nhật cho bản build từ GitHub (#1608, @krtkush) +* Cải thiện downloader: bổ sung icon, cho phép tải lại khi lỗi hậu xử lý và thêm muxer MPEG-4 mới để đồng bộ video-audio (#1944, #2039, @kapodamy) ### Sửa lỗi -* Luồng trực tiếp YouTube dừng phát sau một thời gian ngắn (#1996 bởi @yausername) +* Livestream YouTube dừng phát sau một thời gian ngắn (#1996, @yausername) diff --git a/fastlane/metadata/android/vi/changelogs/740.txt b/fastlane/metadata/android/vi/changelogs/740.txt index dacb5019abb..4f23c5e87fe 100644 --- a/fastlane/metadata/android/vi/changelogs/740.txt +++ b/fastlane/metadata/android/vi/changelogs/740.txt @@ -1,23 +1,20 @@

Cải tiến

    -
  • click được liên kết trong phần bình luận, tăng cỡ chữ
  • -
  • nhảy đến khi click vào mốc thời gian ở bình luận
  • -
  • hiện tab ưa thích dựa trên trạng thái lựa chọn gần đây
  • -
  • thêm danh sách phát vào hàng chờ khi chạm lâu 'Phát nền' trong cửa sổ danh sách phát
  • -
  • tìm kiếm từ ngữ chung khi nó không phảiURL
  • -
  • thêm "chia sẻ thời gian hiện tại " nút trờ về video chính
  • -
  • thêm nút đóng vào trình phát chính khi hàng đợi video kết thúc
  • -
  • thêm "Chơi trực tiếp dưới nền" chạm lâu vào menu để xem danh sách video
  • -
  • cải thiện bản dịch tiếng Anh cho lệnh Chơi/Thêm vào danh sách
  • -
  • cải thiện hiệu năng một xíu
  • -
  • xóa bỏ những tệp không dùng đến
  • -
  • cập nhật ExoPlayer lên 2.9.6
  • -
  • hỗ trợ liên kết Invidious
  • +
  • Click được link và mốc thời gian trong bình luận
  • +
  • Hiện tab ưa thích theo lựa chọn gần đây
  • +
  • Chạm lâu “Phát nền” để thêm playlist vào hàng chờ
  • +
  • Tìm kiếm khi nhập không phải URL
  • +
  • Thêm nút “Chia sẻ thời điểm hiện tại”
  • +
  • Thêm nút đóng khi hàng phát kết thúc
  • +
  • Cải thiện hiệu năng
  • +
  • Cập nhật ExoPlayer 2.9.6
  • +
  • Hỗ trợ liên kết Invidious
+

Vá lỗi

    -
  • sửa w/ bình luận và vô hiệu hóa phát luồng liên quan
  • -
  • sửa lỗi CheckForNewAppVersionTask bị thực thi khi không mong muốn't
  • -
  • sửa lỗi nhập danh sách kênh youtube đăng ký: phớt lờ url không hợp lệ và giữ nó trống với tiêu đề
  • -
  • sửa lỗi url youtube không hợp lệ: tên thẻ chữ ký không phải lúc nào cũng là "chữ ký" ngăn luồng tải
  • +
  • Sửa lỗi bình luận
  • +
  • Sửa kiểm tra cập nhật chạy ngoài ý muốn
  • +
  • Sửa nhập danh sách kênh đăng ký
  • +
  • Sửa URL YouTube không hợp lệ
diff --git a/fastlane/metadata/android/vi/changelogs/750.txt b/fastlane/metadata/android/vi/changelogs/750.txt new file mode 100644 index 00000000000..88cff7a8912 --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/750.txt @@ -0,0 +1,16 @@ +Mới +• Tiếp tục phát video từ vị trí đã dừng (#2288) +• Cải tiến tải xuống: hỗ trợ SD-card (SAF), muxer MP4 mới, đổi thư mục tải trước khi tải, tôn trọng mạng dữ liệu (#2149) + +Cải thiện +• Dọn chuỗi không dùng +• Xử lý xoay màn hình tốt hơn +• Menu chạm lâu nhất quán hơn + +Đã sửa +• Hiển thị đúng tên phụ đề +• Không crash khi kiểm tra cập nhật thất bại +• Sửa lỗi tải kẹt 99.9% +• Cập nhật metadata hàng phát +• Sửa lỗi playlist SoundCloud +• Sửa lỗi đọc thời lượng YouTube TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/zh-Hans/changelogs/1009.txt b/fastlane/metadata/android/zh-Hans/changelogs/1009.txt new file mode 100644 index 00000000000..1d3fc413a5f --- /dev/null +++ b/fastlane/metadata/android/zh-Hans/changelogs/1009.txt @@ -0,0 +1,14 @@ +新增 +Keep Android Open 运动的重要信息及采取行动的请求:https://www.keepandroidopen.org/ + +改进 +[Feed] 打乱过期订阅更新顺序 +不堆叠评论页 +单击视频详情页时不把单击事件传递到底层视图。 + +修复 +评论回复标题布局没有头像图 +多个播放器相关 UI 修复 +[SoundCloud] 修福长 ID 音频流 + +以及更多修复和改进! diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 73e9cad0815..b9ddae4bdcd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,10 +12,10 @@ autoservice-google = "1.1.1" autoservice-zacsweers = "1.2.0" bridge = "v2.0.2" cardview = "1.0.0" -checkstyle = "13.2.0" -coil = "3.3.0" +checkstyle = "13.3.0" +coil = "3.4.0" constraintlayout = "2.2.1" -core = "1.17.0" +core = "1.17.0" # Newer versions require minSdk >= 23 desugar = "2.1.5" documentfile = "1.1.0" exoplayer = "2.19.1" @@ -24,7 +24,9 @@ groupie = "2.10.1" jsoup = "1.22.1" junit = "4.13.2" junit-ext = "1.3.0" -kotlin = "2.3.10" +kotlin = "2.3.20" +kotlinx-coroutines-rx3 = "1.10.2" +kotlinx-serialization-json = "1.10.0" ksp = "2.3.6" ktlint = "1.8.0" leakcanary = "2.14" @@ -33,7 +35,7 @@ localbroadcastmanager = "1.1.0" markwon = "4.6.2" material = "1.11.0" # TODO: update to newer version after bug is fixed. See https://github.com/TeamNewPipe/NewPipe/pull/13018 media = "1.7.1" -mockitoCore = "5.21.0" +mockitoCore = "5.23.0" okhttp = "5.3.2" phoenix = "3.0.0" preference = "1.2.1" @@ -44,7 +46,7 @@ runner = "1.7.0" rxandroid = "3.0.2" rxbinding = "4.0.0" rxjava = "3.1.12" -sonarqube = "7.2.2.6593" +sonarqube = "7.2.3.7755" statesaver = "1.4.1" # TODO: Drop because it is deprecated and incompatible with KSP2 stetho = "1.6.0" swiperefreshlayout = "1.2.0" @@ -58,7 +60,7 @@ teamnewpipe-nanojson = "e9d656ddb49a412a5a0a5d5ef20ca7ef09549996" # the corresponding commit hash, since JitPack sometimes deletes artifacts. # If there’s already a git hash, just add more of it to the end (or remove a letter) # to cause jitpack to regenerate the artifact. -teamnewpipe-newpipe-extractor = "824486dfdf4e9ba0fbe820bc2938f9101ae739a6" +teamnewpipe-newpipe-extractor = "v0.26.0" viewpager2 = "1.1.0" webkit = "1.14.0" # Newer versions require minSdk >= 23 work = "2.10.5" # Newer versions require minSdk >= 23 @@ -110,6 +112,8 @@ jakewharton-phoenix = { module = "com.jakewharton:process-phoenix", version.ref jakewharton-rxbinding = { module = "com.jakewharton.rxbinding4:rxbinding", version.ref = "rxbinding" } jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" } junit = { module = "junit:junit", version.ref = "junit" } +kotlinx-coroutines-rx3 = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-rx3", version.ref = "kotlinx-coroutines-rx3" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization-json" } lisawray-groupie-core = { module = "com.github.lisawray.groupie:groupie", version.ref = "groupie" } lisawray-groupie-viewbinding = { module = "com.github.lisawray.groupie:groupie-viewbinding", version.ref = "groupie" } livefront-bridge = { module = "com.github.livefront:bridge", version.ref = "bridge" } @@ -136,4 +140,5 @@ google-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } jetbrains-kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } # Needed for statesaver jetbrains-kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } +jetbrains-kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } sonarqube = { id = "org.sonarqube", version.ref = "sonarqube" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 61285a659d1..d997cfc60f4 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 41465649341..92ed9434714 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=b266d5ff6b90eada6dc3b20cb090e3731302e553a27c5d3e4df1f0d76beaff06 -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip +distributionSha256Sum=60ea723356d81263e8002fec0fcf9e2b0eee0c0850c7a3d7ab0a63f2ccc601f3 +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index adff685a034..0262dcbd52b 100755 --- a/gradlew +++ b/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/.