From cdb79ef78a54e57121e5627ea03dbaaa6c52b1ba Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Sun, 24 Sep 2023 18:15:36 +0200 Subject: [PATCH 01/82] Make isLimitingDataUsage method of ListHelper package-private and fix some typos in the class --- .../java/org/schabi/newpipe/util/ListHelper.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java index 5918ece2544..90e344fae60 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java @@ -46,10 +46,10 @@ public final class ListHelper { List.of(MediaFormat.MP3, MediaFormat.M4A, MediaFormat.WEBMA); // Use a Set for better performance private static final Set HIGH_RESOLUTION_LIST = Set.of("1440p", "2160p"); - // Audio track types in order of priotity. 0=lowest, n=highest + // Audio track types in order of priority. 0=lowest, n=highest private static final List AUDIO_TRACK_TYPE_RANKING = List.of(AudioTrackType.DESCRIPTIVE, AudioTrackType.DUBBED, AudioTrackType.ORIGINAL); - // Audio track types in order of priotity when descriptive audio is preferred. + // Audio track types in order of priority when descriptive audio is preferred. private static final List AUDIO_TRACK_TYPE_RANKING_DESCRIPTIVE = List.of(AudioTrackType.ORIGINAL, AudioTrackType.DUBBED, AudioTrackType.DESCRIPTIVE); @@ -689,7 +689,7 @@ private static int compareVideoStreamResolution(@NonNull final String r1, } } - private static boolean isLimitingDataUsage(final Context context) { + static boolean isLimitingDataUsage(@NonNull final Context context) { return getResolutionLimit(context) != null; } @@ -731,7 +731,7 @@ public static boolean isMeteredNetwork(@NonNull final Context context) { /** * Get a {@link Comparator} to compare {@link AudioStream}s by their format and bitrate. * - *

The prefered stream will be ordered last.

+ *

The preferred stream will be ordered last.

* * @param context app context * @return Comparator @@ -746,7 +746,7 @@ private static Comparator getAudioFormatComparator( /** * Get a {@link Comparator} to compare {@link AudioStream}s by their format and bitrate. * - *

The prefered stream will be ordered last.

+ *

The preferred stream will be ordered last.

* * @param defaultFormat the default format to look for * @param limitDataUsage choose low bitrate audio stream @@ -788,7 +788,7 @@ static Comparator getAudioFormatComparator( *
  • Language is English
  • * * - *

    The prefered track will be ordered last.

    + *

    The preferred track will be ordered last.

    * * @param context App context * @return Comparator @@ -825,7 +825,7 @@ private static Comparator getAudioTrackComparator( *
  • Language is English
  • * * - *

    The prefered track will be ordered last.

    + *

    The preferred track will be ordered last.

    * * @param preferredLanguage Preferred audio stream language * @param preferOriginalAudio Get the original audio track regardless of its language From 77bbbc88f8e1cefca0a4d2ec9b1a6a0c6a592637 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Sun, 24 Sep 2023 18:23:00 +0200 Subject: [PATCH 02/82] Use ListHelper to get secondary audio streams for video-only streams Instead of searching for the first audio stream matching a compatible media format, this change makes SecondaryStreamHelper.getAudioStreamFor use methods isLimitingDataUsage, getAudioFormatComparator and getAudioIndexByHighestRank of ListHelper to get an audio stream which can be muxed into a video-only stream, if available. This allows users to download videos with the highest audio quality available if no resolution limit on mobile data usage has been set. The order of formats used to search a compatible audio stream has been kept. --- .../newpipe/download/DownloadDialog.java | 4 +- .../newpipe/util/SecondaryStreamHelper.java | 40 +++++++++++-------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index 9e9909e8570..2e0a421da3f 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -267,8 +267,8 @@ private void updateSecondaryStreams() { if (!videoStreams.get(i).isVideoOnly()) { continue; } - final AudioStream audioStream = SecondaryStreamHelper - .getAudioStreamFor(audioStreams.getStreamsList(), videoStreams.get(i)); + final AudioStream audioStream = SecondaryStreamHelper.getAudioStreamFor( + context, audioStreams.getStreamsList(), videoStreams.get(i)); if (audioStream != null) { secondaryStreams.append(i, new SecondaryStreamHelper<>(audioStreams, audioStream)); diff --git a/app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java b/app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java index 9415135cf0b..42a6ca36155 100644 --- a/app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java @@ -1,5 +1,7 @@ package org.schabi.newpipe.util; +import android.content.Context; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -9,6 +11,7 @@ import org.schabi.newpipe.extractor.stream.VideoStream; import org.schabi.newpipe.util.StreamItemAdapter.StreamInfoWrapper; +import java.util.Comparator; import java.util.List; public class SecondaryStreamHelper { @@ -27,12 +30,14 @@ public SecondaryStreamHelper(@NonNull final StreamInfoWrapper streams, /** * Find the correct audio stream for the desired video stream. * + * @param context Android context * @param audioStreams list of audio streams * @param videoStream desired video ONLY stream * @return selected audio stream or null if a candidate was not found */ @Nullable - public static AudioStream getAudioStreamFor(@NonNull final List audioStreams, + public static AudioStream getAudioStreamFor(@NonNull final Context context, + @NonNull final List audioStreams, @NonNull final VideoStream videoStream) { final MediaFormat mediaFormat = videoStream.getFormat(); if (mediaFormat == null) { @@ -41,33 +46,36 @@ public static AudioStream getAudioStreamFor(@NonNull final List aud switch (mediaFormat) { case WEBM: - case MPEG_4:// ¿is mpeg-4 DASH? + case MPEG_4: // Is MPEG-4 DASH? break; default: return null; } - final boolean m4v = (mediaFormat == MediaFormat.MPEG_4); + final boolean m4v = mediaFormat == MediaFormat.MPEG_4; + final boolean isLimitingDataUsage = ListHelper.isLimitingDataUsage(context); + + Comparator comparator = ListHelper.getAudioFormatComparator( + m4v ? MediaFormat.M4A : MediaFormat.WEBMA, isLimitingDataUsage); + int preferredAudioStreamIndex = ListHelper.getAudioIndexByHighestRank( + audioStreams, comparator); - for (final AudioStream audio : audioStreams) { - if (audio.getFormat() == (m4v ? MediaFormat.M4A : MediaFormat.WEBMA)) { - return audio; + if (preferredAudioStreamIndex == -1) { + if (m4v) { + return null; } - } - if (m4v) { - return null; - } + comparator = ListHelper.getAudioFormatComparator( + MediaFormat.WEBMA_OPUS, isLimitingDataUsage); + preferredAudioStreamIndex = ListHelper.getAudioIndexByHighestRank( + audioStreams, comparator); - // retry, but this time in reverse order - for (int i = audioStreams.size() - 1; i >= 0; i--) { - final AudioStream audio = audioStreams.get(i); - if (audio.getFormat() == MediaFormat.WEBMA_OPUS) { - return audio; + if (preferredAudioStreamIndex == -1) { + return null; } } - return null; + return audioStreams.get(preferredAudioStreamIndex); } public T getStream() { From 6d0bb02544ae182328ca29d6189d8846613ab283 Mon Sep 17 00:00:00 2001 From: akko Date: Fri, 13 Oct 2023 11:28:09 +0700 Subject: [PATCH 03/82] adds quotation to create filename util replacement char --- app/src/main/java/org/schabi/newpipe/util/FilenameUtils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/FilenameUtils.java b/app/src/main/java/org/schabi/newpipe/util/FilenameUtils.java index edcb565a04b..bc15f3f0242 100644 --- a/app/src/main/java/org/schabi/newpipe/util/FilenameUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/FilenameUtils.java @@ -7,6 +7,7 @@ import org.schabi.newpipe.R; +import java.util.regex.Matcher; import java.util.regex.Pattern; public final class FilenameUtils { @@ -51,7 +52,7 @@ public static String createFilename(final Context context, final String title) { final Pattern pattern = Pattern.compile(charset); - return createFilename(title, pattern, replacementChar); + return createFilename(title, pattern, Matcher.quoteReplacement(replacementChar)); } /** From 995986ecc756ec2558b08d9eaded4b50b2fc2283 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Fri, 13 Oct 2023 17:26:15 +0200 Subject: [PATCH 04/82] [README] Remove Bitcoin and Bountysource donation options --- README.md | 10 ---------- doc/README.asm.md | 2 +- doc/README.de.md | 10 ---------- doc/README.es.md | 10 ---------- doc/README.fr.md | 10 ---------- doc/README.hi.md | 10 ---------- doc/README.it.md | 10 ---------- doc/README.ja.md | 10 ---------- doc/README.ko.md | 10 ---------- doc/README.pa.md | 10 ---------- doc/README.pl.md | 10 ---------- doc/README.pt_BR.md | 10 ---------- doc/README.ro.md | 10 ---------- doc/README.ru.md | 10 ---------- doc/README.ryu.md | 10 ---------- doc/README.so.md | 10 ---------- doc/README.sr.md | 10 ---------- doc/README.tr.md | 10 ---------- doc/README.zh_TW.md | 10 ---------- 19 files changed, 1 insertion(+), 181 deletions(-) diff --git a/README.md b/README.md index ed25bfa41c1..58ac798869b 100644 --- a/README.md +++ b/README.md @@ -126,16 +126,6 @@ If you like NewPipe, you're welcome to send a donation. We prefer Liberapay, as Visit NewPipe at liberapay.com Donate via Liberapay - - Bitcoin - Bitcoin QR code - 16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh - - - Bountysource - Visit NewPipe at bountysource.com - Check out how many bounties you can earn. - ## Privacy Policy diff --git a/doc/README.asm.md b/doc/README.asm.md index 98253371ef0..8f39d26a143 100644 --- a/doc/README.asm.md +++ b/doc/README.asm.md @@ -110,7 +110,7 @@ NewPipe এ আপুনি ব্যৱহাৰ কৰা সেৱাৰ অ ## অনুদান -যদি আপুনি NewPipe ভাল পায় তেন্তে অনুদান প্ৰেৰণ কৰিব পাৰে। আমি Liberapay পছন্দ কৰো, কাৰণ ই মুক্ত উৎস(Open Source) আৰু অলাভজনক(Non-profit) দুয়োটা। NewPipe লৈ দান দিয়াৰ বিষয়ে অধিক তথ্যৰ বাবে অনুগ্ৰহ কৰি আমাৰ [ৱেবচাইট](https://newpipe.net/donate) চাওক.
    Liberapay Visit NewPipe at liberapay.com Donate via Liberapay
    Bitcoin Bitcoin QR code 16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Bountysource Visit NewPipe at bountysource.com Check out how many bounties you can earn.
    +যদি আপুনি NewPipe ভাল পায় তেন্তে অনুদান প্ৰেৰণ কৰিব পাৰে। আমি Liberapay পছন্দ কৰো, কাৰণ ই মুক্ত উৎস(Open Source) আৰু অলাভজনক(Non-profit) দুয়োটা। NewPipe লৈ দান দিয়াৰ বিষয়ে অধিক তথ্যৰ বাবে অনুগ্ৰহ কৰি আমাৰ [ৱেবচাইট](https://newpipe.net/donate) চাওক.
    Liberapay Visit NewPipe at liberapay.com Donate via Liberapay
    ## গোপনীয়তা নীতি diff --git a/doc/README.de.md b/doc/README.de.md index b84fadeae3c..cc9c313faa9 100644 --- a/doc/README.de.md +++ b/doc/README.de.md @@ -143,16 +143,6 @@ Für weitere Informationen über Spenden an NewPipe, besuche unsere [Website](ht Gehe zu NewPipe auf liberapay.com Spenden mit Liberapay - - Bitcoin - Bitcoin QR Code - 16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh - - - Bountysource - Gehe zu NewPipe auf bountysource.com - Sieh nach, wie viel Bounties du bekommen kannst. - ## Privacy Policy diff --git a/doc/README.es.md b/doc/README.es.md index 78c44b9fbe6..c2959fe04c0 100644 --- a/doc/README.es.md +++ b/doc/README.es.md @@ -115,21 +115,11 @@ Si quiere involucrarse, fíjese en nuestras [notas de contribución](../.github/ Si te gusta NewPipe, estaremos felices con una donación. Puede enviar bitcoin o donar a través de Bountysource o Liberapay. Visita nuestro [sitio web](https://newpipe.net/donate) para más información. - - - - - - - - - -
    BitcoinCódigo QR del Bitcoin16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay Visita NewPipe en liberapay.com Dona vía Liberapay
    BountysourceVisita NewPipe en bountysource.comRevisa cuántas recompensas puedes obtener.
    ## Política de Privacidad diff --git a/doc/README.fr.md b/doc/README.fr.md index 4ca1f1e9436..2e56e7ff19b 100644 --- a/doc/README.fr.md +++ b/doc/README.fr.md @@ -123,16 +123,6 @@ Si vous aimez NewPipe, vous êtes invités à envoyer un don. Nous préferons Li Visitez NewPipe sur liberapay.com Donnez via Liberapay - - Bitcoin - QR code Bitcoin - 16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh - - - Bountysource - Visitez NewPipe sur bountysource.com - Regardez combien de primes vous pouvez gagner. - ## Politique de confidentialité diff --git a/doc/README.hi.md b/doc/README.hi.md index ec9965be6c1..36669cc19e7 100644 --- a/doc/README.hi.md +++ b/doc/README.hi.md @@ -115,21 +115,11 @@ NewPipe पर कई सेवाएँ उपलब्ध हैं। हम अगर आपको NewPipe पसंद है, एक छोटे-से दान से हम खुश होंगे। आप या तो बिटकॉइन भेज सकते हैं या फिर Bountysource या Liberapay से दान कर सकते हैं। NewPipe को दान करने के बारे में अधिक जानकारी के लिए कृपया हमारी [वेबसाइट](https://newpipe.net/donate) देखें। - - - - - - - - - -
    Bitcoinबिटकॉइन पर दान करने के लिए QR कोड16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay liberapay.com पर NewPipe को देखें Liberapay के ज़रिए दान करें
    Bountysourcebountysource.com पर NewPipe को देखेंदेखें कि आप कितने बाउंटी कमा सकते हैं।
    ## गोपनीयता और शर्तें diff --git a/doc/README.it.md b/doc/README.it.md index ec5361dc0fd..cd8cb10a8e5 100644 --- a/doc/README.it.md +++ b/doc/README.it.md @@ -123,16 +123,6 @@ Se ti piace NewPipe, le donazioni sono benvenute. Preferiamo Liberapay, siccome Visita NewPipe su liberapay.com Dona via Liberapay - - Bitcoin - Codice QR Bitcoin - 16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh - - - Bountysource - Visita NewPipe su bountysource.com - Scopri quanti <i>bounty</i> puoi guadagnare. - ## Privacy Policy diff --git a/doc/README.ja.md b/doc/README.ja.md index fa26efa0d90..317d3976608 100644 --- a/doc/README.ja.md +++ b/doc/README.ja.md @@ -120,21 +120,11 @@ NewPipe は複数のサービスに対応しています。[ドキュメント]( もし、NewPipe を気に入っていただけたら、寄付をしていただけると嬉しいです。Bitcoin または Bountysource, Liberapay から寄付をすることができます。NewPipe への寄付については、[ウェブサイト](https://newpipe.net/donate)からお願いします。 - - - - - - - - - -
    BitcoinBitcoin QR コード16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay liberapay.com で NewPipe を訪れる Liberapay で寄付
    Bountysourcebountysource.com で NewPipe を訪れるあなたがどれほどの寄付を得られるのか確認しましょう。
    ## プライバシーポリシー diff --git a/doc/README.ko.md b/doc/README.ko.md index 9ebc66be235..b690e659a12 100644 --- a/doc/README.ko.md +++ b/doc/README.ko.md @@ -115,21 +115,11 @@ NewPipe는 서비스의 공식 API를 이용하여 정보를 받아오는 방식 만약 NewPipe가 마음에 들었다면, 우리는 기부에 대해 기꺼이 환영합니다. bitcoin을 보내거나, Bountysource 또는 Liberapay를 통해 기부할 수 있습니다. NewPipe에 기부하는 것에 대한 자세한 정보를 원한다면, 우리의 [웹사이트](https://newpipe.net/donate)를 방문하여 주십시오. - - - - - - - - - -
    BitcoinBitcoin QR code16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay Visit NewPipe at liberapay.com Donate via Liberapay
    BountysourceVisit NewPipe at bountysource.comCheck out how many bounties you can earn.
    ## 개인정보 보호 정책 diff --git a/doc/README.pa.md b/doc/README.pa.md index 2a3ae69af6f..ac52e3b316d 100644 --- a/doc/README.pa.md +++ b/doc/README.pa.md @@ -120,16 +120,6 @@ NewPipe ਤੁਹਾਡੇ ਦੁਆਰਾ ਵਰਤੀ ਜਾ ਰਹੀ ਸੇ liberapay.com 'ਤੇ NewPipe ਨੂੰ ਵੇਖੋ Donate via Liberapay - - Bitcoin - ਬਿਟਕੋਇਨ 'ਤੇ ਦਾਨ ਕਰਨ ਲਈ QR ਕੋਡ - 16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh - - - Bountysource - bountysource.com 'ਤੇ NewPipe ਨੂੰ ਵੇਖੋ - ਦੇਖੋ ਕਿ ਤੁਸੀਂ ਕਿੰਨੇ ਇਨਾਮ ਕਮਾ ਸਕਦੇ ਹੋ। - ## ਗੋਪਨੀਅਤਾ ਨੀਤੀ diff --git a/doc/README.pl.md b/doc/README.pl.md index 5ba201eb0a2..bcd37e51514 100644 --- a/doc/README.pl.md +++ b/doc/README.pl.md @@ -112,21 +112,11 @@ Jeśli chcesz pomóc, przeczytaj [Notkę o wkładzie](../.github/CONTRIBUTING.md Jeśli podoba Ci się NewPipe, bardzo ucieszylibyśmy się z dotacji. Możesz wysłać bitcoin lub przekazać darowiznę przez Bountysource lub Liberapay. Po więcej informacji o darowiznach dla NewPipe, proszę zobacz naszą [stronę](https://newpipe.net/donate). - - - - - - - - - -
    BitcoinBitcoin QR code16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay Visit NewPipe at liberapay.com Donate via Liberapay
    BountysourceVisit NewPipe at bountysource.comCheck out how many bounties you can earn.
    ## Polityka prywatności diff --git a/doc/README.pt_BR.md b/doc/README.pt_BR.md index 850d03e8937..9945a396908 100644 --- a/doc/README.pt_BR.md +++ b/doc/README.pt_BR.md @@ -112,21 +112,11 @@ Se você quiser se envolver, verifique nossa [notas de contribuição](../.githu Se você gosta de NewPipe, ficaríamos felizes com uma doação. Você pode enviar bitcoin ou doar via Bountysource ou Liberapay. Para obter mais informações sobre como doar para a NewPipe, visite nosso [site](https://newpipe.net/donate). - - - - - - - - - -
    BitcoinBitcoin QR code16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay Visit NewPipe at liberapay.com Donate via Liberapay
    BountysourceVisit NewPipe at bountysource.comCheck out how many bounties you can earn.
    ## Política de Privacidade diff --git a/doc/README.ro.md b/doc/README.ro.md index 11319b5a030..3eac39563f5 100644 --- a/doc/README.ro.md +++ b/doc/README.ro.md @@ -115,21 +115,11 @@ Dacă doriţi să vă implicaţi, accesaţi [notele noastre de contribuţie](../ Dacă vă place NewPipe, am fi bucuroşi să primim o donaţie. Puteţi să ne trimiteţi bitcoin sau să ne donaţi cu Bountysource sau Liberapay. Pentru mai multe informaţii în legătură cu donaţiile către NewPipe, vă rugăm vizitaţi [website-ul nostru](https://newpipe.net/donate). - - - - - - - - - -
    BitcoinBitcoin QR code16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay Visit NewPipe at liberapay.com Donate via Liberapay
    BountysourceVisit NewPipe at bountysource.comCheck out how many bounties you can earn.
    ## Politica de Confidenţialitate diff --git a/doc/README.ru.md b/doc/README.ru.md index a226b72a808..a11e88783d8 100644 --- a/doc/README.ru.md +++ b/doc/README.ru.md @@ -121,16 +121,6 @@ NewPipe работает, извлекая необходимые данные Посетите NewPipe на liberapay.com Пожертвование через Liberapay - - Bitcoin - QR-код Bitcoin - 16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh - - - Bountysource - Посетите NewPipe на bountysource.com - Проверьте, сколько наград вы можете заработать. - ## Политика конфиденциальности diff --git a/doc/README.ryu.md b/doc/README.ryu.md index ce1a38bd92c..56e037541de 100644 --- a/doc/README.ryu.md +++ b/doc/README.ryu.md @@ -120,21 +120,11 @@ NewPipeーふくすんぬサービスんかいたいおうそーいびーん。[ むし、NewPipeちーがんじいただけいねー、ちーふしいただけいねーうっさいびーん。BitcoinあらんでぃBountysource,Liberapayからちーふするくとぅがなやびーん。NewPipeんかいどぅちふにちいてー、[ウェブサイト](https://newpipe.net/donate)からうにげーさびら。 - - - - - - - - - -
    BitcoinBitcoin QR コード16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay liberapay.comっしNewPipeちゅーん Liberapayなちーふ
    Bountysourcebountysource.comっしNewPipeちゅーんうんじゅがじるふどぅどぅちふいらりーるぬがかくにんさびら。
    ## プライバシーポリシー diff --git a/doc/README.so.md b/doc/README.so.md index 1e400b2191c..fdcc11fe6eb 100644 --- a/doc/README.so.md +++ b/doc/README.so.md @@ -110,21 +110,11 @@ Hadaad jeceshahay inaad qayb ka noqoto, fiiri [ogaysiisyada kusoo kordhinta](../ Hadaad jeceshahay NewPipe waan ku faraxsanaan lahayn deeq. Waxaad soo diri kartaa bitcoin ama sidoo kale waxaad deeqda kusoo diri kartaa xaga Bountysource ama Liberapay. Faahfaahin dheeraad ah oo kusaabsan ugu deeqida NewPipe, fadlan booqo [website-kanaga](https://newpipe.net/donate). - - - - - - - - - -
    BitcoinBitcoin QR code16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay Visit NewPipe at liberapay.com Donate via Liberapay
    BountysourceVisit NewPipe at bountysource.comCheck out how many bounties you can earn.
    ## Siyaasada Sirdhawrka diff --git a/doc/README.sr.md b/doc/README.sr.md index 320558fc92e..930eccd3397 100644 --- a/doc/README.sr.md +++ b/doc/README.sr.md @@ -119,16 +119,6 @@ NewPipe ради тако што преузима потребне податк Visit NewPipe at liberapay.com Donate via Liberapay - - Bitcoin - Bitcoin QR code - 16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh - - - Bountysource - Visit NewPipe at bountysource.com - Check out how many bounties you can earn. - ## Политика приватности diff --git a/doc/README.tr.md b/doc/README.tr.md index b2d4f2c5673..3ff88c81ab3 100644 --- a/doc/README.tr.md +++ b/doc/README.tr.md @@ -114,21 +114,11 @@ Eğer yer almak istiyorsanız, [katkı sağlayanlar için hazırladığımız no NewPipe'ı beğendiyseniz, yapacağınız bağışlar bizi motive eder. Bitcoin gönderebilir veya Bountysource veya Liberapay aracılığıyla bağış yapabilirsiniz. NewPipe'a bağış yapma hakkında daha fazla bilgi için lütfen [web sitemizi](https://newpipe.net/donate) ziyaret edin. - - - - - - - - - -
    BitcoinBitcoin QR kodu16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay liberapay.com üzerinde NewPipe'ı ziyaret edin Liberapay aracılığıyla bağış yapın
    Bountysourcebountysource.com üzerinde NewPipe'ı ziyaret edinNe kadar ödül kazanabileceğinizi kontrol edin.
    ## Gizlilik politikası diff --git a/doc/README.zh_TW.md b/doc/README.zh_TW.md index d5def26b2d8..13963087dd5 100644 --- a/doc/README.zh_TW.md +++ b/doc/README.zh_TW.md @@ -120,21 +120,11 @@ NewPipe 支援多種服務。我們的[使用文件](https://teamnewpipe.github. 若你喜歡 NewPipe 我們歡迎捐款。你可以使用 bitcoin ,也能在 Bountysource 或 Liberapay 上捐款。 更多關於捐款資訊,請見我們的[網站](https://newpipe.net/donate)。 - - - - - - - - - -
    BitcoinBitcoin QR code16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
    Liberapay Visit NewPipe at liberapay.com Donate via Liberapay
    BountysourceVisit NewPipe at bountysource.comCheck out how many bounties you can earn.
    ## 隱私權政策 From d10a93fe4fab0992aefa4d5f58723db1fae92eb3 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Fri, 13 Oct 2023 17:30:01 +0200 Subject: [PATCH 05/82] [README] Remove Bountysource badge --- README.md | 1 - doc/README.asm.md | 1 - doc/README.de.md | 1 - doc/README.es.md | 1 - doc/README.fr.md | 1 - doc/README.hi.md | 1 - doc/README.it.md | 1 - doc/README.ja.md | 1 - doc/README.ko.md | 1 - doc/README.pa.md | 1 - doc/README.pl.md | 1 - doc/README.pt_BR.md | 1 - doc/README.ro.md | 1 - doc/README.ru.md | 1 - doc/README.ryu.md | 1 - doc/README.so.md | 1 - doc/README.sr.md | 1 - doc/README.tr.md | 1 - doc/README.zh_TW.md | 1 - 19 files changed, 19 deletions(-) diff --git a/README.md b/README.md index 58ac798869b..f26048ddcef 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,6 @@ -


    ScreenshotsSupported ServicesDescriptionFeaturesInstallation and updatesContributionDonateLicense

    diff --git a/doc/README.asm.md b/doc/README.asm.md index 8f39d26a143..af855c4cd09 100644 --- a/doc/README.asm.md +++ b/doc/README.asm.md @@ -7,7 +7,6 @@

    -


    স্ক্ৰীণশ্বট • diff --git a/doc/README.de.md b/doc/README.de.md index cc9c313faa9..3714020ff7c 100644 --- a/doc/README.de.md +++ b/doc/README.de.md @@ -13,7 +13,6 @@ -


    ScreenshotsUnterstützte DiensteBeschreibungFeaturesInstallation und UpdatesBeitragSpendenLizenz

    diff --git a/doc/README.es.md b/doc/README.es.md index c2959fe04c0..5aa5eb55cd9 100644 --- a/doc/README.es.md +++ b/doc/README.es.md @@ -10,7 +10,6 @@ -


    diff --git a/doc/README.fr.md b/doc/README.fr.md index 2e56e7ff19b..b68c1e321ad 100644 --- a/doc/README.fr.md +++ b/doc/README.fr.md @@ -10,7 +10,6 @@ -


    Captures d'écranServices SupportésDescriptionFonctionnalitésInstallation et mises à jourContribuerDonsLicence

    diff --git a/doc/README.hi.md b/doc/README.hi.md index 36669cc19e7..536be4d43ed 100644 --- a/doc/README.hi.md +++ b/doc/README.hi.md @@ -10,7 +10,6 @@ -


    ऐप कैसी दिखती हैविवरणसुविधाएँस्थापित करना और अपडेट करनायोगदान करेंआर्थिक योगदान करेंलाइसेंस

    diff --git a/doc/README.it.md b/doc/README.it.md index cd8cb10a8e5..bca6a23d2b4 100644 --- a/doc/README.it.md +++ b/doc/README.it.md @@ -10,7 +10,6 @@ -


    ScreenshotServizi SupportatiDescrizioneFunzionalitàInstallazione e aggiornamentiContribuireDonareLicenza

    diff --git a/doc/README.ja.md b/doc/README.ja.md index 317d3976608..e4eb7469443 100644 --- a/doc/README.ja.md +++ b/doc/README.ja.md @@ -10,7 +10,6 @@ -


    スクリーンショット説明機能インストールと更新貢献寄付ライセンス

    diff --git a/doc/README.ko.md b/doc/README.ko.md index b690e659a12..0ba15ab43a2 100644 --- a/doc/README.ko.md +++ b/doc/README.ko.md @@ -10,7 +10,6 @@ -


    ScreenshotsDescriptionFeaturesUpdatesContributionDonateLicense

    diff --git a/doc/README.pa.md b/doc/README.pa.md index ac52e3b316d..d40e1b84f4c 100644 --- a/doc/README.pa.md +++ b/doc/README.pa.md @@ -10,7 +10,6 @@ -


    ਸਕਰੀਨਸ਼ਾਟਸੇਵਾਵਾਂਵਰਣਨਵਿਸ਼ੇਸ਼ਤਾਵਾਂਇੰਸਟਾਲੇਸ਼ਨ ਅਤੇ ਅੱਪਡੇਟਯੋਗਦਾਨਦਾਨਲਾਈਸੈਂਸ

    diff --git a/doc/README.pl.md b/doc/README.pl.md index bcd37e51514..6412e10f5a5 100644 --- a/doc/README.pl.md +++ b/doc/README.pl.md @@ -10,7 +10,6 @@ -


    ScreenshotyOpisFunkcjeInstalacja i aktualizacjeWkładWesprzyjLicencja

    diff --git a/doc/README.pt_BR.md b/doc/README.pt_BR.md index 9945a396908..a439adc68c6 100644 --- a/doc/README.pt_BR.md +++ b/doc/README.pt_BR.md @@ -11,7 +11,6 @@ -


    ScreenshotsDescriçãoCaracterísticasAtualizaçõesContribuiçãoDoarLicença

    diff --git a/doc/README.ro.md b/doc/README.ro.md index 3eac39563f5..77a6798bf49 100644 --- a/doc/README.ro.md +++ b/doc/README.ro.md @@ -10,7 +10,6 @@ -


    Capturi de ecranDescriereFuncţiiInstalare şi actualizăriContribuţieDonaţiLicenţă

    diff --git a/doc/README.ru.md b/doc/README.ru.md index a11e88783d8..1590b239912 100644 --- a/doc/README.ru.md +++ b/doc/README.ru.md @@ -10,7 +10,6 @@ -


    СкриншотыПоддерживаемые сервисыОписаниеВозможностиУстановка и обновленияУчастиеПожертвованиеЛицензия

    diff --git a/doc/README.ryu.md b/doc/README.ryu.md index 56e037541de..fe30a9ba94a 100644 --- a/doc/README.ryu.md +++ b/doc/README.ryu.md @@ -10,7 +10,6 @@ -


    スクリーンショットしちめいちぬーインストールとぅこうしんこうきんちーふライセンス

    diff --git a/doc/README.so.md b/doc/README.so.md index fdcc11fe6eb..56a696db3bd 100644 --- a/doc/README.so.md +++ b/doc/README.so.md @@ -10,7 +10,6 @@ -


    Sawir-shaashadeedFaahfaahinWaxqabadkaKushubida iyo cusboonaysiintaKusoo KordhinUgu DeeqLaysinka

    diff --git a/doc/README.sr.md b/doc/README.sr.md index 930eccd3397..775585f1a1c 100644 --- a/doc/README.sr.md +++ b/doc/README.sr.md @@ -13,7 +13,6 @@ -


    Снимци екранаПодржане услугеОписКарактеристикеИнсталација и ажурирањаДоприносДонацијаЛиценца

    diff --git a/doc/README.tr.md b/doc/README.tr.md index 3ff88c81ab3..a9c91bfbd7c 100644 --- a/doc/README.tr.md +++ b/doc/README.tr.md @@ -10,7 +10,6 @@ -


    Ekran fotoğraflarıAçıklamaÖzelliklerKurulum ve güncellemelerKatkıda bulunmaBağışLisans

    diff --git a/doc/README.zh_TW.md b/doc/README.zh_TW.md index 13963087dd5..a21f2ca4c27 100644 --- a/doc/README.zh_TW.md +++ b/doc/README.zh_TW.md @@ -10,7 +10,6 @@ -


    截圖說明功能安裝與更新貢獻捐款授權憑證

    From 5265b767cb50005fc6346d5cc93ea1d5f7f5523b Mon Sep 17 00:00:00 2001 From: TobiGr Date: Sat, 14 Oct 2023 18:31:33 +0200 Subject: [PATCH 06/82] Fix notifiying about old "new" streams Add tests for `FeedDAO.unlinkStreamsOlderThan(:offsetDateTime) ` Closes #10237 --- .../schabi/newpipe/database/FeedDAOTest.kt | 124 ++++++++++++++++++ .../newpipe/database/feed/dao/FeedDAO.kt | 30 +++-- 2 files changed, 144 insertions(+), 10 deletions(-) create mode 100644 app/src/androidTest/java/org/schabi/newpipe/database/FeedDAOTest.kt diff --git a/app/src/androidTest/java/org/schabi/newpipe/database/FeedDAOTest.kt b/app/src/androidTest/java/org/schabi/newpipe/database/FeedDAOTest.kt new file mode 100644 index 00000000000..9fa87c31b01 --- /dev/null +++ b/app/src/androidTest/java/org/schabi/newpipe/database/FeedDAOTest.kt @@ -0,0 +1,124 @@ +package org.schabi.newpipe.database + +import android.content.Context +import androidx.room.Room +import androidx.test.core.app.ApplicationProvider +import io.reactivex.rxjava3.core.Single +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull +import org.junit.Before +import org.junit.Test +import org.schabi.newpipe.database.feed.dao.FeedDAO +import org.schabi.newpipe.database.feed.model.FeedEntity +import org.schabi.newpipe.database.feed.model.FeedGroupEntity +import org.schabi.newpipe.database.stream.StreamWithState +import org.schabi.newpipe.database.stream.dao.StreamDAO +import org.schabi.newpipe.database.stream.model.StreamEntity +import org.schabi.newpipe.database.subscription.SubscriptionDAO +import org.schabi.newpipe.database.subscription.SubscriptionEntity +import org.schabi.newpipe.extractor.ServiceList +import org.schabi.newpipe.extractor.channel.ChannelInfo +import org.schabi.newpipe.extractor.stream.StreamType +import java.io.IOException +import java.time.OffsetDateTime +import kotlin.streams.toList + +class FeedDAOTest { + private lateinit var db: AppDatabase + private lateinit var feedDAO: FeedDAO + private lateinit var streamDAO: StreamDAO + private lateinit var subscriptionDAO: SubscriptionDAO + + private val serviceId = ServiceList.YouTube.serviceId + + private val stream1 = StreamEntity(1, serviceId, "https://youtube.com/watch?v=1", "stream 1", StreamType.VIDEO_STREAM, 1000, "channel-1", "https://youtube.com/channel/1", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-01-01", OffsetDateTime.parse("2023-01-01T00:00:00Z")) + private val stream2 = StreamEntity(2, serviceId, "https://youtube.com/watch?v=2", "stream 2", StreamType.VIDEO_STREAM, 1000, "channel-1", "https://youtube.com/channel/1", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-01-02", OffsetDateTime.parse("2023-01-02T00:00:00Z")) + private val stream3 = StreamEntity(3, serviceId, "https://youtube.com/watch?v=3", "stream 3", StreamType.LIVE_STREAM, 1000, "channel-1", "https://youtube.com/channel/1", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-01-03", OffsetDateTime.parse("2023-01-03T00:00:00Z")) + private val stream4 = StreamEntity(4, serviceId, "https://youtube.com/watch?v=4", "stream 4", StreamType.VIDEO_STREAM, 1000, "channel-2", "https://youtube.com/channel/2", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-08-10", OffsetDateTime.parse("2023-08-10T00:00:00Z")) + private val stream5 = StreamEntity(5, serviceId, "https://youtube.com/watch?v=5", "stream 5", StreamType.VIDEO_STREAM, 1000, "channel-2", "https://youtube.com/channel/2", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-08-20", OffsetDateTime.parse("2023-08-20T00:00:00Z")) + private val stream6 = StreamEntity(6, serviceId, "https://youtube.com/watch?v=6", "stream 6", StreamType.VIDEO_STREAM, 1000, "channel-3", "https://youtube.com/channel/3", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-09-01", OffsetDateTime.parse("2023-09-01T00:00:00Z")) + private val stream7 = StreamEntity(7, serviceId, "https://youtube.com/watch?v=7", "stream 7", StreamType.VIDEO_STREAM, 1000, "channel-4", "https://youtube.com/channel/4", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-08-10", OffsetDateTime.parse("2023-08-10T00:00:00Z")) + + private val allStreams = listOf( + stream1, stream2, stream3, stream4, stream5, stream6, stream7 + ) + + @Before + fun createDb() { + val context = ApplicationProvider.getApplicationContext() + db = Room.inMemoryDatabaseBuilder( + context, AppDatabase::class.java + ).build() + feedDAO = db.feedDAO() + streamDAO = db.streamDAO() + subscriptionDAO = db.subscriptionDAO() + } + + @After + @Throws(IOException::class) + fun closeDb() { + db.close() + } + + @Test + fun testUnlinkStreamsOlderThan_KeepOne() { + setupUnlinkDelete("2023-08-15T00:00:00Z") + val streams = feedDAO.getStreams( + FeedGroupEntity.GROUP_ALL_ID, includePlayed = true, includePartiallyPlayed = true, null + ) + .blockingGet() + val allowedStreams = listOf(stream3, stream5, stream6, stream7) + assertEqual(streams, allowedStreams) + } + + @Test + fun testUnlinkStreamsOlderThan_KeepMultiple() { + setupUnlinkDelete("2023-08-01T00:00:00Z") + val streams = feedDAO.getStreams( + FeedGroupEntity.GROUP_ALL_ID, includePlayed = true, includePartiallyPlayed = true, null + ) + .blockingGet() + val allowedStreams = listOf(stream3, stream4, stream5, stream6, stream7) + assertEqual(streams, allowedStreams) + } + + private fun assertEqual(streams: List?, allowedStreams: List) { + assertNotNull(streams) + assertEquals(allowedStreams, streams!!.stream().map { it.stream }.toList().sortedBy { it.uid }) + } + + private fun setupUnlinkDelete(time: String) { + clearAndFillTables() + Single.fromCallable { + feedDAO.unlinkStreamsOlderThan(OffsetDateTime.parse(time)) + }.blockingSubscribe() + Single.fromCallable { + streamDAO.deleteOrphans() + }.blockingSubscribe() + } + + private fun clearAndFillTables() { + db.clearAllTables() + streamDAO.insertAll(allStreams) + subscriptionDAO.insertAll( + listOf( + SubscriptionEntity.from(ChannelInfo(serviceId, "1", "https://youtube.com/channel/1", "https://youtube.com/channel/1", "channel-1")), + SubscriptionEntity.from(ChannelInfo(serviceId, "2", "https://youtube.com/channel/2", "https://youtube.com/channel/2", "channel-2")), + SubscriptionEntity.from(ChannelInfo(serviceId, "3", "https://youtube.com/channel/3", "https://youtube.com/channel/3", "channel-3")), + SubscriptionEntity.from(ChannelInfo(serviceId, "4", "https://youtube.com/channel/4", "https://youtube.com/channel/4", "channel-4")), + ) + ) + feedDAO.insertAll( + listOf( + FeedEntity(1, 1), + FeedEntity(2, 1), + FeedEntity(3, 1), + FeedEntity(4, 2), + FeedEntity(5, 2), + FeedEntity(6, 3), + FeedEntity(7, 4), + ) + ) + } +} diff --git a/app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt b/app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt index 6947f66af5d..028ef04f783 100644 --- a/app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt +++ b/app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt @@ -93,18 +93,28 @@ abstract class FeedDAO { uploadDateBefore: OffsetDateTime? ): Maybe> + /** + * Remove links to streams that are older than the given date + * **but keep at least one stream per uploader**. + * + * One stream per uploader is kept because it is needed as reference + * when fetching new streams to check if they are new or not. + * @param offsetDateTime the newest date to keep, older streams are removed + */ @Query( """ - DELETE FROM feed WHERE - - feed.stream_id IN ( - SELECT s.uid FROM streams s - - INNER JOIN feed f - ON s.uid = f.stream_id - - WHERE s.upload_date < :offsetDateTime - ) + DELETE FROM feed + WHERE feed.stream_id IN (SELECT uid from ( + SELECT s.uid, + (SELECT MAX(upload_date) + FROM streams + WHERE uploader_url = s.uploader_url) max_upload_date + FROM streams s + INNER JOIN feed f + ON s.uid = f.stream_id + + WHERE s.upload_date < :offsetDateTime + AND s.upload_date <> max_upload_date)) """ ) abstract fun unlinkStreamsOlderThan(offsetDateTime: OffsetDateTime) From 9fab0ec94f84b2f8cba03f6d6e1b00a048633796 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Wed, 15 Nov 2023 00:37:05 +0100 Subject: [PATCH 07/82] Fix crash when setting the masking of the new feed items button if the context is null As the fragment context can be null in some cases, we have to make sure that the context is not null before calling DeviceUtils.hasAnimationsAnimatorDurationEnabled. If the context is null, the button will now not be hidden automatically. --- .../java/org/schabi/newpipe/local/feed/FeedFragment.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt index 83882d35f8b..0b61f45fb19 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt @@ -607,9 +607,13 @@ class FeedFragment : BaseStateFragment() { execOnEnd = { // Disabled animations would result in immediately hiding the button // after it showed up - if (DeviceUtils.hasAnimationsAnimatorDurationEnabled(context)) { - // Hide the new items-"popup" after 10s - hideNewItemsLoaded(true, 10000) + // Context can be null in some cases, so we have to make sure it is not null in + // order to avoid a NullPointerException + context?.let { + if (DeviceUtils.hasAnimationsAnimatorDurationEnabled(it)) { + // Hide the new items button after 10s + hideNewItemsLoaded(true, 10000) + } } } ) From 2cf77647146f8f839032c0fb9862c8da54aac77c Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Wed, 15 Nov 2023 19:22:49 +0100 Subject: [PATCH 08/82] Fix crash when building the play queue audio track menu if the player is null As the player can be null in some cases, we have to make sure that the player is not null, by using Optionals on the player itself instead of its methods returning Optionals. If the player is null, the play queue audio track menu will now be hidden. --- .../java/org/schabi/newpipe/player/PlayQueueActivity.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java index defc8ba21f0..c012f6008cd 100644 --- a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java +++ b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java @@ -619,11 +619,13 @@ private void buildAudioTrackMenu() { final MenuItem audioTrackSelector = menu.findItem(R.id.action_audio_track); final List availableStreams = - Optional.ofNullable(player.getCurrentMetadata()) + Optional.ofNullable(player) + .map(Player::getCurrentMetadata) .flatMap(MediaItemTag::getMaybeAudioTrack) .map(MediaItemTag.AudioTrack::getAudioStreams) .orElse(null); - final Optional selectedAudioStream = player.getSelectedAudioStream(); + final Optional selectedAudioStream = Optional.ofNullable(player) + .flatMap(Player::getSelectedAudioStream); if (availableStreams == null || availableStreams.size() < 2 || selectedAudioStream.isEmpty()) { From 84d50da009b5f82bdb6df54addc13b72c6e69f5b Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Sun, 17 Sep 2023 20:49:13 +0200 Subject: [PATCH 09/82] Restore player service start handling before player UI separation This behavior was present before 0.24.0 and the player UI separation and avoided crashes for which their exception contained "Context.startForegroundService() did not then call Service.startForeground()". Some player nullability checks have been also added, and the player service is now stopped when it has been started from a media button and there is nothing to play. --- .../schabi/newpipe/player/PlayerService.java | 47 +++++++++++++++---- .../notification/NotificationPlayerUi.java | 14 ++---- 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/PlayerService.java b/app/src/main/java/org/schabi/newpipe/player/PlayerService.java index ad6c9405dd0..e7abf4320d5 100644 --- a/app/src/main/java/org/schabi/newpipe/player/PlayerService.java +++ b/app/src/main/java/org/schabi/newpipe/player/PlayerService.java @@ -29,6 +29,7 @@ import android.util.Log; import org.schabi.newpipe.player.mediasession.MediaSessionPlayerUi; +import org.schabi.newpipe.player.notification.NotificationPlayerUi; import org.schabi.newpipe.util.ThemeHelper; import java.lang.ref.WeakReference; @@ -59,6 +60,14 @@ public void onCreate() { ThemeHelper.setTheme(this); player = new Player(this); + /* + Create the player notification and start immediately the service in foreground, + otherwise if nothing is played or initializing the player and its components (especially + loading stream metadata) takes a lot of time, the app would crash on Android 8+ as the + service would never be put in the foreground while we said to the system we would do so + */ + player.UIs().get(NotificationPlayerUi.class) + .ifPresent(NotificationPlayerUi::createNotificationAndStartForeground); } @Override @@ -68,16 +77,38 @@ public int onStartCommand(final Intent intent, final int flags, final int startI + "], flags = [" + flags + "], startId = [" + startId + "]"); } + /* + Be sure that the player notification is set and the service is started in foreground, + otherwise, the app may crash on Android 8+ as the service would never be put in the + foreground while we said to the system we would do so + The service is always requested to be started in foreground, so always creating a + notification if there is no one already and starting the service in foreground should + not create any issues + If the service is already started in foreground, requesting it to be started shouldn't + do anything + */ + if (player != null) { + player.UIs().get(NotificationPlayerUi.class) + .ifPresent(NotificationPlayerUi::createNotificationAndStartForeground); + } + if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction()) - && player.getPlayQueue() == null) { - // No need to process media button's actions if the player is not working, otherwise the - // player service would strangely start with nothing to play + && (player == null || player.getPlayQueue() == null)) { + /* + No need to process media button's actions if the player is not working, otherwise + the player service would strangely start with nothing to play + Stop the service in this case, which will be removed from the foreground and its + notification cancelled in its destruction + */ + stopSelf(); return START_NOT_STICKY; } - player.handleIntent(intent); - player.UIs().get(MediaSessionPlayerUi.class) - .ifPresent(ui -> ui.handleMediaButtonIntent(intent)); + if (player != null) { + player.handleIntent(intent); + player.UIs().get(MediaSessionPlayerUi.class) + .ifPresent(ui -> ui.handleMediaButtonIntent(intent)); + } return START_NOT_STICKY; } @@ -87,7 +118,7 @@ public void stopForImmediateReusing() { Log.d(TAG, "stopForImmediateReusing() called"); } - if (!player.exoPlayerIsNull()) { + if (player != null && !player.exoPlayerIsNull()) { // Releases wifi & cpu, disables keepScreenOn, etc. // We can't just pause the player here because it will make transition // from one stream to a new stream not smooth @@ -98,7 +129,7 @@ public void stopForImmediateReusing() { @Override public void onTaskRemoved(final Intent rootIntent) { super.onTaskRemoved(rootIntent); - if (!player.videoPlayerSelected()) { + if (player != null && !player.videoPlayerSelected()) { return; } onDestroy(); diff --git a/app/src/main/java/org/schabi/newpipe/player/notification/NotificationPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/notification/NotificationPlayerUi.java index 4b1fc417f0e..75b27545cfb 100644 --- a/app/src/main/java/org/schabi/newpipe/player/notification/NotificationPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/notification/NotificationPlayerUi.java @@ -17,7 +17,6 @@ import org.schabi.newpipe.player.ui.PlayerUi; public final class NotificationPlayerUi extends PlayerUi { - private boolean foregroundNotificationAlreadyCreated = false; private final NotificationUtil notificationUtil; public NotificationPlayerUi(@NonNull final Player player) { @@ -25,15 +24,6 @@ public NotificationPlayerUi(@NonNull final Player player) { notificationUtil = new NotificationUtil(player); } - @Override - public void initPlayer() { - super.initPlayer(); - if (!foregroundNotificationAlreadyCreated) { - notificationUtil.createNotificationAndStartForeground(); - foregroundNotificationAlreadyCreated = true; - } - } - @Override public void destroy() { super.destroy(); @@ -122,4 +112,8 @@ public void onPlayQueueEdited() { super.onPlayQueueEdited(); notificationUtil.createNotificationIfNeededAndUpdate(false); } + + public void createNotificationAndStartForeground() { + notificationUtil.createNotificationAndStartForeground(); + } } From e5fda35c51ad07136bb4d9803bb8b1aafc1ac859 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Wed, 15 Nov 2023 22:52:57 +0100 Subject: [PATCH 10/82] Remove OPUS HLS streams from playable streams This format is not supported by ExoPlayer when returned as HLS streams, so we can't play streams using this format and this delivery method. Also improve the Javadoc of ListHelper.getPlayableStreams. --- .../org/schabi/newpipe/util/ListHelper.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java index 5918ece2544..534d4fddd77 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java @@ -189,13 +189,16 @@ public static List getUrlAndNonTorrentStreams( /** * Return a {@link Stream} list which only contains streams which can be played by the player. - *
    - * Some formats are not supported. For more info, see {@link #SUPPORTED_ITAG_IDS}. - * Torrent streams are also removed, because they cannot be retrieved. + * + *

    + * Some formats are not supported, see {@link #SUPPORTED_ITAG_IDS} for more details. + * Torrent streams are also removed, because they cannot be retrieved, like OPUS streams using + * HLS as their delivery method, since they are not supported by ExoPlayer. + *

    * * @param the item type's class that extends {@link Stream} * @param streamList the original stream list - * @param serviceId + * @param serviceId the service ID from which the streams' list comes from * @return a stream list which only contains streams that can be played the player */ @NonNull @@ -204,6 +207,8 @@ public static List getPlayableStreams( final int youtubeServiceId = YouTube.getServiceId(); return getFilteredStreamList(streamList, stream -> stream.getDeliveryMethod() != DeliveryMethod.TORRENT + && (stream.getDeliveryMethod() != DeliveryMethod.HLS + || stream.getFormat() != MediaFormat.OPUS) && (serviceId != youtubeServiceId || stream.getItagItem() == null || SUPPORTED_ITAG_IDS.contains(stream.getItagItem().id))); @@ -295,7 +300,9 @@ public static List getFilteredAudioStreams( final Comparator cmp = getAudioFormatComparator(context); for (final AudioStream stream : audioStreams) { - if (stream.getDeliveryMethod() == DeliveryMethod.TORRENT) { + if (stream.getDeliveryMethod() == DeliveryMethod.TORRENT + || (stream.getDeliveryMethod() == DeliveryMethod.HLS + && stream.getFormat() == MediaFormat.OPUS)) { continue; } From b4a0e08d9de66994d8b6dd0404f8ac5dbb870e5e Mon Sep 17 00:00:00 2001 From: Tobi Date: Thu, 23 Nov 2023 17:12:16 +0100 Subject: [PATCH 11/82] Update app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt Co-authored-by: Stypox --- .../java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt b/app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt index 028ef04f783..e7ed934977a 100644 --- a/app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt +++ b/app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt @@ -107,8 +107,10 @@ abstract class FeedDAO { WHERE feed.stream_id IN (SELECT uid from ( SELECT s.uid, (SELECT MAX(upload_date) - FROM streams - WHERE uploader_url = s.uploader_url) max_upload_date + FROM streams s1 + INNER JOIN feed f1 + ON s1.uid = f1.stream_id + WHERE f1.subscription_id = f.subscription_id) max_upload_date FROM streams s INNER JOIN feed f ON s.uid = f.stream_id From ddd6d03e0b2555024daff560a879a01ac1657e05 Mon Sep 17 00:00:00 2001 From: opusforlife2 <53176348+opusforlife2@users.noreply.github.com> Date: Wed, 6 Dec 2023 18:34:43 +0000 Subject: [PATCH 12/82] Add Matrix room link to ReadMe (#10632) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f26048ddcef..ecfa19eb6da 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ +


    ScreenshotsSupported ServicesDescriptionFeaturesInstallation and updatesContributionDonateLicense

    From edbd623e2145f6ba5bf1ea1e4446370231b7bf46 Mon Sep 17 00:00:00 2001 From: Stypox Date: Thu, 7 Dec 2023 16:11:59 +0100 Subject: [PATCH 13/82] Fix Matrix channel link #newpipe:matrix.org is unofficial, #newpipe:libera.chat is the official one --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ecfa19eb6da..9fabb5ac7d9 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ - +


    ScreenshotsSupported ServicesDescriptionFeaturesInstallation and updatesContributionDonateLicense

    From ce30108efc917ab7edb0b90ac8b44d5efbb7180b Mon Sep 17 00:00:00 2001 From: Stypox Date: Thu, 7 Dec 2023 16:40:32 +0100 Subject: [PATCH 14/82] Improve javadoc for `getAudioStreamFor` --- .../org/schabi/newpipe/util/SecondaryStreamHelper.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java b/app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java index 42a6ca36155..75d9a3892f2 100644 --- a/app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java @@ -28,12 +28,15 @@ public SecondaryStreamHelper(@NonNull final StreamInfoWrapper streams, } /** - * Find the correct audio stream for the desired video stream. + * Finds an audio stream compatible with the provided video-only stream, so that the two streams + * can be combined in a single file by the downloader. If there are multiple available audio + * streams, chooses either the highest or the lowest quality one based on + * {@link ListHelper#isLimitingDataUsage(Context)}. * * @param context Android context * @param audioStreams list of audio streams - * @param videoStream desired video ONLY stream - * @return selected audio stream or null if a candidate was not found + * @param videoStream desired video-ONLY stream + * @return the selected audio stream or null if a candidate was not found */ @Nullable public static AudioStream getAudioStreamFor(@NonNull final Context context, From 096115def79dbdef60aa2566fed2c936bfab52dc Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Fri, 8 Dec 2023 15:31:19 +0100 Subject: [PATCH 15/82] Translated using Weblate (Bengali) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 78.7% (571 of 725 strings) Translated using Weblate (Basque) Currently translated at 95.0% (689 of 725 strings) Translated using Weblate (Turkish) Currently translated at 43.4% (33 of 76 strings) Translated using Weblate (Lithuanian) Currently translated at 92.9% (674 of 725 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 30.2% (23 of 76 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 99.8% (724 of 725 strings) Translated using Weblate (Interlingua) Currently translated at 32.0% (232 of 725 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 94.6% (686 of 725 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 94.6% (686 of 725 strings) Translated using Weblate (Romanian) Currently translated at 89.3% (648 of 725 strings) Translated using Weblate (German) Currently translated at 81.5% (62 of 76 strings) Translated using Weblate (German) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Filipino) Currently translated at 32.1% (233 of 725 strings) Translated using Weblate (Filipino) Currently translated at 32.1% (233 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Swedish) Currently translated at 72.3% (55 of 76 strings) Translated using Weblate (Esperanto) Currently translated at 3.9% (3 of 76 strings) Translated using Weblate (Swedish) Currently translated at 99.7% (723 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 71.0% (515 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 2.6% (2 of 76 strings) Translated using Weblate (Tigrinya) Currently translated at 8.4% (61 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 43.4% (33 of 76 strings) Translated using Weblate (German) Currently translated at 81.5% (62 of 76 strings) Translated using Weblate (Finnish) Currently translated at 98.3% (713 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 70.0% (508 of 725 strings) Added translation using Weblate (English (Old)) Added translation using Weblate (Aymara) Added translation using Weblate (English (Middle)) Added translation using Weblate (Arabic (Najdi)) Added translation using Weblate (German (Low)) Added translation using Weblate (Sicilian) Added translation using Weblate (Kashmiri) Added translation using Weblate (Burmese) Translated using Weblate (Tigrinya) Currently translated at 3.5% (26 of 725 strings) Translated using Weblate (Georgian) Currently translated at 91.1% (661 of 725 strings) Translated using Weblate (French) Currently translated at 98.8% (717 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 42.1% (32 of 76 strings) Translated using Weblate (Vietnamese) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Interlingua) Currently translated at 31.3% (227 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 35.5% (27 of 76 strings) Translated using Weblate (Esperanto) Currently translated at 69.2% (502 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 69.2% (502 of 725 strings) Translated using Weblate (German) Currently translated at 81.5% (62 of 76 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Bulgarian) Currently translated at 63.8% (463 of 725 strings) Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 66.3% (481 of 725 strings) Translated using Weblate (French) Currently translated at 98.6% (715 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Turkish) Currently translated at 31.5% (24 of 76 strings) Translated using Weblate (Vietnamese) Currently translated at 97.3% (706 of 725 strings) Translated using Weblate (Swedish) Currently translated at 98.4% (714 of 725 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Russian) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Vietnamese) Currently translated at 94.6% (686 of 725 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 21.0% (16 of 76 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (French) Currently translated at 98.2% (712 of 725 strings) Deleted translation using Weblate (English (Middle)) Co-authored-by: /dev/urandom Co-authored-by: A Co-authored-by: Aitor Salaberria Co-authored-by: Alexthegib Co-authored-by: Allan Nordhøy Co-authored-by: Ans Virlis Co-authored-by: AudricV Co-authored-by: Cem TÜRKER Co-authored-by: Edward Co-authored-by: Erik Matson Co-authored-by: Giorgi Taba K'obakhidze Co-authored-by: Hosted Weblate Co-authored-by: Jener Gomes Co-authored-by: Kristoffer Grundström Co-authored-by: LiftedStarfish Co-authored-by: Napstaguy04 Co-authored-by: P.O Co-authored-by: PiryusQ Co-authored-by: Ray Co-authored-by: ShareASmile Co-authored-by: Software In Interlingua Co-authored-by: TXRdev Archive Co-authored-by: TobiGr Co-authored-by: Translator Co-authored-by: VfBFan Co-authored-by: Weblate Co-authored-by: bittin1ddc447d824349b2 Co-authored-by: ferarilalon Co-authored-by: fsbat0 Co-authored-by: ngocanhtve Co-authored-by: notlin4 Co-authored-by: sum1tookshoe Co-authored-by: trunars Co-authored-by: İbrahim Dinç Co-authored-by: Макар Разин Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eo/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ru/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/tr/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/vi/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/ Translation: NewPipe/Metadata --- app/src/main/res/values-ang/strings.xml | 2 + app/src/main/res/values-ars/strings.xml | 2 + app/src/main/res/values-ay/strings.xml | 2 + app/src/main/res/values-bg/strings.xml | 15 + app/src/main/res/values-bn/strings.xml | 54 +-- app/src/main/res/values-de/strings.xml | 6 +- app/src/main/res/values-eo/strings.xml | 72 ++- app/src/main/res/values-eu/strings.xml | 121 +++-- app/src/main/res/values-fi/strings.xml | 4 +- app/src/main/res/values-fil/strings.xml | 15 +- app/src/main/res/values-fr/strings.xml | 19 +- app/src/main/res/values-ia/strings.xml | 13 +- app/src/main/res/values-ka/strings.xml | 38 +- app/src/main/res/values-ks/strings.xml | 2 + app/src/main/res/values-lt/strings.xml | 2 +- app/src/main/res/values-my/strings.xml | 2 + app/src/main/res/values-nb-rNO/strings.xml | 40 +- app/src/main/res/values-nds/strings.xml | 2 + app/src/main/res/values-pa/strings.xml | 6 +- app/src/main/res/values-pt-rBR/strings.xml | 211 ++++---- app/src/main/res/values-ro/strings.xml | 2 +- app/src/main/res/values-scn/strings.xml | 2 + app/src/main/res/values-sv/strings.xml | 94 +++- app/src/main/res/values-ti/strings.xml | 56 ++- app/src/main/res/values-tr/strings.xml | 12 +- app/src/main/res/values-vi/strings.xml | 450 ++++++++++-------- app/src/main/res/values-zh-rHK/strings.xml | 86 +++- app/src/main/res/values-zh-rTW/strings.xml | 112 ++--- .../metadata/android/de/changelogs/63.txt | 2 +- .../metadata/android/de/changelogs/65.txt | 12 +- .../metadata/android/de/changelogs/968.txt | 8 +- .../metadata/android/de/changelogs/970.txt | 2 +- .../metadata/android/de/changelogs/993.txt | 10 +- .../metadata/android/de/changelogs/995.txt | 14 + .../metadata/android/eo/changelogs/63.txt | 8 + .../metadata/android/eo/full_description.txt | 1 + .../metadata/android/pt-BR/changelogs/954.txt | 14 +- .../metadata/android/pt-BR/changelogs/994.txt | 15 + .../metadata/android/pt-BR/changelogs/995.txt | 14 + .../metadata/android/pt/changelogs/995.txt | 14 + .../metadata/android/ru/changelogs/994.txt | 13 + .../metadata/android/ru/changelogs/995.txt | 14 + .../metadata/android/sv/changelogs/954.txt | 9 + .../metadata/android/tr/changelogs/68.txt | 48 +- .../metadata/android/tr/changelogs/69.txt | 19 + .../metadata/android/tr/changelogs/70.txt | 25 + .../metadata/android/tr/changelogs/71.txt | 10 + .../metadata/android/tr/changelogs/730.txt | 2 + .../metadata/android/tr/changelogs/740.txt | 22 + .../metadata/android/tr/changelogs/750.txt | 21 + .../metadata/android/tr/changelogs/760.txt | 40 ++ .../metadata/android/tr/changelogs/770.txt | 3 + .../metadata/android/tr/changelogs/780.txt | 12 + .../metadata/android/tr/changelogs/790.txt | 14 + .../metadata/android/tr/full_description.txt | 2 +- .../metadata/android/vi/changelogs/65.txt | 9 + .../metadata/android/vi/changelogs/987.txt | 12 + .../metadata/android/vi/changelogs/988.txt | 2 + .../metadata/android/vi/changelogs/989.txt | 3 + .../metadata/android/vi/changelogs/990.txt | 15 + .../metadata/android/vi/changelogs/991.txt | 13 + .../metadata/android/vi/changelogs/994.txt | 15 + .../metadata/android/vi/changelogs/995.txt | 14 + .../android/zh_Hant_HK/changelogs/994.txt | 15 + .../android/zh_Hant_HK/changelogs/995.txt | 14 + 65 files changed, 1363 insertions(+), 559 deletions(-) create mode 100644 app/src/main/res/values-ang/strings.xml create mode 100644 app/src/main/res/values-ars/strings.xml create mode 100644 app/src/main/res/values-ay/strings.xml create mode 100644 app/src/main/res/values-ks/strings.xml create mode 100644 app/src/main/res/values-my/strings.xml create mode 100644 app/src/main/res/values-nds/strings.xml create mode 100644 app/src/main/res/values-scn/strings.xml create mode 100644 fastlane/metadata/android/de/changelogs/995.txt create mode 100644 fastlane/metadata/android/eo/changelogs/63.txt create mode 100644 fastlane/metadata/android/eo/full_description.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/994.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/995.txt create mode 100644 fastlane/metadata/android/pt/changelogs/995.txt create mode 100644 fastlane/metadata/android/ru/changelogs/994.txt create mode 100644 fastlane/metadata/android/ru/changelogs/995.txt create mode 100644 fastlane/metadata/android/sv/changelogs/954.txt create mode 100644 fastlane/metadata/android/tr/changelogs/69.txt create mode 100644 fastlane/metadata/android/tr/changelogs/70.txt create mode 100644 fastlane/metadata/android/tr/changelogs/71.txt create mode 100644 fastlane/metadata/android/tr/changelogs/730.txt create mode 100644 fastlane/metadata/android/tr/changelogs/740.txt create mode 100644 fastlane/metadata/android/tr/changelogs/750.txt create mode 100644 fastlane/metadata/android/tr/changelogs/760.txt create mode 100644 fastlane/metadata/android/tr/changelogs/770.txt create mode 100644 fastlane/metadata/android/tr/changelogs/780.txt create mode 100644 fastlane/metadata/android/tr/changelogs/790.txt create mode 100644 fastlane/metadata/android/vi/changelogs/65.txt create mode 100644 fastlane/metadata/android/vi/changelogs/987.txt create mode 100644 fastlane/metadata/android/vi/changelogs/988.txt create mode 100644 fastlane/metadata/android/vi/changelogs/989.txt create mode 100644 fastlane/metadata/android/vi/changelogs/990.txt create mode 100644 fastlane/metadata/android/vi/changelogs/991.txt create mode 100644 fastlane/metadata/android/vi/changelogs/994.txt create mode 100644 fastlane/metadata/android/vi/changelogs/995.txt create mode 100644 fastlane/metadata/android/zh_Hant_HK/changelogs/994.txt create mode 100644 fastlane/metadata/android/zh_Hant_HK/changelogs/995.txt diff --git a/app/src/main/res/values-ang/strings.xml b/app/src/main/res/values-ang/strings.xml new file mode 100644 index 00000000000..a6b3daec935 --- /dev/null +++ b/app/src/main/res/values-ang/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-ars/strings.xml b/app/src/main/res/values-ars/strings.xml new file mode 100644 index 00000000000..a6b3daec935 --- /dev/null +++ b/app/src/main/res/values-ars/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-ay/strings.xml b/app/src/main/res/values-ay/strings.xml new file mode 100644 index 00000000000..a6b3daec935 --- /dev/null +++ b/app/src/main/res/values-ay/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 08a6bd93bc2..fc845fdf912 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -555,4 +555,19 @@ Наскоро добавено Буфериране Разбийте плейъра + Изключете, за да скриете полетата с мета информация с допълнителна информация за създателя на потока, съдържанието на потока или заявка за търсене + Автоматично поставяне в опашка + Редактирайте всяко действие за известяване по-долу, като го докоснете. Изберете до три от тях, които да бъдат показани в компактното известие, като използвате квадратчетата за отметка вдясно + Изберете оригиналния аудио запис независимо от езика + Превключването от един плейър на друг може да замени вашата опашка + Изберете аудиозапис с описания за хора с увредено зрение, ако има такъв + Действие с жест наляво + Предпочитай описателно аудио + Променете размера на интервала на зареждане на прогресивно съдържание (в момента %s). По-ниска стойност може да ускори първоначалното им зареждане + Предпочитай оригинално аудио + Опашката на активния плейър ще бъде заменена + Полезно, например, ако използвате слушалки със счупени физически бутони + Размер на интервала на зареждане при възпроизвеждане + Игнорирайте събитията с хардуерни медийни бутони + Изберете жест за лявата половина на екрана на плейъра \ No newline at end of file diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index fd80afacfca..13bda43ae9a 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -243,17 +243,17 @@ প্রথম ক্রিয়া বোতাম থাম্বনেলে ১:১ অনুপাতে করো Kodi মিডিয়া সেন্টারে এর মাধ্যমে ভিডিও প্লে করার জন্য একটি বিকল্প প্রদর্শন কর - \"Kodi দ্বারা চালান\" বিকল্পটি প্রদর্শন কর - অনুপস্থিত কোড অ্যাপ ইনস্টল করবেন\? - Kodi দ্বারা চালাও + \"Kodi-তে প্লে করুন\" দেখান + Kodi ইনস্টল করবেন? + Kodi-তে প্লে করুন শুধুমাত্র কিছু ডিভাইস 2K/4K ভিডিও চালাতে পারে - উচ্চতর রেজুলেশন প্রদর্শন করা হবে - সহজাত ভাসমান আকার - সহজাত আকার - অডিও ফাইলগুলির জন্য ডাউনলোডের ফোল্ডার নির্বাচন করুন - ডাউনলোড করা অডিও ফাইলগুলি এখানে সঞ্চিত থাকে + উচ্চতর রেজুলেশন দেখান + স্বাভাবিক পপ-আপ রেজুলেশন + স্বাভাবিক রেজুলেশন + অডিও ডাউনলোডের জন্য ফোল্ডার নির্বাচন করুন + ডাউনলোড করা অডিও এখানে থাকবে অডিও ডাউনলোড ফোল্ডার - ভিডিওগুলি ডাউনলোডের জন্য ফোল্ডার নির্বাচন করুন + ভিডিও ডাউনলোডের জন্য ফোল্ডার নির্বাচন করুন ডাউনলোড করা ভিডিওগুলো এখানে থাকে ভিডিও ডাউনলোড করার ফোল্ডার যুক্ত করুন @@ -261,33 +261,33 @@ ব্যাকগ্রাউন্ড ট্যাব পছন্দ করুন বুকমার্ক করা প্লেলিস্টসমূহ - সদস্যতা + সাবস্ক্রিবশন তথ্য দেখুন - সদস্যতা হালনাগাদে ব্যর্থ - সদস্যতা পরিবর্তন করা যায়নি - চ্যানেল থেকে আনসাবস্ক্রাইব্ড + সাবস্ক্রিবশন হালনাগাদ করা সম্ভব হয়নি + সাবস্ক্রিবশন পরিবর্তন করা সম্ভব হয়নি + চ্যানেল আনসাবস্ক্রাইব করা হয়েছে আনসাবস্ক্রাইব - সাবস্ক্রাইব করা আছে + পূর্ব-সাবস্ক্রাইবকৃত সাবস্ক্রাইব - বহির্গত অডিও প্লেয়ার ব্যবহার করুন - কিছু রেজোলিউশনে অডিও অপসারণ করে দেয় - বাইরের ভিডিও প্লেয়ার ব্যবহার করুন + অন্যান্য অডিও প্লেয়ার ব্যবহার করুন + কিছু কিছু রেজুলেশনে অডিও ঠিকঠাক থাকবে না + অন্যান্য ভিডিও প্লেয়ার ব্যবহার করুন শেয়ার করুন - রেজাল্ট দেখানো হচ্ছেঃ %s - তুমি কি বুঝিয়েছো ‘%1$s’\? + ফলাফল দেখানো হচ্ছেঃ %s + আপনি কি ‘%1$s’ বোঝাচ্ছেন? সেটিংস খুঁজুন - স্ট্রিম ফাইল ডাউনলোড করুন + ডাউনলোড করুন ডাউনলোড শেয়ার - ভাসমান অবস্থায় খুলো - ব্রাউজারে খুলো + পপআপ মুডে চালু করুন + ব্রাউজারে চালু করুন বাতিল ইনস্টল - কোনো ধারা চালক পাওয়া যায়নি (প্লে করতে VLC ইন্সটল করতে পারো)। - কোন স্ট্রিম প্লেয়ার পাওয়া যায়নি। VLC ইনস্টল করতে চান\? + কোনো মিডিয়া প্লেয়ার পাওয়া যায়নি (মিডিয়া প্লে করতে VLC ইন্সটল করতে পারেন)। + কোন স্ট্রিম প্লেয়ার পাওয়া যায়নি। VLC ইনস্টল করতে চান কি? প্রকাশকাল %1$s - আতশী কাঁচে টিপ দিয়ে শুরু করো। + আতশ কাঁচে চাপ দিয়ে শুরু করো। বাফারিং সাফল পঞ্চম অ্যাকশন বাটন @@ -432,7 +432,7 @@ অধ্যায় মতামত বর্ণনা - দিয়ে খুলো + অন্য অ্যাপে ওপেন করুন ফিড হালনাগাদ সীমা খালি গ্রুপ নাম কোনো সদস্যতা নির্বাচিত হয়নি @@ -570,7 +570,7 @@ ডাউনলোড শেষ %sটি ডাউনলোড শেষ - দেখা হয়েছে চিহ্নিত করো + দেখা হয়েছে বলে চিহ্নিত করুন চালক বিজ্ঞপ্তি নিম্ন মান(ছোট) মূল তৈরিকারকের পছন্দ করা diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2fa308a005c..5260287c1bc 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -99,7 +99,7 @@ Nur manche Geräte können Videos in 2K/4K abspielen Hintergrund Pop-up - Pop-up Eigenschaften merken + Eigenschaften des Pop-ups merken Entfernt Tonspur bei manchen Auflösungen Letzte Größe und Position des Pop-ups merken Suchvorschläge @@ -178,10 +178,10 @@ Wiederherstellen nach einem Wiedergabefehler Kiosk-Seite Kiosk auswählen - Tipp anzeigen, wenn der Hintergrundwiedergabe- oder Pop-up-Knopf „Details:“ im Video gedrückt wird + Tipp anzeigen, wenn die Hintergrundwiedergabe- oder Pop-up-Schaltfläche „Details:“ im Video gedrückt wird Neu und Heiß Halten, um zur Wiedergabeliste hinzuzufügen - „Halten zum Einreihen“ Tipp anzeigen + „Halten zum Einreihen“-Tipp anzeigen [Unbekannt] Wiedergabe im Hintergrund starten Wiedergabe in einem Pop-up starten diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index 99e8f7589a1..44e3348ca90 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -111,8 +111,8 @@ Konservi la historio de serĉo lokale Rigardu historion Spuri la viditajn filmetojn - NewPipe Sciigo - Sciigoj por NewPipe fonaj kaj ŝprucfenestraj ludiloj + Sciigo de NewPipe + Sciigoj por ludilo de NewPipe Ludilo Konduto Historio kaj kaŝmemoro @@ -201,8 +201,8 @@ Elektu ongleton Ĝisdatigoj Dosiero forviŝita - Sciigo por ĝisdatigi apon - Sciigo por nova versio de NewPipe + Sciigo por ĝisdatigo de apo + Sciigo por novaj versioj de NewPipe Ekstera konservejo malhavebla Elŝuti al ekstera SD-karto ne eblas. Ĉu vi volas restarigi la elŝutan dosierujon \? viciĝita @@ -546,4 +546,68 @@ Kraŝi la ludilo Envicigita Envicigi + Laŭteco + Neniu + Permesi al Android agordi koloron de sciigo laŭ la precipa koloro de videaĵminiaturo (noti, ke ĉi tio ne disponeblas en ĉiuj iloj) + Aŭtomata vicigado + Ago de dekstra gesto + Redakti ĉiun agon de sciigo per tuŝi gin. Elekti maksimume tri agon por montri en la kompakta sciigo per markobutonoj dekstre. + Elekti la originalan aŭdiotrakon malgraŭ lingvo + Elekti aŭdiotrakon kun priskriboj por vidmalkapabluloj kiam ebla + Ago de maldekstra gesto + Preferi priskribajn aŭdiotrakojn + Ŝangi la grandecon de elŝuta intervalo por progresiva enhavo (aktuale %s). Malplia valoro eble povas rapidigi ĝian komencan ŝargadon + Preferi originalan aŭdaĵon + Elekti geston por dekstra duono de ludil-ekrano + Utila, ekzemple, se vi uzas kaptelefonon, kiu havas difektajn fizikajn butonojn + Grandeco de intervalo de legada elŝuto + Heleco + Vi povas elekti maksimume tri agoj por montri en la kompakta sciigo! + Ignori eventoj de aparataroj plurmediaj butonoj + Elekti geston por maldekstra duono de ludil-ekrano + Ŝalti \"Limigitan Reĝimon\" de YouTube + Rapida reĝimo + Ne eblas rekoni la ligilon. Ĉu malfermi per alia apo\? + Kuketojn de reCAPTCHA estis forigita + Montri enhavon, kiu eble maltaŭgas por infanoj, ĉar ĝi havas aĝo-limon (kiel \"18+\") + Novaj fluoj + Foraj serĉsugestoj + Sciigoj por raporti erarojn + Ŝargante metadatumoj… + Sciigo por kreado de haketaĵoj de videoj + YouTube provizas \"Limigitan Reĝimon\", kiu kaŝas enhavon, kiu potence maltaŭgas por infanoj + Ĉi tiu video estas aĝo-limigita. +\nPro novaj reguloj de YouTube, kiuj aplikas al aĝo-limigitaj videoj, NewPipe ne povas atingi iun ajn video-fluoj de ĉi tiu video kaj konsekvence ne povas ludi ĝin. + Sciigo por erar-raportoj + Sciigoj + Ludila sciigo + Sciigo por haketado de videoj + Lokaj serĉsugestoj + Ŝalti ĉefan ludilon plenekrane + Sciigo por novaj fluoj de abonoj + Forigi kuketojn de reCAPTCHA + Agordi la sciigon por ĉi-momente ludantaj datumtorentoj + Ne komenci ludi videojn en la mini-ludilo, sed ŝalti plenekranan reĝimon rekte, se aŭtomata rotacio ŝlositas. Vi ankoraŭ povus atingi mini-ludilon, se vi elirus plenekranan reĝimon. + Forigi kuketojn, kiujn NewPipe konservas, kiam vi solvas reCAPTCHA-taskojn + NewPipe renkontis eraron, tuŝi por raporti + Pozicio de la ĉefaj langetoj + Transloki la ĉefan langet-elektilon al la malsupro + + %s nova fluo + %s novaj fluoj + + Raporti per GitHub + Komentoj malŝaltitas + Eraro okazis, vidu sciigon + Neniuj tujelsendoj + Neniuj fluoj + Kopii formatitan raporton + Importi aŭ eksporti abonojn per la tri-punkta menuo + Kalkulado de haketaĵo + Oftaj demandoj + Neniu dosierujo por elŝutoj agordita, bonvolu elekti la defaŭltan elŝuto-dosierujon nun + Bonvolu certigi, ĉu erarraporto, kiu diskutas pri via eraro, jam ekzistas. Kreado de duoblaĵaj erarraportoj forprenas tempon el ni, kiun ni povus uzi por ripari la veran eraron. + Rilatajn erojn + Solvi + Malsukcesis kopii al la tondujo \ No newline at end of file diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index ba0793db8c1..69a42d1c235 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -14,7 +14,7 @@ Aukeratu bideoak deskargatzeko karpeta Lehenetsitako bereizmena Jo Kodirekin - Kode aplikazioa instalatu\? + Falta den Kore aplikazioa instalatu nahi duzu? Erakutsi \"Jo Kodirekin\" aukera Erakutsi bideoa Kodi multimedia zentroarekin erreproduzitzeko aukera Audioa @@ -28,7 +28,7 @@ Igotzailearen abatarraren iruditxoa Ez dute gustoko Gustoko dute - Ez da jario erreproduzigailurik aurkitu. VLC instalatu\? + Ez da igorpen-erreproduzigailurik aurkitu. VLC instalatu? \"%1$s\" esan nahi al zenuen\? Erabili kanpo bideo-erreproduzigailua Erabili kanpo audio-erreproduzigailua @@ -109,7 +109,7 @@ © %1$s %2$s. %3$s Honi buruz eta ohiko galderak Lizentziak - Androiderako streaming libre eta arina. + Igorpen libre eta arinak Android-en. Ikusi GitHub zerbitzarian NewPipe Lizentzia Ideiak, itzulpenak, diseinu aldaketak, kode garbiketak, kode aldaketa sakonak badituzu, laguntza beti da ongi etorria. Eginaz hobetzen da! @@ -167,7 +167,7 @@ Aldatu bigarren planora Aldatu laster-leihora Aldatu nagusira - Ezin izan da jario hau erreproduzitu + Ezin izan da igorpen hau erreproduzitu Erreproduzigailuaren errore berreskuraezina gertatu da Erreproduzigailuaren erroretik berreskuratzen Dohaintza @@ -194,18 +194,18 @@ Laster-leihoan erreproduzitzen hasi Ireki tiradera Itxi tiradera - Ez da jario erreproduzigailurik aurkitu (VLC instalatu dezakezu edukia ikusi ahal izateko). + Ez da igorpen-erreproduzigailurik aurkitu (VLC instalatu dezakezu erreproduzitzeko). Beti Behin besterik ez Kanpo erreproduzigailuek ez dituzte mota honetako estekak onartzen - Ez da bideo jariorik aurkitu - Ez da audio jariorik aurkitu + Ez da bideo-igorpenik aurkitu + Ez da audio-igorpenik aurkitu Bideo erreproduzigailua Bigarren planoko erreproduzigailua Laster-leiho erreproduzigailua Informazioa eskuratzen… Kargatzen eskatutako edukia - Deskargatu jario fitxategia + Deskargatu igorpen-fitxategia Erakutsi informazioa Gogoko erreprodukzio-zerrendak Gehitu hona @@ -214,8 +214,8 @@ Ezabatu cacheko metadatuak Kendu cachetik webguneen datu guztiak Metadatuen cachea ezabatuta - Gehitu hurrengo jarioa ilarara - Jarraitu bukaerako (errepikapenik gabe) ilara erlazionatutako jario bat gehituz + Gehitu automatikoki hurrengo igorpena ilarara + Gehitu ilararen amaieran lotutako igorpen bat errepikatu gabe Arazketa Fitxategia Inportatu datu-basea @@ -223,7 +223,7 @@ Zure uneko historiala, harpidetzak eta (aukeran) ezarpenak gainidazten ditu Esportatu historiala, harpidetzak, erreprodukzio-zerrendak eta ezarpenak Garbitu ikusitakoaren historiala - Jotako jarioen historiala eta erreprodukzio puntuak ezabatzen ditu + Erreproduzitutako igorpen-historia eta erreprodukzio-kokapenak ezabatzen ditu Ezabatu ikusitakoaren historia osoa\? Ikusitakoaren historiala ezabatuta Garbitu bilaketa historiala @@ -235,7 +235,7 @@ Fitxategia ez dago edo ez dago baimenik irakurri edo idazteko Fitxategi izena ezin da hutsik egon Errore bat gertatu da: %1$s - Ez dago jariorik deskargatzeko eskuragarri + Ez dago igorpenik eskuragarri deskargatzeko Arrastatu ordena aldatzeko Sortu Baztertu @@ -260,7 +260,7 @@ Kendu gogokoa Erreprodukzio zerrenda hau ezabatu\? Erreprodukzio-zerrenda sortuta - Erreprodukzio-zerrendatua + Zerrendara gehitua Erreprodukzio zerrendaren iruditxoa aldatuta. Azpititulurik ez Doitu @@ -557,7 +557,7 @@ %s bilaketaren erantzunak erakusten Ilaran jarri da Jarri ilaran - Zerbitzuen jatorrizko testuak transmisioko elementuetan ikusgai egongo dira + Zerbitzuen jatorrizko testuak igorpenaren elementuetan ikusgai egongo dira Erakutsi «orain dela» jatorrizko denbora elementuetan Editatu beheko jakinarazpen ekintza bakoitza gainean sakatuz. Hautatu horietako hiru gehienez jakinarazpen trinkoan erakusteko eskuineko kontrol laukiak erabiliz Androidek miniaturako kolore nagusiaren arabera jakinarazpenaren kolorea pertsonalizatzea baimendu (kontuan izan ez dagoela gailu guztietan erabilgarri) @@ -568,7 +568,7 @@ Bideo hash jakinarazpena Hash-a kalkulatzen Azkenak - Desgaitu jario sortzailearen informazio gehigarria, jarioaren edukia edo bilaketa eskaera duten informazio koadroak ezkutatzeko + Desgaitu igorpen-sortzailearen informazio gehigarria, igorpenaren edukia edo bilaketa-eskaera duten metadatuen informazio-koadroak ezkutatzeko Erakutsi meta informazioa Ez dago zure gailuan hau ireki dezakeen aplikaziorik Kapituluak @@ -580,22 +580,22 @@ Ireki honekin Irratia Nabarmenduak - Eduki hau ordaindu duten erabiltzaileentzat soilik dago eskuragarri, eta NewPipe-k ezin du tramsmititu edo deskargatu. - Bideo hau YouTube Music Premium kideentzako soilik eskuragarri dago, eta NewPipe-k ezin du transmititu edo deskargatu. - Eduki hau pribatua da, eta NewPipe-k ezin du transmititu edo deskargatu. - Hau SoundCloud Go+ pista bat da, zure herrialdean gutxienez, eta NewPipe-k ezin du transmititu edo deskargatu. + Eduki hau ordaindu duten erabiltzaileentzat soilik dago erabilgarri, eta NewPipe-k ezin du igorri edo deskargatu. + Bideo hau YouTube Music Premium kideentzako soilik erabilgarri dago, eta NewPipe-k ezin du igorri edo deskargatu. + Eduki hau pribatua da, eta NewPipe-k ezin du igorri edo deskargatu. + Hau SoundCloud Go+ zerbitzuko pista bat da, zure herrialdean behintzat, eta NewPipe-k ezin du igorri edo deskargatu. Eduki hau ez dago eskuragarri zure herrialdean. Aplikazioa kraskatu Ebatzi Bideo hau adinez mugatua dago. -\nAdinez mugatutako bideoekiko YouTube-ren politika berriengatik, NewPipe-k ezin ditu bideo hauek atzitu eta ezin ditu erreproduzitu. +\nAdinez mugatutako bideoekiko YouTube-ren politika berriengatik, NewPipe-k ezin ditu bideoen igorpen hauek atzitu eta erreproduzitu.
    Deskarga hasi da Behean gaueko gai gogokoena hauta dezakezu Hautatu zure gaueko gai gogokoena — %s Automatikoa (gailuaren gaia) - Gau Gaia + Gauaren gaia kanalaren xehetasunak erakutsi - Desaktibatu hedabideen tunela bideo-erreprodukzioan pantaila beltz bat edo totelka ari bada + Desgaitu edukien tunela bideo-erreprodukzioan pantaila beltza badago edo bideoa totelka ari bada. Hedabideen tunela desaktibatu Itzalita Piztuta @@ -650,7 +650,7 @@ Ez hasi bideoak mini erreproduzitzailean eta hasi bideoak pantaila osoan zuzenean, auto biraketa blokeatuta badago. Mini erreproduzitzailea erabili dezakezu pantaila osotik irtetzean Hasi erreproduzitzaile nagusia pantaila osoan Isatsari bideo hau erantsita - Gehitu bideo hau isatsari + Gehitu jarraian Erakutsi \"Itxi erreproduzigailua\" Prozesatzen... Itxoin mesedez Erroreen txostenen jakinarazpena @@ -670,37 +670,37 @@ Erreproduzigailua erabiltzean ustekabean ixteko aukera ematen du Erakutsi errore barra bat Sortu errore jakinarazpen bat - Konfiguratu uneko erreprodukzioaren jakinarazpenak + Konfiguratu unean erreproduzitzen ari den igorpenaren jakinarazpena Jakinarazpenak Erreproduzigailuaren jakinarazpenak - Jario berriak - Egiaztatu jario berriak - Jario berrien jakinarazpenak + Igorpen berriak + Bilatu igorpen berriak + Igorpen berrien jakinarazpenak Edozein sare Jakinarazpenak desgaituta daude Kanal honetara harpidetu zara , Txandakatu denak - Harpidetzen jario berriei buruz jakinarazi + Harpidetzen igorpen berriei buruz jakinarazi Ezabatu deskargatutako fitxategi guztiak biltegitik\? - Harpidetzentzako jario berrien jakinarazpenak - Jarioaren xehetasunak kargatzen… + Harpidetzen igorpen berrien jakinarazpenak + Igorpenaren xehetasunak kargatzen… - jario berri %s - %s jario berri + igorpen berri %s + %s igorpen berri LeakCanary ez dago eskuragarri Egiaztapen maiztasuna Jakinarazi ExoPlayer lehenetsia - Beharrezko sare konexioa + Beharrezko sareko konexioa Portzentaia Semitonoa Erreprodukzioaren kargatze-tartearen tamaina - Deskargatzaileak onartzen ez dituen jarioak ez dira erakusten - Hautatutako jarioa ez dago kanpoko erreproduzigailu batengatik onartuta - Ez dago kanpoko erreproduzigailu batengatik onartuta dagoen audio jariorik - Ez dago kanpoko erreproduzigailu batengatik onartuta dagoen bideo jariorik + Deskargatzaileak onartzen ez dituen igorpenak ez dira erakusten + Hautatutako igorpena ez dute kanpoko erreproduzitzaileek onartzen + Ez dato erabilgarri audio-igorpenik kanpoko erreproduzitzaileentzat + Ez dago erabilgarri bideo-igorpenik kanpoko erreproduzitzaileentzat Formatu ezezaguna Kalitate ezezaguna Hautatu kanpoko erreproduzigailuen kalitatea @@ -711,7 +711,7 @@ Betiko miniatura kendu NewPipe-en azken bertsioa erabiltzen ari zara Sakatu %s deskargatzeko - Kopia %d behin/aldiz gehitua + Kopia %d aldiz gehitu da Txartela Aukera hau Gaiarako %s aukeratua badago soilik dago erabilgarri Ordenatu @@ -722,10 +722,49 @@ Erabilgarria, adibidez, botoi fisiko hautsiak dituen entzungailua erabiltzen ari bazara Kendu bikoiztuak Kendu bikoiztuak\? - Jario bikoiztu guztiak kendu nahi dituzu erreprodukzio-zerrenda honetatik\? - Erakutsi hurrengo jarioak - Erakutsi/Ezkutatu jarioak + Igorpen bikoiztu guztiak kendu nahi dituzu zerrenda honetatik? + Erakutsi hurrengo igorpenak + Erakutsi/Ezkutatu igorpenak Partzialki ikusita Guztiz ikusia Laster agertzeko + Harpidedunak + Ezezaguna + Bolumena + Erabili ExoPlayer-en deskodetzailearen ordezko eginbidea + Bat ere ez + Metadatuak kargatzen… + Kudeatu ExoPlayer-en ezarpen batzuk. Aldaketa hauek eragina izan dezaten, erreproduzitzailea berrabiarazi behar da. + Fitxa nagusien kokapena + Lortu kanalaren fitxak + Abatarrak + Gaitu aukera hau deskodetzailea hasieratzeko arazoak badituzu, hala nola, lehentasun gutxiago duen deskodetzailetara igarotzea deskodetzaile nagusiaren hasieratzeak huts egiten badu. Aukera honek erreprodukzioak kalitate urria izatea ekar dezake, deskodetzaile nagusiak erabiltzean ez bezala. + Eskuineko keinuaren ekintza + Erabili beti ExoPlayer-en bideo-irteeraren interfazeko ezarpenaren konponbidea + Hurrengo igorpena + Edukien tunela desgaitu da lehenespenez gailuan, gailuaren modeloak ez du onartzen eta. + Azpikanalen abatarrak + Audio-pista bat egon behar da igorpen honetan jada + Hautatu jatorrizko audioaren pista hizkuntza zein den kontuan hartu gabe + Hautatu kanpoko erreproduzitzailearen audio-pista + Lortuko diren fitxak jarioa eguneratzean. Aukera honek ez du eraginik kanal bat modu azkarra erabiliz eguneratzen bada. + Hautatu ikusmen-urritasuna dutenentzako azalpenak dituzten audio-pista bat erabilgarri badago + Ezkerreko keinuaren ekintza + Hobetsi audio deskribatzailea + Igotako abatarrak + Aldatu eduki progresiboen kargatze-tartearen tamaina (oraingoa: %s). Balio baxu batek hasierako kargatzea bizkortu dezake. + Hobetsi jatorrizko audioa + Audioa: %s + Bannerrak + Aukeratu erreproduzigailuaren pantailaren eskuin erdiaren keinua + Mugitu fitxa-hautatzaile nagusia azpira + Audio-pista + Zuzeneko igorpenik ez + Miniaturak + ExoPlayer-en ezarpenak + Distira + Igorpenik ez + Aurreko igorpena + Aukeratu erreproduzitzailearen pantailaren ezker erdiaren keinua + Zuzenekoa \ No newline at end of file diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 930c41afa97..958c82d07e0 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -789,5 +789,7 @@ Kanavat Olet nyt tilannut tämän kanavan Edellinen stream - + + Haluatko poistaa kaikki ylimääräiset identtiset suoratoistot tästä soittolistasta\? + Suoratoistot, joita lataaja ei vielä tue, ei näytetä \ No newline at end of file diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml index 28b344af343..c798a7aa848 100644 --- a/app/src/main/res/values-fil/strings.xml +++ b/app/src/main/res/values-fil/strings.xml @@ -26,10 +26,10 @@ Hindi ma-update ang pagsubaybay Ipakita ang impormasyon Mga Pagsubaybay - Mga naka-bookmark na playlist + Nakabookmark na Playlists Pumili ng Tab Anong Bago - Background + Likuran Palutangin Idagdag Sa Folder ng mga na-download na video @@ -251,4 +251,15 @@ Hangganan ng Edad Oo, pati na rin ang mga napanood nang video Kusa (tema ng device) + Tanggalin ang kabuuan ng watch history? + Walang mga stream na maaaring i-download + I-import o i-export ang mga subskripsyon galing sa 3-dot menu + Impormasyon: + Paumanhin, hindi dapat iyon nangyari. + Paumanhin, mayroon nagkamali. + Hindi maisaayos ang download menu + Ang search history ay tinanggal + Walang nanonood + Wala dito + Walang folder na ganoon \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index ff98bc464ab..bad5cd7b932 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -663,8 +663,8 @@ Balayez un élément pour le supprimer Ne pas lancer les vidéos dans le mini lecteur mais directement en plein écran si la rotation automatique est verrouillée. Vous pouvez toujours accéder au mini-lecteur en quittant le mode plein écran Lancer le lecteur principal en plein écran - Ajouter à la file de lecture - Ajouté à la file de lecture + Placer en suivant dans la file + Placé en suivant dans la file Traitement en cours… Veuillez patienter Vérifier manuellement de nouvelles versions Vérification des mises à jour… @@ -803,9 +803,22 @@ Shorts Onglets de chaîne à récupérer Onglets à récupérer lors de la mise à jour du flux. Cette option n’a aucun effet si une chaîne est mise à jour en utilisant le mode rapide. - Partager l’URL de la liste + Partager une liste d\'URLs %1$s \n%2$s Partager la liste de lecture - %1$s : %2$s + Choisir quels onglets seront visibles sur les pages de chaîne + Changer l’orientation de l’écran + Basculer en plein écran + Partager avec les noms + Avatars de sous-chaîne + Ouvrir la file de lecture + En avant + Rembobiner + Relancer + Partager la liste de lecture avec des détails tel que son nom et le nom de ses vidéos ou simplement la liste des URL des vidéos + Mise en ligne des avatars + Sélectionnez la qualités des images et si les images doivent être chargées, pour réduire l\'utilisation de la mémoire et de données. Les modifications vide à la fois le cache des images en mémoire et sur le disque — %s + Lancer \ No newline at end of file diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index 2b85a1353ab..f6cc54e3265 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -29,7 +29,7 @@ Initiar discargas Pausar le discargas Seliger un instantia - Non poteva connecter con le servitor + Non pote connecter con le servitor Publicate le %1$s Discargar le file de fluxo Resolution predefinite @@ -104,7 +104,7 @@ Vacuar le chronologia de reproductiones Videos Dele le chronologia del contenido observate e positiones de reproduction - Positiones de reproduction delite. + Positiones de reproduction delite Vacuar le chronologia de cerca Error de rete Contento non disponibile @@ -127,7 +127,7 @@ NewPipe discargante A proposito de NewPipe © %1$s per %2$s sub %3$s - A proposito de + FAQ e A proposito de Licentias Contribuer Vider in GitHub @@ -160,7 +160,7 @@ Chronologia Dele le chronologia de parolas clave de cerca Deler omne chronologia de cerca\? - Chronologia de cerca delite. + Chronologia de recerca delite Exportar le chronologia, subscriptiones, listas de reproduction e configurationes Reimplaciar tu chronologia, subscriptiones e (optionalmente) configurationes currente Le videos jam observate ante e post de esser addite al lista de reproduction essera removite. @@ -173,7 +173,7 @@ %s visualisationes Nemo is observante - Chronologia de reproductiones vacuate. + Chronologia de reproductiones vacuate Deler omne chronologia de reproductiones\? Pardono, qualcosa vadeva incorrecte. Pardono, illo non deberea haber ocurrite. @@ -242,4 +242,7 @@ Per %s Radio Create per %s + Marcar como reguardate + OK + Usar reproductor de video externe \ 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 8825b8f58b9..9f622738890 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -56,14 +56,14 @@ ჩამოტვირთვა თვალყური ადევნეთ ნანახ ვიდეოებს არ დაიწყოთ ვიდეოები მინი პლეერში, არამედ პირდაპირ გადადით სრულეკრანიან რეჟიმში, თუ ავტომატური როტაცია დაბლოკილია. თქვენ კვლავ შეგიძლიათ მინი პლეერზე წვდომა სრულეკრანიდან გასვლით - დასაწყებად შეეხეთ გამადიდებელ შუშას. - გამოქვეყნდა%1$s - დაინსტალირება + დასაწყებად შეეხეთ გამადიდებელს. + გამოქვეყნების თარიღი: %1$s + დაყენება კარგი - გახსენით ბრაუზერში + გახსენი ვებგვერდად მონიშნეთ ნანახად - გახსენით popup რეჟიმში - გახსნა როგორც + გახსენი ამომხტარ მდგომარეობაში + გახსენი რაღაცით გაზიარება გადმოწერა ნაკადის ფაილი ჩამოტვირთვა @@ -121,7 +121,7 @@ აჩვენეთ წვერი \"შეაჩერე რიგში\" რჩევის ჩვენება ფონზე ან ამომხტარ ღილაკზე დაჭერისას ვიდეოში \"დეტალები:\" URL მხარდაუჭერელია - ნაგულისხმევი კონტენტის ქვეყანა + ჩანაწერის სასურველი ქვეყანა ნაგულისხმევი შინაარსის ენა PeerTube-ის შემთხვევები იპოვეთ თქვენთვის სასურველი შემთხვევები %s-ზე @@ -139,9 +139,9 @@ მიმდინარე დამკვრელი ნაკადის შეტყობინების კონფიგურაცია ვუკრავ ფონზე ვუკრავ ამომხტარი ფანჯარაში - კონტენტი - ასაკით შეზღუდული კონტენტის ჩვენება - ბავშვებისთვის შესაძლოა შეუფერებელი კონტენტის ჩვენება, რადგან მას აქვს ასაკობრივი ზღვარი (როგორიცაა 18+) + მასალა + მაჩვენე ასაკით შეზღუდული მასალა + მაჩვენე ბავშვებისთვის შეუფერებელი მასალა (თუნდაც 18 წლის ქვევით შეზღუდული) YouTube გთავაზობთ „შეზღუდულ რეჟიმს“, რომელიც მალავს პოტენციურად ზრდასრულთა კონტენტს ჩამოტვირთვები ჩამოტვირთვები @@ -196,7 +196,7 @@ Ქსელის შეცდომა ყველა ესკიზის ჩატვირთვა ვერ მოხერხდა ვებსაიტის გარჩევა ვერ მოხერხდა - კონტენტი მიუწვდომელია + მასალა ხელმიუწვდომელია ჩამოტვირთვის მენიუს დაყენება ვერ მოხერხდა აპი/UI გათიშულია ამ ნაკადის დაკვრა ვერ მოხერხდა @@ -318,7 +318,7 @@ ისტორია გსურთ წაშალოთ ეს ელემენტი ძიების ისტორიიდან\? ბოლოს დაუკრა - უმეტესად დაკვრილი + ხშირად დაკრული მთავარი გვერდის შინაარსი რა ჩანართებია ნაჩვენები მთავარ გვერდზე გადაფურცლეთ ელემენტები მათი ამოსაშლელად @@ -358,7 +358,7 @@ ფონური დამკვრელი ამომხტარი დამკვრელი ყოველთვის იკითხე - მოთხოვნილი კონტენტის ჩატვირთვა + მოთხოვნილი მასალა მზადდება გადარქმევა სახელი დასაკრავ სიაში დამატება @@ -546,11 +546,11 @@ თქვენს მოწყობილობაზე არცერთ აპლიკაციას არ შეუძლია ამის გახსნა ამ მოქმედებისთვის შესაბამისი ფაილების მენეჯერი ვერ მოიძებნა. \n გთხოვთ, დააინსტალიროთ Storage Access Framework თავსებადი ფაილ მენეჯერი - ეს კონტენტი მიუწვდომელია თქვენს ქვეყანაში. - ეს კონტენტი პირადია, ამიტომ მისი სტრიმინგი ან ჩამოტვირთვა შეუძლებელია NewPipe-ის მიერ. + ეს ხელმიუწვდომელია თქვენი ქვეყნიდან. + ეს მასალა პირადულია, ამიტომაც NewPipe-ს მისი არც მთლიანად და არც თანდათანობით ჩამოწერა არ შეუძლია. ანგარიში შეწყვეტილია %s იძლევა ამ მიზეზს: - ეს კონტენტი ხელმისაწვდომია მხოლოდ მომხმარებლებისთვის, რომლებმაც გადაიხადეს, ამიტომ მისი სტრიმინგი ან ჩამოტვირთვა შეუძლებელია NewPipe-ის მიერ. + ეს მასალა ხელმისაწვდომია მხოლოდ გადამხდელებისთვის, ამიტომაც NewPipe-ს მისი არც მთლიანად და არც თანდათანობით ჩამოწერა არ შეუძლია. გამორჩეული რადიო აირჩიეთ თქვენი საყვარელი ღამის თემა — %s @@ -736,4 +736,10 @@ მუდმივი მინიატურის მოხსნა წავშალო დუბლიკატები\? ნაწილობრივ ნანახი + მზადდება ზედაპირული მახასიათებლები… + თავდაპირველი ხმის ჩანაწერი აირჩიე ენის მიუხედავად + აირჩიე მხედველობადაქვეითებულებისათვის დახასიათებული ხმის ჩანაწერი, თუ არის + არჩიე თავდაპირველი ხმის ჩანაწერი + ხმა: %s + ხმის ჩანაწერი \ No newline at end of file diff --git a/app/src/main/res/values-ks/strings.xml b/app/src/main/res/values-ks/strings.xml new file mode 100644 index 00000000000..a6b3daec935 --- /dev/null +++ b/app/src/main/res/values-ks/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index fefc0432329..37345c38a4b 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -189,7 +189,7 @@ Išsami informacija Garso nustatymai Laikykite, kad įtrauktumėte į eilę - Pradėti groti foniniame rėžime + Pradėti groti foniniame režime Pradėti groti langelio grotuve Nerastas srauto grotuvas (galite įdiegti VLC kad grotumėte). Parsisiųsti srauto failą diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml new file mode 100644 index 00000000000..a6b3daec935 --- /dev/null +++ b/app/src/main/res/values-my/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index f9287aeb133..1c8575d7037 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -593,7 +593,7 @@ Radio Framhevet Løs - Nattema + Nattdrakt Vis kanaldetaljer Skru av media-tunnelering hvis du opplever svart skjerm eller videohakking Skru av media-tunnelering @@ -673,7 +673,7 @@ LeakCanary er ikke tilgjengelig ExoPlayer-forvalg Intervallstørrelse for avspillingsinnlasting - Bytt avspillinginnlastingens intervallstørrelse (for øyeblikket %s). En lavere verdi kan øke hastigheten på den første videoinnlastingen. Endringer krever en omstart av spilleren + Endre størrelsen på lasteintervallet på progressivt innhold (for øyeblikket %s). En lavere verdi kan øke hastigheten på den første videoinnlastingen. Endringer krever omstart av spilleren Spillervarsel Varsler Nye strømmer @@ -736,4 +736,40 @@ Delvis sett Nyttig hvis hodsettet ditt har knapper som fungerer dårlig Vis følgende strømmer + \? + Abonnenter + %1$s +\n%2$s + Kanalfaner + Laster inn metadata … + Lav kvalitet + Hent kanalfaner + Avatarer + Neste strøm + Underkanalavatarer + Åpne avspillingskø + Velg opprinnelig lydspor uavhengig av språk + Ikke last inn bilder + Høy kvalitet + Om + Del spilleliste + Album + Gjenta + Velg et lydspor med beskrivelser for synshemmede hvis tilgjengelig + Middels kvalitet + Foretrekk beskrivende lyd + Opplasteravatarer + Foretrekk opprinnelig lyd + Lyd: %s + Spillelister + Lydspor + Ingen direktestrømmer + Spill av + Flere alternativer + Miniatyrbilder + Spor + Varighet + Ingen strømmer + Kanaler + Forrige strøm \ No newline at end of file diff --git a/app/src/main/res/values-nds/strings.xml b/app/src/main/res/values-nds/strings.xml new file mode 100644 index 00000000000..a6b3daec935 --- /dev/null +++ b/app/src/main/res/values-nds/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 0cad15f7107..e74e747f402 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -11,7 +11,7 @@ ਸਾਂਝਾ ਕਰੋ ਡਾਊਨਲੋਡ ਕਰੋ ਸਟ੍ਰੀਮ ਫ਼ਾਈਲ ਡਾਊਨਲੋਡ ਕਰੋ - ਲੱਭੋ + ਖੋਜ ਕਰੋ ਸੈਟਿੰਗਾਂ ਕੀ ਤੁਹਾਡਾ ਮਤਲਬ ਸੀ \"%1$s\"\? ਇਸ ਨਾਲ਼ ਸਾਂਝਾ ਕਰੋ @@ -113,8 +113,8 @@ ਕੀ ਵੇਖੇ ਗਏ ਵੀਡੀਓਜ਼ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇ\? ਖੋਜ ਸੂਚੀ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾਓ ਖੋਜ ਸ਼ਬਦਾਂ ਦੀ ਸੂਚੀ ਮਿਟਾਉਂਦਾ ਹੈ - ਕੀ ਸਾਰੀ ਖੋਜ ਸੂਚੀ ਮਿਟਾ ਦਿਤੀ ਜਾਵੇ \? - ਖੋਜ ਸੂਚੀ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾ ਦਿਤਾ ਗਿਆ + ਕੀ ਸਾਰੀ ਖੋਜ ਸੂਚੀ ਮਿਟਾ ਦਿੱਤੀ ਜਾਵੇ \? + ਖੋਜ ਸੂਚੀ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਤਰੁੱਟੀ ਨੈੱਟਵਰਕ ਤਰੁੱਟੀ ਸਾਰੇ ਥੰਮਨੇਲ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕੇ diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index b4d902cbf6a..76c6b43fe74 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -52,12 +52,12 @@ Iniciar Tema Publicado em %1$s - Link não suportado + URL não suportado Ao vivo Downloads Downloads Você quis dizer \"%1$s\"\? - App/IU parou + Aplicativo/IU parou Reproduzindo em segundo plano O menu de download não pôde ser configurado Reproduzir vídeo, duração: @@ -72,7 +72,7 @@ Toque na lupa para começar. Threads Por favor, defina uma pasta de download depois nas configurações - Sem reprodutor de vídeo. Instalar VLC\? + Sem reprodutor de transmissão. Instalar VLC? O site não pôde ser analisado Áudio Reproduzir com Kodi @@ -81,25 +81,25 @@ Usar reprodutor de áudio externo Usar reprodutor de vídeo externo Mostrar opção \"Reproduzir com Kodi\" - O que aconteceu:\\nPedido:\\nIdioma do conteúdo:\\nPaís do conteúdo:\\nIdioma do app:\\nServiço:\\nHora GMT:\\nPacote:\\nVersão:\\nVersão do Sistema Operacional: - Abrir no modo popup - Resolução padrão do popup + O que aconteceu:\\nPedido:\\nIdioma do conteúdo:\\nPaís do conteúdo:\\nIdioma do aplicativo:\\nServiço:\\nHora GMT:\\nPacote:\\nVersão:\\nVersão do SO: + Abrir no modo Popup + Resolução padrão do Popup Mostrar resoluções mais altas Apenas alguns dispositivos suportam vídeos em 2K/4K Formato de vídeo padrão - Reproduzindo em modo popup + Reproduzindo em modo Popup Tudo Desativado k M Bi Essa permissão é necessária -\npara abrir em modo popup +\npara abrir em modo Popup Limpar Popup Segundo plano - Lembrar propriedades do popup - Lembrar último tamanho e posição do popup + Lembrar propriedades do Popup + Lembrar último tamanho e posição do Popup Remove o som em algumas resoluções Sugestões de pesquisa Escolha as sugestões a serem exibidas enquanto estiver buscando @@ -107,7 +107,7 @@ Licenças de Terceiros Sobre & FAQ Licenças - Stream leve e livre no Android. + Transmissão leve e livre no Android. Ver no GitHub Licença do NewPipe Se você tem ideias de: tradução, mudança no design, limpeza de código ou grandes mudanças de código — ajuda é sempre bem-vinda. Quanto mais se faz, melhor fica! @@ -137,7 +137,7 @@ Histórico Histórico Notificação do NewPipe - Notificações para o player do NewPipe + Notificações para o reprodutor do NewPipe Comportamento Histórico e cache Desfazer @@ -160,7 +160,7 @@ %s vídeos %s vídeos - Player + Reprodutor Nada aqui além de grilos Deseja excluir este item do histórico de busca\? Conteúdo da página inicial @@ -174,50 +174,50 @@ Top 50 Novos e tendências Mostrar dica \"Segure para pôr na fila\" - Mostra dica ao tocar no botão segundo plano ou popup em \"Detalhes:\" do vídeo + Mostra dica ao tocar no botão segundo plano ou Popup em \"Detalhes:\" do vídeo Reproduzir tudo - Este stream não pôde ser reproduzido - Ocorreu um erro irrecuperável no player - Recuperando do erro do player + Não é possível reproduzir esta transmissão + Ocorreu um erro irrecuperável no reprodutor + Se recuperando do erro do reprodutor Remover Detalhes Configurações de áudio Segure para pôr na fila [Desconhecido] Reproduzir em segundo plano - Reproduzir em um popup + Reproduzir em um Popup Doar O NewPipe é desenvolvido por voluntários que usam seu tempo livre para trazer a você a melhor experiência de usuário. Retribua e ajude os desenvolvedores a tornarem o NewPipe ainda melhor enquanto eles desfrutam de uma xícara de café. Retribuir Site oficial Visite o site do NewPipe para mais informações e novidades. - Sem reprodutor de vídeo (você pode instalar o VLC). + Reprodutor de transmissão não encontrado (pode instalar o VLC para assistir). País padrão do conteúdo Sempre Uma vez Mudar para segundo plano - Mudar para popup + Mudar para Popup Mudar para principal - Players externos não suportam estes tipos de links - Nenhum stream de vídeo encontrado - Nenhum stream de áudio encontrado - Player de vídeo - Player em segundo plano - Player popup + Reprodutores externos não suportam estes tipos de URL + Nenhuma transmissão de vídeo encontrada + Nenhuma transmissão de áudio encontrada + Reprodutor de vídeo + Reprodutor em segundo plano + Reprodutor Popup Obtendo informação… Carregando conteúdo solicitado Importar base de dados Exportar base de dados - Substitui seu histórico atual, inscrições, playlists e (opcionalmente) configurações - Exporta histórico, inscrições, playlists e configurações + Substitui seu histórico atual, inscrições, listas de reprodução e (opcionalmente) configurações + Exporta histórico, inscrições, listas de reprodução e configurações Exportado Importado Nenhum arquivo ZIP válido Aviso: Não foi possível importar todos os arquivos. Isso irá sobrescrever suas configurações atuais. - Baixar arquivo + Baixar arquivo de transmissão Mostrar informação - Playlists favoritas + Listas de reprodução favoritas Adicionar a Arraste para ordenar Criar @@ -226,29 +226,29 @@ Último reproduzido Mais reproduzido Sempre perguntar - Nova Playlist + Nova lista de reprodução Renomear Nome - Adicionar à playlist - Definir como miniatura da playlist - Favoritar playlist + Adicionar à lista de reprodução + Definir como miniatura da lista de reprodução + Favoritar lista de reprodução Remover dos favoritos - Excluir esta playlist\? - Playlist criada - Adicionado à playlist - Miniatura da playlist alterada. + Excluir esta lista de reprodução? + lista de reprodução criada + Adicionado à lista de reprodução + Miniatura da lista de reprodução alterada. Sem legendas Ajustar Preencher Zoom Gerado automaticamente - O monitoramento de vazamento de memória pode tornar o app instável durante o heap dumping + O monitoramento de vazamento de memória pode tornar o aplicativo instável durante o despejo de pilha Reportar erros de out-of-lifecycle Forçar entrega de relatórios de erros Rx fora de um fragmento ou atividade de lifecycle após o descarte Usar busca de posição rápida (inexata) A busca inexata permite que o reprodutor de vídeo ache posições mais rápido com a precisão reduzida. Não funciona para voltar ou avançar 5, 15 ou 25 segundos - Pôr próximo vídeo na fila automaticamente - Continua a reprodução da fila (sem repetição) adicionando mais vídeos similares + Enfileirar a próxima transmissão automaticamente + Continua a reprodução da fila (sem repetição) adicionando mais transmissões similares Arquivo Pasta não existe Arquivo/fonte do conteúdo não existe @@ -266,7 +266,7 @@ Não foi possível exportar inscrições Importe inscrições do YouTube pelo Google takeout: \n -\n1. Acesse este link: %1$s +\n1. Acesse este URL: %1$s \n2. Faça login quando solicitado \n3. Clique em \"Todos os dados incluídos\", depois em \"Desmarcar todos\", em seguida, selecione apenas \"assinaturas\" e clique em \"OK\" \n4. Clique em \"Próximo passo\" e em seguida, em \"Criar exportação\" @@ -293,24 +293,24 @@ Desvincular (pode causar distorção) Ação de \'abrir\' preferida Ação padrão ao abrir conteúdo — %s - Nenhum stream disponível para baixar + Nenhuma transmissão disponível para baixar Abrir gaveta Fechar gaveta Legendas - Mudar tamanho da legenda e estilos de plano de fundo. Requer reiniciar o app para ter efeito + Mudar tamanho da legenda e estilos de plano de fundo. Requer reiniciar o aplicativo para ter efeito Excluir histórico de vídeo - Exclui o histórico de vídeos e as posições de reprodução + Exclui o histórico de transmissões exibidas e as posições de reprodução Excluir todo o histórico de vídeo\? Histórico de vídeos excluído Excluir histórico de pesquisa - Exclui o histórico de pesquisas feitas + Exclui o histórico de palavras-chave de pesquisa Excluir todo o histórico de pesquisa\? Histórico de busca limpo 1 item excluído. NewPipe é um copyleft de software livre: Você pode usar, estudar, compartilhar e melhorar a seu gosto. Especificamente você pode redistribuir e/ou modificá-lo sob os termos da GNU General Public License como publicado pela Fundação de Software Livre, na versão 3 da Licença, ou (a seu critério) qualquer versão posterior. Você também quer importar as configurações? Política de privacidade do NewPipe - O projeto NewPipe leva sua privacidade muito a sério. Por isso, o app não coleta nenhum dado sem seu consentimento. + O projeto NewPipe leva sua privacidade muito a sério. Por isso, o aplicativo não coleta nenhum dado sem seu consentimento. \nA política de privacidade do NewPipe explica em detalhes quais dados são envidados e salvos quando você manda um relatório de erro. Ler a política de privacidade A fim de cumprir com o Regulamento Geral sobre a Proteção de Dados da UE (RGPD), chamamos sua atenção para a política de privacidade do NewPipe. Por favor, leia com atenção. @@ -319,11 +319,11 @@ Recusar Ilimitado Limitar a resolução quando estiver usando dados móveis - Minimizar ao trocar entre apps - Ação ao mudar para outro app a partir do player de vídeo principal — %s + Minimizar ao trocar entre aplicativos + Ação ao mudar para outro aplicativo a partir do reprodutor de vídeo principal — %s Nenhum Minimizar para segundo plano - Minimizar para player popup + Minimizar para reprodutor Popup Avançar durante o silêncio Passo Redefinir @@ -348,7 +348,7 @@ Que abas são visíveis na página inicial Conferências Atualizações - Notificar quando uma nova versão do app estiver disponível + Notificar quando uma nova versão do aplicativo estiver disponível Modo de exibição em lista Lista Grade @@ -428,27 +428,27 @@ %s ouvintes %s ouvintes - O idioma será alterado após reiniciar o app + O idioma será alterado após reiniciar o aplicativo Duração do salto para avançar/retroceder Instâncias do PeerTube Escolha suas instâncias do PeerTube favoritas Encontre as instâncias que gosta em %s Adicionar instância - Insira o link da instância + Insira o URL da instância Erro ao validar a instância - Apenas links HTTPS são suportados + Apenas os URL HTTPS são suportados A instância já existe Local Adicionado recentemente Mais curtidos - Gerado automaticamente (nenhum uploader encontrado) + Gerado automaticamente (nenhum carregador encontrado) recuperando O download não pôde ser recuperado Escolha uma instância Limpar histórico de downloads Excluir arquivos baixados - Dar permissão para mostrar por cima de outros apps - Idioma do app + Dar permissão para mostrar por cima de outros aplicativos + Idioma do aplicativo Padrão do sistema Toque em \"Pronto\" ao resolver Pronto @@ -522,8 +522,8 @@ \n \nAtive \"%1$s\" nas configurações se quiser vê-lo. Sim, e vídeos parcialmente vistos - Os vídeos que foram vistos antes e depois de terem sidos adicionados à playlist serão removidos. -\nTem certeza\? Esta ação não pode ser desfeita! + Os vídeos que foram vistos antes e depois de terem sidos adicionados à lista de reprodução serão removidos. +\nTem certeza? Esta ação não pode ser desfeita! Remover vídeos vistos\? Remover vistos Textos originais dos serviços serão visíveis nos itens de transmissão @@ -534,9 +534,9 @@ Miniatura do avatar do canal Mostrar apenas inscrições não agrupadas Mostrando resultados para: %s - Ainda não há playlists favoritas - Página de playlist - Selecione uma playlist + Ainda não há listas de reprodução favoritas + Página da lista de reprodução + Selecione uma lista de reprodução Por favor verifique se uma issue discutindo este problema já existe. Ao criar tickets duplicados, você tira de nós um tempo no qual poderíamos estar usando para corrigir um bug real. Reporte no GitHub Copiar relatório formatado @@ -546,7 +546,7 @@ Reproduzir fila Não foi possível reconhecer a URL. Abrir com outro aplicativo\? Pôr na fila automaticamente - A fila do player ativo será substituída + A fila do reprodutor ativo será substituída Mudar de um reprodutor de vídeo para outro pode substituir sua fila Pedir confirmação antes de limpar uma fila Aleatório @@ -577,7 +577,7 @@ Calculando hash Notificações para o progresso do hash do vídeo Notificação de hash do vídeo - Desative para ocultar as caixas de informações de metadados com informações adicionais sobre o criador, conteúdo do stream ou uma solicitação de pesquisa + Desative para ocultar as caixas de informações de metadados com informações adicionais sobre o criador, conteúdo da transmissão ou uma solicitação de pesquisa Mostrar informação de metadados Recente Capítulos @@ -595,7 +595,7 @@ Esta é uma faixa do SoundCloud Go+, pelo menos no seu país, portanto não pode ser transmitida ou baixada pelo NewPipe. Este conteúdo não está disponível em seu país. Este vídeo tem restrição de idade. -\nDevido às novas políticas do YouTube sobre vídeos com restrição de idade, o NewPipe não pode acessar nenhum de seus streams de vídeo e assim ele não pode ser exibido. +\nDevido às novas políticas do YouTube sobre vídeos com restrição de idade, o NewPipe não pode acessar qualquer de suas transmissões de vídeo e assim ela não pode ser exibida. Rádio Destaque Resolvido @@ -621,7 +621,7 @@ Categoria Desativar seleção de texto na descrição Ativar seleção de texto na descrição - Agora você pode selecionar o texto dentro da descrição. Note que a página pode piscar e os links podem não ser clicáveis no modo de seleção. + Agora você pode selecionar o texto dentro da descrição. Note que a página pode piscar e os URL podem não ser clicáveis no modo de seleção. Abrir site %s fornece este motivo: Conta encerrada @@ -657,10 +657,10 @@ Exibir indicadores com imagem Adicionado na próxima posição da fila - Adicionar a próxima posição da fila + Enfileira a próxima Deslize items para remove-los - Não inicia os vídeos no player reduzido, mas muda direto para o modo de tela cheia, se a rotação automática estiver travada. Você ainda consegue acessar o player reduzido saindo da tela cheia - Iniciar o player principal em tela cheia + Não inicia os vídeos no reprodutor reduzido, mas muda direto para o modo de tela cheia, se a rotação automática estiver travada. Você ainda consegue acessar o reprodutor reduzido saindo da tela cheia + Iniciar o reprodutor principal em tela cheia Sugestões de busca remotas Sugestões de busca locais Processando… Pode demorar um pouco @@ -668,8 +668,8 @@ Procurar manualmente por novas versões Procurando por atualizações… Travar o reprodutor de vídeo - Mostrar \"Travar o player\" - Mostra uma opção de travamento ao usar o player + Mostrar \"Fechar o reprodutor\" + Mostra uma opção de travamento ao usar o reprodutor Novos itens do feed Notificação de relatório de erro Notificações para reportar erros @@ -685,9 +685,9 @@ O LeakCanary não está disponível ExoPlayer padrão Notificação do reprodutor - Configurar a notificação do fluxo da reprodução atual + Configurar a notificação da reprodução da transmissão atual Notificações - Novos streams + Novas transmissões Notificações sobre novas transmissões para inscrições Notificações de novas transmissões Notificar sobre novas transmissões de inscrições @@ -703,17 +703,17 @@ %s novas transmissões %s novas transmissões - Executar verificação de novas transmissões + Verifica por novas transmissões Conexão de rede necessária As notificações estão desativadas Seja notificado Por cento Semitom - A transmissão selecionada não é compatível com players externos - Nenhum transmissão de áudio está disponível para players externos - Transmissões que ainda não são suportadas pelo downloader não são exibidos - Nenhum vídeo de transmissão está disponível para players externos - Selecione a qualidade para players externos + A transmissão selecionada não é compatível com reprodutores externos + Nenhum transmissão de áudio está disponível para reprodutores externos + Transmissões que ainda não são suportadas pelo baixador não são exibidos + Nenhum vídeo de transmissão está disponível para reprodutores externos + Selecione a qualidade para reprodutores externos Formato desconhecido Qualidade desconhecida Tamanho do intervalo de carregamento da reprodução @@ -730,20 +730,20 @@ Cartão Falha ao copiar para a área de transferência Duplicata adicionada %d vez(es) - As playlists em cinza já contêm este item. + As listas de reprodução em cinza já contêm este item. Ignorar eventos de botão de mídia de hardware Útil, por exemplo, se você estiver usando um fone de ouvido com botões físicos quebrados Remover duplicados Remover duplicados\? - Deseja remover todos os streams duplicados nesta playlist\? - Mostrar os seguintes streams - Mostrar/ocultar streams + Deseja remover todos as transmissões duplicadas nesta lista de reprodução? + Mostrar as transmissões seguintes + Mostrar/ocultar transmissões Parcialmente assistido Em breve Totalmente assistido - Escolha o gesto da mão esquerda da tela do jogador + Escolha o gesto da mão esquerda da tela do reprodutor Ação do gesto esquerdo - Escolha o gesto da mão direita da tela do jogador + Escolha o gesto da mão direita da tela do reprodutor Brilho Volume Nenhum @@ -755,19 +755,19 @@ Selecionar um áudio com descrição para pessoas com dificuldades de visão, se disponível Áudio: %s Faixa de áudio - Seleciona faixa de áudio para players externo + Seleciona faixa de áudio para reprodutor externo Desconhecido Configurações de ExoPlayer - Gerenciar algumas configurações de ExoPlayer. É necessário reiniciar o player para aplicar as mudanças + Gerenciar algumas configurações de ExoPlayer. É necessário reiniciar o reprodutor para aplicar as mudanças %1$s %2$s original dublado descritivo - Esta solução alternativa libera os codificadores de vídeo quando ocorre uma alteração de superfície, em vez de definir a superfície para o codec diretamente. Já usado pelo ExoPlayer em alguns dispositivos com esse problema, essa configuração só tem efeito no Android 6 e superior + Esta solução alternativa libera os codificadores de vídeo quando ocorre uma alteração de superfície, no lugar de definir a superfície para o Codec diretamente. Já usado pelo ExoPlayer em alguns dispositivos com esse problema, essa configuração só tem efeito no Android 6 e superior \n \nAtivar esta opção pode evitar erros de reprodução ao alternar o reprodutor de vídeo atual ou alternar para tela cheia - Uma faixa de áudio já deve estar presente neste stream - Utilizar a função de fallback do decodificador do ExoPlayer + Uma faixa de áudio já deve estar presente nesta transmissão + Utilizar a contingência do decodificador do ExoPlayer Sempre utilizar o configuração de saída de vídeo alternativa do ExoPlayer Habilite essa opção se você tiver problemas de inicialização do decodificador, que retorna codificadores de baixa prioridade se o decodificador primário falhar. Isso pode resultar em pior desempenho de reprodução Mova o seletor da aba principal para a parte inferior @@ -785,8 +785,37 @@ Sobre Álbuns Guias a serem buscadas ao atualizar o feed. Esta opção não tem efeito se um canal for atualizado usando o modo rápido. - Playlists + Listas de reprodução Faixas Canais Ao vivo + Qualidade da imagem + \? + Compartilhar lista URL + Compartilhar com Títulos + %1$s +\n%2$s + Alterna a orientação da tela + Baixa qualidade + Alternar tela cheia + Avatares + Próxima transmissão + Avatares do subcanal + Abrir a fila de reprodução + Não carregar imagens + Alta qualidade + Compartilhar Lista de Reprodução + Avançar + Retroceder + Repete + Compartilhar lista de reprodução com detalhes como nome da lista de reprodução e títulos de vídeo ou como uma lista simples dos URL de vídeos + Qualidade média + Avatares do carregador + - %1$s: %2$s + Escolha a qualidade das imagens ou se deve carregá-las como estão, para reduzir o uso de dados e memória. Alterações limpam a memória e o cache de imagem no disco — %s + Reproduzir + Mais opções + Miniaturas + Duração + Transmissão anterior \ No newline at end of file diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index a44f4420039..43eb814e8e5 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -601,7 +601,7 @@ Acest conținut este disponibil doar pentru utilizatorii care au plătit, ca atare nu poate fi difuzat sau descărcat de NewPipe. Acest videoclip este disponibil doar pentru membrii YouTube Music Premium, ca atare nu poate fi difuzat sau descărcat de NewPipe. Acest conținut este privat, ca atare nu poate fi difuzat sau descărcat de NewPipe. - Aceasta este o piesă SoundCloud Go+, cel puțin în țara ta, deci nu poate fi difuzată sau descărcată de NewPipe. + Aceasta este o piesă SoundCloud Go+, cel puțin în țara dvs., deci nu poate fi difuzată sau descărcată de NewPipe. Acest conținut nu este disponibil în țara dumneavoastră. Afișați detaliile canalului Temă Nocturnă diff --git a/app/src/main/res/values-scn/strings.xml b/app/src/main/res/values-scn/strings.xml new file mode 100644 index 00000000000..a6b3daec935 --- /dev/null +++ b/app/src/main/res/values-scn/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 5532001e8aa..d3739e29ed8 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -34,12 +34,12 @@ Visa ett alternativ för att spela upp en video med mediacentret Kodi Ljud Standardformat för ljud - Videoformat som föredras + Standardformat för video Tema Ljust Mörkt Svart - Kom ihåg popup inställningar + Kom ihåg popupinställningar Kom ihåg popup-rutans senaste storlek och position Sökförslag Välj förslag att visa i samband med sökning @@ -203,7 +203,7 @@ Inexakt sökning gör det möjligt att söka snabbare med mindre precision. Att hoppa 5, 15 eller 25 sekunder fungerar inte med detta val Ta bort alla cachade webbsidor Metadata cache rensad - Köa nästa ström automatiskt + Köa nästa strömning automatiskt Fortsätt avsluta (icke-upprepande) uppspelningskö genom att lägga till en relaterad ström Standard innehållsland Kanaler @@ -226,14 +226,14 @@ Ta bort hela sökhistoriken\? Sökhistorik borttagen Externa spelare stöder inte dessa typer av länkar - Inga videoströmmar hittades + Inga videoströmningar hittades Inga ljudspår hittades Ingen sådan mapp Ingen sådan fil/innehållskälla Filen finns inte eller behörighet att läsa eller skriva till den saknas Filnamnet får inte vara tomt Ett fel uppstod: %1$s - Inga strömmar tillgängliga för hämtning + Inga strömningar tillgängliga för hämtning Dra för att ändra ordning Skapa Avfärda @@ -614,7 +614,7 @@ Beskrivning Kommentarer Denna video här en åldersgräns. -\nPå grund av nya YouTube-regler med åldersgräns för vissa videor kan NewPipe inte komma åt någon av dess videoströmmar och kan därmed inte spela upp den. +\nPå grund av nya YouTube-regler med åldersgräns för vissa videor kan NewPipe inte komma åt någon av dess videoströmningar och kan därmed inte spela upp den. Visa innehåll som pga sin åldersgräns (ex 18+) kan vara olämpligt för barn Visa beskrivning Öppna med @@ -680,29 +680,29 @@ Aviseringar är avstängda Bli meddelad Du har nu prenumenerat till denna kanalen - Aviseringar om nya strömmar för prenumerationer + Aviseringar om nya strömningar för prenumerationer - %s Ny ström - %s Nya strömmar + %s Ny strömning + strömningar%s Nya strömningar Konfigurera meddelande om aktuell ström som spelas upp - Kör leta efter nya strömmar - Meddela om nya strömmar från prenumerationer + Kör leta efter nya strömningar + Meddela om nya strömningar från prenumerationer Aviseringar - Nya strömmar + Nya strömningar Laddar strömdetaljer… - Aviseringar om nya strömmar + Aviseringar om nya strömningar , Spelaravisering Växla alla Procent Halvton - Inga videoströmmar tillgängliga för externa spelare + Inga videoströmningar tillgängliga för externa spelare Okänd kvalitet - Inga ljudströmmar tillgängliga för externa spelare + Inga ljudströmningar tillgängliga för externa spelare Okänt format - Videoströmmar som ännu inte stöds av nedladdaren visas inte - Inläsningsintervalls storlek + Videoströmningar som ännu inte stöds av nedladdaren visas inte + Inläsningsintervallsstorlek Välj kvalitet för externa spelare Den valda videoströmmen stöds inte av externa spelare Om du har problem med att använda appen, kolla in dessa svar på vanligt ställda frågor! @@ -720,22 +720,22 @@ Dubblett tillagd %d gång(er) Spellistor som är gråmarkerade innehåller redan det här objektet. Användbart om du till exempel använder ett headset med trasiga fysiska knappar - Ignorera hårdvarans media knappar + Ignorera hårdvarans mediaknappar Ta bort dubbletter\? - Visa följande strömmar + Visa följande strömningar Delvis sedd - Vill du ta bort alla duplicerade strömmar i den här spellistan\? + Vill du ta bort alla duplicerade strömningar i den här spellistan\? Ta bort dubbletter - Visa/Dölj strömmar + Visa/Dölj strömningar Fullständigt sedd Kommande Volym Ingen Välj en gest för den vänstra halvan av spelarskärmen Ljusstyrka - Vänster gest åtgärd + Vänstergest åtgärd Välj en gest för den högra halvan av spelarskärmen - Höger gest åtgärd + Högergest åtgärd Ljud: %s Ljudspår Ett ljudspår bör redan finnas i denna ström @@ -759,7 +759,51 @@ dubbad Flytta huvudflik väljaren till botten Huvudflikarnas position - Inga strömmar - Inga live-strömmar + Inga strömningar + Inga live-strömningar Medietunnel har inaktiverats som standard på din enhet eftersom att enhetsmodellen inte stöder funktionen. + Bildkvalité + Videor + Prenumeranter + Vilka filkar visas på kanalsidorna + Dela URL-lista + Kanalflikar + Shorts + Laddar Metadata… + Aktivera skärmorientering + Låg kvalité + Aktivera helskärm + Hämta kanalflikar + Nästa strömning + Öppna spelkö + Ladda inte bilder + Hög kvalité + Om + Dela spellista + Spola frammåt + Album + Spola tillbaka + Återspela + Medelkvalité + Spellistor + Spela + Fler alternativ + Miniatyrbilder + Spår + Längd + Kanaler + Föregående strömning + Live + \? + Dela med Titlar + %1$s +\n%2$s + Visningsbilder + Underkanalens visningsbilder + Flikar att hämta när flödet uppdateras. Det här alternativet har ingen effekt om en kanal uppdateras i snabbt läge. + Uppladdarens visningsbilder + Banderoller + - %1$s: %2$s + Dela spellistan med detaljer så som spellistans namn och video-titlarna eller som en enkel lista med URL till videorna + Välj bildkvalitet och om bilder överhuvudtaget ska laddas för att minska data och minnesanvändningen. Ändringar rensar både i minnet och bildcache på disk – %s \ No newline at end of file diff --git a/app/src/main/res/values-ti/strings.xml b/app/src/main/res/values-ti/strings.xml index dcd5df884ea..ab3505453d0 100644 --- a/app/src/main/res/values-ti/strings.xml +++ b/app/src/main/res/values-ti/strings.xml @@ -1,19 +1,65 @@ ሰረዝ - ኣብ ብሮውዘር ክፉት - ውጽኢት ምርኣዩ ን፦%s + ኣብ መርበብ-ሓበሬታ ክፉት + ውጽኢት ምርኣዩ ን፦ %s መጀመርታ ምእንቲ ኽትጅምር ነቲ ዜጕልሕ መረጼን ጠውቆ። ኣብ %1$s እተሓትመ - ዋላ ሓደ ወሓይዝ ዚጻወት ሰብ ኣይተረኽበን። VLC + ወሓይዝ ዚጻወት ኣይተረኽበን። VLC፧ ሐራይ - ምድላው + ቅጥዕታት \"%1$s\" ማለቱ ድዩ፧ ዚተሪየ ጋባራ ክፉቴ ምሲ ፋይል ውሕጅ ኣራግፍ ድለ - ኣካፍሎም + ኣካፍሎ ኣራግፍ ኣካፍሎም ምሲ + መስመር ኣይትጽንበሩ + ኣብ ሓፍ፡ሓፍ ቅዲ ክፉት + ሰዓብካ\'ኪ + ክቕይር ኣይከኣለን ምዝገብ + ድምጺታት ኣብ ገለ ርዝነት የወግድ + ወሓይዝ ዚጻወት ኣይተረኽበን። (ንኽትጻወቶ VLC ከተውራድ ትኽእል)። + ክሕደስ ኣይከኣለን ምዝገባ + ሰዓበ + ናይ ደገ ቪድዮ ተጠቐም መጻወቲ + ምውራድ + ኣይትጽንበሩ + ነቲ ኣብ\'ቲ ምልክታ ዝተርኣየ ናይ ቪድዮ ምስሊ ካብ 16:9 ናብ 1:1 ርሕቐት ኣቀራርባ ቅረጽ + ምስ Kodi ተጻወት + ድምር ምስ + ሓበሬታ ኣርእዩ + መፍለጢ ሕብሪ ልኸ + \"Play with Kodi\" ኣማራጺ + ዝያዳ ድንቀት ኣርኢ + ንተንቃሳቀሴ-ምስሌ ፋይላት ዝኸውን ናይ ምውራድ ማህደር ምረጽ + ተጻዋታይ ወደቀ + ድምጺ + ድምጺ ምውራድ ማህደር ፋይላት ኣብዚ ይኽዘኑ + ዋላ-ሓንቲ + ገለ መሳርሒታት ጥራይ እዮም 2K/4K ተንቃሳቀሴ-ምስሌ ክጻወቱ ዝኽእሉ + ናይ ደገ ድምጺ መጻወቲ ተጠቐም + Android ሕብሪ ናይቲ መተሓሳሰቢ ብመሰረት እቲ ኣብቲ ንእሽቶ ስእሊ ዘሎ ቀንዲ ሕብሪ ከም ዝጥዕሞ ግበር (እዚ ኣብ ኩሉ መሳርሒታት ከምዘይርከብ ኣስተውዕል) + ትሑዝ ፖፕኣፕ ድንቀት + ነፍሲ ወከፍ መፍለጢ ተግባር ኣብ ታሕቲ ብምጥዋቕ ኣርትዖ። ኣብቲ ውህሉል መተሓሳሰቢ ንኽርአ ክሳብ ሰለስተ ካብኣቶም ምረጽ፡ ኣብ የማናይ ሸነኽ ዘሎ ሳጹናት ብምጥቃም + ፖፕኣፕ + ትሑዝ ድንቀት + ዝወረዱ ናይ ተንቃሳቀሴ-ምስሌ ፋይላት ኣብዚ ይኽዘኑ + + ናይ እኽሊ ምስሊ ምስ ናይ 1:1 ርክባት + ቀዳማይ ወሰን ተጠዋቃ + ደገመ + ድምጺ ምውራድ ማህደር + ቦኦክማርከድ ዝርዝር-ጸወታ + ናይ ድምጺ ፋይል ኣራግፍ ምረጽ + ዝጎደለ ኮረ ኣፕፕ ኣውራድ፧ + ነባሪ ቅርጺ ድምጺ + ምዝገባ + Kodi ሚድያ ማእኸል ቪድዮ ንምጽዋት ዝሕግዝ ኣማራጺ + ኣብቲ ውሱን መፍለጢ ንምርኣይ እንተበዝሐ ሰለስተ ተግባራት ክትመርጽ ትኽእል ኢኻ! + ተንቃሳቀሴ-ምስሌ ፋይል ኣራግፍ + ታብ ምረጽ + ድሕረ ባይታ \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index aff2be32bbb..b1ecacfc3f4 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -20,7 +20,7 @@ Ses indirme klasörü İndirilen ses dosyaları burada depolanır Ses dosyaları için indirme klasörünü seç - Öntanımlı çözünürlük + Varsayılan çözünürlük Kodi ile oynat Eksik Kore uygulaması yüklensin mi\? \"Kodi ile oynat\" seçeneğini göster @@ -102,7 +102,7 @@ Açılan pencerenin son boyutunu ve konumunu hatırla Bazı çözünürlüklerde sesi kaldırır Arama önerileri - Ararken gösterilecek önerileri seç + Arama yaparken öneriler gösterilsin mi En iyi çözünürlük NewPipe Hakkında Üçüncü Taraf Lisansları @@ -212,11 +212,11 @@ Bu, var olan kurulumunuzu geçersiz kılacaktır. Akış dosyasını indir Bilgi göster - İmlenen Oynatma Listeleri + İmlenen Çalma Listeleri Ekle Yeniden düzenlemek için sürükleyin Oluştur - Reddet + Dışla Yeniden adlandır Son Oynatılan En Çok Oynatılan @@ -279,7 +279,7 @@ Bu sürecin ağa yük olabileceğini unutmayın. \n \nSürdürmek istiyor musunuz\? - Resim önbelleği silindi + Resim önbelleği temizlendi Önbelleğe alınmış üstverileri temizle Önbelleğe alınmış tüm web sayfası verilerini kaldır Üstveri önbelleği temizlendi @@ -623,7 +623,7 @@ \'Depolama Erişimi Çerçevesi\' yalnızca Android 10\'dan başlayarak desteklenmektedir Her indirmede nereye kaydedileceği sorulacak İndirme klasörü belirlenmedi, şimdi öntanımlı indirme klasörünü seçin - Kapat + Kapalı Tablet kipi Konum çubuğu küçük resim ön izlemesi diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 7f1273c8593..f6719c1ed4c 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -2,53 +2,53 @@ Nhấn vào kính lúp để bắt đầu. Đăng vào %1$s - Không tìm thấy trình phát. Cài đặt VLC\? - Cài vô + Không tìm thấy trình phát trực tuyến. Cài đặt VLC\? + Cài đặt Hủy Mở trong trình duyệt - Mở trong chế độ cửa sổ nổi + Mở trong chế độ bật lên Chia sẻ Tải về Tìm kiếm - Các cài đặt + Thiết đặt Ý bạn là \"%1$s\"\? Chia sẻ với - Sử dụng trình phát video bên ngoài + Sử dụng trình phát băng hình bên ngoài Loại bỏ âm thanh ở một số độ phân giải - Sử dụng trình phát audio bên ngoài + Sử dụng trình phát âm thanh bên ngoài Trình phát nổi - Thư mục video tải về - Video đã tải về được lưu ở đây - Chọn thư mục lưu video tải về - Thư mục tải về audio - Audio đã tải về được lưu ở đây - Chọn vị trí lưu audio tải về + Thư mục băng hình tải về + Băng hình đã tải về được lưu ở đây + Chọn thư mục tải xuống cho các tệp băng hình + Thư mục tải xuống âm thanh + Các tệp âm thanh đã tải xuống được lưu trữ tại đây + Chọn thư mục tải xuống cho các tệp âm thanh Độ phân giải mặc định - Độ phân giải popup mặc định + Độ phân giải cửa sổ bật lên mặc định Hiện độ phân giải cao hơn - Chỉ một số thiết bị hỗ trợ phát video 2K/4K - Phát bằng Kodi - Cài đặt ứng dụng Kore\? - Hiện tùy chọn \"Phát bằng Kodi\" - Hiện tùy chọn phát video qua trung tâm media Kodi + Chỉ một số thiết bị có thể phát băng hình 2K/4K + Phát với Kodi + Cài đặt ứng dụng Kore bị thiếu\? + Hiển thị tùy chọn \"Phát với Kodi\" + Hiển thị tùy chọn phát băng hình qua trung tâm truyền thông Kodi Âm thanh Định dạng âm thanh mặc định - Định dạng video mặc định + Định dạng băng hình mặc định Nền Chủ đề Sáng Tối Đen (Amoled) - Nhớ thuộc tính của popup - Nhớ kích thước và vị trí lần trước của popup + Ghi nhớ thuộc tính cửa sổ bật lên + Ghi nhớ kích thước và vị trí cuối cùng của cửa sổ bật lên Đề xuất tìm kiếm Chọn các đề xuất để hiển thị khi tìm kiếm Tải về - Hiện video \"Tiếp theo\" và \"Tương tự\" + Hiện các cuộn băng \"Tiếp theo\" và \"Tương tự\" URL không hỗ trợ - Hiển thị - Phát ở dưới nền - Phát ở chế độ popup + Vẻ ngoài + Đang phát trong nền + Đang phát trong chế độ bật lên Nội dung Hiển thị nội dung bị giới hạn độ tuổi Trực tiếp @@ -57,7 +57,7 @@ Báo lỗi Tất cả Vô hiệu - Xóa + Dọn dẹp Độ phân giải tốt nhất Lỗi Lỗi kết nối mạng @@ -68,14 +68,14 @@ Ứng dụng / Giao diện người dùng bị lỗi Có vẻ NewPipe đã xảy ra lỗi, lướt xuống kiểm tra xem. Báo lỗi qua email - Có gì đó không đúng lắm. Thật khó chịu. + Rất tiếc, đã xảy ra lỗi rồi. Báo cáo Thông tin: Chuyện gì đã xảy ra: Loại lỗi:\\nYêu cầu:\\nNgôn ngữ của nội dung:\\nVùng miền (quốc gia) của nội dung:\\nNgôn ngữ của ứng dụng:\\nDịch vụ:\\nThời gian GMT:\\nTên gói:\\nPhiên bản:\\nPhiên bản hệ điều hành: Nhận xét của bạn (bằng tiếng Anh): Chi tiết: - Video xem, thời lượng: + Phát băng hình, thời lượng: Hình thu nhỏ của avatar người tải lên Lượt thích Lượt không thích @@ -97,9 +97,9 @@ Chạm để biết chi tiết Đợi chút xíu nha… Đã sao chép vào khay nhớ tạm - Hãy chọn một thư mục tải xuống trong phần cài đặt - Chế độ popup cần quyền này -\n để hoạt động, hãy bật trong phần cài đặt + Hãy chọn một thư mục tải xuống trong phần thiết đặt + Sự cho phép này là cần thiết để +\nmở trong chế độ bật lên reCAPTCHA Yêu cầu reCAPTCHA Giới thiệu về NewPipe @@ -107,54 +107,54 @@ © %1$s bởi %2$s dưới %3$s Thông tin & FAQ Giấy phép - Trình phát video Yiu tu be nhẹ, mã nguồn mở và không quảng cáo cho Android. + Phát trực tuyến nhẹ tự do trên Android. Xem trên GitHub Giấy phép của NewPipe Sự đóng góp của bạn luôn được hoan nghênh – kể cả khi bạn dịch, thay đổi giao diện, dọn code, thêm tính năng hay thay đổi những thứ khác, sự giúp đỡ của bạn vẫn đáng được trân trọng. Bạn càng làm nhiều, ứng dụng này sẽ càng tốt hơn bao giờ hết ! Đọc giấy phép Đóng góp Ngôn ngữ nội dung ưu tiên - Video và âm thanh + Băng hình và âm thanh Lịch sử xem - Lịch sử và bộ nhớ cache + Lịch sử và bộ nhớ đệm Không tìm thấy Đăng ký Đã đăng ký Đã hủy đăng ký kênh Không thể thay đổi tình trạng đăng ký Không thể cập nhật tình trạng đăng ký - Không tìm thấy trình phát luồng nào (bạn có thể cài đặt VLC để phát). + Không tìm thấy trình phát trực tuyến nào (bạn có thể cài đặt VLC để phát nó). Tải tệp luồng về Hiện thông tin Kênh đăng ký - Danh sách phát được đánh dấu - Video mới + Đã đánh dấu danh sách phát + Có gì mới Thêm vào - Sử dụng tìm kiếm nhanh không chính xác - Tua không chính xác cho phép trình phát tua đến các vị trí nhanh hơn với độ chính xác bị giảm. Tua 5, 15 hay 25 giây không dùng được với chế độ này + Dùng tua nhanh ít chính xác + Tua ít chính xác cho phép trình phát giảm độ chính xác để tua tới vị trí nhanh hơn. Tua khoảng 5, 15 hoặc 25 giây không hoạt động với điều này Đã xóa bộ nhớ cache hình ảnh - Xóa siêu dữ liệu đã lưu vào bộ nhớ cache - Xóa tất cả dữ liệu trang web được lưu trong bộ nhớ cache + Lau sạch siêu dữ liệu đã lưu đệm + Loại bỏ mọi dữ liệu trang web đã lưu đệm Đã xóa bộ nhớ cache siêu dữ liệu - Tự động thêm luồng phát tiếp theo vào hàng đợi + Tự động xếp hàng luồng phát tiếp theo Tiếp tục hàng đợi (không lặp lại) bằng cách thêm một luồng phát liên quan Lịch sử tìm kiếm Lưu trữ truy vấn tìm kiếm cục bộ - Theo dõi các video đã xem - Tiếp tục phát - Tiếp tục phát sau khi bị gián đoạn (ví dụ: cuộc gọi điện thoại) - Hiển thị \"Giữ để thêm vào hàng đợi\" - Hiển thị mẹo khi nhấn nút phát trong nền hoặc phát trên popup trong trang \"Chi tiết\" + Theo dõi các cuộn băng đã xem + Tiếp tục đang phát + Tiếp tục phát lại sau khi bị gián đoạn (ví dụ: cuộc gọi) + Hiển thị mẹo \"Giữ để xếp hàng\" + Hiển thị mẹo khi nhấn vào nút nền hoặc nút bật lên trong \"Chi tiết:\" cuốn băng Quốc gia nội dung mặc định - Phát + Trình phát Hành vi Gỡ lỗi Kênh - Playlist + Danh sách phát Bản nhạc Người dùng Hoàn tác - Chơi tất cả + Phát tất cả Luôn luôn Chỉ một lần Tập tin @@ -162,26 +162,26 @@ Thông báo cho trình phát của NewPipe [Không xác định] Chuyển sang nền - Chuyển sang Popup + Chuyển sang Cửa sổ bật lên Chuyển sang Main Nhập cơ sở dữ liệu Xuất cơ sở dữ liệu - Ghi đè lịch sử, kênh đăng ký, playlist hiện tại (và cài đặt, nếu có) của bạn - Xuất lịch sử, danh sách đăng ký, playlist và cài đặt - Xóa lịch sử xem - Xóa lịch sử những video đã xem và vị trí phát + Ghi đè lịch sử, đăng ký, danh sách phát và các thiết đặt (tùy chọn) hiện tại của bạn + Xuất lịch sử, đăng ký, danh sách phát và các thiết đặt + Dọn dẹp lịch sử xem + Xóa lịch sử các luồng đã phát và các vị trí phát lại Xóa toàn bộ lịch sử xem\? Đã xoá lịch sử xem - Xóa lịch sử tìm kiếm + Dọn dẹp lịch sử tìm kiếm Xóa lịch sử tìm kiếm mà bạn đã ghi Xóa toàn bộ lịch sử tìm kiếm\? Đã xóa lịch sử tìm kiếm - Không thể phát video này + Không thể phát luồng này Đã xảy ra lỗi trình phát không thể khôi phục Phục hồi lại trình phát bị lỗi Trình phát ngoài không hỗ trợ các loại liên kết này - Không tìm thấy luồng video nào - Không tìm thấy luồng audio nào + Không tìm thấy luồng băng hình nào + Không tìm thấy luồng âm thanh nào Thư mục không hợp lệ Tệp / nguồn nội dung không hợp lệ Tệp không tồn tại hoặc không có quyền đọc / ghi @@ -198,16 +198,16 @@ %s lượt xem - Không có video nào + Không có cuộn băng nào - %s video + %s cuộn băng Tạo nên Bỏ qua Đổi tên Đã xóa 1 mục. Tải xuống - Các ký tự được cho phép cho tên tệp + Các ký tự được cho phép trong tên tệp Ký tự không hợp lệ được thay thế bằng giá trị này Ký tự thay thế Chỉ chữ cái và chữ số @@ -221,12 +221,12 @@ NewPipe rất coi trọng quyền riêng tư của bạn. Do đó, ứng dụng không thu thập bất kỳ dữ liệu nào mà không có sự đồng ý của bạn. \nChính sách bảo mật của NewPipe giải thích chi tiết dữ liệu nào được gửi và lưu trữ khi bạn gửi báo cáo sự cố. Đọc chính sách bảo mật - NewPipe là phần mềm miễn phí copyleft: Bạn có thể sử dụng, nghiên cứu, chia sẻ và cải thiện nó theo ý của bạn. Nói cụ thể hơn, bạn có thể phân phối lại và/hoặc sửa đổi nó theo các điều khoản trong Giấy phép Công cộng GNU (GPL) được xuất bản bởi Quỹ Phần mềm Tự do (FSF), theo phiên bản 3 hoặc bất kì phiên bản nào sau này của Giấy phép (tùy ý bạn). + NewPipe là phần mềm tự do bản quyền bên trái: Bạn có thể sử dụng, nghiên cứu, chia sẻ và cải tiến nó theo ý muốn. Cụ thể là bạn có thể phân phối lại và/hoặc sửa đổi nó theo các điều khoản của Giấy phép Công cộng GNU do Tổ chức Phần mềm Tự do xuất bản, phiên bản 3 của Giấy phép hoặc (tùy theo lựa chọn của bạn) bất kỳ phiên bản nào mới hơn. Lịch sử Lịch sử Bạn có muốn xóa mục này khỏi lịch sử tìm kiếm không? Lần phát cuối - Hầu hết phát + Được phát nhiều nhất Nội dung trang chính Trang trống Trang chủ @@ -239,43 +239,43 @@ Không có tệp ZIP hợp lệ Cảnh báo: Không thể nhập tất cả các tệp. Thao tác này sẽ ghi đè cài đặt hiện tại của bạn. - Bạn cũng muốn nhập cài đặt? - Đang thịnh hành + Bạn có muốn cũng nhập các thiết đặt không\? + Thịnh hành Mới và đang hot Loại bỏ Chi tiết - Cài đặt âm thanh - Giữ để nối tiếp + Thiết đặt âm thanh + Giữ để xếp hàng Bắt đầu phát từ đây trong nền - Bắt đầu phát trên trình phát popup + Bắt đầu phát trong cửa sổ bật lên Mở ngăn kéo Đóng ngăn Hành động \'mở\' được ưu tiên Hành động mặc định khi mở nội dung — %s - Trình phát video + Trình phát băng hình Trình phát nền - Trình phát popup + Trình phát bật lên Luôn luôn hỏi Đang nhận thông tin… Đang tải nội dung được yêu cầu - Tạo playlist mới - Đổi tên playlist + Danh sách phát mới + Đổi tên Tên Thêm vào danh sách phát Đặt làm hình thu nhỏ của danh sách phát - Đánh dấu playlist này - Xóa dấu trang - Xóa playlist này\? - Đã tạo playlist - Đã thêm vào playlist - Đã thay đổi danh sách của playlist. + Đánh dấu danh sách phát + Loại bỏ đánh dấu + Xóa danh sách phát này\? + Đã tạo danh sách phát + Đã thêm danh sách phát + Hình thu nhỏ của danh sách phát đã thay đổi. Không có phụ đề Phù hợp Lấp đầy Thu phóng Tự động tạo ra Phụ đề - Sửa cỡ chữ, màu chữ và kiểu màu nền phụ đề. Hãy khởi động lại ứng dụng để áp dụng + Thay đổi tỷ lệ văn bản và kiểu nền phụ đề trình phát. Yêu cầu khởi động lại ứng dụng để có hiệu lực Theo dõi rò rỉ bộ nhớ có thể khiến ứng dụng trở nên không phản hồi khi đổ xô đống Báo các lỗi out-of-lifecycle Buộc báo cáo ngoại lệ Rx không thể gửi được bên ngoài vòng đời của mảnh hoặc hoạt động sau khi xử lý @@ -311,7 +311,7 @@ Độ cao Bỏ gắn (có thể gây méo nhưng vui) Tua nhanh trong im lặng - Tiếp theo + Bước Đặt lại Để tuân thủ Quy định bảo vệ dữ liệu chung của châu Âu (GDPR), chúng tôi sẽ thu hút sự chú ý của bạn đến chính sách bảo mật của NewPipe. Vui lòng đọc kỹ. \nBạn phải chấp nhận nó để gửi cho chúng tôi báo cáo lỗi. @@ -320,10 +320,10 @@ Không giới hạn Giới hạn độ phân giải khi sử dụng 3G, 4G Thu nhỏ khi chuyển qua ứng dụng khác - Hành động khi chuyển sang ứng dụng khác từ trình phát chính — %s + Hành động khi chuyển sang ứng dụng khác từ trình phát băng hình chính — %s Không Thu nhỏ xuống trình phát nền - Thu nhỏ vào trình phát popup + Thu nhỏ xuống trình phát bật lên Hủy đăng ký Chọn tab Cập nhật @@ -341,7 +341,7 @@ Top 50 phổ biến Nhập ID SoundCloud hoặc link soundcloud.com/<ID của bạn> Cập nhật - Hiện thông báo khi có bản cập nhật ứng dụng + Hiển thị thông báo để nhắc cập nhật ứng dụng khi có phiên bản mới Chế độ hiển thị danh sách Danh sách Lưới @@ -351,7 +351,7 @@ đã tạm dừng trong hàng đợi đang xử lý - Hàng chờ + Xếp hàng Thao tác bị từ chối bởi hệ thống Tải về không thành công Tạo tên riêng biệt @@ -381,11 +381,11 @@ Không có bình luận nào Không thể tải bình luận Đóng - Tiếp tục phát - Phục hồi vị trí phát lại + Tiếp tục phát lại + Khôi phục vị trí phát lại cuối cùng Vị trí phát trong danh sách - Hiện vị trí phát lại trong danh sách - Xoá dữ liệu + Hiển chỉ báo vị trí phát lại trong danh sách + Dọn dẹp dữ liệu Đã xoá vị trí phát Tệp đã di chuyển hoặc đã xoá Tên file này đã tồn tại @@ -397,17 +397,17 @@ Kết nối hết thời gian Bạn muốn xóa lịch sử tải về hay xóa tất cả những file đã tải về\? Giới hạn hàng chờ tải xuống - Chỉ một tải xuống sẽ chạy + Chỉ một lần tải mỗi lượt Bắt đầu tải xuống Tạm dừng tải xuống Hỏi nơi thư mục để tải xuống Bạn sẽ được hỏi nơi lưu vào mỗi lần tải xuống. \nHãy bật trình chọn thư mục của hệ thống (SAF) nếu bạn muốn tải xuống vào một cái thẻ nhớ Xóa vị trí phát - Xóa toàn bộ vị trí phát - Xác nhận xóa toàn bộ vị trí phát\? + Xóa tất cả vị trí phát + Xóa tất cả vị trí phát\? Nhóm kênh - Chọn thực thể + Chọn một thực thể Thực thể đã tồn tại Không thể xác nhận thực thể Nhập URL thực thể @@ -425,27 +425,27 @@ %d giây - Có, và video đã xem một phần - Video đã xem trước và sau khi được thêm vào playlist sẽ bị xóa. -\nBạn có chắc không\? Video sẽ không thể hồi phục được! - Xóa video đã xem\? - Xóa video đã xem + Có, và cuốn băng đã xem một phần + Những cuốn băng đã xem trước và sau khi thêm vào danh sách phát sẽ bị loại bỏ. +\nBạn có chắc không\? Điều này không thể được hoàn tác! + Loại bỏ các cuốn băng đã xem\? + Xóa đã xem Mặc định hệ thống Ngôn ngữ ứng dụng - \'Khung truy cập bộ nhớ\' cho phép tải xuống thẻ SD bên ngoài + \'Khung truy cập lưu trữ\' cho phép tải xuống một thẻ SD bên ngoài Sử dụng trình chọn thư mục của hệ thống (SAF) Xóa file đã tải về Xóa lịch sử tải về Không thể khôi phục bản tải xuống này Bật tiếng Tắt tiếng - Yêu thích nhất + Được yêu thích nhất Thêm vào gần đây Ngôn ngữ sẽ thay đổi khi ứng dụng khởi động lại Bấm \"Xong\" khi hoàn thành Đã hoàn thành - ∞ video - 100+ video + ∞ cuộn băng + 100+ cuốn băng %s người nghe @@ -458,15 +458,15 @@ Nghệ sĩ Album Bài hát - Các video - Video này bị giới hạn độ tuổi. + Các cuốn băng + Cuốn băng này bị giới hạn độ tuổi. \n -\nBật \"%1$s\" trong cài đặt nếu bạn muốn xem video này. +\nBật \"%1$s\" trong thiết đặt nếu bạn muốn xem cuốn băng này. Bật chế độ hạn chế Youtube Chỉ URL HTTPS được hỗ trợ Chọn thực thể PeerTube ưa thích Thực thể PeerTube - Thời lượng tua video + Thời lượng tua-nhanh tới/-lùi Dòng chữ mô tả thời gian gốc từ các dịch vụ sẽ được hiển thị thay thế Hiện thời gian gốc trên các item Chọn dịch vụ; dịch vụ hiện tại: @@ -476,58 +476,58 @@ NewPipe chưa hỗ trợ loại nội dung này. \n \nCó thể nó sẽ được hỗ trợ bởi một phiên bản mới hơn trong tương lai. - Bạn có thấy feed của mình cập nhật chậm không\? Nếu có thì bạn có thể thử chế độ tăng tốc (bạn có thể bật/tắt chế độ này trong cài đặt hoặc bằng cách nhấn nút bên dưới). + Bạn có nghĩ rằng tải nguồn cấp dữ liệu quá chậm\? Nếu vậy, hãy thử bật tải nhanh (bạn có thể thay đổi nó này trong thiết đặt hoặc bằng cách nhấn nút bên dưới). \n -\nNewPipe hỗ trợ 2 cách cập nhật feed: -\n• Tải thông tin cả kênh cho từng kênh một; chậm nhưng chắc. -\n• Tải từ các nguồn chuyên dụng; nhanh nhưng thường không đầy đủ. +\nNewPipe cung cấp hai chiến lược tải nguồn cấp dữ liệu: +\n• Tìm nạp toàn bộ kênh đăng ký, tuy chậm nhưng đầy đủ. +\n• Sử dụng điểm cuối dịch vụ chuyên dụng, nhanh nhưng thường không hoàn thiện. \n -\nĐiểm khác biệt giữa 2 cách trên là cách nhanh hơn (chế độ tăng tốc) thường có thể thiếu thông tin - như thời lượng hay loại (VD: không thể phân biệt được giữa video thường và livestream) - và thiếu nội dung hơn. +\nSự khác biệt giữa hai loại này là cái nào nhanh thường thiếu một số thông tin, chẳng hạn như thời lượng hoặc loại mục (không thể phân biệt giữa các cuốn băng trực tiếp và bình thường) và nó có thể trả về ít mục hơn. \n -\nYouTube là một trong số các dịch vụ có hỗ trợ cập nhật nhanh, sử dụng RSS. +\nYouTube là một ví dụ về dịch vụ cung cấp phương pháp nhanh này với nguồn cấp RSS. \n -\nTuy nhiên, việc lựa chọn chế độ tùy thuộc vào mong muốn của bạn: tốc độ hay thông tin. - Tải thông tin từ các nguồn chuyên dụng nếu có thể - Bật chế độ tăng tốc - Tắt chế độ tăng tốc - Có thể được với một số dịch vụ, thường sẽ nhanh hơn nhưng có thể bị giới hạn nội dung nhận được hoặc nội dung nhận được không đầy đủ (v.d. thời lượng, trạng thái,..) +\nVì vậy, sự lựa chọn tập trung vào những gì bạn thích: tốc độ hoặc thông tin chính xác. + Tìm nạp từ nguồn cấp dữ liệu chuyên dụng khi có sẵn + Bật chế độ nhanh + Tắt chế độ nhanh + Có sẵn trong một số dịch vụ, nó thường nhanh hơn nhiều nhưng có thể trả về một số lượng mục hạn chế và thông tin thường không đầy đủ (ví dụ: không có thời lượng, loại mục, trạng thái không trực tiếp) Luôn cập nhật - Khoảng thời gian kể từ lần cuối cập nhật thông tin kênh trước khi nó được coi là hết hạn — %s - Ngưỡng thời gian cập nhật thông báo - Thông báo (feed) + Thời gian sau lần cập nhật cuối cùng trước khi đăng ký được coi là lỗi thời — %s + Ngưỡng cập nhật nguồn cấp dữ liệu + Nguồn cấp dữ liệu Tạo mới - Bạn muốn xóa nhóm kênh này\? - Tên nhóm kênh trống + Bạn có muốn xóa nhóm này\? + Tên nhóm trống Đã chọn %d - Chưa chọn kênh nào + Chưa chọn kênh đăng ký nào Chọn kênh đăng ký - Đang xử lý thông báo… - Số kênh không tải được: %d - Đang tải thông báo… - Thông báo cập nhật lần cuối vào: %s - Do giới hạn của ExoPlayer, khoảng thời gian tua đã được đặt lại thành %d giây + Đang xử lý nguồn cấp dữ liệu… + Chưa tải được: %d + Đang tải nguồn cấp dữ liệu… + Nguồn cấp được cập nhật lần cuối: %s + Do các hạn chế của ExoPlayer, đã đặt lại thời lượng tua thành %d giây đang khôi phục - Tự tạo (không tìm thấy người upload) + Được tạo tự động (không tìm thấy người tải lên) Cục bộ Trang chính mặc định Trang danh sách phát - Chỉ hiện các kênh chưa được nhóm + Chỉ hiển thị các đăng ký chưa được nhóm Không bao giờ Chỉ trên Wi-Fi - Tự động phát — %s - Phát hàng đợi (Video) - Không có danh sách nào ở đây - Chọn danh sách + Bắt đầu phát lại tự động — %s + Phát hàng đợi + Chưa đánh dấu danh sách phát nào + Chọn danh sách phát Vui lòng kiểm tra xem vấn đề mà bạn đang gặp đã báo cáo trước đó hay chưa. Nếu bạn tạo quá nhiều báo cáo trùng lặp, bạn sẽ khiến cho chúng tôi tốn thời gian để đọc chúng thay vì sửa lỗi bạn gặp. Báo cáo trên GitHub Sao chép bản báo cáo đã được định dạng Không thể đọc URL này. Mở với app khác\? - Tự động thêm vào hàng đợi + Tự động xếp hàng Hàng đợi của trình phát hiện tại sẽ bị thay thế Việc chuyển từ trình phát này sang trình phát khác có thể sẽ thay thế hàng đợi - Hỏi xác nhận trước khi xóa hàng đợi + Yêu cầu xác nhận trước khi xóa hàng đợi Để trống Đang tải Ngẫu nhiên @@ -539,18 +539,18 @@ Nút hành động thứ ba Nút hành động thứ hai Nút hành động đầu tiên - Chỉnh ảnh thu nhỏ của video trên thanh thông báo từ tỉ lệ 16:9 thành 1:1 (có thể gây méo ảnh) + Cắt bớt hình thu nhỏ cuộn băng hiển thị trong thông báo từ tỷ lệ khung hình 16:9 xuống 1:1 Chỉnh ảnh thu nhỏ thành tỉ lệ 1:1 Đang hiện kết quả cho: %s - Thêm vào danh sách đang phát + Xếp hàng Hiển thị nội dung không phù hợp vì có giới hạn độ tuổi (18+) Hiện ảnh thu nhỏ (thumbnail) trên nền màn hình khóa và trong thông báo Xem hình thu nhỏ Kiểm tra bộ nhớ - Đã thêm vào danh sách đang phát + Đã xếp hàng Xoá Cookie mà NewPipe lưu trữ sau khi bạn hoàn thành nó Cookie reCAPTCHA đã được xóa - Xóa bỏ Cookie của reCAPCHA + Dọn dẹp Cookie của reCAPCHA YouTube cung cấp \"Chế độ hạn chế\" để ẩn nội dung không phụ hợp Yêu cầu Android tùy chỉnh màu của thông báo theo màu chính của ảnh thu nhỏ (lưu ý rằng việc này không khả dụng trên tất cả thiết bị) Tô màu thông báo @@ -559,13 +559,13 @@ Gần đây Đang tính hash Mô tả - Video liên quan + Các mục liên quan Bình luận - Thông báo cho quá trình hash video - Thông báo hash video - Tắt để ẩn các hộp thông tin meta chứa thông tin bổ sung về tác giả/nội dung của stream, hoặc yêu cầu tìm kiếm - Hiện thông tin meta - Tắt để ẩn mô tả video và các thông tin bổ sung + Thông báo cho quá trình băm cuốn băng + Thông báo băm cuộn băng + Tắt để ẩn các hộp siêu thông tin có thông tin bổ sung về người tạo luồng, nội dung luồng hoặc yêu cầu tìm kiếm + Hiển thị siêu thông tin + Tắt để ẩn mô tả cuộn băng và các thông tin bổ sung Hiện mô tả Mở bằng Tệp đang được tải xuống @@ -574,18 +574,18 @@ Tự động (giao diện hệ thống) Radio Nội dung này chỉ dành cho người dùng trả phí, nên NewPipe không thể phát hay tải xuống. - Video này chỉ được dành cho thành viên YouTube Music Premium, nên NewPipe không thể phát hay tải xuống. + Cuốn băng này chỉ được dành cho thành viên YouTube Music Premium, nên NewPipe không thể phát hay tải xuống. Nội dung này được để ở chế độ riêng tư, nên NewPipe không thể phát hay tải xuống. Đây là một track SoundCloud Go+, nên NewPipe không thể phát hay tải xuống được, ít nhất là tại quốc gia của bạn. Nội dung này không có sẵn ở quốc gia của bạn. Làm văng ứng dụng - Video này đã bị giới hạn độ tuổi. -\nVì những quy định mới của YouTube, NewPipe không thể phát được video này, vì không thể tìm thấy nguồn phát video. - Chủ đề ban đêm + Cuốn băng này bị giới hạn độ tuổi. +\nDo chính sách mới của YouTube với các cuốn băng bị giới hạn độ tuổi, NewPipe không thể truy cập bất kỳ luồng băng hình nào của nó và do đó không thể phát nó. + Chủ đề đêm Nổi bật Hiện chi tiết kênh Hoàn thành - Tắt truyền phương tiện qua đường hầm nếu bạn gặp màn hình đen hoặc khựng khi phát video + Tắt tính năng truyền tải phương tiện nếu bạn gặp phải tình trạng màn hình đen hoặc giật hình khi phát lại cuốn băng. Tắt truyền phương tiện qua đường hầm Tắt Bật @@ -608,12 +608,12 @@ Bây giờ bạn có thể chọn văn bản trong mô tả. Lưu ý rằng trang có thể nhấp nháy và các liên kết có thể không nhấn vào được trong khi ở chế độ chọn. %s cung cấp lý do này: Tài khoản đã bị chấm dứt - Chế độ nguồn dữ liệu nhanh không cung cấp thêm thông tin về cái này. - Tài khoản của người này đã bị chấm dứt. -\nNewPipe sẽ không thể tải nguồn dữ liệu này trong tương lai. -\nBạn có muốn huỷ đăng ký kênh này không\? - Không thể tải thông báo cho \'%s\'. - Lỗi khi tải nguồn thông báo + Chế độ nạp nhanh không cung cấp thêm thông tin về điều này. + Tài khoản của tác giả đã bị chấm dứt. +\nNewPipe sẽ không thể tải nguồn cấp dữ liệu này trong tương lai. +\nBạn có muốn hủy đăng ký khỏi kênh này không\? + Không thể tải nguồn cấp dữ liệu cho \'%s\'. + Lỗi tải nguồn cấp dữ liệu \'Storage Access Framework\' chỉ được hỗ trợ từ Android 10 trở đi Bạn sẽ được hỏi nơi bạn muốn lưu mỗi mục tải xuống Chưa có thư mục tải xuống nào được đặt, hãy chọn thư mục tải xuống mặc định ngay @@ -635,11 +635,11 @@ %s lượt tải xuống đã hoàn tất Vuốt các mục để xóa chúng - Không bắt đầu video ở trình phát mini, mà chuyển trực tiếp thành chế độ toàn màn hình, nếu tự động xoay bị khóa. Bạn vẫn có thể truy cập trình phát mini bằng cách thoát khỏi toàn màn hình + Không bắt đầu các cuốn băng ở trình phát mini, mà chuyển trực tiếp thành chế độ toàn màn hình, nếu tự động xoay bị khóa. Bạn vẫn có thể truy cập trình phát mini bằng cách thoát khỏi toàn màn hình Khởi động trình phát chính ở toàn màn hình - Đã cho mục tiếp vào hàng đợi - Cho video kế tiếp vào hàng đợi - Đang thực hiện...Có thể mất một lúc + Đã xếp kế tiếp vào hàng + Xếp kế tiếp vào hàng + Đang xử lý... Có thể hơi lâu Thông báo lỗi Thông báo để báo cáo lỗi NewPipe đã gặp sự cố, nhấn để xem và báo cáo @@ -651,27 +651,27 @@ Kiểm tra cập nhật Kiểm tra phiên bản mới theo cách thủ công Đang kiểm tra cập nhật… - Mục thông báo mới - Làm trình phát dừng + Mục nguồn cấp dữ liệu mới + Làm sập trình phát Không tìm thấy ứng dụng quản lý tệp phù hợp nào để thực hiện hành động. \nVui lòng cài đặt ứng dụng quản lý tệp tương thích với Storage Access Framework - Không tìm thấy ứng dụng quản lý tệp phù hợp nào để thực hiện hành động. -\nVui lòng cài đặt ứng dụng quản lý tệp hoặc tắt \'%s\' trong cài đặt tải xuống + Không tìm thấy trình quản lý tệp nào thích hợp cho hành động này. +\nVui lòng cài đặt một trình quản lý tệp hoặc thử tắt \'%s\' trong thiết đặt tải xuống LeakCanary không khả dụng - ExoPlayer mặc định + Mặc định ExoPlayer Bình luận được ghim Thông báo trình phát - Thiết lập thông báo hiện đang phát + Cấu hình thông báo hiện đang phát trực tuyến Thông báo Luồng truyền mới - Thông báo về video mới đối với mục đăng ký + Thông báo về luồng mới của kênh đăng ký %s luồng truyền mới Đang tải chi tiết luồng truyền… Chạy kiểm tra luồng truyền mới - Thông báo video mới - Thông báo về video mới từ kênh bạn đã đăng ký + Thông báo về luồng mới + Thông báo về các luồng mới từ các kênh đăng ký Thời gian kiểm tra Yêu cầu kết nối mạng Bất kỳ loại mạng nào (có thể tính phí) @@ -683,64 +683,114 @@ Phần trăm , Nửa cung - Luồng video mà không được trình tải xuống hỗ trợ sẽ không hiện - Không có video khả dụng cho trình chạy ngoài - Video bạn chọn không hỗ trợ trình chạy bên ngoài - Video này không có âm thanh khả dụng cho trình chạy ngoài + Luồng băng hình mà không được trình tải xuống hỗ trợ sẽ không hiển thị + Không có luồng băng hình nào khả dụng cho trình phát bên ngoài + Luồng phát đã chọn không được trình phát ngoài hỗ trợ + Không có luồng âm thanh nào khả dụng cho máy phát bên ngoài Chọn chất lượng cho trình chạy ngoài Định dạng không xác định (:P) Độ phân giải không xác định - Kích thước khoảng thời gian tải + Kích thước tải thời lượng phát lại Thể loại Câu hỏi thường gặp Xem trên website Nếu bạn gặp vấn đề khi sử dụng ứng dụng , hãy chắc chắn rằng bạn đã tìm kiếm các câu hỏi thường thấy ! Nhập hoặc xuất các kênh bạn đăng ký bằng cách nhấn nút 3 chấm ở góc trên màn hình Không thể sao chép vào khay nhớ tạm - Đã thêm khoảng thời gian %d trùng lặp (s) + Đã thêm trùng lặp %d lần Dạng thẻ Bạn đang dùng phiên bản mới nhất Tùy chọn này chỉ được bật khi chủ đề %s được dùng Nhấn để tải %s Chế độ tăng tốc - Danh sách này bị trùng lặp. + Danh sách phát màu xám thì đã chứa mục này. Hữu ích trong trường hợp phím bấm âm lượng trên tai nghe hoặc thiết bị của bạn bị hỏng Không nhận phím điều khiển âm lượng vật lý Loại bỏ mục trùng lặp Loại bỏ mục trùng lặp\? - Bạn có muốn loại bỏ tất cả các nguồn trùng nhau trong danh sách phát này\? - Hiện/Ẩn nguồn phát - Hiện các nguồn phát sau - Đã xem - Đã xem 1 phần - Bỏ đặt hình thumbnail - Thay đổi kích thước khoảng thời gian tải (tầm khoảng %s). Để ở giá trị thấp hơn có thể sẽ tăng tốc độ tải video hơn ban đầu. Khởi động lại trình phát để áp dụng thay đổi - Bản âm thanh đã có sẳn trong stream này - Sử dụng tính năng giải mã ExoPlayer dự phòng - Giải pháp thay thế này phát hành và khởi tạo lại codec video khi xảy ra thay đổi bề mặt, thay vì đặt trực tiếp bề mặt vào codec. Đã được ExoPlayer sử dụng trên một số thiết bị gặp sự cố, cài đặt này chỉ ảnh hưởng cho thiết bị chạy Android 6 trở lên + Bạn có muốn loại bỏ mọi luồng trùng lặp trong danh sách phát này\? + Hiện/Ẩn luồng phát + Hiển thị các luồng phát sau + Đã xem đầy đủ + Đã xem một phần + Bỏ đặt vĩnh viễn hình thu nhỏ + Thay đổi kích thước khoảng thời gian tải trên nội dung lũy tiến (hiện tại là %s). Giá trị thấp hơn có thể tăng tốc độ tải ban đầu của chúng + Một bản âm thanh đã có sẵn trong luồng này + Sử dụng tính năng bộ giải mã dự phòng của ExoPlayer + Giải pháp thay thế này giải phóng và khởi tạo lại codec băng hình khi xảy ra thay đổi bề mặt, thay vì thiết đặt trực tiếp bề mặt vào codec. Đã được ExoPlayer sử dụng trên một số thiết bị gặp sự cố này, thiết đặt này chỉ ảnh hưởng đến Android 6 trở lên \n -\nBật tùy chọn này có thể ngăn lỗi phát lại khi chuyển đổi trình phát video hiện tại hoặc chuyển sang chế độ toàn màn hình +\nBật tùy chọn này có thể ngăn lỗi phát lại khi chuyển đổi trình phát băng hình hiện tại hoặc chuyển sang chế độ toàn màn hình Bật tùy chọn này nếu bạn gặp sự cố khởi tạo bộ giải mã, vấn đề này sẽ quay trở lại bộ giải mã có mức độ ưu tiên thấp hơn nếu quá trình khởi tạo bộ giải mã chính thất bại. Điều này có thể dẫn đến hiệu suất phát lại kém hơn so với khi sử dụng bộ giải mã chính Luôn dùng biện pháp thay thế cho bề mặt đầu ra video cho ExoPlayer - Nguyên gốc - Phần mô tả - Lồng tiếng - Chọn âm thanh gốc bạn thích + nguyên gốc + mô tả + lồng tiếng + Ưu tiên âm thanh gốc Chọn bản âm thanh gốc kể cả nhiều ngôn ngữ - Âm thanh mô tả bạn thích - Chọn bản âm thanh có phần mô tả cho người kiếm thị nếu có - Chọn cử chỉ vuốt cho phía bên trái nửa màn hình của trình chơi + Ưu tiên âm thanh mô tả + Chọn một bản âm thanh có mô tả cho người khiếm thị nếu có + Chọn cử chỉ vuốt cho nửa bên trái màn hình của trình phát Hành động cho cử chỉ trái - Chọn cử chỉ vuốt cho phía bên phải nửa màn hình của trình chơi + Chọn cử chỉ vuốt cho nửa bên phải màn hình của trình phát Hành động cho cử chỉ phải Độ sáng Âm lượng Không Âm thanh: %s Bản âm thanh - Sắp đến + Sắp tới Không rõ - Chọn bản âm thanh cho trình phát ngoài - Cài đặt Exoplayer - Quản lý một số cài đặt trong Exoplayer. Hãy khởi động lại trình phát để áp dụng thay đổi + Chọn bản âm thanh cho máy phát bên ngoài + Thiết đặt ExoPlayer + Quản lý một số thiết đặt ExoPlayer. Những thay đổi này yêu cầu khởi động lại trình phát để có hiệu lực + Đang tải siêu dữ liệu… + Vị trí tab chính + Tìm nạp các tab kênh + Đường hầm phương tiện đã bị tắt theo mặc định trên thiết bị của bạn vì kiểu thiết bị của bạn được biết là không hỗ trợ tính năng này. + Các tab cần tìm nạp khi cập nhật nguồn cấp dữ liệu. Tùy chọn này không có hiệu lực nếu kênh được cập nhật bằng chế độ nhanh. + Hình đại diện của người tải lên + Di chuyển bộ chọn tab chính xuống dưới cùng + Không có luồng trực tiếp + Ảnh xem trước + Không có luồng + Các cuộn băng + Người đăng ký + Những thẻ nào được hiển thị trên các trang kênh + Thẻ kênh + Chuyển đổi hướng màn hình + Chuyển đổi toàn màn hình + Hình đại diện + %1$s %2$s + Luồng tiếp theo + Hình đại diện kênh phụ + Mở hàng chờ phát + Giới thiệu + Phát lại + Băng rôn + Danh sách phát + Phát + Lựa chọn khác + Thời lượng + Kênh + Luồng trước đó + Chất lượng ảnh + \? + Chia sẻ danh sách URL + Chia sẻ với Tiêu đề + %1$s +\n%2$s + Video ngắn + Chất lượng thấp + Không tải ảnh + Chất lượng cao + Chia sẻ danh sách phát + Tua đi + Album + Tua lại + Chia sẻ danh sách phát với các thông tin chi tiết như tên danh sách phát và tiêu đề video hoặc dưới dạng danh sách URL cuốn băng đơn giản + Chất lượng trung bình + - %1$s: %2$s + Chọn chất lượng hình ảnh và chọn có tải chất lượng ảnh hay không, để giảm mức sử dụng dữ liệu và bộ nhớ. Thay đổi xoá cache ảnh cho cả trong bộ nhớ lẫn ổ cứng - %s + Track + Trực tiếp \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 0cead2277d1..3afaf86de19 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -20,9 +20,9 @@ 顯示以 Kodi 媒體中心播放影片嘅選項 聲音 預設聲音檔案格式 - 主題 - 黑暗 - 明亮 + 主題色系 + 黑眼睛 + 白頭浪 下載 顯示「接續落」同「咁上下」嘅影片 唔支援呢個網址 @@ -82,7 +82,7 @@ 顯示更高解像度 得某啲機先播到 2K/4K 影片 預設嘅影片檔案格式 - 純黑 + 紅日降 浮面播緊 全部嘢 App/界面閃退 @@ -148,7 +148,7 @@ 顯示喺通知嘅影片縮圖由 16:9 剪成 1:1 長寬比 通知色彩化 等 Android 根據縮圖嘅主色自訂通知嘅顏色 (注意:唔係部部機都用得) - 夜間 + 晚風色系 跳前/跳後嘅快轉長短 閂埋佢去隱藏影片描述同附加資訊 剔低睇過 @@ -498,7 +498,7 @@ 呢部內容限區,喺你所在國家未有提供。 呢首 (至少喺你所在國家而言) 係 SoundCloud Go+ 單曲,因此 NewPipe 未能串流或下載。 呢部內容係私人嘢,因此 NewPipe 未能串流或下載。 - 自動 (跟返部機嘅主題色系) + 明或暗 (跟返部機嘅主題色系) 精選 廣播 你而家可以揀選喺描述入面嘅文字喇。不過要單聲先,喺揀選模式嘅時候,版面可能會有啲眨,同埋啲連結可能會撳唔到。 @@ -671,7 +671,7 @@ 啲圖都要騷 Picasso 三色碼顯示源頭:紅碼係網絡上高落嚟,藍碼係儲存喺磁碟本地,綠碼係潛伏喺記憶體中 服務原本嘅字會騷返喺串流項目上面 影像要推三色碼 - 若果播片嘅時候窒下窒下或者黑畫面,就停用多媒體隧道啦 + 若果播片嘅時候窒下窒下或者黑畫面,就停用多媒體隧道啦。 點樣用 Google 匯出嚟匯入 YouTube 訂閱: \n \n一、去呢個網址:%1$s @@ -701,7 +701,7 @@ 你已經用緊最新版本嘅 NewPipe 撳一下去下載 %s 唔再揀定封面縮圖 - 色系揀做%s 嘅時候至有得揀 + 主題色系揀做%s 嘅時候至有得揀 複製唔到去剪貼簿 一張張 灰咗嘅播放清單,即係已經有呢個項目。 @@ -720,13 +720,13 @@ 左手邊手勢動作 揀選右手邊播放器螢幕嘅手勢 右手邊手勢動作 - 亮度 - 聲音 - - 首選嘅原始聲音 - 首選嘅敘述性聲音 - 如果可以用嘅話,會為視障人士揀敘述性音軌 - 無論語言係咩,都揀選原始音軌 + 調整光暗度 + 調整大細聲 + 乜都唔使做 + 優先揀原聲 + 優先揀旁述 + 揀選為視障人士而設嘅旁述音軌 (如有提供) + 揀選原始音軌,唔理佢講咩話 聲音: %s 音軌 未知 @@ -736,11 +736,61 @@ 用 ExoPlayer 嘅解碼器汰退功能 如果遇到解碼器初始化問題,請啟用呢個選項,如果主解碼器初始化失敗,就會用優先順序較低的解碼器。咁樣可能會導致播放性能比使用主解碼器嗰陣差 幾時都用 Exoplayer嘅浮面影片輸出設定解決方法 - 原始嘅 - 配音嘅 - 敘述性 + 原聲 + 配音 + 旁述 為外面嘅播放器揀選音軌 呢個解決方法係喺發生表面變動嗰陣釋放同埋重新確認視訊編解碼器,而非直接將表面設定做編解碼器。ExoPlayer 已經喺部份有問題嘅裝置上使用了呢個設定,呢個設定僅係對 Android 6 或以上嘅更新版本有效。 \n \n啟用呢個選項可以避免喺切換現有視訊播放程式或切換到全螢幕時出現播放錯誤 + 啲圖嘅畫質 + 影片 + + 訂閱者 + 頻道頁要騷邊啲分頁出嚟 + 齋分享 URL 清單 + 分享埋片名 + %1$s +\n%2$s + 頻道分頁 + 短片 + 載入緊元資料… + 橫豎轉換 + 低畫質 + 主畫面分頁擺位 + 切換全螢幕 + 攞邊啲頻道分頁 + 頭像 + %1$s %2$s + 下一個串流 + 已知您部機個型號唔支援多媒體隧道,因此預設已經停用咗先。 + 子頻道嘅頭像 + 跳去排隊播 + 唔要載入啲圖 + 高畫質 + 簡介 + 分享播放清單 + 跳前 + 專輯 + 跳後 + 重播 + 更新摘要嘅時候要攞邊啲分頁返嚟。若果頻道用快速模式更新,就橫豎都無相干嘞。 + 分享播放清單要詳細包含播放清單個名同埋入面啲片名,定簡單得啲影片嘅 URL + 一般畫質 + 上載者嘅頭像 + 橫額 + 播放清單 + - %1$s:%2$s + 主畫面嘅分頁揀選搬落最底 + 無直播串流 + 揀選啲圖嘅畫質,定索性唔載入啲圖,去慳啲用數據同記憶體。更改會抹走記憶體同磁碟入面嘅影像快取 — %s + 播放 + 其他選項 + 縮圖 + 曲目 + 片長 + 無串流 + 頻道 + 上一個串流 + 直播 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 761e8e46bbb..8e613161a90 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1,6 +1,6 @@ - %1$s 發布 + 發布於%1$s 找不到串流播放器。要安裝 VLC 嗎? 安裝 取消 @@ -24,18 +24,18 @@ 顯示「用 Kodi 播放」的選項 預設音訊格式 主題 - 灰暗 - 明亮 + 深色 + 淺色 下載 顯示「下一部」與「相關」的影片 - 不支援此 URL + 不支援此網址 預設內容語言 影片與音訊 外觀 - 背景播放中 + 正在背景播放 網路錯誤 播放影片,持續時間: - 發佈者的個人頭像縮圖 + 發布者的頭像縮圖 喜歡 不喜歡 音訊下載資料夾 @@ -49,17 +49,17 @@ 顯示更高的解析度 僅部份裝置可播放 2K/4K 影片 預設影片格式 - 純黑 + 黑色 記住懸浮視窗屬性 記住上次使用時懸浮視窗的大小和位置 搜尋建議 選擇在搜尋時顯示建議 - 以懸浮視窗播放中 + 正在以懸浮視窗播放 內容 顯示年齡限制內容 下載 下載 - 錯誤回報 + 回報錯誤 全部 已停用 清除 @@ -69,22 +69,22 @@ 無法解析網站 內容無法使用 無法設定下載選單 - 應用程式或界面已停止運作 + 應用程式或介面已崩潰 抱歉,這是不該發生的。 透過電子郵件回報 - 抱歉,發生了一些問題。 + 抱歉,發生問題。 回報 資訊: 發生了什麼事: 發生了什麼:\\n請求:\\n內容語言:\\n內容國家:\\n應用程式語言:\\n服務:\\nGMT 時間:\\n套件:\\n版本:\\n系統版本: - 您的留言(請用英文): + 您的留言(請用英語): 詳細資訊: 影片 音訊 重試 - k + 百萬 - B + 十億 開始 暫停 刪除 @@ -96,7 +96,7 @@ NewPipe 下載中 輕觸以顯示詳細資訊 請稍候… - 已複製至剪貼簿 + 已複製到剪貼簿 稍後請在設定中選擇下載資料夾 使用懸浮視窗模式 \n需要此權限 @@ -111,9 +111,9 @@ 無法更新訂閱 訂閱清單 新鮮事 - 搜尋紀錄 - 在本機儲存搜尋紀錄 - 觀看紀錄 + 搜尋記錄 + 在本機儲存搜尋記錄 + 觀看記錄 記錄觀看過的影片 恢復播放 在干擾結束後繼續播放(例如有來電) @@ -142,18 +142,18 @@ 大部分的特殊字元 關於 NewPipe 第三方授權 - © %1$s 由 %2$s 使用 %3$s 授權條款發佈 + © %1$s 由 %2$s 使用 %3$s 授權條款發布 關於與常見問題 授權條款 Android 上自由且輕巧的串流播放器。 在 GitHub 上檢視 NewPipe 使用的授權條款 - 不管你有什麼點子——翻譯、設計、程式碼整理,或者程式碼撰寫——我們永遠歡迎你來幫忙。完成的越多,NewPipe 也會更好! + 不管你有什麼點子──翻譯、設計、程式碼整理,或者程式碼撰寫──我們永遠歡迎你來幫忙。完成的越多,NewPipe 也會更好! 閱讀授權條款 貢獻 - 歷史紀錄 - 歷史紀錄 - 確定要刪除此項搜尋紀錄嗎? + 歷史記錄 + 歷史記錄 + 確定要刪除此項搜尋記錄嗎? 找不到串流播放器(您可以安裝 VLC 來播放)。 顯示「長按以新增」提示 預設內容國家 @@ -175,7 +175,7 @@ 網站 匯入資料庫 匯出資料庫 - 覆蓋您目前的歷史記錄、訂閱與(可選的)設定 + 覆蓋您目前的歷史記錄、訂閱與設定(選用) 匯出歷史記錄、訂閱內容、播放清單、設定 回饋 如欲了解更多有關 NewPipe 的資訊和新聞,請造訪我們的網站。 @@ -188,7 +188,7 @@ 選擇互動導覽 已匯出 已匯入 - 無有效的 ZIP 檔案 + 無效的 ZIP 檔案 警告:無法匯入所有檔案。 這將覆蓋您目前的設定。 熱門 @@ -240,12 +240,12 @@ 報告週期不足錯誤 強制報告在處理完片段或活動週期外發生的無法傳遞的 Rx 異常 使用粗略但快速的尋找 - 粗略的尋找能讓播放器以降低的精確度更快找到影片的進度位置。尋找 5、15或25秒無法與其一同使用 + 粗略的尋找能讓播放器以降低的精確度更快找到影片的進度位置。尋找 5、15 或 25 秒無法與其一同使用 自動將下一部影片新增至佇列 透過加入相關的串流來繼續結束的(未重複)播放佇列 檔案 無效的資料夾 - 無效的檔案/內容來源 + 無效的檔案或內容來源 檔案名稱不能留空 發生錯誤: %1$s 匯入 @@ -262,11 +262,11 @@ \n \n1. 移至此網址:%1$s \n2. 當被提示時登入帳號 -\n3. 點擊「包含所有資料」,然後「取消選取全部」,然後僅選取「訂閱」並點擊「確定」 -\n4. 點擊「下一步」然後「建立匯出」 -\n5. 在「下載」按鈕出現後點擊它 +\n3. 按一下「包含所有資料」,接著「取消選取全部」,然後僅勾選「訂閱」並按一下「確定」 +\n4. 按一下「下一步」然後「建立匯出」 +\n5. 在「下載」按鈕出現後按一下它 \n6. 點擊下方的「匯入檔案」並選取已下載的 zip 檔案 -\n7. [若 zip 匯入失敗] 擷取 .csv 檔案(通常位於「YouTube 與 YouTube Music/訂閱/訂閱.csv」),點擊下方的「匯入檔案」並選取擷取的 csv 檔案 +\n7. [若 zip 匯入失敗] 擷取 .csv 檔案(通常位於「YouTube 與 YouTube Music/訂閱/訂閱.csv」),按一下下方的「匯入檔案」並選取擷取的 csv 檔案 yourID, soundcloud.com/yourid 請記住,此操作可造成昂貴網路花費。 \n @@ -277,16 +277,16 @@ \n2. 移至此網址: %1$s \n3. 當被提示時登入帳號 \n4. 複製您被重新導向到的個人設定檔網址。 - 已抹除圖片快取 - 抹除已快取的中介資料 + 已清除圖片快取 + 清除已快取的後設資料 移除所有已快取的網頁資料 - 已抹除中介資料快取 + 已清除後設資料快取 播放速度控制 節奏 音高 解除掛鉤(可能導致失真) 偏好的「開啟」動作 - 開啟內容時的預設動作 — %s + 開啟內容時的預設動作 ─ %s 沒有可供下載的串流 字幕 調整播放器字幕文字大小與背景樣式。必須重新啟動應用程式才會生效 @@ -295,10 +295,10 @@ 刪除所有觀看歷史記錄? 觀看歷史已刪除 清除搜尋歷史 - 刪除搜尋關鍵字的歷史 + 刪除搜尋關鍵字的記錄 刪除所有搜尋歷史記錄? - 搜尋歷史已刪除 - 已刪除 1 個項目。 + 搜尋記錄已刪除 + 已刪除一個項目。 NewPipe 是一個 Copyleft 的自由軟體:您可以隨意使用、研究、分享並改進它。在遵守由自由軟體基金會所發佈的 GNU 通用公共授權條款的狀況下,您可以自由地再散佈及/或修改它;授權條款預設使用第三版,但您也可以選擇更新的版本。 您是否要同時匯入設定? NewPipe 的隱私政策 @@ -312,7 +312,7 @@ 沒有限制 使用行動網路時限制解析度 切換 app 時最小化 - 從主影片播放器切換到其他 app 時要執行的動作 — %s + 從主影片播放器切換到其他 app 時要執行的動作 ─ %s 最小化為背景播放器 最小化為彈出式播放器 @@ -392,7 +392,7 @@ NewPipe 在處理檔案時被關閉 裝置上沒有剩餘的空間 進度遺失,因為檔案已被刪除 - 您想要清除您的下載歷史紀錄,還是刪除所有已下載的檔案? + 您想要清除您的下載歷史記錄,還是刪除所有已下載的檔案? 限制下載佇列 一次執行一個下載 開始下載 @@ -424,9 +424,9 @@ 選取您最愛的 PeerTube 站臺 在 %s 上找到您喜愛的站臺 新增站臺 - 輸入站臺 URL + 輸入站臺網址 無法驗證站臺 - 僅支援 HTTPS URL + 僅支援 HTTPS 網址 站臺已存在 本機 最近新增 @@ -435,7 +435,7 @@ 正在恢復 無法恢復此下載 選擇一個站臺 - 清除下載歷史紀錄 + 清除下載歷史記錄 刪除已下載的檔案 給予顯示在其他應用程式上層的權限 應用程式語言 @@ -473,7 +473,7 @@ Feed Feed 更新閾值 - 上次更新後,訂閱被視為過時的時間 — %s + 上次更新後,訂閱被視為過時的時間 ─ %s 總是更新 在可用時從專用 feed 擷取 其在某些服務中可用,且通常較快速,但可能只會回傳有限的項目,而且資訊通常不完整(例如:沒有持續時間、項目類型、沒有即時狀態) @@ -516,17 +516,17 @@ 尚無播放清單書籤 播放清單頁面 選取播放清單 - 請檢查是否已有與您的應用程式當機相關的討論議題。當建立重複的工單時,您就是在耗費我們本來可以用來修復臭蟲的時間。 + 請檢查是否已有與您的應用程式崩潰相關的討論議題。當建立重複的客服單時,您就是在耗費我們本來可以用來修復錯誤的時間。 在 GitHub 上回報 複製格式化過的報告 目前顯示 %s 的結果 從不 僅在 Wi-Fi 上 - 自動開始播放 — %s + 自動開始播放 ─ %s 播放佇列 - 無法識別 URL。要用其他應用程式開啟嗎? + 無法識別此網址。要用其他應用程式開啟嗎? 自動佇列 - 作用中播放器的佇列可能會被取代 + 啟動中播放器的佇列可能會被取代 從一個播放器切換到另一個可能會取代您的佇列 清除佇列前要求確認 @@ -534,7 +534,7 @@ 隨機播放 循環播放 您可以選取最多三個動作來顯示在簡潔通知中! - 透過點擊下方的每一個通知來編輯它。使用右側的勾選框,最多可以選取三個在簡潔通知中顯示 + 透過輕觸下方的通知來編輯它。使用右側的勾選框,最多可以選取三個在簡潔通知中顯示 第五動作按鈕 第四動作按鈕 第三動作按鈕 @@ -549,7 +549,7 @@ reCAPTCHA cookies 已被清除 清除 reCAPTCHA cookies YouTube 有提供「嚴格篩選模式」,可以隱藏潛在的成人內容 - 顯示可能不適於兒童的內容(因為其有年齡限制,如18歲以上等) + 顯示可能不適於兒童的內容,因為其有年齡限制(如 18 歲以上等) 讓 Android 根據縮圖中的主要色彩來自訂通知的顏色(請注意,此功能不是在所有裝置上都能正常運作) 彩色通知 於鎖定畫面背景與通知使用縮圖 @@ -581,9 +581,9 @@ 解決 下載已經開始 您可以在下方選取您最愛的夜間佈景主題 - 選取您最愛的夜間佈景主題 — %s + 選取您最愛的夜間佈景主題 ─ %s 自動(裝置佈景主題) - 夜間佈景主題 + 夜間布景主題 顯示頻道詳細資訊 如果您遇到黑畫面或影片播放停頓的現象,請停用媒體隧道。 停用媒體隧道 @@ -623,7 +623,7 @@ 高品質(較大) 拖動列縮圖預覽 被創作者加心號 - 標記為已看過 + 標記為已觀看 在圖片頂部顯示畢卡索彩色絲帶,指示其來源:紅色代表網路、藍色代表磁碟、綠色代表記憶體 顯示圖片指示器 遠端搜尋建議 @@ -656,7 +656,7 @@ 找不到適合此動作的檔案管理程式。 \n請安裝檔案管理程式或在下載設定嘗試停用「%s」 NewPipe 遇到錯誤,點擊以回報 - 發生錯誤,請檢視通知 + 發生錯誤,請查看通知 釘選的留言 LeakCanary 無法使用 ExoPlayer 預設值 @@ -669,7 +669,7 @@ 新串流通知 設定目前播放串流通知 需要網路連線 - 從磁碟抹除所有已下載的檔案? + 從磁碟清除所有已下載的檔案? 取得通知 新串流 關於訂閱的新串流通知 @@ -754,7 +754,7 @@ 頻道頁面上顯示哪些分頁 頻道分頁 短片 - 正在載入詮釋資料…… + 正在載入後設資料…… 擷取頻道分頁 關於 專輯 diff --git a/fastlane/metadata/android/de/changelogs/63.txt b/fastlane/metadata/android/de/changelogs/63.txt index 1fdd53b5525..3ccc56bc03f 100644 --- a/fastlane/metadata/android/de/changelogs/63.txt +++ b/fastlane/metadata/android/de/changelogs/63.txt @@ -5,4 +5,4 @@ - Alles über DSGVO hinzugefügt #1420 ### Repariert -- Downloader: Absturz beim Laden unvollendeter Downloads aus .giga-Dateien behoben #1407 +- Downloader: Absturz beim Laden unvollendeter Downloads von .giga-Dateien behoben #1407 diff --git a/fastlane/metadata/android/de/changelogs/65.txt b/fastlane/metadata/android/de/changelogs/65.txt index 8190e9ae9f8..3405af36342 100644 --- a/fastlane/metadata/android/de/changelogs/65.txt +++ b/fastlane/metadata/android/de/changelogs/65.txt @@ -1,10 +1,10 @@ Verbesserungen --Menü Animation deaktiviert #1486 +-Menüanimation deaktiviert #1486 -Löschen von Downloads rückgängig machen #1472 --Option zum Downloaden im Austausch Menu #1498 --hinzufügen der Teilen Funktion im Menü #1454 --Minimieren der Wiedergabe beim beenden #1354 +-Option zum Downloaden im Teilen-Menü #1498 +-hinzufügen der Teilen-Funktion im Menü #1454 +-Minimieren der Wiedergabe beim Beenden #1354 -Datenbank Versions Aktualisierung und Datenbestand Wiederherstellung #1510 -ExoPlayer 2.8.2 aktualisiert #1392 --Überarbeitung der Wiedergabegeschwindigkeitskolntrolle um Änderungen besser zu unterstützen --hinzufügen der Möglichkeit Stille zu überspringen(Hilfreich bei Audiobücher und einigen Musik Arten) unterstützt dadurch eine nahtlose Wiedergabe (nicht so toll bei Liedern in denen es auch Stille Passagen gibt) +-Überarbeitung der Wiedergabegeschwindigkeitskontrolle um Änderungen besser zu unterstützen +-hinzufügen der Möglichkeit Stille zu überspringen(Hilfreich bei Audiobücher und einigen Musikarten) unterstützt dadurch eine nahtlose Wiedergabe (Nicht so toll bei Liedern, in denen es auch stille Passagen gibt.) diff --git a/fastlane/metadata/android/de/changelogs/968.txt b/fastlane/metadata/android/de/changelogs/968.txt index a619dc5c2f6..eaaf0637cbb 100644 --- a/fastlane/metadata/android/de/changelogs/968.txt +++ b/fastlane/metadata/android/de/changelogs/968.txt @@ -1,7 +1,7 @@ -Option "Kanaldetails" wurde zum Langdruckmenü hinzugefügt. -Funktion zum Umbenennen des Playlist-Namens von der Playlist-Oberfläche zugefügt. +Option „Kanaldetails“ dem Langdruck-Menü hinzugefügt. +Funktion zum Umbenennen des Namens der Wiedergabeliste der Oberfläche hinzugefügt. Benutzer kann nun pausieren, während ein Video gepuffert wird. -Weiße Thema wurde aufpoliert. +Weißes Design wurde aufpoliert. Überlappende Schriftarten bei Verwendung einer größeren Schriftgröße behoben. -Kein Video auf Formuler- und Zephier-Geräten behoben. +Videoanzeige auf Formuler- und Zephier-Geräten behoben. Verschiedene Abstürze behoben. diff --git a/fastlane/metadata/android/de/changelogs/970.txt b/fastlane/metadata/android/de/changelogs/970.txt index 53f80fed1ab..cf0ae0e0b4f 100644 --- a/fastlane/metadata/android/de/changelogs/970.txt +++ b/fastlane/metadata/android/de/changelogs/970.txt @@ -5,7 +5,7 @@ Neu: Behoben: • Rotationsabsturz auf der Videodetailseite -• „Mit Kodi spielen“-Button im Player fordert immer auf, Kore zu installieren +• „Mit Kodi spielen“-Schaltfläche im Player fordert immer auf, Kore zu installieren • Setzen von Import- und Exportpfaden wurde behoben und verbessert • [YouTube] Anzahl Kommentar-Likes korrigiert Und vieles mehr diff --git a/fastlane/metadata/android/de/changelogs/993.txt b/fastlane/metadata/android/de/changelogs/993.txt index 54b04faa7c9..23f4db0b0f6 100644 --- a/fastlane/metadata/android/de/changelogs/993.txt +++ b/fastlane/metadata/android/de/changelogs/993.txt @@ -1,12 +1,12 @@ Neu -• Warnung bei Erstellung von Duplikaten in Wiedergabelisten und neue Schaltfläche um Duplikate zu entfernen -• Möglichkeit, Hardware Tasten zu ignorieren +• Warnung beim Erstellen von Duplikaten in Wiedergabelisten und neue Schaltfläche um diese zu entfernen +• Möglichkeit, Hardwaretasten zu ignorieren • Möglichkeit, teilweise gesehene Videos im Feed auszublenden Verbessert -• Mehr Rasterspalten auf großen Displays +• Mehr Gitterspalten auf großen Displays • Fortschrittsbalken sind jetzt konsistent mit Einstellungen Behoben -• Das Öffnen von Browser-URLs, Downloads und externen Videoplayern auf Android 11+ -• Fullscreen-Bedingung benötigte zweimaliges Drücken auf MIUI +• Das Öffnen von Browser-URLs, Downloads und externen Videoplayern unter Android 11+ +• Vollbildmodus-Bedienung benötigte zweimaliges Tippen unter MIUI diff --git a/fastlane/metadata/android/de/changelogs/995.txt b/fastlane/metadata/android/de/changelogs/995.txt new file mode 100644 index 00000000000..284d1c1925c --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/995.txt @@ -0,0 +1,14 @@ +Neu +• Unterstützung von Kanaltabs +• Bildqualität auswählbar +• URLs zu allen Bildern erhalten + +Verbessert +• Zugänglichkeit der Player-Oberflächen +• Option zum Hinzufügen von Wiedergabelisten- und Videonamen beim Teilen von Inhalten +• Interne Verbesserungen und Aktualisierungen der Abhängigkeiten + +Behoben +• Auswahl der falschen Sprachen in der Sprachauswahl +• Der Audio-Fokus des Players respektierte die Stummschaltung nicht +• Das Hinzufügen von Elementen zu Wiedergabelisten in bestimmten Fällen diff --git a/fastlane/metadata/android/eo/changelogs/63.txt b/fastlane/metadata/android/eo/changelogs/63.txt new file mode 100644 index 00000000000..c6e1e9ad5fa --- /dev/null +++ b/fastlane/metadata/android/eo/changelogs/63.txt @@ -0,0 +1,8 @@ +### Plibonigojn +- Importi/eksporti konfiguraĵojn #1333 +- Malpliigi superdesegnaĵon (rendimentan plibonigon) #1371 +- Malgrandajn kodajn plibonigojn #1375 +- Aldoni ĉion pri GDPR #1420 + +### Fiksitaj +- Elŝutilo: Fiksi kraŝon kiam ŝarĝi malfinitajn elŝutaĵojn el .giga-j dosieroj #1407 diff --git a/fastlane/metadata/android/eo/full_description.txt b/fastlane/metadata/android/eo/full_description.txt new file mode 100644 index 00000000000..74418f2ab15 --- /dev/null +++ b/fastlane/metadata/android/eo/full_description.txt @@ -0,0 +1 @@ +NewPipe uzas nek frambildotekojn de *Google*, nek la aplikprograman interfacon de YouTube. Ĝi nur sintakse analizas la retejon por akiri la necesaj datumoj. Tial ĉi tio aplikaĵo estas uzebla per disponaĵoj sen instalita *Google Services*. Oni ne bezonas konton de YouTube por uzi NewPipe, kaj ĝi estas libera programaro. diff --git a/fastlane/metadata/android/pt-BR/changelogs/954.txt b/fastlane/metadata/android/pt-BR/changelogs/954.txt index 449fde5dc93..cd131c16256 100644 --- a/fastlane/metadata/android/pt-BR/changelogs/954.txt +++ b/fastlane/metadata/android/pt-BR/changelogs/954.txt @@ -1,7 +1,7 @@ -fluxo de trabalho do novo aplicativo: reproduza vídeos na página de detalhes, deslize para baixo para minimizar o player -• Notificações MediaStyle: ações personalizáveis em notificações, melhorias de desempenho -• redimensionamento básico ao usar NewPipe como app de desktop -• mostrar diálogo com opções abertas em caso de URL não suportado -• Melhorada a experiência de sugestão de pesquisa -• Qualidade de vídeo padrão aumentada para 720p60 (player do app) e 480p (pop-up) -• correções de bugs +• Novo recurso: veja vídeos na página de detalhes, deslize para baixo para minimizar o vídeo +• Notificações MediaStyle: ações personalizáveis em notificações, melhorias de desempenho +• redimensionamento básico ao usar NewPipe como aplicativo de computador +• diálogo com opções abertas se URL não for suportado +• Melhor experiência de sugestão de pesquisa quando não pode ser buscada +• Maior qualidade do vídeo padrão para 720p60 no reprodutor interno e 480p no Pop-up +• correções de falhas e mais (?) diff --git a/fastlane/metadata/android/pt-BR/changelogs/994.txt b/fastlane/metadata/android/pt-BR/changelogs/994.txt new file mode 100644 index 00000000000..d8e9860511f --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/994.txt @@ -0,0 +1,15 @@ +Novo +• Suporte a múltiplas faixas de áudio e idiomas +• Definição de gestos para volume e brilho em qualquer lado da tela +• Suporte para exibir abas principais na parte inferior da tela + +Melhorias +• [Bandcamp] Lida com faixas sob acesso pago + +Corrigido +• [YouTube] erros HTTP 403 para transmissões +• Tela preta ao alternar ao reprodutor a partir da visualização da lista de reprodução +• Vazamento de memória no reprodutor +• [PeerTube] Avatares do carregador e do subcanal foram trocados + +e mais diff --git a/fastlane/metadata/android/pt-BR/changelogs/995.txt b/fastlane/metadata/android/pt-BR/changelogs/995.txt new file mode 100644 index 00000000000..943b842b0b5 --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/995.txt @@ -0,0 +1,14 @@ +Novidades +• Suporta abas de canal +• Seleção da qualidade da imagem +• Obtém os URL para todas as imagens + +Melhorias +• Acessibilidade das interfaces do reprodutor +• Pode adicionar nome da lista de reprodução e de vídeo para compartilhamento do conteúdo +• Melhorias internas (?) e atualizações de dependências + +Corrigido +• Seleção de idiomas errados ao selecionar +• O foco do áudio do reprodutor não respeitava o mudo +• Adicionar itens para listas de reprodução não funcionava em casos específicos diff --git a/fastlane/metadata/android/pt/changelogs/995.txt b/fastlane/metadata/android/pt/changelogs/995.txt new file mode 100644 index 00000000000..ebe4e742f18 --- /dev/null +++ b/fastlane/metadata/android/pt/changelogs/995.txt @@ -0,0 +1,14 @@ +Novo +- Separadores de canais de suporte +- Selecionar a qualidade da imagem +- Obter URLs para todas as imagens + +Melhorado +- Acessibilidade das interfaces do leitor +- Opção para adicionar o nome da lista de reprodução e o nome do vídeo ao conteúdo de partilha da lista de reprodução +- Melhorias internas e atualizações de dependências + +Corrigido +- Seleção de idiomas errados no seletor de idiomas +- O foco do áudio do leitor não estava a respeitar o silêncio +- A adição de itens a listas de reprodução não funcionava em casos específicos diff --git a/fastlane/metadata/android/ru/changelogs/994.txt b/fastlane/metadata/android/ru/changelogs/994.txt new file mode 100644 index 00000000000..bf11a4f4bf9 --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/994.txt @@ -0,0 +1,13 @@ +Нововведения +• Поддержка нескольких аудиодорожек/языков +• Использование жестов настройки громкости и яркости на любой части экрана +• Поддержка отображения основных вкладок в нижней части экрана + +Улучшения +• [Bandcamp] Управление платными композициями + +Исправления +• [YouTube] Ошибки 403 HTTP при просмотре живых трансляций +• Чёрный плеер при переключении на основной плеер из режима просмотра плэйлистов +• Утечка памяти в службе плеера +• [PeerTube] Загрузчик и изображения профиля дополнительных каналов изменены местами diff --git a/fastlane/metadata/android/ru/changelogs/995.txt b/fastlane/metadata/android/ru/changelogs/995.txt new file mode 100644 index 00000000000..dcefd106a5c --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/995.txt @@ -0,0 +1,14 @@ +Из нового +• Поддержка вкладок каналов +• Выбор качества изображения +• Получение URL всех изображений + +Улучшения +• Доступность интерфейсов проигрывателей +• Добавлена возможность добавлять название подборки и название видеораспространяемого содержимого подборки. +• Внутренние усовершенствования и обновление зависимостей + +Исправления +• Выбор неправильных языков в переключателе языков +• Фокусировка звука проигрывателя не учитывала выключение звука +• Добавление элементов в подборки не работало в определённых случаях diff --git a/fastlane/metadata/android/sv/changelogs/954.txt b/fastlane/metadata/android/sv/changelogs/954.txt new file mode 100644 index 00000000000..4ba3dc35048 --- /dev/null +++ b/fastlane/metadata/android/sv/changelogs/954.txt @@ -0,0 +1,9 @@ +• nytt arbetsflöde för applikationen: spela upp videor på detalj-sidan, dra nedåt för att minimera spelaren +• MediaStyle-aviseringar: anpassningsbara åtgärder i aviseringar, prestanda-förbättringar +• grundläggande storleksändring när NewPipe används som en skrivbordsapp + +• visa ett dialogfönster med öppna alternativ i händelse av en URL-toast som inte stöds +• Förbättra sökförslagsupplevelsen när avlägsna sökningar inte kan hämtas +• Ökad standardvideokvalitet till 720p60 (spelare i appen) och 480p (popup-spelare) + +• tonvis med buggfixar och mer diff --git a/fastlane/metadata/android/tr/changelogs/68.txt b/fastlane/metadata/android/tr/changelogs/68.txt index b2507d48474..069a0a22ee8 100644 --- a/fastlane/metadata/android/tr/changelogs/68.txt +++ b/fastlane/metadata/android/tr/changelogs/68.txt @@ -1,31 +1,31 @@ # v0.14.1 değişiklikleri -### Sabit -- Sabit video url # 1659 şifresini çözmek için başarısız oldu -- Sabit açıklama bağlantısı iyi ayıklanmıyor # 1657 +### Düzeltmeler +- Video url'sinin şifresinin çözülememesi düzeltildi #1659 +- Sabit açıklama bağlantısı iyi açılamıyor #1657 # v0.14.0 değişiklikleri -### Yeni -- Yeni Çekmece tasarımı # 1461 -- Yeni özelleştirilebilir ön sayfa # 1461 +### Yenilikler +- Yeni Çekmece tasarımı #1461 +- Yeni özelleştirilebilir ön sayfa #1461 -### Geliştirmeler -- Yeniden işlenmiş Hareket kontrolleri # 1604 -- Pop-up oynatıcıyı kapatmanın yeni yolu # 1597 +### İyileştirmeler +- Yenilenmiş Hareket kontrolleri #1604 +- Açılır oynatıcıyı kapatmanın yeni yolu #1597 -### Sabit -- Abonelik sayısı mevcut olmadığında bir hata düzeltildi. # 1649'u kapatır. -- Bu durumlarda "Abone sayısı mevcut değil" i göster -- Bir YouTube çalma listesi boş olduğunda npe'yi düzeltin -- Soundcloud'daki kiosklar için hızlı düzeltme -- Refactor ve hata düzeltme # 1623 -- Döngüsel arama sonucunu düzelt # 1562 -- Statik olarak yerleştirilmemiş Arama çubuğunu düzeltin -- Fix YT Premium video doğru engellenmiyor -- Bazen yüklenmeyen videoları düzeltin (ÇİZGİ ayrıştırma nedeniyle) -- Video açıklamasındaki bağlantıları düzeltin -- Birisi harici sd karta indirmeye çalıştığında uyarıyı göster -- gösterilen hiçbir şey düzeltilmedi istisna tetikleyicileri raporu -- android 8.1 için arka plan oynatıcısında gösterilmeyen küçük resim [buraya bakın] (https://github.com/TeamNewPipe/NewPipe/issues/943 ) -- Yayın alıcısının kaydını düzeltin. # 1641'i kapatır. +### Düzeltmeler +- Abonelik sayısı mevcut olmadığında hatayı düzeldi. Kapatılır #1649. + - Bu durumlarda "Abone sayısı mevcut değil" ifadesini göster +- Bir YouTube oynatma listesi boş olduğunda NPE düzeltme +- SoundCloud'daki kiosklar için hızlı düzeltme +- Yeniden düzenleme ve hata düzeltme #1623 + - Döngüsel arama sonucunu düzeltildi#1562 + - Arama çubuğu statik olarak düzenlenmemiş düzeltildi + -YT Premium videoları doğru şekilde engellenmiyor düzeltildi + - Videoların bazen yüklenmemesi düzeltildi (DASH ayrıştırma nedeniyle) + - Video açıklamasındaki bağlantıları düzeltildi + - Birisi harici sd karta indirmeye çalıştığında uyarı göster + - Gösterilen hiçbir istisna tetikleyici bildirmesi düzeltildi + - android 8.1 için arka plan oynatıcıda küçük resim gösterilmiyor [buradan ulaşabilirsiniz](https://github.com/TeamNewPipe/NewPipe/issues/943) +- Yayın alıcısının kaydı düzeltildi. Kapatılır #1641. diff --git a/fastlane/metadata/android/tr/changelogs/69.txt b/fastlane/metadata/android/tr/changelogs/69.txt new file mode 100644 index 00000000000..d927ed9c461 --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/69.txt @@ -0,0 +1,19 @@ +### Yenilikler +- Aboneliklerde uzun dokunarak silme ve paylaşma işlemleri eklendi #1516 +- Tablet kullanıcı arayüzü ve kılavuz liste düzeni eklendi #1617 + +### İyileştirmeler +- En son kullanılan en-boy oranını kaydetme ve tekrar yükleme eklendi #1748 +- İndirmeler etkinliğinde tam video isimleriyle lineer düzen etkinleştirildi #1771 +- Abonelikleri doğrudan abonelikler sekmesi içinden silme ve paylaşma eklendi #1516 +- Kuyrukta oynatma zaten sona ermişse video oynatmayı tetikleyen sıra eklendi #1783 +- Ses ve parlaklık jestleri için ayrı ayarlar eklendi #1644 +- Yerelleştirme desteği eklendi #1792 + +### Düzeltmeler +- Finlandiya'da kullanılabilmesi için nokta biçemi için zaman ayrıştırma düzeltildi +- Abonelik sayısı düzeltildi +- API 28+ cihazlar için öncelikli hizmet izni eklendi #1830 + +### Bilinen Hatalar +- Oynatma durumu Android P üzerinde kaydedilemiyor diff --git a/fastlane/metadata/android/tr/changelogs/70.txt b/fastlane/metadata/android/tr/changelogs/70.txt new file mode 100644 index 00000000000..930b73eebe1 --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/70.txt @@ -0,0 +1,25 @@ +DİKKAT: Bu sürüm muhtemelen bir öncekinde olduğu gibi bir hata festivalidir. Ancak 17. sürümden bu yana tam kapanma nedeniyle bozuk bir sürüm, hiç sürüm olmamasından daha iyidir. Değil mi? ¯\_(ツ)_/¯ + +### İyileştirmeler +* indirilen dosyalar artık tek bir tıklama ile açılabilir #1879 +* Android 4.1 - 4.3 için desteği bırakın #1884 +* eski oynatıcıyı kaldır #1884 +* akışları sağa kaydırarak mevcut oynatma kuyruğundan kaldırın #1915 +* Yeni bir akış manuel olarak sıralandığında otomatik sıralanan akışı kaldır #1878 +* İndirmeler için postprocessing ve eksik özellikleri uygulama #1759 by @kapodamy +* İşlem sonrası altyapı +* Uygun hata işleme "altyapısı" (indirici için) +* Çoklu indirme yerine kuyruk +* Serileştirilmiş bekleyen indirmeleri (`.giga` dosyaları) uygulama verilerine taşı +* Maksimum indirme yeniden denemesini uygulayın +* Uygun çok iş parçacıklı indirme duraklatması +* Mobil ağa geçildiğinde indirmeleri durdur (asla çalışmaz, bkz. 2. nokta) +* İplik sayısını sonraki indirmeler için saklayın +* Bir çok tutarsızlık düzeltildi + +### Sabit +* Varsayılan çözünürlük en iyi ve sınırlı mobil veri çözünürlüğü olarak ayarlandığında oluşan çökme düzeltildi #1835 +* pop-up oynatıcı çökmesi düzeltildi #1874 +* Arka plan oynatıcısını açmaya çalışırken NPE #1901 +* Otomatik kuyruklama etkinleştirildiğinde yeni akışların eklenmesi için düzeltme #1878 +* deşifre sorunu düzeltildi diff --git a/fastlane/metadata/android/tr/changelogs/71.txt b/fastlane/metadata/android/tr/changelogs/71.txt new file mode 100644 index 00000000000..8786821a6a3 --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/71.txt @@ -0,0 +1,10 @@ +### İyileştirmeler +* GitHub derlemesi için uygulama güncelleme bildirimi ekleyin (#1608 yazan @krtkush) +* İndiricide çeşitli iyileştirmeler (@kapodamy tarafından #1944): +* eksik beyaz simgeleri ekleyin ve simge renklerini değiştirmek için sert çizgili yol kullanın +* yineleyicinin başlatılıp başlatılmadığını kontrol edin (#2031'i düzeltir) +* Yeni muxer'da " işlem-sonrası başarısız" hatası ile yeniden indirme denemelerine izin verin +* Senkronize olmayan video ve ses akışlarını düzelten yeni MPEG-4 muxer (#2039) + +### Sabit +* YouTube canlı yayınları kısa bir süre sonra oynatılmayı durduruyor (#1996 by @yausername) diff --git a/fastlane/metadata/android/tr/changelogs/730.txt b/fastlane/metadata/android/tr/changelogs/730.txt new file mode 100644 index 00000000000..cb6e64592ae --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/730.txt @@ -0,0 +1,2 @@ +# Sabit +- Şifre çözme işlevi hatasını tekrar düzeltin. diff --git a/fastlane/metadata/android/tr/changelogs/740.txt b/fastlane/metadata/android/tr/changelogs/740.txt new file mode 100644 index 00000000000..14f47d14d24 --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/740.txt @@ -0,0 +1,22 @@ +Sure, I can provide a Turkish translation for your list: + +**Geliştirmeler** +- Yorumlardaki bağlantıları tıklanabilir yap, metin boyutunu artır +- Zaman damgası bağlantılarına tıklanınca konumu ayarla +- Son seçilen duruma göre tercih edilen sekme göster +- Çalma listesi penceresinde 'Arka Plan' üzerine uzun tıklayarak sıraya ekle +- URL olmayan paylaşılan metni ara +- Ana video oynatıcısına 'şu anki zamanda paylaş' düğmesi ekle +- Video sırası bittiğinde ana oynatıcıya kapat düğmesi ekle +- Video listesi öğeleri için uzun tıklama menüsüne 'Arka Planda Doğrudan Oynat' ekle +- Play/Enqueue komutları için İngilizce çevirileri iyileştir +- Küçük performans iyileştirmeleri +- Kullanılmayan dosyaları kaldır +- ExoPlayer'ı 2.9.6 sürümüne güncelle +- Invidious bağlantılarına destek ekle + +**Düzeltmeler** +- Yorumlar ve ilgili akışlar devre dışı bırakıldığında kaydırma sorununu düzelt +- CheckForNewAppVersionTask'in gereksiz yürütülmesini düzelt +- Geçersiz URL'leri olan abonelikleri yok say ve başlığı boş olanları sakla +- Geçersiz YouTube URL'lerini düzelt: İmza etiket adı her zaman "signature" olmadığından akışların yüklenmesini engelle diff --git a/fastlane/metadata/android/tr/changelogs/750.txt b/fastlane/metadata/android/tr/changelogs/750.txt new file mode 100644 index 00000000000..8e3a2f37f46 --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/750.txt @@ -0,0 +1,21 @@ +Yeni +Oynatma devam ediyor #2288 +- Akışlara en son kaldığınız yerden devam edin +İndirici Geliştirmeleri #2149 +- İndirmeleri harici SD kartlarda depolamak için Depolama Erişim Çerçevesini kullanın +- Yeni mp4 muxer +- İsteğe bağlı olarak indirme işlemine başlamadan önce indirme dizinini değiştirme +- Ölçülü ağlara saygı gösterin + +Geliştirilmiş +- Gema dizeleri kaldırıldı #2295 +- Etkinlik yaşam döngüsü sırasında (otomatik) rotasyon değişikliklerini işleme #2444 +- Uzun basma menülerini tutarlı hale getirin #2368 + +Sabit +- Seçili altyazı parça adının gösterilmemesi düzeltildi #2394 +- Uygulama güncellemesi kontrolü başarısız olduğunda çökme (GitHub sürümü) #2423 +- İndirmelerin %99,9'da takılması düzeltildi #2440 +- Oynatma kuyruğu meta verilerini güncelleme #2453 +- [SoundCloud] Çalma listeleri yüklenirken oluşan çökme düzeltildi TeamNewPipe/NewPipeExtractor#170 +- [YouTube] Sabit süre ayrıştırılamıyor TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/tr/changelogs/760.txt b/fastlane/metadata/android/tr/changelogs/760.txt new file mode 100644 index 00000000000..f6ca13ce6d3 --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/760.txt @@ -0,0 +1,40 @@ +0.17.1'deki Değişiklikler + +Yeni +- Tayca yerelleştirme + +Geliştirilmiş +- Çalma listeleri için uzun basma menülerine burada oynatmaya başla eylemini tekrar ekleyin #2518 +- SAF / eski dosya seçici için anahtar ekleyin #2521 + +Sabit +- Uygulama değiştirirken indirilenler görünümünde kaybolan düğmeleri düzeltme #2487 +- İzleme geçmişi devre dışı olmasına rağmen sabit oynatma konumu kaydedilir +- Liste görünümlerinde oynatma konumunun neden olduğu düşük performansı düzeltme #2517 +- [Extractor] ReCaptchaActivity #2527'yi düzeltin, TeamNewPipe/NewPipeExtractor#186 +- [Extractor] [YouTube] Çalma listeleri sonuçlarda olduğunda sıradan arama hatasını düzeltin TeamNewPipe/NewPipeExtractor#185 + +0.17.0'daki Değişiklikler + +Yeni +Oynatma devam ediyor #2288 +- Akışlara en son kaldığınız yerden devam edin +İndirici Geliştirmeleri #2149 +- İndirmeleri harici SD kartlarda depolamak için Depolama Erişim Çerçevesini kullanın +- Yeni mp4 muxer +- İsteğe bağlı olarak indirme işlemine başlamadan önce indirme dizinini değiştirme +- Ölçülü ağlara saygı gösterin + + +Geliştirilmiş +- Gema dizeleri kaldırıldı #2295 +- Etkinlik yaşam döngüsü sırasında (otomatik) rotasyon değişikliklerini işleme #2444 +- Uzun basma menülerini tutarlı hale getirin #2368 + +Sabit +- Seçili altyazı parça adının gösterilmemesi düzeltildi #2394 +- Uygulama güncellemesi kontrolü başarısız olduğunda çökme (GitHub sürümü) #2423 +- İndirmelerin %99,9'da takılması düzeltildi #2440 +- Oynatma kuyruğu meta verilerini güncelleme #2453 +- [SoundCloud] Çalma listeleri yüklenirken oluşan çökme düzeltildi TeamNewPipe/NewPipeExtractor#170 +- [YouTube] Sabit süre ayrıştırılamıyor TeamNewPipe/NewPipeExtractor#177 diff --git a/fastlane/metadata/android/tr/changelogs/770.txt b/fastlane/metadata/android/tr/changelogs/770.txt new file mode 100644 index 00000000000..0fbf281de0f --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/770.txt @@ -0,0 +1,3 @@ +0.17.2'deki Değişiklikler +Düzeltme +- Düzeltme video mevcut değildi diff --git a/fastlane/metadata/android/tr/changelogs/780.txt b/fastlane/metadata/android/tr/changelogs/780.txt new file mode 100644 index 00000000000..68b98d7b444 --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/780.txt @@ -0,0 +1,12 @@ +0.17.3'teki Değişiklikler + +Geliştirilmiş +- Oynatma durumlarını temizleme seçeneği eklendi #2550 +- Dosya seçicide gizli dizinleri gösterme #2591 +- NewPipe ile açılacak `invidio.us` örneklerinden URL'leri destekleyin #2488 +- music.youtube.com` URL`leri için destek ekleyin TeamNewPipe/NewPipeExtractor#194 + +Sabit +- [YouTube] 'java.lang.IllegalArgumentException #192 düzeltildi +- [YouTube] Canlı yayınların çalışmaması düzeltildi TeamNewPipe/NewPipeExtractor#195 +- Android pie'da akış indirirken yaşanan performans sorunu düzeltildi #2592 diff --git a/fastlane/metadata/android/tr/changelogs/790.txt b/fastlane/metadata/android/tr/changelogs/790.txt new file mode 100644 index 00000000000..5ff443779d1 --- /dev/null +++ b/fastlane/metadata/android/tr/changelogs/790.txt @@ -0,0 +1,14 @@ +Geliştirilmiş +- Görme engelli kişilerin erişilebilirliğini iyileştirmek için daha fazla başlık ekleyin #2655 +- İndirme klasörü ayarının dilini daha tutarlı ve daha az belirsiz hale getirin #2637 + +Sabit +- Bloktaki son baytın indirilip indirilmediğini kontrol edin #2646 +- Video ayrıntı parçasındaki kaydırma düzeltildi #2672 +- Çift arama temizleme kutusu animasyonlarını teke indir #2695 +- [SoundCloud] Client_id çıkarma işlemini düzeltin #2745 + +Geliştirme +- NewPipeExtractor'dan miras alınan eksik bağımlılıkları NewPipe'a ekleyin #2535 +- AndroidX'e geçiş #2685 +- ExoPlayer 2.10.6 #2697, #2736 için güncelleme diff --git a/fastlane/metadata/android/tr/full_description.txt b/fastlane/metadata/android/tr/full_description.txt index 11daef85b63..9422ff2bafa 100644 --- a/fastlane/metadata/android/tr/full_description.txt +++ b/fastlane/metadata/android/tr/full_description.txt @@ -1,2 +1,2 @@ -NewPipe herhangi bir Google çerçeve kütüphanesi veya YouTube API'ı kullanmaz. Sadece, ihtiyaç duyduğu bilgiyi edinmek için web sitesini ayrıştırır. +NewPipe herhangi bir Google frameworkü veya YouTube API'si kullanmaz. Sadece, ihtiyaç duyduğu bilgiyi edinmek için web sitesini ayrıştırır. Bu nedenle Google hizmetlerinin kurulmadığı aygıtlarda kullanılabilir. Ayrıca, NewPipe'ı kullanırken YouTube hesabına ihtiyacınız yok, ve bu özgür ve açık kaynaklı bir yazılımdır. diff --git a/fastlane/metadata/android/vi/changelogs/65.txt b/fastlane/metadata/android/vi/changelogs/65.txt new file mode 100644 index 00000000000..3bffa51b05f --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/65.txt @@ -0,0 +1,9 @@ +##Cải thiện: + +- Tắt hoạt ảnh icon burgermenu #1486 +- Cho phép hoàn tắc nội dung đã tải xuống #1472 +- Tùy chọn tải xuống ở menu chia sẻ #1498 +- Đã thêm tùy chọn chia sẻ vào menu nhẫn giữ #1454 +- Thu nhỏ bộ phát phương tiện chính khi thoát #1354 +- Sửa lỗi Cập nhật thư viện và cơ sở dữ liệu dự phòng #1510 +- Cập nhật trình phát ExoPlayer 2.8.2 #1392 diff --git a/fastlane/metadata/android/vi/changelogs/987.txt b/fastlane/metadata/android/vi/changelogs/987.txt new file mode 100644 index 00000000000..776bf53f788 --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/987.txt @@ -0,0 +1,12 @@ +Mới +• Hỗ trợ các phương thức phân phối khác ngoài HTTP lũy tiến: thời gian tải nhanh hơn, sửa lỗi cho PeerTube và SoundCloud, phát lại các luồng trực tiếp YouTube đã kết thúc gần đây +• Thêm nút để thêm danh sách phát từ xa vào danh sách phát cục bộ +• Xem trước hình ảnh trong bảng chia sẻ Android 10+ + +Cải thiện +• Cải thiện hộp thoại thông số phát lại +• Di chuyển các nút nhập / xuất đăng ký sang menu ba chấm + +Cố định +• Khắc phục sự cố xóa video đã xem đầy đủ khỏi danh sách phát +• Sửa chủ đề thực đơn chia sẻ và mục "thêm vào danh sách phát" diff --git a/fastlane/metadata/android/vi/changelogs/988.txt b/fastlane/metadata/android/vi/changelogs/988.txt new file mode 100644 index 00000000000..545f3c7b48d --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/988.txt @@ -0,0 +1,2 @@ +[YouTube] Sửa lỗi “Không thể nhận bất kỳ luồng nào” khi cố gắng phát bất kỳ video nào +[YouTube] Khắc phục thông báo hiển thị “Nội dung sau không có sẵn trên ứng dụng này.” thay vì video được yêu cầu diff --git a/fastlane/metadata/android/vi/changelogs/989.txt b/fastlane/metadata/android/vi/changelogs/989.txt new file mode 100644 index 00000000000..542db61c76d --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/989.txt @@ -0,0 +1,3 @@ +• [YouTube] Sửa lỗi tải vô hạn khi cố gắng phát bất kỳ video nào +• [YouTube] Sửa lỗi điều tiết trên một số video +• Nâng cấp thư viện jsoup lên 1.15.3, bao gồm bản sửa lỗi bảo mật diff --git a/fastlane/metadata/android/vi/changelogs/990.txt b/fastlane/metadata/android/vi/changelogs/990.txt new file mode 100644 index 00000000000..c867f31dddf --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/990.txt @@ -0,0 +1,15 @@ +Hiện tại hỗ trợ phiên bản tối thiểu là Android 5 Lollipop! + +Mới +• Tải xuống từ menu nhấn và giữ +• Ẩn các video trong tương lai trong nguồn cấp dữ liệu +• Chia sẻ danh sách phát địa phương + +Cải thiện +• Tái cấu trúc mã trình phát.. +• Cải thiện chế độ chia tỷ lệ của hình thu nhỏ +• Trình giữ chỗ hình ảnh theo kiểu vector hóa + +Khắc phục +• Khắc phục nhiều vấn đề khác nhau với thông báo trình phát: thông tin phương tiện lỗi thời/bị thiếu, hình thu nhỏ bị méo +• Sửa toàn màn hình bằng 1/4 màn hình diff --git a/fastlane/metadata/android/vi/changelogs/991.txt b/fastlane/metadata/android/vi/changelogs/991.txt new file mode 100644 index 00000000000..8ffaf155155 --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/991.txt @@ -0,0 +1,13 @@ +Mới +• Thêm nút "Mở trong trình duyệt" trong bảng lỗi +• Thêm tùy chọn hiển thị nhóm kênh dạng danh sách +• [YouTube] Nhấp và giữ vào các phân đoạn phát trực tuyến để chia sẻ URL dấu thời gian +• Thêm nút xếp hàng phát vào trình phát mini + +Cải thiện +• Thêm bản địa hóa tiếng Iceland và cập nhật nhiều bản dịch khác +• Nhiều cải tiến nội bộ + +Sửa chữa +• Khắc phục nhiều sự cố +• [YouTube] Khắc phục sự cố tải kênh, nguồn cấp dữ liệu không chuyên dụng và giải pháp khắc phục sự cố phát lại ở một số quốc gia diff --git a/fastlane/metadata/android/vi/changelogs/994.txt b/fastlane/metadata/android/vi/changelogs/994.txt new file mode 100644 index 00000000000..e73fcb20a53 --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/994.txt @@ -0,0 +1,15 @@ +Mới +• Hỗ trợ nhiều bản âm thanh/ngôn ngữ +• Cho phép cài đặt cử chỉ âm lượng và độ sáng ở bất kỳ phía nào của màn hình +• Hỗ trợ hiển thị các tab chính ở cuối màn hình + +Cải thiện +• [Bandcamp] Xử lý các dấu vết đằng sau bức tường phí + +Đã sửa +• [YouTube] Lỗi HTTP 403 cho luồng +• Trình phát màu đen khi chuyển sang trình phát chính từ chế độ xem danh sách phát +• Rò rỉ bộ nhớ dịch vụ trình phát +• [PeerTube] Hình đại diện của người tải lên và kênh con đã bị hoán đổi + +và hơn thế nữa diff --git a/fastlane/metadata/android/vi/changelogs/995.txt b/fastlane/metadata/android/vi/changelogs/995.txt new file mode 100644 index 00000000000..69b616883e0 --- /dev/null +++ b/fastlane/metadata/android/vi/changelogs/995.txt @@ -0,0 +1,14 @@ +Mới +• Hỗ trợ tab kênh +• Chọn chất lượng hình ảnh +• Nhận URL cho tất cả hình ảnh + +Cải thiện +• Khả năng truy cập của giao diện trình phát +• Tùy chọn thêm tên danh sách phát và tên video vào nội dung chia sẻ danh sách phát +• Cải tiến nội bộ và cập nhật phụ thuộc + +Đã sửa +• Lựa chọn ngôn ngữ sai trong bộ chọn ngôn ngữ +• Tiêu điểm âm thanh của trình phát không bị tắt tiếng +• Thêm mục vào danh sách phát không hoạt động trong các trường hợp cụ thể diff --git a/fastlane/metadata/android/zh_Hant_HK/changelogs/994.txt b/fastlane/metadata/android/zh_Hant_HK/changelogs/994.txt new file mode 100644 index 00000000000..dcc635e908a --- /dev/null +++ b/fastlane/metadata/android/zh_Hant_HK/changelogs/994.txt @@ -0,0 +1,15 @@ +新嘢 +• 支援多重音軌/語言 +• 螢幕嘅音量同光暗手勢設定有得分左右 +• 主畫面嘅分頁揀選有得搬落最低 + +進步 +• [Bandcamp] 處理收費閘之下嘅曲目 + +修正 +• [YouTube] 串流出現 403 HTTP 錯誤 +• 播放清單版面轉去主版面播放器時播放器冇嘢睇 +• 播放器服務記憶體洩漏 +• [PeerTube] 上載者同子頻道頭像調轉咗 + +其餘不贅 diff --git a/fastlane/metadata/android/zh_Hant_HK/changelogs/995.txt b/fastlane/metadata/android/zh_Hant_HK/changelogs/995.txt new file mode 100644 index 00000000000..ddd775f0884 --- /dev/null +++ b/fastlane/metadata/android/zh_Hant_HK/changelogs/995.txt @@ -0,0 +1,14 @@ +新嘢 +• 支援頻道分頁 +• 啲圖有得揀畫質 +• 啲圖全部都有得攞返個 URL + +進步 +• 播放器介面暢易達 +• 分享播放清單有得加埋播放清單個名同入面啲片名 +• 內部提昇以及依賴元件更新 + +修正 +• 揀選版面語言揀錯文 +• 播放器聲音焦點無視噤聲 +• 加入項目去播放清單有時唔得 From 35c1dfd145d26cd408dc87c0e36ba8433fdfdbe8 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 10 Dec 2023 15:05:29 +0100 Subject: [PATCH 16/82] Update changelog for NewPipe 0.26.0 (995) --- fastlane/metadata/android/en-US/changelogs/995.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fastlane/metadata/android/en-US/changelogs/995.txt b/fastlane/metadata/android/en-US/changelogs/995.txt index fe47aae1ecd..78e0770f7f8 100644 --- a/fastlane/metadata/android/en-US/changelogs/995.txt +++ b/fastlane/metadata/android/en-US/changelogs/995.txt @@ -5,10 +5,12 @@ New Improved • Accessibility of player interfaces -• Option to option to add playlist name and video name to playlist sharing content -• Internal improvements and dependencies updates +• Better audio selection for video-only downloads +• Option to include playlist and video names to shared playlist content Fixed +• [YouTube] Fix getting like count +• Fix player not responding popups and crashes • Selection of wrong languages in language picker • Player audio focus was not respecting mute -• Adding items to playlists not working in specific cases +• Playlist item addition occasionally not working \ No newline at end of file From 0d8d3479e12238ab31cd1130b6cf0c99b8f057d1 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Thu, 5 Oct 2023 14:52:27 +0200 Subject: [PATCH 17/82] NewPipe 0.26.0 (995) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7b69b5b7219..f1ec6ed518c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ android { resValue "string", "app_name", "NewPipe" minSdk 21 targetSdk 33 - versionCode 994 - versionName "0.25.2" + versionCode 995 + versionName "0.26.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" From e6965622bd55fc5a9f656a7193c8061116f5364e Mon Sep 17 00:00:00 2001 From: TobiGr Date: Sat, 7 Oct 2023 14:34:44 +0200 Subject: [PATCH 18/82] Fix crash with disabled thumbnails when trying to play a stream --- .../java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java index 1119fb903f0..346bb92fab6 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java +++ b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java @@ -81,8 +81,9 @@ default String makeMediaId() { @NonNull default MediaItem asMediaItem() { + final String thumbnailUrl = getThumbnailUrl(); final MediaMetadata mediaMetadata = new MediaMetadata.Builder() - .setArtworkUri(Uri.parse(getThumbnailUrl())) + .setArtworkUri(thumbnailUrl == null ? null : Uri.parse(thumbnailUrl)) .setArtist(getUploaderName()) .setDescription(getTitle()) .setDisplayTitle(getTitle()) From e39ac885de7ec5bc530d920ef021b2a785e95fc5 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Thu, 19 Oct 2023 11:38:39 +0200 Subject: [PATCH 19/82] Update new version check to match new API structure See TeamNewPipe/web-api#17 --- .../main/java/org/schabi/newpipe/NewVersionWorker.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt index c46dd63488a..39d8e90dcdc 100644 --- a/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt +++ b/app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt @@ -120,13 +120,13 @@ class NewVersionWorker( // Parse the json from the response. try { - val githubStableObject = JsonParser.`object`() + val newpipeVersionInfo = JsonParser.`object`() .from(response.responseBody()).getObject("flavors") - .getObject("github").getObject("stable") + .getObject("newpipe") - val versionName = githubStableObject.getString("version") - val versionCode = githubStableObject.getInt("version_code") - val apkLocationUrl = githubStableObject.getString("apk") + val versionName = newpipeVersionInfo.getString("version") + val versionCode = newpipeVersionInfo.getInt("version_code") + val apkLocationUrl = newpipeVersionInfo.getString("apk") compareAppVersionAndShowNotification(versionName, apkLocationUrl, versionCode) } catch (e: JsonParserException) { // Most likely something is wrong in data received from NEWPIPE_API_URL. From 8d59812827a3993fcdd3d322100e7f053bcca96b Mon Sep 17 00:00:00 2001 From: Stypox Date: Thu, 16 Nov 2023 22:46:43 +0100 Subject: [PATCH 20/82] Fix channel avatar not loading correctly sometimes The fix just involves removing some really outdated code (6 years ago) added in https://github.com/TeamNewPipe/NewPipe/commit/33e29be7db2e4a6fcd23e411081c871bf3c4b5c3#diff-38bd2cf1b92659b499c08e1cf6ac9ef384c7e13381b906f2f98c57cbb758756dR778 (blame: https://github.com/TeamNewPipe/NewPipe/blame/9318bb530619898c1e1f3f8a8c866f3d2e35ab0c/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java#L778). What that code did was setting the 'buddy' image to the uploader avatar as a placeholder, and then setting the actual image if it existed and after it had loaded. That code remained there up until now, but now it doesn't make sense anymore, since Picasso already takes care of setting placeholders. The problem is, starting from #10066 the actual uploader image is set before (not after) those lines of code, making them do the wrong thing, i.e. always overwrite the currently set image. But then why did the channel avatar image work normally sometimes? My guess is that since Picasso loads images in the background, when opening a video from scratch setting the placeholder still happened before Picasso finished loading the image. However when the image is already cached it's loaded much faster and therefore setting the placeholder happens after, effectively hiding the loaded image. --- .../newpipe/fragments/detail/VideoDetailFragment.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index a25d0fae454..7db5e0251c1 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -24,7 +24,6 @@ import android.database.ContentObserver; import android.graphics.Color; import android.graphics.Rect; -import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -1482,11 +1481,6 @@ public void handleResult(@NonNull final StreamInfo info) { displayUploaderAsSubChannel(info); } - final Drawable buddyDrawable = - AppCompatResources.getDrawable(activity, R.drawable.placeholder_person); - binding.detailSubChannelThumbnailView.setImageDrawable(buddyDrawable); - binding.detailUploaderThumbnailView.setImageDrawable(buddyDrawable); - if (info.getViewCount() >= 0) { if (info.getStreamType().equals(StreamType.AUDIO_LIVE_STREAM)) { binding.detailViewCountView.setText(Localization.listeningCount(activity, From e876647af56433bf6021637b08ea2bb19c9b1cac Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 10 Dec 2023 15:58:45 +0100 Subject: [PATCH 21/82] Update NewPipeExtractor to v0.23.0 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index f1ec6ed518c..ef1d1fe875e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -197,7 +197,7 @@ dependencies { // name and the commit hash with the commit hash of the (pushed) commit you want to test // This works thanks to JitPack: https://jitpack.io/ implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751' - implementation 'com.github.TeamNewPipe:NewPipeExtractor:289db1178ab66694c23893e6a487d4708343c47b' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:v0.23.0' implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0' /** Checkstyle **/ From b871b5d2dde0bfa87a0e8e970ebbe1602bb0fe3f Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 10 Dec 2023 16:06:07 +0100 Subject: [PATCH 22/82] Fix crashes due to wrong root fragment manager --- .../java/org/schabi/newpipe/BaseFragment.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/BaseFragment.java b/app/src/main/java/org/schabi/newpipe/BaseFragment.java index 5dde2a7476c..7a06771dd1d 100644 --- a/app/src/main/java/org/schabi/newpipe/BaseFragment.java +++ b/app/src/main/java/org/schabi/newpipe/BaseFragment.java @@ -120,9 +120,20 @@ public void setTitle(final String title) { } } + /** + * Finds the root fragment by looping through all of the parent fragments. The root fragment + * is supposed to be {@link org.schabi.newpipe.fragments.MainFragment}, and is the fragment that + * handles keeping the backstack of opened fragments in NewPipe, and also the player bottom + * sheet. This function therefore returns the fragment manager of said fragment. + * + * @return the fragment manager of the root fragment, i.e. + * {@link org.schabi.newpipe.fragments.MainFragment} + */ protected FragmentManager getFM() { - return getParentFragment() == null - ? getFragmentManager() - : getParentFragment().getFragmentManager(); + Fragment current = this; + while (current.getParentFragment() != null) { + current = current.getParentFragment(); + } + return current.getFragmentManager(); } } From 80f33daeeb246ee548dc707d3798ae382d137079 Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 20 Dec 2023 20:22:45 +0100 Subject: [PATCH 23/82] Fix OutOfMemory when fetching feed Reduced memory footprint of FeedUpdateInfo objects. Those objects might stay around for a while and accumulate (up to BUFFER_COUNT_BEFORE_INSERT = 20 at the moment), so in order not to fill up the memory it's better to keep as little data as possible. Previously ChannelInfo data was stored, causing ReadyChannelTabLinkHandler objects to be also stored uselessly (and those channel tabs contain prefetched JSON data which used ~700KB of memory). --- .../feed/notifications/NotificationHelper.kt | 8 ++--- .../local/feed/service/FeedLoadManager.kt | 4 +-- .../local/feed/service/FeedUpdateInfo.kt | 31 +++++++++++++++---- .../local/subscription/SubscriptionManager.kt | 25 ++++++--------- 4 files changed, 41 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/notifications/NotificationHelper.kt b/app/src/main/java/org/schabi/newpipe/local/feed/notifications/NotificationHelper.kt index 9f7553e1f34..8ea89368d6b 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/notifications/NotificationHelper.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/notifications/NotificationHelper.kt @@ -58,7 +58,7 @@ class NotificationHelper(val context: Context) { .setAutoCancel(true) .setCategory(NotificationCompat.CATEGORY_SOCIAL) .setGroupSummary(true) - .setGroup(data.originalInfo.url) + .setGroup(data.url) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_SUMMARY) // Build a summary notification for Android versions < 7.0 @@ -73,7 +73,7 @@ class NotificationHelper(val context: Context) { context, data.pseudoId, NavigationHelper - .getChannelIntent(context, data.originalInfo.serviceId, data.originalInfo.url) + .getChannelIntent(context, data.serviceId, data.url) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), 0, false @@ -88,7 +88,7 @@ class NotificationHelper(val context: Context) { // Show individual stream notifications, set channel icon only if there is actually // one - showStreamNotifications(newStreams, data.originalInfo.serviceId, bitmap) + showStreamNotifications(newStreams, data.serviceId, bitmap) // Show summary notification manager.notify(data.pseudoId, summaryBuilder.build()) @@ -97,7 +97,7 @@ class NotificationHelper(val context: Context) { override fun onBitmapFailed(e: Exception, errorDrawable: Drawable) { // Show individual stream notifications - showStreamNotifications(newStreams, data.originalInfo.serviceId, null) + showStreamNotifications(newStreams, data.serviceId, null) // Show summary notification manager.notify(data.pseudoId, summaryBuilder.build()) iconLoadingTargets.remove(this) // allow it to be garbage-collected diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadManager.kt b/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadManager.kt index b86c856fc25..0b6a8068c99 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadManager.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadManager.kt @@ -277,14 +277,14 @@ class FeedLoadManager(private val context: Context) { notification.value!!.newStreams = filterNewStreams(info.streams) feedDatabaseManager.upsertAll(info.uid, info.streams) - subscriptionManager.updateFromInfo(info.uid, info.originalInfo) + subscriptionManager.updateFromInfo(info) if (info.errors.isNotEmpty()) { feedResultsHolder.addErrors( info.errors.map { FeedLoadService.RequestException( info.uid, - "${info.originalInfo.serviceId}:${info.originalInfo.url}", + "${info.serviceId}:${info.url}", it ) } diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedUpdateInfo.kt b/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedUpdateInfo.kt index 12fbe8d4120..84cd8ed59a9 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedUpdateInfo.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedUpdateInfo.kt @@ -3,29 +3,48 @@ package org.schabi.newpipe.local.feed.service import org.schabi.newpipe.database.subscription.NotificationMode import org.schabi.newpipe.database.subscription.SubscriptionEntity import org.schabi.newpipe.extractor.Info +import org.schabi.newpipe.extractor.channel.ChannelInfo import org.schabi.newpipe.extractor.stream.StreamInfoItem +import org.schabi.newpipe.util.image.ImageStrategy +/** + * Instances of this class might stay around in memory for some time while fetching the feed, + * because of [FeedLoadManager.BUFFER_COUNT_BEFORE_INSERT]. Therefore this class should contain + * as little data as possible to avoid out of memory errors. In particular, avoid storing whole + * [ChannelInfo] objects, as they might contain raw JSON info in ready channel tabs link handlers. + */ data class FeedUpdateInfo( val uid: Long, @NotificationMode val notificationMode: Int, val name: String, val avatarUrl: String, - val originalInfo: Info, + val url: String, + val serviceId: Int, + // description and subscriberCount are null if the constructor info is from the fast feed method + val description: String?, + val subscriberCount: Long?, val streams: List, val errors: List, ) { constructor( subscription: SubscriptionEntity, - originalInfo: Info, + info: Info, streams: List, errors: List, ) : this( uid = subscription.uid, notificationMode = subscription.notificationMode, - name = subscription.name, - avatarUrl = subscription.avatarUrl, - originalInfo = originalInfo, + name = info.name, + avatarUrl = (info as? ChannelInfo)?.avatars?.let { + // if the newly fetched info is not from fast feed, then it contains updated avatars + ImageStrategy.imageListToDbUrl(it) + } ?: subscription.avatarUrl, + url = info.url, + serviceId = info.serviceId, + // there is no description and subscriberCount in the fast feed + description = (info as? ChannelInfo)?.description, + subscriberCount = (info as? ChannelInfo)?.subscriberCount, streams = streams, errors = errors, ) @@ -34,7 +53,7 @@ data class FeedUpdateInfo( * Integer id, can be used as notification id, etc. */ val pseudoId: Int - get() = originalInfo.url.hashCode() + get() = url.hashCode() lateinit var newStreams: List } 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 bd42bbe4144..488d8b3d28d 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 @@ -12,12 +12,11 @@ import org.schabi.newpipe.database.stream.model.StreamEntity import org.schabi.newpipe.database.subscription.NotificationMode import org.schabi.newpipe.database.subscription.SubscriptionDAO import org.schabi.newpipe.database.subscription.SubscriptionEntity -import org.schabi.newpipe.extractor.Info import org.schabi.newpipe.extractor.channel.ChannelInfo import org.schabi.newpipe.extractor.channel.tabs.ChannelTabInfo -import org.schabi.newpipe.extractor.feed.FeedInfo import org.schabi.newpipe.extractor.stream.StreamInfoItem import org.schabi.newpipe.local.feed.FeedDatabaseManager +import org.schabi.newpipe.local.feed.service.FeedUpdateInfo import org.schabi.newpipe.util.ExtractorHelper import org.schabi.newpipe.util.image.ImageStrategy @@ -97,19 +96,15 @@ class SubscriptionManager(context: Context) { } } - fun updateFromInfo(subscriptionId: Long, info: Info) { - val subscriptionEntity = subscriptionTable.getSubscription(subscriptionId) - - if (info is FeedInfo) { - subscriptionEntity.name = info.name - } else if (info is ChannelInfo) { - subscriptionEntity.setData( - info.name, - ImageStrategy.imageListToDbUrl(info.avatars), - info.description, - info.subscriberCount - ) - } + fun updateFromInfo(info: FeedUpdateInfo) { + val subscriptionEntity = subscriptionTable.getSubscription(info.uid) + + subscriptionEntity.name = info.name + subscriptionEntity.avatarUrl = info.avatarUrl + + // these two fields are null if the feed info was fetched using the fast feed method + info.description?.let { subscriptionEntity.description = it } + info.subscriberCount?.let { subscriptionEntity.subscriberCount = it } subscriptionTable.update(subscriptionEntity) } From c0f8d145f83b852ebd4fa7e407da26754e379936 Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 20 Dec 2023 22:46:24 +0100 Subject: [PATCH 24/82] Fix lag with many channels on main page Disable loading all tabs at once, since there can be many of them, and use default strategy of only keeping in memory the two tabs adjacent to the current tab. --- app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java index 96b13922bdf..d50f0b0d87a 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java @@ -194,7 +194,6 @@ private void setupTabs() { } binding.pager.setAdapter(null); - binding.pager.setOffscreenPageLimit(tabsList.size()); binding.pager.setAdapter(pagerAdapter); updateTabsIconAndDescription(); From 495c9850b486c79a6b5cbd272554c0718d2b285e Mon Sep 17 00:00:00 2001 From: Stypox Date: Wed, 20 Dec 2023 23:57:43 +0100 Subject: [PATCH 25/82] Fix transaction too large for channel tab fragments --- .../list/channel/ChannelTabFragment.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) 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 8712ab4d914..76849d94d70 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 @@ -1,6 +1,7 @@ package org.schabi.newpipe.fragments.list.channel; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,7 +15,9 @@ import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.ListExtractor; import org.schabi.newpipe.extractor.channel.tabs.ChannelTabInfo; +import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler; +import org.schabi.newpipe.extractor.linkhandler.ReadyChannelTabListLinkHandler; import org.schabi.newpipe.extractor.stream.StreamInfoItem; import org.schabi.newpipe.fragments.list.BaseListInfoFragment; import org.schabi.newpipe.fragments.list.playlist.PlaylistControlViewHolder; @@ -114,6 +117,27 @@ public void setTitle(final String title) { public void handleResult(@NonNull final ChannelTabInfo result) { super.handleResult(result); + // FIXME this is a really hacky workaround, to avoid storing useless data in the fragment + // state. The problem is, `ReadyChannelTabListLinkHandler` might contain raw JSON data that + // uses a lot of memory (e.g. ~800KB for YouTube). While 800KB doesn't seem much, if + // you combine just a couple of channel tab fragments you easily go over the 1MB + // save&restore transaction limit, and get `TransactionTooLargeException`s. A proper + // solution would require rethinking about `ReadyChannelTabListLinkHandler`s. + if (tabHandler instanceof ReadyChannelTabListLinkHandler) { + try { + // once `handleResult` is called, the parsed data was already saved to cache, so + // we can discard any raw data in ReadyChannelTabListLinkHandler and create a + // link handler with identical properties, but without any raw data + tabHandler = result.getService() + .getChannelTabLHFactory() + .fromQuery(tabHandler.getId(), tabHandler.getContentFilters(), + tabHandler.getSortFilter()); + } catch (final ParsingException e) { + // silently ignore the error, as the app can continue to function normally + Log.w(TAG, "Could not recreate channel tab handler", e); + } + } + if (playlistControlBinding != null) { // PlaylistControls should be visible only if there is some item in // infoListAdapter other than header From 77fa4bbe2fe8241cdd97a6cc27d3e72f62166ee7 Mon Sep 17 00:00:00 2001 From: Stypox Date: Thu, 21 Dec 2023 22:28:09 +0100 Subject: [PATCH 26/82] Update NewPipeExtractor to v0.23.1 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ef1d1fe875e..993363e32ff 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -197,7 +197,7 @@ dependencies { // name and the commit hash with the commit hash of the (pushed) commit you want to test // This works thanks to JitPack: https://jitpack.io/ implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751' - implementation 'com.github.TeamNewPipe:NewPipeExtractor:v0.23.0' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:v0.23.1' implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0' /** Checkstyle **/ From 9aff49bd880cf9d0d9c04b192fc752c573298dc4 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Thu, 21 Dec 2023 22:36:13 +0100 Subject: [PATCH 27/82] Translated using Weblate (Portuguese (Portugal)) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Danish) Currently translated at 88.2% (640 of 725 strings) Translated using Weblate (Serbian) Currently translated at 17.1% (13 of 76 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Filipino) Currently translated at 32.1% (233 of 725 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Romanian) Currently translated at 99.4% (721 of 725 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Indonesian) Currently translated at 97.3% (74 of 76 strings) Translated using Weblate (Arabic (Libya)) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (French) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Arabic) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Italian) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Polish) Currently translated at 61.8% (47 of 76 strings) Translated using Weblate (Hindi) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Czech) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 28.9% (22 of 76 strings) Translated using Weblate (German) Currently translated at 81.5% (62 of 76 strings) Merge branch 'origin/dev' into Weblate. Translated using Weblate (Bengali) Currently translated at 78.7% (571 of 725 strings) Translated using Weblate (Basque) Currently translated at 95.0% (689 of 725 strings) Translated using Weblate (Turkish) Currently translated at 43.4% (33 of 76 strings) Translated using Weblate (Lithuanian) Currently translated at 92.9% (674 of 725 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 30.2% (23 of 76 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 99.8% (724 of 725 strings) Translated using Weblate (Interlingua) Currently translated at 32.0% (232 of 725 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 94.6% (686 of 725 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 94.6% (686 of 725 strings) Translated using Weblate (Romanian) Currently translated at 89.3% (648 of 725 strings) Translated using Weblate (German) Currently translated at 81.5% (62 of 76 strings) Translated using Weblate (German) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Filipino) Currently translated at 32.1% (233 of 725 strings) Translated using Weblate (Filipino) Currently translated at 32.1% (233 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Swedish) Currently translated at 72.3% (55 of 76 strings) Translated using Weblate (Esperanto) Currently translated at 3.9% (3 of 76 strings) Translated using Weblate (Swedish) Currently translated at 99.7% (723 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 71.0% (515 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 2.6% (2 of 76 strings) Translated using Weblate (Tigrinya) Currently translated at 8.4% (61 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 43.4% (33 of 76 strings) Translated using Weblate (German) Currently translated at 81.5% (62 of 76 strings) Translated using Weblate (Finnish) Currently translated at 98.3% (713 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 70.0% (508 of 725 strings) Added translation using Weblate (English (Old)) Added translation using Weblate (Aymara) Added translation using Weblate (English (Middle)) Added translation using Weblate (Arabic (Najdi)) Added translation using Weblate (German (Low)) Added translation using Weblate (Sicilian) Added translation using Weblate (Kashmiri) Added translation using Weblate (Burmese) Translated using Weblate (Tigrinya) Currently translated at 3.5% (26 of 725 strings) Translated using Weblate (Georgian) Currently translated at 91.1% (661 of 725 strings) Translated using Weblate (French) Currently translated at 98.8% (717 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 42.1% (32 of 76 strings) Translated using Weblate (Vietnamese) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Interlingua) Currently translated at 31.3% (227 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 35.5% (27 of 76 strings) Translated using Weblate (Esperanto) Currently translated at 69.2% (502 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 69.2% (502 of 725 strings) Translated using Weblate (German) Currently translated at 81.5% (62 of 76 strings) Translated using Weblate (Punjabi) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Bulgarian) Currently translated at 63.8% (463 of 725 strings) Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Esperanto) Currently translated at 66.3% (481 of 725 strings) Translated using Weblate (French) Currently translated at 98.6% (715 of 725 strings) Translated using Weblate (Vietnamese) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Turkish) Currently translated at 31.5% (24 of 76 strings) Translated using Weblate (Vietnamese) Currently translated at 97.3% (706 of 725 strings) Translated using Weblate (Swedish) Currently translated at 98.4% (714 of 725 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Russian) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Vietnamese) Currently translated at 94.6% (686 of 725 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (76 of 76 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 21.0% (16 of 76 strings) Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 100.0% (725 of 725 strings) Translated using Weblate (French) Currently translated at 98.2% (712 of 725 strings) Deleted translation using Weblate (English (Middle)) Co-authored-by: /dev/urandom Co-authored-by: A Co-authored-by: Agnieszka C Co-authored-by: Aitor Salaberria Co-authored-by: Alexthegib Co-authored-by: Allan Nordhøy Co-authored-by: Ans Virlis Co-authored-by: AudricV Co-authored-by: ButterflyOfFire Co-authored-by: Cem TÜRKER Co-authored-by: Danr Co-authored-by: David Svane Co-authored-by: Edward Co-authored-by: Erik Matson Co-authored-by: Fjuro Co-authored-by: Giorgi Taba K'obakhidze Co-authored-by: Hosted Weblate Co-authored-by: Ihfandi Co-authored-by: Ihor Hordiichuk Co-authored-by: Jener Gomes Co-authored-by: Kristoffer Grundström Co-authored-by: LiftedStarfish Co-authored-by: NEXI Co-authored-by: Napstaguy04 Co-authored-by: Nista <42772160+Nista11@users.noreply.github.com> Co-authored-by: P.O Co-authored-by: PiryusQ Co-authored-by: Ray Co-authored-by: Rex_sa Co-authored-by: ShareASmile Co-authored-by: Software In Interlingua Co-authored-by: Stypox Co-authored-by: TXRdev Archive Co-authored-by: Tmpod Co-authored-by: TobiGr Co-authored-by: Translator Co-authored-by: VfBFan Co-authored-by: Weblate Co-authored-by: bittin1ddc447d824349b2 Co-authored-by: ferarilalon Co-authored-by: fsbat0 Co-authored-by: gallegonovato Co-authored-by: ngocanhtve Co-authored-by: notlin4 Co-authored-by: searinminecraft <114207889+searinminecraft@users.noreply.github.com> Co-authored-by: sum1tookshoe Co-authored-by: trunars Co-authored-by: İbrahim Dinç Co-authored-by: Макар Разин Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eo/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/id/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ru/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sr/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/tr/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/vi/ Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/ Translation: NewPipe/Metadata --- app/src/main/res/values-ar-rLY/strings.xml | 4 +- app/src/main/res/values-da/strings.xml | 5 +- app/src/main/res/values-fil/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 14 ++-- app/src/main/res/values-in/strings.xml | 8 +- app/src/main/res/values-pt-rPT/strings.xml | 4 +- app/src/main/res/values-ro/strings.xml | 80 ++++++++++++++++++- .../metadata/android/ar/changelogs/995.txt | 12 +-- .../metadata/android/cs/changelogs/995.txt | 8 +- .../metadata/android/de/changelogs/995.txt | 10 ++- .../metadata/android/es/changelogs/995.txt | 22 ++--- .../metadata/android/hi/changelogs/995.txt | 10 ++- .../metadata/android/id/changelogs/991.txt | 13 +++ .../metadata/android/id/changelogs/993.txt | 12 +++ .../metadata/android/id/changelogs/994.txt | 15 ++++ .../metadata/android/id/changelogs/995.txt | 16 ++++ .../metadata/android/it/changelogs/995.txt | 8 +- .../metadata/android/pa/changelogs/995.txt | 8 +- .../metadata/android/pl/changelogs/995.txt | 16 ++-- .../metadata/android/pt-BR/changelogs/64.txt | 10 +-- .../metadata/android/sr/changelogs/995.txt | 14 ++-- .../metadata/android/uk/changelogs/995.txt | 12 +-- 22 files changed, 229 insertions(+), 74 deletions(-) create mode 100644 fastlane/metadata/android/id/changelogs/991.txt create mode 100644 fastlane/metadata/android/id/changelogs/993.txt create mode 100644 fastlane/metadata/android/id/changelogs/994.txt create mode 100644 fastlane/metadata/android/id/changelogs/995.txt diff --git a/app/src/main/res/values-ar-rLY/strings.xml b/app/src/main/res/values-ar-rLY/strings.xml index aa7f3e53a2a..aca74e743c6 100644 --- a/app/src/main/res/values-ar-rLY/strings.xml +++ b/app/src/main/res/values-ar-rLY/strings.xml @@ -5,13 +5,13 @@ الإعدادات بحث تنزيل ملف البث - تحميل + تنزيل إعادة النشر فتح في نافدة منبثقة افتح في المتصفح إلغاء تثبيت - لم يتم العثور على مشغل بث (يمكنك تثبيت VLC لتشغيله). + لم يتم العثور على مشغل بث (يمكنك تثبيت VLC لتشغيلها). لم يتم العثور على مشغل بث. يرجى تثبيت VLC؟ تم النشر في %1$s اضغط على عدسة المكبرة للبدء. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 601a0c60342..afde293a632 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -718,4 +718,7 @@ Playlists der er grået ud, indeholder allerede dette objekt. Inaktiver permanent thumbnail Fejlede at kopiere til udklipsholderen - + Brug det originale lydspor uanset sprog + Foretræk lydbeskrivelser + Foretræk original lyd + \ No newline at end of file diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml index c798a7aa848..00ce782576b 100644 --- a/app/src/main/res/values-fil/strings.xml +++ b/app/src/main/res/values-fil/strings.xml @@ -47,7 +47,7 @@ Ipakita ang \"I-play gamit Kodi\" Pangalawang action button Pangatlong action button - Pinapayagan ng di-saktong seek ang player na mag-seek sa mga posisyon nang mabilis ngunit na may pinababang kasaktuhan. Di ito gagana sa pag-seek nang 5, 15, o 25 segundo. + Pinapayagan ng di-saktong seek ang player na mag-seek sa mga posisyon nang mabilis ngunit na may pinababang kasaktuhan. Di ito gagana sa pag-seek nang 5, 15, o 25 segundo Piliin ang mga mungkahing ipapakita habang naghahanap Patayin para itago ang paglalarawan ng video at karagdagang impormasyon I-edit ang bawat action sa abiso sa baba sa pamamagitan ng pagpindot sa mga ito. Pumili ng hanggang tatlong ipapakita sa siksik na abiso gamit ang mga checkbox sa kanan diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index bad5cd7b932..738f9f58fbb 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -547,7 +547,7 @@ Jamais Uniquement en Wi-Fi Démarrer la lecture automatiquement — %s - Liste de lecture + File de lecture Impossible de reconnaitre l’URL fournie. Voulez-vous l’ouvrir avec une autre application \? Ajout auto. à la file La file de lecture du lecteur actif sera remplacée @@ -814,11 +814,11 @@ Partager avec les noms Avatars de sous-chaîne Ouvrir la file de lecture - En avant + Avancer Rembobiner - Relancer - Partager la liste de lecture avec des détails tel que son nom et le nom de ses vidéos ou simplement la liste des URL des vidéos - Mise en ligne des avatars - Sélectionnez la qualités des images et si les images doivent être chargées, pour réduire l\'utilisation de la mémoire et de données. Les modifications vide à la fois le cache des images en mémoire et sur le disque — %s - Lancer + Rejouer + Partager la liste de lecture avec des détails tel que son nom et le titre de ses vidéos ou simplement la liste des URLs des vidéos + Avatars du téléverseur + Sélectionnez la qualité des images et si les images doivent être chargées, pour réduire l\'utilisation de la mémoire et de données. Les modifications vident à la fois le cache des images en mémoire et sur le disque — %s + Lire \ No newline at end of file diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 9da696627a0..2dc9ecdea05 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -1,7 +1,7 @@ - Ketuk kaca pembesar untuk segera memulai. - Dipublikasikan pada tanggal %1$s + Sentuh kaca pembesar untuk memulai. + Dipublikasikan pada %1$s Pasang Batal Buka di browser @@ -74,7 +74,7 @@ Mohon tunggu… Disalin ke papan klip Silakan pilih folder unduhan di pengaturan - Pemutar stream tidak ditemukan. Pasang VLC\? + Pemutar stream tidak ada. Pasang VLC? App/UI rusak Apa:\\nPermintaan:\\nBahasa Konten:\\nNegara Konten:\\nBahasa Apl:\\nLayanan:\\nWaktu GMT:\\nPaket:\\nVersi:\\nVersi OS: Thread @@ -237,7 +237,7 @@ Isi Perbesar Otomatis dibuat - Pemutar stream tidak ditemukan (Anda bisa memasang VLC untuk memutarnya). + Pemutar stream tidak ada (pasang VLC untuk memutarnya). Unduh berkas stream Tidak bisa mengubah langganan Tampilkan info diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index fa88d003c3b..335c989ed19 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -44,8 +44,8 @@ Histórico de visualizações %s visualização - %s subscritores - %s subscritores + %s visualizações + %s visualizações Deseja limpar o histórico de descargas ou remover todos os ficheiros descarregados\? Histórico e cache diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 43eb814e8e5..42e23c3a428 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -482,7 +482,7 @@ Serverul nu acceptă descărcări cu mai multe fire, încercați din nou cu @string/msg_threads = 1 Serverul nu trimite date Nu se poate conecta la server - Nu s-a putut găsi server-ul + Nu s-a putut găsi serverul Nu s-a putut stabili o conexiune sigură Folderul de destinație nu poate fi creat Fișierul nu poate fi creat @@ -662,7 +662,7 @@ Miniatură de previzualizare în bara de derulare Afișați panglici colorate de Picasso deasupra imaginilor, indicând sursa acestora: roșu pentru rețea, albastru pentru disc și verde pentru memorie Afișați indicatorii de imagine - Dezactivați tunelarea media dacă întâmpinați un ecran negru sau blocaje la redarea video + Dezactivați tunelarea media dacă întâmpinați un ecran negru sau blocaje la redarea video. Procesarea.. Poate dura un moment Verifică dacă există actualizări Verifică manual dacă există versiuni noi @@ -741,4 +741,80 @@ Vizionat complet Vizionat parțial Urmează + Calitatea imaginii + original + Videouri + \? + Abonați + Necunoscut + Ce file sunt afișate pe paginile canalelor + descriptiv + Distribuiți lista URL + Distribuiți cu titluri + %1$s +\n%2$s + Filele canalului + Volum + Utilizați funcționalitatea de rezervă a decodorului din ExoPlayer + Niciunul + Se încarcă metadata… + Schimbați orientarea ecranului + Gestionați unele setări pentru ExoPlayer. Aceste schimbări necesită un restart la player ca să aibă efect + Calitate scăzută + Poziția filelor principale + Schimbați pe ecran complet + Preluați filele canalului + Avatare + Activați această opțiune dacă aveți probleme cu inițializarea decodorului care trece înapoi la decodoare cu prioritate mai scăzută dacă inițializarea decodoarelor principale eșuează. Asta poate duce la performanță de redare mai slabă decât atunci când se utilizează decodoarele principale. + Acțiunea gestului din dreapta + %1$s %2$s + Utilizați întotdeauna configurarația suprafeței de ieșire video din ExoPlayer ca soluție alternativă + Transmisia viitoare + Tunelizarea media a fost dezactivată în mod implicit pe dispozitivul dumneavoastră deoarece se cunoaște despre acest model de dispozitiv că nu o suportă. + Avatarele subcanalelor + Această soluție alternativă eliberează și reinstanțează codecurile video când se întamplă o schimbare a suprafeței, în loc de a seta suprafața pentru codec direct. Deja +\n folosită de ExoPlayer pe unele dispozitive cu această problemă, această setare are efect doar pe Android 6 sau mai mare +\n +\nActivarea acestei opțiuni poate preveni erorile de redare când se schimbă playerul video curent sau se trece pe ecran complet + O coloană sonoră ar trebui să fie deja prezentă în această transmisie + Deschideți coada de redare + Selectați coloana sonoră originală indiferent de limbă + Nu încărcați imagini + Calitate înaltă + Despre + Distribuiți playlistul + Avansați + Selectați coloana sonoră pentru playeri externi + Albume + Derulați + Reluați + dublat + File ce vor fi preluate când se actualizează fluxul. Această opțiune nu are niciun efect dacă un canal este actualizat folosind modul rapid. + Selectați o coloană sonoră cu descrieri pentru persoane cu deficiențe vizuale, dacă este disponibilă + Acțiunea gestului din stânga + Distribuiți playlistul cu detalii precum numele playlistului și titlurile videourilor sau ca o simplă listă de URL-uri a videourilor + Calitate medie + Preferați audioul descriptiv + Modificați dimensiunea intervalului de încărcare pentru conținuturi progresive (în prezent %s). O valoare mai mică poate accelera încărcarea lor inițială + Preferați audioul original + Audio: %s + Bannere + Playlisturi + Alegeți un gest pentru jumătatea dreaptă din ecranul playerului + - %1$s: %2$s + Mutați fila principală în partea de jos + Coloană sonoră + Fără transmisii în direct + Alegeți calitatea imaginilor și dacă să se încarce sau nu imaginile, pentru a reduce utilizarea datelor și memoriei. Schimbările șterg cache-ul atât din memoria internă cât și din disc --%s + Redați + Mai multe opțiuni + Miniaturi + Setări pentru ExoPlayer + Luminozitate + Durată + Fără transmisii + Canale + Transmisia anterioară + Alegeți un gest pentru jumătatea stângă din ecranul playerului + În direct \ No newline at end of file diff --git a/fastlane/metadata/android/ar/changelogs/995.txt b/fastlane/metadata/android/ar/changelogs/995.txt index 82acc602b6a..3995ca6eb04 100644 --- a/fastlane/metadata/android/ar/changelogs/995.txt +++ b/fastlane/metadata/android/ar/changelogs/995.txt @@ -1,14 +1,16 @@ جديد • دعم علامات التبويب القناة -• حدد جودة الصورة -• الحصول على عناوين URL لجميع الصور +• تحديد جودة الصورة +• الحصول على العناوين لجميع الصور تحسين • إمكانية الوصول إلى واجهات المشغل -• خيار إضافة اسم قائمة التشغيل واسم الفيديو إلى محتوى مشاركة قائمة التشغيل -• التحسينات الداخلية وتحديثات التبعيات +• اختيار أفضل للصوت لتنزيلات الفيديو فقط +• خيار لتضمين قائمة التشغيل وأسماء الفيديو لمحتوى قائمة التشغيل المشتركة مُثَبَّت +• [يوتيوب] إصلاح جلب عدد الإعجابات +• إصلاح عدم استجابة المشغل للنوافذ المنبثقة والأعطال • اختيار لغات خاطئة في منتقي اللغة • تركيز صوت المشغل لم يكن يحترم كتم الصوت -• إضافة عناصر إلى قوائم التشغيل لا تعمل في حالات معينة +• إضافة عنصر قائمة التشغيل لا يعمل في بعض الأحيان diff --git a/fastlane/metadata/android/cs/changelogs/995.txt b/fastlane/metadata/android/cs/changelogs/995.txt index 325cef51e1d..222437b3a50 100644 --- a/fastlane/metadata/android/cs/changelogs/995.txt +++ b/fastlane/metadata/android/cs/changelogs/995.txt @@ -5,10 +5,12 @@ Nové Vylepšeno • Přístupnost rozhraní přehrávače -• Možnost přidat název playlistu a název videa do sdíleného obsahu playlistu -• Interní vylepšení a aktualizace závislostí +• Lepší výběr zvuku pro stahování videa +• Možnost přidat název playlistů a videí do obsahu sdíleného playlistu Opraveno +• [YouTube] Opraveno získání počtů líbí se +• Opraveny popupy neodpovídání přehrávače a pády • Výběr nesprávných jazyků ve výběru jazyka • Zaměření zvuku přehrávače nerespektovalo ztlumení -• Přidávání položek do playlistů v určitých případech nefungovalo +• Přidávání položek do playlistů někdy nefungovalo diff --git a/fastlane/metadata/android/de/changelogs/995.txt b/fastlane/metadata/android/de/changelogs/995.txt index 284d1c1925c..9c9ed11473d 100644 --- a/fastlane/metadata/android/de/changelogs/995.txt +++ b/fastlane/metadata/android/de/changelogs/995.txt @@ -5,10 +5,12 @@ Neu Verbessert • Zugänglichkeit der Player-Oberflächen -• Option zum Hinzufügen von Wiedergabelisten- und Videonamen beim Teilen von Inhalten -• Interne Verbesserungen und Aktualisierungen der Abhängigkeiten +• Bessere Audioauswahl bei reinen Video-Downloads +• Option zur Aufnahme von Wiedergabelisten-/Videonamen in geteilten Wiedergabelisteninhalten Behoben +• [YouTube] Erhalten der Like-Anzahl +• Nicht reagierende Popups und Abstürze des Players • Auswahl der falschen Sprachen in der Sprachauswahl -• Der Audio-Fokus des Players respektierte die Stummschaltung nicht -• Das Hinzufügen von Elementen zu Wiedergabelisten in bestimmten Fällen +• Audio-Fokus des Players respektiert keine Stummschaltung +… diff --git a/fastlane/metadata/android/es/changelogs/995.txt b/fastlane/metadata/android/es/changelogs/995.txt index 5c13533fa7a..93aab836e00 100644 --- a/fastlane/metadata/android/es/changelogs/995.txt +++ b/fastlane/metadata/android/es/changelogs/995.txt @@ -1,14 +1,16 @@ Nuevo -• Pestañas del canal -• Calidad de la imagen -• URLs a todas las imágenes +• Pestañas de canal +• Calidad de imagen +• URLs de las imágenes -Mejorado +Mejora de • Accesibilidad de las interfaces de los reproductores -• Opción para añadir el nombre de la lista de reproducción y el nombre del vídeo a la lista de reproducción compartida -• Mejoras internas y actualizaciones de dependencias +• Mejor selección de audio para descargas de vídeo +• Incluir nombres de listas de reproducción y vídeos en listas compartidas -Fijo -• Idiomas incorrectos en el selector de idiomas -• El audio del reproductor no se silenciaba -• Agregar elementos a listas de reproducción que no funcionan en casos específicos +Corregido +• [YouTube] Corrección del recuento "Me gusta" +• Ventanas emergentes y bloqueos +• Idiomas incorrectos en selector de idiomas +• Audio del reproductor no respetaba silencio +• La lista de reproducción no funcionaba ocasionalmente diff --git a/fastlane/metadata/android/hi/changelogs/995.txt b/fastlane/metadata/android/hi/changelogs/995.txt index ecba503d969..63ed335a4bf 100644 --- a/fastlane/metadata/android/hi/changelogs/995.txt +++ b/fastlane/metadata/android/hi/changelogs/995.txt @@ -5,10 +5,12 @@ सुधार किए • प्लेयर इंटरफ़ेस की पहुंच -• प्लेलिस्ट साझाकरण सामग्री में प्लेलिस्ट का नाम और वीडियो का नाम जोड़ने का विकल्प -• आंतरिक सुधार और निर्भरता अद्यतन +• केवल-वीडियो डाउनलोड के लिए बेहतर ऑडियो चयन +• साझा प्लेलिस्ट सामग्री में प्लेलिस्ट और वीडियो नाम शामिल करने का विकल्प ठीक किए -• भाषा चयनकर्ता में गलत भाषाओं का चयन +• [यूट्यूब] लाइक पाने की संख्या ठीक करें +• पॉपअप और क्रैश पर प्रतिक्रिया नहीं देने वाले प्लेयर को ठीक करें +• भाषा चयनकर्ता में गलत भाषाओं का चयन ठीक करें • प्लेयर ऑडियो फोकस म्यूट का सम्मान नहीं कर रहा था -• प्लेलिस्ट में आइटम जोड़ना विशिष्ट मामलों में काम नहीं कर रहा था +• प्लेलिस्ट में आइटम जोड़ना कभी-कभी काम नहीं कर रहा था diff --git a/fastlane/metadata/android/id/changelogs/991.txt b/fastlane/metadata/android/id/changelogs/991.txt new file mode 100644 index 00000000000..a803d5a143c --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/991.txt @@ -0,0 +1,13 @@ +Baru +• Tambahkan tombol "Buka di browser" di panel kesalahan +• Tambahkan opsi untuk menampilkan grup saluran sebagai daftar +• [YouTube] Klik-lama pada segmen streaming untuk membagikan URL stempel waktu +• Tambahkan tombol antrian putar ke pemutar mini + +Disempurnakan +• Tambahkan lokalisasi Islandia dan perbarui banyak terjemahan lainnya +• Banyak perbaikan internal + +Diperbaiki +• Memperbaiki beberapa kerusakan +• [YouTube] Memperbaiki pemuatan saluran, feed non-khusus, dan mengatasi masalah pemutaran di beberapa negara diff --git a/fastlane/metadata/android/id/changelogs/993.txt b/fastlane/metadata/android/id/changelogs/993.txt new file mode 100644 index 00000000000..2a4c8f2d670 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/993.txt @@ -0,0 +1,12 @@ +Baru +• Tambahkan peringatan saat menambahkan duplikat daftar putar dan tombol tambahkan untuk menghapusnya +• Izinkan pengabaian tombol perangkat keras +• Izinkan menyembunyikan video yang ditonton sebagian di feed + +Ditingkatkan +• Gunakan lebih banyak kolom grid di layar besar +• Membuat indikator kemajuan konsisten dengan pengaturan + +Tetap +• Memperbaiki URL pembuka browser, unduhan, dan pemutar eksternal di Android 11+ +• Memperbaiki interaksi dengan layar penuh yang memerlukan dua ketukan pada MIUI diff --git a/fastlane/metadata/android/id/changelogs/994.txt b/fastlane/metadata/android/id/changelogs/994.txt new file mode 100644 index 00000000000..fc75016b171 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/994.txt @@ -0,0 +1,15 @@ +Baru +• Mendukung beberapa track audio/bahasa +• Izinkan mengatur gestur volume dan kecerahan di sisi mana pun pada layar +• Dukungan untuk menampilkan tab utama di bagian bawah layar + +Disempurnakan +• [Bandcamp] Menangani track berbayar + +Diperbaiki +• [YouTube] Kesalahan HTTP 403 untuk streaming +• Pemutar berwarna hitam saat beralih ke pemutar utama dari tampilan daftar putar +• Kebocoran memori layanan pemutar +• [PeerTube] Avatar pengunggah dan subsaluran ditukar + +dan banyak lagi diff --git a/fastlane/metadata/android/id/changelogs/995.txt b/fastlane/metadata/android/id/changelogs/995.txt new file mode 100644 index 00000000000..277b2468a72 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/995.txt @@ -0,0 +1,16 @@ +Baru +• Mendukung tab saluran +• Pilih kualitas gambar +• Dapatkan URL ke semua gambar + +Ditingkatkan +• Aksesibilitas antarmuka pemain +• Pilihan audio yang lebih baik untuk download video saja +• Pilihan untuk memasukkan nama playlist dan video ke konten playlist bersama + +Tetap +• [YouTube] Perbaiki penghitungan jumlah suka +• Memperbaiki pemain yang tidak merespons popup dan crash +• Pemilihan bahasa yang salah di pemilih bahasa +• Fokus audio pemutar tidak menerapkan mode senyap +• Penambahan item playlist terkadang tidak berfungsi diff --git a/fastlane/metadata/android/it/changelogs/995.txt b/fastlane/metadata/android/it/changelogs/995.txt index 8da9a7ee74f..efed82f4e24 100644 --- a/fastlane/metadata/android/it/changelogs/995.txt +++ b/fastlane/metadata/android/it/changelogs/995.txt @@ -5,10 +5,12 @@ Novità Migliorato • Accessibilità delle interfacce del player -• Opzione per aggiungere il nome della playlist e il nome video al contenuto di condivisione della playlist -• Miglioramenti interni e aggiornamenti delle dipendenze +• Miglior scelta dell'audio per i download video-only +• Condivisione playlist con più opzioni Corretto +• [YouTube] Sistemati i mi piace +• Talvolta il player non rispondeva o crashava • Selezione di lingue errate nel selettore • Il focus audio del player non rispettava il muto -• Aggiungere elementi a playlist non funzionava in casi specifici +• Talvolta aggiungere elementi a playlist non funzionava diff --git a/fastlane/metadata/android/pa/changelogs/995.txt b/fastlane/metadata/android/pa/changelogs/995.txt index dc9c576c969..0da0a4261b1 100644 --- a/fastlane/metadata/android/pa/changelogs/995.txt +++ b/fastlane/metadata/android/pa/changelogs/995.txt @@ -5,10 +5,12 @@ ਸੁਧਾਰ • ਪਲੇਅਰ ਇੰਟਰਫੇਸ ਦੀ ਪਹੁੰਚਯੋਗਤਾ -• ਪਲੇਲਿਸਟ ਸ਼ੇਅਰਿੰਗ ਸਮੱਗਰੀ ਵਿੱਚ ਪਲੇਲਿਸਟ ਨਾਮ ਅਤੇ ਵੀਡੀਓ ਨਾਮ ਜੋੜਨ ਲਈ ਵਿਕਲਪ -• ਅੰਦਰੂਨੀ ਸੁਧਾਰ ਅਤੇ ਨਿਰਭਰਤਾ ਅੱਪਡੇਟ +• ਸਿਰਫ਼-ਵੀਡੀਓ ਡਾਊਨਲੋਡਾਂ ਲਈ ਬਿਹਤਰ ਆਡੀਓ ਚੋਣ +• ਸਾਂਝੀ ਕੀਤੀ ਪਲੇਲਿਸਟ ਸਮੱਗਰੀ ਵਿੱਚ ਪਲੇਲਿਸਟ ਅਤੇ ਵੀਡੀਓ ਨਾਮ ਸ਼ਾਮਲ ਕਰਨ ਦਾ ਵਿਕਲਪ ਠੀਕ ਕੀਤੇ +• [ਯੂਟਿਊਬ] ਲਾਈਕ ਗਿਣਤੀ ਨੂੰ ਠੀਕ ਕਰੋ +• ਪਲੇਅਰ ਰਿਸਪੌੰਡ ਨਹੀਂ ਕਰ ਰਿਹਾ ਦੇ ਸੁਨੇਹੇ ਦੇਣ ਵਾਲੇ ਪੌਪਅੱਪ ਅਤੇ ਕਰੈਸ਼ਾਂ ਨੂੰ ਠੀਕ ਕਰੋ • ਭਾਸ਼ਾ ਚੋਣਕਾਰ ਵਿੱਚ ਗਲਤ ਭਾਸ਼ਾਵਾਂ ਦੀ ਚੋਣ • ਪਲੇਅਰ ਆਡੀਓ ਫੋਕਸ ਮਿਊਟ ਦਾ ਆਦਰ ਨਹੀਂ ਕਰ ਰਿਹਾ ਸੀ -• ਖਾਸ ਮਾਮਲਿਆਂ ਵਿੱਚ ਪਲੇਲਿਸਟਾਂ ਵਿੱਚ ਆਈਟਮਾਂ ਨੂੰ ਜੋੜਨਾ ਕੰਮ ਨਹੀਂ ਕਰ ਰਿਹਾ ਸੀ +• ਪਲੇਲਿਸਟਾਂ ਵਿੱਚ ਆਈਟਮਾਂ ਨੂੰ ਜੋੜਨਾ ਕਦੇ-ਕਦਾਈਂ ਕੰਮ ਨਹੀਂ ਕਰ ਰਿਹਾ ਸੀ diff --git a/fastlane/metadata/android/pl/changelogs/995.txt b/fastlane/metadata/android/pl/changelogs/995.txt index ffbcbf37435..3a227a3eaa4 100644 --- a/fastlane/metadata/android/pl/changelogs/995.txt +++ b/fastlane/metadata/android/pl/changelogs/995.txt @@ -1,14 +1,16 @@ Nowe • Obsługa kart kanałów -• Wybieranie jakości obrazów +• Wybór jakości obrazów • Uzyskiwanie adresów URL do wszystkich obrazów Ulepszone -• Dostępność interfejsów odtwarzacza -• Opcja dodania nazwy playlisty i tytułów wideo do udostępnianej zawartości playlisty -• Wewnętrzne ulepszenia i aktualizacje zależności +• Dostępność UI odtwarzacza +• Lepszy wybór dźwięku dla pobierania tylko wideo +• Opcja uwzględ. nazw playlist i wideo do udostęp. zawartości playlisty Naprawione -• Wybór błędnych języków w selektorze języków -• Skupienie na dźwięku odtwarzacza nie uwzględniało wyciszenia -• Dodawanie pozycji do playlist nie działało w określonych przypadkach +• [YouTube] Liczba polubień +• Zawieszone wysk. okienka i awarie odtwarzacza +• Błędne wybory w selektorze języków +• Skupienie na dźwięku odtwarzacza nie uwzględ. wyciszenia +• Czasami niedziałające dodawanie pozycji do playlisty diff --git a/fastlane/metadata/android/pt-BR/changelogs/64.txt b/fastlane/metadata/android/pt-BR/changelogs/64.txt index 74205f9baae..4497e39658c 100644 --- a/fastlane/metadata/android/pt-BR/changelogs/64.txt +++ b/fastlane/metadata/android/pt-BR/changelogs/64.txt @@ -1,8 +1,8 @@ ### Melhorias -- Adicionada a capacidade de limitar a qualidade do vídeo ao usar dados móveis. # 1339 -- Lembra-se do brilho da sessão # 1442 -- Melhora o desempenho de download em CPUs mais fracas # 1431 -- Adiciona suporte (funcionando) à sessão de mídia # 1433 +- Adiciona o recurso de limitar a qualidade do vídeo ao usar dados móveis. #1339 +- Mantém o brilho da sessão #1442 +- Melhora o desempenho para baixar em CPU mais fracas #1431 +- Adiciona suporte (funcionando) à sessão de mídia #1433 ### Correção -- Corrige falha ao iniciar downloads (correção agora disponível em versões de lançamento) # 1441 +- Corrige falha ao iniciar Downloads (correção agora disponível em versões de lançamento) # 1441 diff --git a/fastlane/metadata/android/sr/changelogs/995.txt b/fastlane/metadata/android/sr/changelogs/995.txt index fd8da638188..0604eb08893 100644 --- a/fastlane/metadata/android/sr/changelogs/995.txt +++ b/fastlane/metadata/android/sr/changelogs/995.txt @@ -4,11 +4,13 @@ • Набавите URL адресе за све слике Побољшано -• Приступачност интерфејса плејера -• Опција за опцију додавања назива плејлисте и назива видео снимка у садржај листе за дељење -• Интерна побољшања и ажурирања зависности +• Прист. интерф. плејера +• Бољи избор звука за преузимања само видео снимака +• Опција за укљ. назива плејлисте и видео сним. у дељ. сад. плејл. Поправљено -• Избор погрешних језика у бирачу језика -• Аудио фокус плејера није поштовао искључен звук -• Додавање ставки на плејлисте не функционише у одређеним случајевима +• [YouTube] Попр. доб. лајкова +• Попр. проб. када плејер не реаг. на иск. проз. и отказује +• Изб. погр. јез. у бир. јез. +• Аудио фокус плејера није пошт. утиш. звук +• Додавање пред. на плејлисте повр. не функционише diff --git a/fastlane/metadata/android/uk/changelogs/995.txt b/fastlane/metadata/android/uk/changelogs/995.txt index 1cd40224a4d..3e40c900aab 100644 --- a/fastlane/metadata/android/uk/changelogs/995.txt +++ b/fastlane/metadata/android/uk/changelogs/995.txt @@ -1,14 +1,16 @@ Нове • Підтримка вкладок каналів -• Вибір якості зображення +• Вибір якості зображень • Отримання URL всіх зображень Поліпшено -• Доступність інтерфейсів програвачів -• Додано можливість додавати назву добірки й назву відео поширюваного вмісту добірки -• Внутрішні вдосконалення й оновлення залежностей +• Доступність інтерфейсу +• Кращий вибір аудіо для завантаження відео +• Опція додавати назву добірки й відео поширюваного вмісту добірки Виправлено +• [YouTube] лічильник вподобайок +• Нереагування спливних вікон і збої в роботі програвача • Вибір неправильних мов у перемикачі мов • Фокусування звуку програвача не враховувало вимкнення звуку -• Додавання елементів у добірки не працювало у певних випадках +• Додавання елементів добірок інколи не працювало From 8f4cd032b76412f8f05ee2800021162fc89e9795 Mon Sep 17 00:00:00 2001 From: Stypox Date: Tue, 11 Apr 2023 10:47:40 +0200 Subject: [PATCH 28/82] Remove mini variant and move upload date to top in comments --- .../newpipe/info_list/InfoItemBuilder.java | 6 +- .../newpipe/info_list/InfoListAdapter.java | 12 ++-- ...Holder.java => CommentInfoItemHolder.java} | 43 ++++++------ .../holder/CommentsInfoItemHolder.java | 63 ----------------- app/src/main/res/layout/fragment_comments.xml | 2 +- ...omments_item.xml => list_comment_item.xml} | 14 +--- .../res/layout/list_comments_mini_item.xml | 69 ------------------- 7 files changed, 30 insertions(+), 179 deletions(-) rename app/src/main/java/org/schabi/newpipe/info_list/holder/{CommentsMiniInfoItemHolder.java => CommentInfoItemHolder.java} (90%) delete mode 100644 app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsInfoItemHolder.java rename app/src/main/res/layout/{list_comments_item.xml => list_comment_item.xml} (89%) delete mode 100644 app/src/main/res/layout/list_comments_mini_item.xml diff --git a/app/src/main/java/org/schabi/newpipe/info_list/InfoItemBuilder.java b/app/src/main/java/org/schabi/newpipe/info_list/InfoItemBuilder.java index 68f19ee9714..d959c63277c 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/InfoItemBuilder.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/InfoItemBuilder.java @@ -13,8 +13,7 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem; import org.schabi.newpipe.info_list.holder.ChannelInfoItemHolder; import org.schabi.newpipe.info_list.holder.ChannelMiniInfoItemHolder; -import org.schabi.newpipe.info_list.holder.CommentsInfoItemHolder; -import org.schabi.newpipe.info_list.holder.CommentsMiniInfoItemHolder; +import org.schabi.newpipe.info_list.holder.CommentInfoItemHolder; import org.schabi.newpipe.info_list.holder.InfoItemHolder; import org.schabi.newpipe.info_list.holder.PlaylistInfoItemHolder; import org.schabi.newpipe.info_list.holder.PlaylistMiniInfoItemHolder; @@ -87,8 +86,7 @@ private InfoItemHolder holderFromInfoType(@NonNull final ViewGroup parent, return useMiniVariant ? new PlaylistMiniInfoItemHolder(this, parent) : new PlaylistInfoItemHolder(this, parent); case COMMENT: - return useMiniVariant ? new CommentsMiniInfoItemHolder(this, parent) - : new CommentsInfoItemHolder(this, parent); + return new CommentInfoItemHolder(this, parent); default: throw new RuntimeException("InfoType not expected = " + infoType.name()); } diff --git a/app/src/main/java/org/schabi/newpipe/info_list/InfoListAdapter.java b/app/src/main/java/org/schabi/newpipe/info_list/InfoListAdapter.java index a13f0e5aaba..575568c00f9 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/InfoListAdapter.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/InfoListAdapter.java @@ -21,8 +21,7 @@ import org.schabi.newpipe.info_list.holder.ChannelGridInfoItemHolder; import org.schabi.newpipe.info_list.holder.ChannelInfoItemHolder; import org.schabi.newpipe.info_list.holder.ChannelMiniInfoItemHolder; -import org.schabi.newpipe.info_list.holder.CommentsInfoItemHolder; -import org.schabi.newpipe.info_list.holder.CommentsMiniInfoItemHolder; +import org.schabi.newpipe.info_list.holder.CommentInfoItemHolder; import org.schabi.newpipe.info_list.holder.InfoItemHolder; import org.schabi.newpipe.info_list.holder.PlaylistCardInfoItemHolder; import org.schabi.newpipe.info_list.holder.PlaylistGridInfoItemHolder; @@ -79,8 +78,7 @@ public class InfoListAdapter extends RecyclerView.Adapter openCommentAuthor(item)); + final String uploadDate; + if (item.getUploadDate() != null) { + uploadDate = Localization.relativeTime(item.getUploadDate().offsetDateTime()); + } else { + uploadDate = item.getTextualUploadDate(); + } + itemTitleView.setText(Localization.concatenateStrings(item.getUploaderName(), uploadDate)); - itemThumbnailView.setOnClickListener(view -> openCommentAuthor(item)); + itemPinnedView.setVisibility(item.isPinned() ? View.VISIBLE : View.GONE); + itemHeartView.setVisibility(item.isHeartedByUploader() ? View.VISIBLE : View.GONE); try { streamService = NewPipe.getService(item.getServiceId()); @@ -136,12 +144,6 @@ public void updateFromItem(final InfoItem infoItem, itemLikesCountView.setText("-"); } - if (item.getUploadDate() != null) { - itemPublishedTime.setText(Localization.relativeTime(item.getUploadDate() - .offsetDateTime())); - } else { - itemPublishedTime.setText(item.getTextualUploadDate()); - } itemView.setOnClickListener(view -> { toggleEllipsize(); @@ -150,7 +152,6 @@ public void updateFromItem(final InfoItem infoItem, } }); - itemView.setOnLongClickListener(view -> { if (DeviceUtils.isTv(itemBuilder.getContext())) { openCommentAuthor(item); diff --git a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsInfoItemHolder.java b/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsInfoItemHolder.java deleted file mode 100644 index 4fc2d9f84b8..00000000000 --- a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentsInfoItemHolder.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.schabi.newpipe.info_list.holder; - -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import org.schabi.newpipe.R; -import org.schabi.newpipe.extractor.InfoItem; -import org.schabi.newpipe.extractor.comments.CommentsInfoItem; -import org.schabi.newpipe.info_list.InfoItemBuilder; -import org.schabi.newpipe.local.history.HistoryRecordManager; - -/* - * Created by Christian Schabesberger on 12.02.17. - * - * Copyright (C) Christian Schabesberger 2016 - * ChannelInfoItemHolder .java is part of NewPipe. - * - * NewPipe 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. - * - * NewPipe 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 NewPipe. If not, see . - */ - -public class CommentsInfoItemHolder extends CommentsMiniInfoItemHolder { - public final TextView itemTitleView; - private final ImageView itemHeartView; - private final ImageView itemPinnedView; - - public CommentsInfoItemHolder(final InfoItemBuilder infoItemBuilder, final ViewGroup parent) { - super(infoItemBuilder, R.layout.list_comments_item, parent); - - itemTitleView = itemView.findViewById(R.id.itemTitleView); - itemHeartView = itemView.findViewById(R.id.detail_heart_image_view); - itemPinnedView = itemView.findViewById(R.id.detail_pinned_view); - } - - @Override - public void updateFromItem(final InfoItem infoItem, - final HistoryRecordManager historyRecordManager) { - super.updateFromItem(infoItem, historyRecordManager); - - if (!(infoItem instanceof CommentsInfoItem)) { - return; - } - final CommentsInfoItem item = (CommentsInfoItem) infoItem; - - itemTitleView.setText(item.getUploaderName()); - - itemHeartView.setVisibility(item.isHeartedByUploader() ? View.VISIBLE : View.GONE); - - itemPinnedView.setVisibility(item.isPinned() ? View.VISIBLE : View.GONE); - } -} diff --git a/app/src/main/res/layout/fragment_comments.xml b/app/src/main/res/layout/fragment_comments.xml index b1b644d8c05..2a8c747cd63 100644 --- a/app/src/main/res/layout/fragment_comments.xml +++ b/app/src/main/res/layout/fragment_comments.xml @@ -9,7 +9,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" - tools:listitem="@layout/list_comments_item" /> + tools:listitem="@layout/list_comment_item" /> + tools:text="Author Name, Lorem ipsum · 5 months ago" /> - - diff --git a/app/src/main/res/layout/list_comments_mini_item.xml b/app/src/main/res/layout/list_comments_mini_item.xml deleted file mode 100644 index 606a237c5fc..00000000000 --- a/app/src/main/res/layout/list_comments_mini_item.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - From 4c709b2c4d1aaa6c8568e5f7845f314072fef643 Mon Sep 17 00:00:00 2001 From: Stypox Date: Tue, 11 Apr 2023 10:58:32 +0200 Subject: [PATCH 29/82] Use start/end instead of left/right in comment layout --- app/src/main/res/layout/list_comment_item.xml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/app/src/main/res/layout/list_comment_item.xml b/app/src/main/res/layout/list_comment_item.xml index 26fcc97272e..3e0cce2e7e3 100644 --- a/app/src/main/res/layout/list_comment_item.xml +++ b/app/src/main/res/layout/list_comment_item.xml @@ -15,10 +15,9 @@ android:layout_width="42dp" android:layout_height="42dp" android:layout_alignParentStart="true" - android:layout_alignParentLeft="true" android:layout_alignParentTop="true" - android:layout_marginLeft="3dp" - android:layout_marginRight="@dimen/comment_item_avatar_right_margin" + android:layout_marginStart="3dp" + android:layout_marginEnd="@dimen/comment_item_avatar_right_margin" android:focusable="false" android:src="@drawable/placeholder_person" app:shapeAppearance="@style/CircularImageView" @@ -29,7 +28,7 @@ android:layout_width="@dimen/video_item_detail_pinned_image_width" android:layout_height="@dimen/video_item_detail_pinned_image_height" android:layout_alignParentTop="true" - android:layout_marginRight="@dimen/video_item_detail_pinned_right_margin" + android:layout_marginEnd="@dimen/video_item_detail_pinned_right_margin" android:layout_toEndOf="@+id/itemThumbnailView" android:contentDescription="@string/detail_pinned_comment_view_description" android:src="@drawable/ic_pin" @@ -56,18 +55,16 @@ android:layout_below="@id/itemTitleView" android:layout_marginBottom="@dimen/channel_item_description_to_details_margin" android:layout_toEndOf="@+id/itemThumbnailView" - android:layout_toRightOf="@+id/itemThumbnailView" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="@dimen/comment_item_content_text_size" tools:text="Comment Content, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tristique vitae sem vitae blanditLorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tristique vitae sem vitae blanditLorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tristique vitae sem vitae blandit" /> - @@ -76,8 +73,8 @@ android:layout_width="wrap_content" android:layout_height="@dimen/video_item_detail_like_image_height" android:layout_below="@id/itemCommentContentView" - android:layout_marginLeft="@dimen/video_item_detail_like_margin" - android:layout_toRightOf="@id/detail_thumbs_up_img_view" + android:layout_marginStart="@dimen/video_item_detail_like_margin" + android:layout_toEndOf="@id/detail_thumbs_up_img_view" android:lines="1" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="@dimen/video_item_detail_likes_text_size" @@ -89,8 +86,8 @@ android:layout_width="@dimen/video_item_detail_heart_image_size" android:layout_height="@dimen/video_item_detail_heart_image_size" android:layout_below="@id/itemCommentContentView" - android:layout_marginLeft="@dimen/video_item_detail_heart_margin" - android:layout_toRightOf="@+id/detail_thumbs_up_count_view" + android:layout_marginStart="@dimen/video_item_detail_heart_margin" + android:layout_toEndOf="@+id/detail_thumbs_up_count_view" android:contentDescription="@string/detail_heart_img_view_description" android:src="@drawable/ic_heart" android:visibility="gone" From 059db6fb31880b279ea30bc45c5048d7941cc30a Mon Sep 17 00:00:00 2001 From: Stypox Date: Tue, 11 Apr 2023 14:56:04 +0200 Subject: [PATCH 30/82] Add replies button to comments --- .../holder/CommentInfoItemHolder.java | 56 ++++++++++++++----- .../org/schabi/newpipe/util/Localization.java | 5 ++ app/src/main/res/layout/list_comment_item.xml | 38 ++++++++----- app/src/main/res/values/strings.xml | 4 ++ 4 files changed, 74 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentInfoItemHolder.java b/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentInfoItemHolder.java index afe641c1859..f1ac72e8960 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentInfoItemHolder.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/holder/CommentInfoItemHolder.java @@ -9,6 +9,7 @@ import android.util.Log; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; @@ -57,15 +58,20 @@ public class CommentInfoItemHolder extends InfoItemHolder { private final RelativeLayout itemRoot; private final ImageView itemThumbnailView; private final TextView itemContentView; + private final ImageView itemThumbsUpView; private final TextView itemLikesCountView; private final TextView itemTitleView; private final ImageView itemHeartView; private final ImageView itemPinnedView; + private final Button repliesButton; private final CompositeDisposable disposables = new CompositeDisposable(); - @Nullable private Description commentText; - @Nullable private StreamingService streamService; - @Nullable private String streamUrl; + @Nullable + private Description commentText; + @Nullable + private StreamingService streamService; + @Nullable + private String streamUrl; public CommentInfoItemHolder(final InfoItemBuilder infoItemBuilder, final ViewGroup parent) { @@ -74,10 +80,12 @@ public CommentInfoItemHolder(final InfoItemBuilder infoItemBuilder, itemRoot = itemView.findViewById(R.id.itemRoot); itemThumbnailView = itemView.findViewById(R.id.itemThumbnailView); itemContentView = itemView.findViewById(R.id.itemCommentContentView); + itemThumbsUpView = itemView.findViewById(R.id.detail_thumbs_up_img_view); itemLikesCountView = itemView.findViewById(R.id.detail_thumbs_up_count_view); itemTitleView = itemView.findViewById(R.id.itemTitleView); itemHeartView = itemView.findViewById(R.id.detail_heart_image_view); itemPinnedView = itemView.findViewById(R.id.detail_pinned_view); + repliesButton = itemView.findViewById(R.id.replies_button); commentHorizontalPadding = (int) infoItemBuilder.getContext() .getResources().getDimension(R.dimen.comments_horizontal_padding); @@ -97,6 +105,8 @@ public void updateFromItem(final InfoItem infoItem, } final CommentsInfoItem item = (CommentsInfoItem) infoItem; + + // load the author avatar PicassoHelper.loadAvatar(item.getUploaderAvatars()).into(itemThumbnailView); if (ImageStrategy.shouldLoadImages()) { itemThumbnailView.setVisibility(View.VISIBLE); @@ -109,6 +119,10 @@ public void updateFromItem(final InfoItem infoItem, } itemThumbnailView.setOnClickListener(view -> openCommentAuthor(item)); + + // setup the top row, with pinned icon, author name and comment date + itemPinnedView.setVisibility(item.isPinned() ? View.VISIBLE : View.GONE); + final String uploadDate; if (item.getUploadDate() != null) { uploadDate = Localization.relativeTime(item.getUploadDate().offsetDateTime()); @@ -117,9 +131,29 @@ public void updateFromItem(final InfoItem infoItem, } itemTitleView.setText(Localization.concatenateStrings(item.getUploaderName(), uploadDate)); - itemPinnedView.setVisibility(item.isPinned() ? View.VISIBLE : View.GONE); + + // setup bottom row, with likes, heart and replies button + if (item.getLikeCount() >= 0) { + itemLikesCountView.setText( + Localization.shortCount( + itemBuilder.getContext(), + item.getLikeCount())); + } else { + itemLikesCountView.setText("-"); + } + itemHeartView.setVisibility(item.isHeartedByUploader() ? View.VISIBLE : View.GONE); + final boolean hasReplies = item.getReplies() != null; + repliesButton.setOnClickListener(hasReplies ? (v) -> openRepliesFragment() : null); + repliesButton.setVisibility(hasReplies ? View.VISIBLE : View.GONE); + repliesButton.setText(hasReplies + ? Localization.replyCount(itemBuilder.getContext(), item.getReplyCount()) : ""); + ((RelativeLayout.LayoutParams) itemThumbsUpView.getLayoutParams()).topMargin = + hasReplies ? 0 : DeviceUtils.dpToPx(6, itemBuilder.getContext()); + + + // setup comment content and click listeners to expand/ellipsize it try { streamService = NewPipe.getService(item.getServiceId()); } catch (final ExtractionException e) { @@ -135,16 +169,6 @@ public void updateFromItem(final InfoItem infoItem, //noinspection ClickableViewAccessibility itemContentView.setOnTouchListener(CommentTextOnTouchListener.INSTANCE); - if (item.getLikeCount() >= 0) { - itemLikesCountView.setText( - Localization.shortCount( - itemBuilder.getContext(), - item.getLikeCount())); - } else { - itemLikesCountView.setText("-"); - } - - itemView.setOnClickListener(view -> { toggleEllipsize(); if (itemBuilder.getOnCommentsSelectedListener() != null) { @@ -278,4 +302,8 @@ private void linkifyCommentContentView(@Nullable final Consumer onComp onCompletion); } } + + private void openRepliesFragment() { + // TODO + } } 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 c4034252de3..20d21d76b49 100644 --- a/app/src/main/java/org/schabi/newpipe/util/Localization.java +++ b/app/src/main/java/org/schabi/newpipe/util/Localization.java @@ -209,6 +209,11 @@ public static String deletedDownloadCount(final Context context, final int delet deletedCount, shortCount(context, deletedCount)); } + public static String replyCount(final Context context, final int replyCount) { + return getQuantity(context, R.plurals.replies, 0, replyCount, + String.valueOf(replyCount)); + } + public static String getDurationString(final long duration) { final String output; diff --git a/app/src/main/res/layout/list_comment_item.xml b/app/src/main/res/layout/list_comment_item.xml index 3e0cce2e7e3..631ab204b3f 100644 --- a/app/src/main/res/layout/list_comment_item.xml +++ b/app/src/main/res/layout/list_comment_item.xml @@ -16,7 +16,6 @@ android:layout_height="42dp" android:layout_alignParentStart="true" android:layout_alignParentTop="true" - android:layout_marginStart="3dp" android:layout_marginEnd="@dimen/comment_item_avatar_right_margin" android:focusable="false" android:src="@drawable/placeholder_person" @@ -31,39 +30,37 @@ android:layout_marginEnd="@dimen/video_item_detail_pinned_right_margin" android:layout_toEndOf="@+id/itemThumbnailView" android:contentDescription="@string/detail_pinned_comment_view_description" - android:src="@drawable/ic_pin" - android:visibility="gone" - tools:visibility="visible" /> + android:src="@drawable/ic_pin" /> + tools:text="Author Name, Lorem ipsum • 5 months ago" /> + tools:text="@tools:sample/lorem/random[1]" /> @@ -71,26 +68,37 @@ + android:src="@drawable/ic_heart" /> + +