mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2025-04-06 02:37:18 +00:00
Merge pull request #12065 from tfga/YouTubeTemporaryPlaylist
Share as YouTube temporary playlist
This commit is contained in:
commit
3dcfdaf510
@ -0,0 +1,72 @@
|
||||
package org.schabi.newpipe.local.playlist
|
||||
|
||||
import android.content.Context
|
||||
import org.schabi.newpipe.R
|
||||
import org.schabi.newpipe.database.playlist.PlaylistStreamEntry
|
||||
import org.schabi.newpipe.extractor.exceptions.ParsingException
|
||||
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLinkHandlerFactory
|
||||
import org.schabi.newpipe.local.playlist.PlayListShareMode.JUST_URLS
|
||||
import org.schabi.newpipe.local.playlist.PlayListShareMode.WITH_TITLES
|
||||
import org.schabi.newpipe.local.playlist.PlayListShareMode.YOUTUBE_TEMP_PLAYLIST
|
||||
|
||||
fun export(
|
||||
shareMode: PlayListShareMode,
|
||||
playlist: List<PlaylistStreamEntry>,
|
||||
context: Context
|
||||
): String {
|
||||
return when (shareMode) {
|
||||
WITH_TITLES -> exportWithTitles(playlist, context)
|
||||
JUST_URLS -> exportJustUrls(playlist)
|
||||
YOUTUBE_TEMP_PLAYLIST -> exportAsYoutubeTempPlaylist(playlist)
|
||||
}
|
||||
}
|
||||
|
||||
fun exportWithTitles(
|
||||
playlist: List<PlaylistStreamEntry>,
|
||||
context: Context
|
||||
): String {
|
||||
|
||||
return playlist.asSequence()
|
||||
.map { it.streamEntity }
|
||||
.map { entity ->
|
||||
context.getString(
|
||||
R.string.video_details_list_item,
|
||||
entity.title,
|
||||
entity.url
|
||||
)
|
||||
}
|
||||
.joinToString(separator = "\n")
|
||||
}
|
||||
|
||||
fun exportJustUrls(playlist: List<PlaylistStreamEntry>): String {
|
||||
|
||||
return playlist.asSequence()
|
||||
.map { it.streamEntity.url }
|
||||
.joinToString(separator = "\n")
|
||||
}
|
||||
|
||||
fun exportAsYoutubeTempPlaylist(playlist: List<PlaylistStreamEntry>): String {
|
||||
|
||||
val videoIDs = playlist.asReversed().asSequence()
|
||||
.map { it.streamEntity.url }
|
||||
.mapNotNull(::getYouTubeId)
|
||||
.take(50) // YouTube limitation: temp playlists can't have more than 50 items
|
||||
.toList()
|
||||
.asReversed()
|
||||
.joinToString(separator = ",")
|
||||
|
||||
return "https://www.youtube.com/watch_videos?video_ids=$videoIDs"
|
||||
}
|
||||
|
||||
val linkHandler: YoutubeStreamLinkHandlerFactory = YoutubeStreamLinkHandlerFactory.getInstance()
|
||||
|
||||
/**
|
||||
* Gets the video id from a YouTube URL.
|
||||
*
|
||||
* @param url YouTube URL
|
||||
* @return the video id
|
||||
*/
|
||||
fun getYouTubeId(url: String): String? {
|
||||
|
||||
return try { linkHandler.getId(url) } catch (e: ParsingException) { null }
|
||||
}
|
@ -2,8 +2,13 @@ package org.schabi.newpipe.local.playlist;
|
||||
|
||||
import static org.schabi.newpipe.error.ErrorUtil.showUiErrorSnackbar;
|
||||
import static org.schabi.newpipe.ktx.ViewUtils.animate;
|
||||
import static org.schabi.newpipe.local.playlist.ExportPlaylistKt.export;
|
||||
import static org.schabi.newpipe.local.playlist.PlayListShareMode.JUST_URLS;
|
||||
import static org.schabi.newpipe.local.playlist.PlayListShareMode.WITH_TITLES;
|
||||
import static org.schabi.newpipe.local.playlist.PlayListShareMode.YOUTUBE_TEMP_PLAYLIST;
|
||||
import static org.schabi.newpipe.util.ThemeHelper.shouldUseGridLayout;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
@ -27,7 +32,6 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.viewbinding.ViewBinding;
|
||||
|
||||
import com.evernote.android.state.State;
|
||||
|
||||
import org.reactivestreams.Subscriber;
|
||||
import org.reactivestreams.Subscription;
|
||||
import org.schabi.newpipe.NewPipeDatabase;
|
||||
@ -385,34 +389,41 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
|
||||
}
|
||||
|
||||
/**
|
||||
* Shares the playlist as a list of stream URLs if {@code shouldSharePlaylistDetails} is
|
||||
* set to {@code false}. Shares the playlist name along with a list of video titles and URLs
|
||||
* if {@code shouldSharePlaylistDetails} is set to {@code true}.
|
||||
* Shares the playlist in one of 3 ways, depending on the value of {@code shareMode}:
|
||||
* <ul>
|
||||
* <li>{@code JUST_URLS}: shares the URLs only.</li>
|
||||
* <li>{@code WITH_TITLES}: each entry in the list is accompanied by its title.</li>
|
||||
* <li>{@code YOUTUBE_TEMP_PLAYLIST}: shares as a YouTube temporary playlist.</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param shouldSharePlaylistDetails Whether the playlist details should be included in the
|
||||
* shared content.
|
||||
* @param shareMode The way the playlist should be shared.
|
||||
*/
|
||||
private void sharePlaylist(final boolean shouldSharePlaylistDetails) {
|
||||
private void sharePlaylist(final PlayListShareMode shareMode) {
|
||||
final Context context = requireContext();
|
||||
|
||||
disposables.add(playlistManager.getPlaylistStreams(playlistId)
|
||||
.flatMapSingle(playlist -> Single.just(playlist.stream()
|
||||
.map(PlaylistStreamEntry::getStreamEntity)
|
||||
.map(streamEntity -> {
|
||||
if (shouldSharePlaylistDetails) {
|
||||
return context.getString(R.string.video_details_list_item,
|
||||
streamEntity.getTitle(), streamEntity.getUrl());
|
||||
} else {
|
||||
return streamEntity.getUrl();
|
||||
}
|
||||
})
|
||||
.collect(Collectors.joining("\n"))))
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(urlsText -> ShareUtils.shareText(
|
||||
context, name, shouldSharePlaylistDetails
|
||||
? context.getString(R.string.share_playlist_content_details,
|
||||
name, urlsText) : urlsText),
|
||||
throwable -> showUiErrorSnackbar(this, "Sharing playlist", throwable)));
|
||||
.flatMapSingle(playlist -> Single.just(export(
|
||||
|
||||
shareMode,
|
||||
playlist,
|
||||
context
|
||||
)))
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
urlsText -> {
|
||||
|
||||
final String content = shareMode == WITH_TITLES
|
||||
? context.getString(R.string.share_playlist_content_details,
|
||||
name,
|
||||
urlsText
|
||||
)
|
||||
: urlsText;
|
||||
|
||||
ShareUtils.shareText(context, name, content);
|
||||
},
|
||||
throwable -> showUiErrorSnackbar(this, "Sharing playlist", throwable)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public void removeWatchedStreams(final boolean removePartiallyWatched) {
|
||||
@ -872,13 +883,15 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
|
||||
private void createShareConfirmationDialog() {
|
||||
new AlertDialog.Builder(requireContext())
|
||||
.setTitle(R.string.share_playlist)
|
||||
.setMessage(R.string.share_playlist_with_titles_message)
|
||||
.setCancelable(true)
|
||||
.setPositiveButton(R.string.share_playlist_with_titles, (dialog, which) ->
|
||||
sharePlaylist(/* shouldSharePlaylistDetails= */ true)
|
||||
sharePlaylist(WITH_TITLES)
|
||||
)
|
||||
.setNeutralButton(R.string.share_playlist_as_youtube_temporary_playlist,
|
||||
(dialog, which) -> sharePlaylist(YOUTUBE_TEMP_PLAYLIST)
|
||||
)
|
||||
.setNegativeButton(R.string.share_playlist_with_list, (dialog, which) ->
|
||||
sharePlaylist(/* shouldSharePlaylistDetails= */ false)
|
||||
sharePlaylist(JUST_URLS)
|
||||
)
|
||||
.show();
|
||||
}
|
||||
|
@ -0,0 +1,8 @@
|
||||
package org.schabi.newpipe.local.playlist;
|
||||
|
||||
public enum PlayListShareMode {
|
||||
|
||||
JUST_URLS,
|
||||
WITH_TITLES,
|
||||
YOUTUBE_TEMP_PLAYLIST
|
||||
}
|
@ -856,6 +856,5 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">شارِك قائمة التشغيل</string>
|
||||
<string name="share_playlist_with_titles_message">شارِك قائمة التشغيل بتفاصيليها مثل اسم قائمة التشغيل وعناوين الفيديو أو كقائمة بسيطة من عناوين تشعّبيّة للفيديوهات</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
</resources>
|
||||
|
@ -856,7 +856,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">مشاركة قائمة التشغيل</string>
|
||||
<string name="share_playlist_with_titles_message">شارك تفاصيل قائمة التشغيل مثل اسم قائمة التشغيل وعناوين الفيديو أو كقائمة بسيطة من عناوين URL للفيديو</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="zero">رد %s</item>
|
||||
|
@ -787,7 +787,6 @@
|
||||
<string name="image_quality_high">Yüksək keyfiyyət</string>
|
||||
<string name="question_mark">\?</string>
|
||||
<string name="share_playlist">Oynatma siyahısın paylaş</string>
|
||||
<string name="share_playlist_with_titles_message">Pleylist adı və video başlıqları kimi təfsilatlar və ya video URL-lərin sadə siyahısı olaraq pleylist paylaş</string>
|
||||
<string name="share_playlist_with_titles">Başlıqlarla paylaşın</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
|
@ -781,7 +781,6 @@
|
||||
<string name="rewind">Пераматаць назад</string>
|
||||
<string name="replay">Паўтарыць</string>
|
||||
<string name="feed_fetch_channel_tabs_summary">Атрыманыя ўкладкі пры абнаўленні стужкі. Гэты параметр не прымяняецца, калі канал абнаўляецца ў хуткім рэжыме.</string>
|
||||
<string name="share_playlist_with_titles_message">Абагуліць плэйліст, перадаецца назва плэйліста і назвы відэа або просты спіс URL-адрасоў відэа</string>
|
||||
<string name="image_quality_medium">Сярэдняя якасць</string>
|
||||
<string name="metadata_uploader_avatars">Загрузнік аватараў</string>
|
||||
<string name="metadata_banners">Банеры</string>
|
||||
|
@ -714,7 +714,6 @@
|
||||
<string name="replay">Повторение</string>
|
||||
<string name="rewind">Превъртане назад</string>
|
||||
<string name="forward">Напред</string>
|
||||
<string name="share_playlist_with_titles_message">Споделете плейлист с подробности, като име на плейлист и заглавия на видеоклипове или като обикновен списък с URL адреси на видеоклипове</string>
|
||||
<string name="share_playlist_with_list">Споделяне на списък с URL</string>
|
||||
<string name="delete_playback_states_alert">Изтрии всички позиции на възпроизвеждане?</string>
|
||||
<string name="watch_history_states_deleted">Позициите за възпроизвеждане са изтрити</string>
|
||||
|
@ -806,7 +806,6 @@
|
||||
<string name="channel_tab_albums">Alba</string>
|
||||
<string name="rewind">Přetočení zpět</string>
|
||||
<string name="replay">Znovu přehrát</string>
|
||||
<string name="share_playlist_with_titles_message">Sdílejte playlist s podrobnostmi jako je jeho název a názvy videí, nebo jako jednoduchý seznam adres videí</string>
|
||||
<string name="image_quality_medium">Střední kvalita</string>
|
||||
<string name="metadata_banners">Bannery</string>
|
||||
<string name="channel_tab_playlists">Playlisty</string>
|
||||
|
@ -772,7 +772,6 @@
|
||||
<string name="image_quality_none">Indlæs ikke billeder</string>
|
||||
<string name="image_quality_low">Lav kvalitet</string>
|
||||
<string name="share_playlist">Del Playliste</string>
|
||||
<string name="share_playlist_with_titles_message">Del playliste med detajler såsom playlistenavn og videotitler eller som en simpel liste over video-URL\'er</string>
|
||||
<string name="share_playlist_with_titles">Del med Titler</string>
|
||||
<string name="share_playlist_with_list">Del URL-liste</string>
|
||||
<plurals name="replies">
|
||||
|
@ -804,7 +804,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Wiedergabeliste teilen</string>
|
||||
<string name="share_playlist_with_titles_message">Teile die Wiedergabeliste mit Details wie dem Namen der Wiedergabeliste und den Videotiteln oder als einfache Liste von Video-URLs</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%s Antwort</item>
|
||||
|
@ -804,7 +804,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Κοινοποίηση λίστας</string>
|
||||
<string name="share_playlist_with_titles_message">Μοιραστείτε τη λίστα αναπαραγωγής με λεπτομέρειες όπως το όνομα της λίστας αναπαραγωγής και τους τίτλους βίντεο ή ως μια απλή λίστα διευθύνσεων URL βίντεο</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%s απάντηση</item>
|
||||
|
@ -616,7 +616,6 @@
|
||||
<string name="no_video_streams_available_for_external_players">Neniu filmofluo ludeblas por ekstera ludilo</string>
|
||||
<string name="channel_tab_videos">Filmetoj</string>
|
||||
<string name="remove_watched_popup_warning">Filmetoj kiuj spektiĝis antaŭ aŭ post sia aldoniĝo al la ludlisto foriĝus.. \nĈu vi certas? Ĉi tio nemalfareblus!</string>
|
||||
<string name="share_playlist_with_titles_message">Kunhavigus ludliston inkluzivante informojn kiel la nomoj de listeroj, aŭ kiel simpla listo de ligiloj</string>
|
||||
<string name="reset_settings_summary">Restarigi implicitajn agordojn</string>
|
||||
<string name="remove_watched_popup_yes_and_partially_watched_videos">Jes, kaj ankaŭ parte spektitajn filmetojn</string>
|
||||
</resources>
|
||||
|
@ -818,7 +818,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Compartir la lista de reproducción</string>
|
||||
<string name="share_playlist_with_titles_message">Compartir las listas de reproducción con los detalles como el nombre de la lista y los títulos de los vídeos o como una simple lista de una dirección URL con los vídeos</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%s respuesta</item>
|
||||
|
@ -790,7 +790,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Jaga esitusloendit</string>
|
||||
<string name="share_playlist_with_titles_message">Jaga esitusloendit kas väga detailse teabega palade kohta või lihtsa url\'ide loendina</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="show_more">Näita veel</string>
|
||||
<plurals name="replies">
|
||||
|
@ -774,7 +774,6 @@
|
||||
<string name="notification_actions_summary_android13">Editatu beheko jakinarazpen ekintza bakoitza gainean sakatuz. Lehen hiru ekintzak (erreproduzitu/pausatu, aurrekoa eta hurrengoa) sistemarengatik ezarrita daude eta ezin dira pertsonalizatu.</string>
|
||||
<string name="rewind">Atzera egin</string>
|
||||
<string name="image_quality_title">Irudiaren kalitatea</string>
|
||||
<string name="share_playlist_with_titles_message">Partekatu erreprodukzio-zerrenda xehetasunekin, esate baterako, erreprodukzio-zerrendaren izena eta bideo-izenburuak edo bideo-URLen zerrenda soil gisa</string>
|
||||
<string name="more_options">Aukera gehiago</string>
|
||||
<string name="duration">Iraupena</string>
|
||||
<string name="forward">Aurrera egin</string>
|
||||
|
@ -759,7 +759,6 @@
|
||||
<string name="rewind">Kelaa taaksepäin</string>
|
||||
<string name="feed_fetch_channel_tabs_summary">Noudettavat välilehdet syötettä päivitettäessä. Tällä valinnalla ei ole vaikutusta, jos kanava päivitetään käyttämällä nopeaa tilaa.</string>
|
||||
<string name="delete_downloaded_files_confirm">Poistetaanko kaikki ladatut tiedostot levyltä\?</string>
|
||||
<string name="share_playlist_with_titles_message">Jaa soittolista, jossa on tietoja, kuten soittolistan nimi ja videon nimi, tai yksinkertainen luettelo videoiden URL-osoitteista</string>
|
||||
<string name="image_quality_medium">Keskilaatu</string>
|
||||
<string name="metadata_uploader_avatars">Lataajan avatarit</string>
|
||||
<string name="percent">Prosentti</string>
|
||||
|
@ -817,7 +817,6 @@
|
||||
<string name="forward">Avancer</string>
|
||||
<string name="rewind">Rembobiner</string>
|
||||
<string name="replay">Rejouer</string>
|
||||
<string name="share_playlist_with_titles_message">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</string>
|
||||
<string name="metadata_uploader_avatars">Avatars du téléverseur</string>
|
||||
<string name="image_quality_summary">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</string>
|
||||
<string name="play">Lire</string>
|
||||
|
@ -815,7 +815,6 @@
|
||||
<string name="metadata_banners">Encabezados</string>
|
||||
<string name="show_channel_tabs_summary">Lapelas a mostrar nas páxinas das canles</string>
|
||||
<string name="image_quality_summary">Escolla da calidade das imaxes e se cargar as imaxes na súa totalidade, para reducir o uso de datos e memoria. Os cambios limpan a caché das imaxes na memoria e no disco - %s</string>
|
||||
<string name="share_playlist_with_titles_message">Compartir a lista de reprodución con detalles como o nome da lista e os títulos dos videos ou como unha lista sinxela cos enlaces URL dos videos</string>
|
||||
<string name="share_playlist_with_list">Compartir lista de URLs</string>
|
||||
<string name="import_settings_vulnerable_format">A configuración da exportación a ser importada emprega un formato vulnerable que fica obsoleto dende NewPipe 0.27.0. Comprobe que a exportación que está a importar proveña dunha fonte fiable e preferibelmente empregue exportacións de NewPipe 0.27.0 ou posterior. A compatibilidade coa importación deste formato vulnerable será eliminada por completo próximamente e as versión antigas de NewPipe non poderán importar configuracións de exportacións dende novas versións.</string>
|
||||
<string name="channel_tab_tracks">Pistas</string>
|
||||
|
@ -830,7 +830,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">שיתוף רשימת נגינה</string>
|
||||
<string name="share_playlist_with_titles_message">שיתוף רשימת נגינה עם פרטים כגון שם רשימת נגינה וכותרות סרטונים או כרשימה פשוטה של כתובות סרטונים</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="show_more">להציג עוד</string>
|
||||
<string name="show_less">להציג פחות</string>
|
||||
|
@ -804,7 +804,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">प्लेलिस्ट साझा करें</string>
|
||||
<string name="share_playlist_with_titles_message">प्लेलिस्ट को प्लेलिस्ट नाम और वीडियो शीर्षक जैसे विवरण के साथ या वीडियो यूआरएल की एक सरल सूची के रूप में साझा करें</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%s जवाब</item>
|
||||
|
@ -800,7 +800,6 @@
|
||||
<string name="image_quality_medium">Srednja kvaliteta</string>
|
||||
<string name="image_quality_high">Visoka kvaliteta</string>
|
||||
<string name="question_mark">\?</string>
|
||||
<string name="share_playlist_with_titles_message">Dijeli playlistu s detaljima kao što su ime playliste i naslovi videa ili kao jednostavan popis URL-ova videa</string>
|
||||
<string name="share_playlist_with_titles">Dijeli s naslovima</string>
|
||||
<string name="share_playlist_with_list">Dijeli popis URL-ova</string>
|
||||
<string name="video_details_list_item">– %1$s: %2$s</string>
|
||||
|
@ -796,7 +796,6 @@
|
||||
<string name="image_quality_high">Magas minőségű</string>
|
||||
<string name="question_mark">\?</string>
|
||||
<string name="share_playlist">Lejátszási lista megosztása</string>
|
||||
<string name="share_playlist_with_titles_message">Lejátszási lista megosztása olyan részletekkel, mint például a lejátszási lista neve és a videó címe, vagy a videó webcímek egyszerű listájaként</string>
|
||||
<string name="share_playlist_with_titles">Megosztás címekkel</string>
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
|
@ -790,7 +790,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Bagikan Daftar Putar</string>
|
||||
<string name="share_playlist_with_titles_message">Bagikan daftar putar dengan detail seperti nama daftar putar dan judul video atau sebagai daftar video URL yang sederhana</string>
|
||||
<string name="metadata_banners">Panji</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="notification_actions_summary_android13">Sentuh untuk menyunting tindakan notifikasi di bawah. Tiga tindakan pertama (mainkan/jeda, sebelumnya dan selanjutnya) disetel oleh sistem dan tidak bisa dikustomisasi.</string>
|
||||
|
@ -792,7 +792,6 @@
|
||||
<string name="unset_playlist_thumbnail">Losa varanlega smámynd</string>
|
||||
<string name="notification_actions_summary_android13">Breyttu hverri tilkynningu hér fyrir neðan með því að ýta á hana. Fyrstu þrjár aðgerðirnar (spila/bíða, fyrra og næsta) eru skilgreindar af kerfinu og er því ekki hægt að sérsníða.</string>
|
||||
<string name="feed_fetch_channel_tabs_summary">Flipar sem á að sækja við uppfærslu þessa streymis. Þetta hefur engin áhrif ef rás er uppfærð með hraðstreymisham.</string>
|
||||
<string name="share_playlist_with_titles_message">Deildu spilunarlista með atriðum eins og heiti spilunarlistans og titlum myndskeiða eða sem einföldum lista yfir slóðir á myndskeið</string>
|
||||
<string name="use_exoplayer_decoder_fallback_title">Nota varaeiginleika ExoPlayer-afkóðarans</string>
|
||||
<string name="new_seek_duration_toast">Vegna takmarkana í ExoPlayer-spilaranum var tímalengd hoppa sett á %d sekúndur</string>
|
||||
<string name="disable_media_tunneling_automatic_info">Margmiðlunargöng (media tunneling) voru gerð óvirk á tækinu þínu þar sem þessi gerð tækja er þekkt fyrir að styðja ekki þennan eiginleika.</string>
|
||||
|
@ -817,7 +817,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Condividi playlist</string>
|
||||
<string name="share_playlist_with_titles_message">Condividi la playlist con dettagli come il suo nome e i titoli video o come un semplice elenco di URL video</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%s risposta</item>
|
||||
|
@ -791,7 +791,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">プレイリストを共有</string>
|
||||
<string name="share_playlist_with_titles_message">プレイリスト名やビデオタイトルなどの詳細を含むプレイリスト、またはビデオURLのみのシンプルなリストとしてプレイリストを共有します</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="other">%sの返信</item>
|
||||
|
@ -776,7 +776,6 @@
|
||||
<string name="rewind">되감기</string>
|
||||
<string name="replay">다시 재생</string>
|
||||
<string name="feed_fetch_channel_tabs_summary">피드를 업데이트할 때 가져올 탭입니다. 빠른 모드를 사용하여 채널을 업데이트하는 경우 이 옵션은 효과가 없습니다.</string>
|
||||
<string name="share_playlist_with_titles_message">재생목록 이름, 동영상 제목 등의 세부정보 또는 간단한 동영상 URL 목록으로 재생목록을 공유하세요</string>
|
||||
<string name="image_quality_medium">중간 품질</string>
|
||||
<string name="metadata_uploader_avatars">업로더 아바타</string>
|
||||
<string name="metadata_banners">배너</string>
|
||||
|
@ -825,7 +825,6 @@
|
||||
<string name="channel_tab_videos">Vaizdo įrašai</string>
|
||||
<string name="channel_tab_tracks">Takeliai</string>
|
||||
<string name="image_quality_summary">Pasirinkite paveikslėlių kokybę ir ar apskritai įkelti paveikslėlius, kad sumažintumėte duomenų ir atminties naudojimą. Pakeitimai išvalo atmintyje ir diske esančių vaizdų talpyklą - %s</string>
|
||||
<string name="share_playlist_with_titles_message">Dalintis grojaraščiu su tokia informacija kaip grojaraščio pavadinimas ir vaizdo įrašo pavadinimas arba paprastas vaizdo įrašų nuorodų sąrašas</string>
|
||||
<string name="share_playlist_with_titles">Dalintis su pavadinimais</string>
|
||||
<string name="share_playlist">Dalintis grojaraščiu</string>
|
||||
<string name="share_playlist_with_list">Dalintis nuorodų sąrašu</string>
|
||||
|
@ -824,7 +824,6 @@
|
||||
<string name="audio_track_name">%1$s %2$s</string>
|
||||
<string name="channel_tab_tracks">Skaņdarbi</string>
|
||||
<string name="channel_tab_shorts">Īsie video</string>
|
||||
<string name="share_playlist_with_titles_message">Kopīgot atskaņošanas saraksta nosaukumu un to video nosaukumus vai tikai atskaņošanas sarakstā iekļauto video URL saites</string>
|
||||
<string name="share_playlist">Kopīgot atskaņošanas sarakstu</string>
|
||||
<string name="share_playlist_with_titles">Kopīgot nosaukumus</string>
|
||||
<string name="import_settings_vulnerable_format">Importētā eksporta iestatījumi izmanto ievainojamo formātu, kas tika pārtraukts kopš NewPipe 0.27.0 versijas. Pārliecinieties, ka importētie dati ir no uzticama avota, un turpmāk ir vēlams izmantot tikai datus, kas veikti NewPipe 0.27.0 vai jaunākās versijās. Iestatījumu importēšanas atbalsts šajā neaizsargātajā formātā drīzumā tiks pilnībā aizvākts, un tad vecās NewPipe versijas vairs nevarēs importēt iestatījumus, kas veikti jaunajās versijās.</string>
|
||||
|
@ -713,7 +713,6 @@
|
||||
<string name="peertube_instance_add_fail">Инстанцата не може да биде потврдена</string>
|
||||
<string name="image_quality_summary">Изберете го квалитетот на сликите и дали воопшто да се вчитуваат слики, за да го намалите користењето на интернет и меморија. Промените го чистат кешот на сликите (анг. image cache), како и во меморијата, така и на дискот — %s</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="share_playlist_with_titles_message">Споделете ја плејлистата со подробности (детали), како името на плејлистата и насловите на видеата или како едноставен список од линковите на видеата</string>
|
||||
<string name="none">Ништо</string>
|
||||
<string name="import_settings_vulnerable_format">Поставките во извезениот фајл кој се увезува користат ранлив формат кој повеќе не е поддржан од NewPipe 0.27.0. Уверете се дека извезениот фајл кој се увезува е од доверлив извор и претпочитајте во иднина да користите само износи добиени од NewPipe 0.27.0 или понова верзија. Поддршката за увезување поставки од овој ранлив формат наскоро ќе биде целосно укината и тогаш старите верзии на NewPipe повеќе нема да можат да увезуваат поставки од износи од новите верзии.</string>
|
||||
<string name="clear_queue_confirmation_title">Побарај потврда пред чистење на редоследот</string>
|
||||
|
@ -503,7 +503,6 @@
|
||||
<string name="image_quality_low">Mutu rendah</string>
|
||||
<string name="image_quality_medium">Mutu sederhana</string>
|
||||
<string name="image_quality_high">Mutu tinggi</string>
|
||||
<string name="share_playlist_with_titles_message">Kongsikan senarai main dengan butiran seperti nama senarai main dan tajuk video atau sebagai senarai ringkas URL video</string>
|
||||
<string name="share_playlist_with_titles">Kongsi dengan Tajuk</string>
|
||||
<string name="share_playlist_with_list">Kongsi senarai URL</string>
|
||||
<string name="show_more">Tunjukkan lagi</string>
|
||||
|
@ -804,7 +804,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Afspeellijst delen</string>
|
||||
<string name="share_playlist_with_titles_message">Deel afspeellijst met details zoals afspeellijstnaam en videotitels of als een eenvoudige lijst met video-URL\'s</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%s reactie</item>
|
||||
|
@ -804,7 +804,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">ଖେଳ ତାଲିକା ସହଭାଗ କରନ୍ତୁ</string>
|
||||
<string name="share_playlist_with_titles_message">ପ୍ଲେ-ଲିଷ୍ଟ ନାମ ଏବଂ ଭିଡିଓ ଶୀର୍ଷକ କିମ୍ବା ଭିଡିଓ URLଗୁଡ଼ିକର ଏକ ସରଳ ତାଲିକା ଭାବରେ ବିବରଣୀ ସହିତ ପ୍ଲେ-ଲିଷ୍ଟ ଅଂଶୀଦାର କରନ୍ତୁ</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="show_more">ଅଧିକ ଦର୍ଶାନ୍ତୁ</string>
|
||||
<string name="notification_actions_summary_android13">ଏହା ଉପରେ ଟ୍ୟାପ କରି ନିମ୍ନରେ ଦିଆଯାଇଥିବା ପ୍ରତ୍ୟେକ ବିଜ୍ଞପ୍ତି କାର୍ଯ୍ୟକୁ ସମ୍ପାଦନ କରନ୍ତୁ । ପ୍ରଥମ ତିନୋଟି କାର୍ଯ୍ୟ (ଖେଳ/ବିରତି, ପୂର୍ବବର୍ତ୍ତୀ ଏବଂ ପରବର୍ତ୍ତୀ) ତନ୍ତ୍ର ଦ୍ୱାରା ସେଟ କରାଯାଇଥାଏ ଏବଂ ଏହାକୁ ଇଚ୍ଛାରୂପଣ କରାଯାଇପାରିବ ନାହିଁ ।</string>
|
||||
|
@ -804,7 +804,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">ਪਲੇਲਿਸਟ ਸਾਂਝੀ ਕਰੋ</string>
|
||||
<string name="share_playlist_with_titles_message">ਪਲੇਲਿਸਟ ਨੂੰ ਪਲੇਲਿਸਟ ਨਾਮ ਅਤੇ ਵੀਡੀਓ ਸਿਰਲੇਖ ਜਿਹੇ ਵੇਰਵਿਆਂ ਸਮੇਤ ਜਾਂ ਵੀਡੀਓ URL ਦੀ ਇੱਕ ਸਰਲ ਸੂਚੀ ਦੇ ਰੂਪ ਵਿੱਚ ਸਾਂਝਾ ਕਰੋ</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%s ਜਵਾਬ</item>
|
||||
|
@ -825,7 +825,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Udostępnij playlistę</string>
|
||||
<string name="share_playlist_with_titles_message">Udostępnij playlistę ze szczegółami, takimi jak nazwa playlisty i tytuły wideo, lub jako prostą listę adresów URL wideo.</string>
|
||||
<string name="video_details_list_item">– %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%s odpowiedź</item>
|
||||
|
@ -791,8 +791,9 @@
|
||||
<string name="channel_tab_livestreams">Ao vivo</string>
|
||||
<string name="image_quality_title">Qualidade da imagem</string>
|
||||
<string name="question_mark">\?</string>
|
||||
<string name="share_playlist_with_list">Compartilhar URL</string>
|
||||
<string name="share_playlist_with_titles">Compartilhar com título</string>
|
||||
<string name="share_playlist_with_list">Compartilhar URLs</string>
|
||||
<string name="share_playlist_with_titles">Compartilhar com títulos</string>
|
||||
<string name="share_playlist_as_youtube_temporary_playlist">Compartilhar como playlist temporária do YouTube</string>
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="toggle_screen_orientation">Alternar orientação da tela</string>
|
||||
@ -808,7 +809,6 @@
|
||||
<string name="forward">Avançar</string>
|
||||
<string name="rewind">Retroceder</string>
|
||||
<string name="replay">Repetir</string>
|
||||
<string name="share_playlist_with_titles_message">Compartilhar playlist com detalhes como o nome da playlist e títulos de vídeo ou como uma lista simples dos URL de vídeos</string>
|
||||
<string name="image_quality_medium">Qualidade média</string>
|
||||
<string name="metadata_uploader_avatars">Fotos de perfil do autor</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
|
@ -804,7 +804,6 @@
|
||||
<string name="rewind">Recuar</string>
|
||||
<string name="replay">Repetição</string>
|
||||
<string name="feed_fetch_channel_tabs_summary">Separadores a obter ao atualizar o feed. Esta opção não tem efeito se um canal for atualizado utilizando o modo rápido.</string>
|
||||
<string name="share_playlist_with_titles_message">Partilhe a lista de reprodução com detalhes como o nome da lista de reprodução e os títulos dos vídeos ou como uma simples lista de URLs de vídeos</string>
|
||||
<string name="image_quality_medium">Média qualidade</string>
|
||||
<string name="metadata_uploader_avatars">Avatar dos publicadores</string>
|
||||
<string name="metadata_banners">Bandeiras</string>
|
||||
|
@ -817,7 +817,6 @@
|
||||
<string name="channel_tab_channels">Canais</string>
|
||||
<string name="previous_stream">Vídeo anterior</string>
|
||||
<string name="channel_tab_livestreams">Direto</string>
|
||||
<string name="share_playlist_with_titles_message">Partilhe a lista de reprodução com detalhes como o nome da lista de reprodução e os títulos dos vídeos ou como uma simples lista de URLs de vídeos</string>
|
||||
<string name="image_quality_summary">Escolha a qualidade das imagens e se pretende carregar imagens, para reduzir a utilização de dados e de memória. As alterações limpam a cache de imagens na memória e no disco - %s</string>
|
||||
<string name="show_more">Mostrar mais</string>
|
||||
<plurals name="replies">
|
||||
|
@ -791,7 +791,6 @@
|
||||
<string name="feed_fetch_channel_tabs_summary">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.</string>
|
||||
<string name="prefer_descriptive_audio_summary">Selectați o coloană sonoră cu descrieri pentru persoane cu deficiențe vizuale, dacă este disponibilă</string>
|
||||
<string name="left_gesture_control_title">Acțiunea gestului din stânga</string>
|
||||
<string name="share_playlist_with_titles_message">Distribuiți playlistul cu detalii precum numele playlistului și titlurile videourilor sau ca o simplă listă de URL-uri a videourilor</string>
|
||||
<string name="image_quality_medium">Calitate medie</string>
|
||||
<string name="prefer_descriptive_audio_title">Preferați audioul descriptiv</string>
|
||||
<string name="progressive_load_interval_summary">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ă</string>
|
||||
|
@ -808,7 +808,6 @@
|
||||
<string name="rewind">Перемотать назад</string>
|
||||
<string name="replay">Повторить</string>
|
||||
<string name="feed_fetch_channel_tabs_summary">Получаемые вкладки при обновлении ленты. Эта функция не применяется, если канал обновляется с помощью быстрого режима.</string>
|
||||
<string name="share_playlist_with_titles_message">Поделиться подборкой с подробностями, такими как название подборки и названия видео, или просто списком URL видео</string>
|
||||
<string name="image_quality_medium">Среднее качество</string>
|
||||
<string name="metadata_uploader_avatars">Загрузчик аватаров</string>
|
||||
<string name="metadata_banners">Баннеры</string>
|
||||
|
@ -804,7 +804,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">プレイリストちゅーゆーいん</string>
|
||||
<string name="share_playlist_with_titles_message">プレイリストめいてぃがろービデオタイトルんでーぬしょうさいくくむるプレイリスト、あらんでぃビデオURLぬみぬシンプルやるリストとぅしてぃプレイリストちゅーゆーいんさびーん</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%sぬへんしん</item>
|
||||
|
@ -678,7 +678,6 @@
|
||||
<string name="image_quality_low">ᱞᱟᱯᱷᱟᱝ ᱥᱤᱠᱷᱱᱟ.</string>
|
||||
<string name="image_quality_medium">ᱛᱟᱞᱢᱟ ᱥᱤᱠᱷᱱᱟᱹᱛ</string>
|
||||
<string name="image_quality_high">ᱩᱥᱩᱞ ᱥᱤᱠᱷᱱᱟᱹᱛ</string>
|
||||
<string name="share_playlist_with_titles_message">ᱯᱷᱟᱭᱞᱤᱥᱴ ᱧᱩᱛᱩᱢ ᱟᱨ ᱵᱷᱤᱰᱤᱭᱳ ᱧᱩᱛᱩᱢ ᱞᱮᱠᱟᱛᱮ ᱟᱨᱵᱟᱝ ᱵᱷᱤᱰᱤᱭᱳ URL ᱨᱮᱱᱟᱜ ᱢᱤᱫ ᱞᱮᱠᱟᱱ ᱞᱤᱥᱴᱤ ᱞᱮᱠᱟᱛᱮ ᱴᱷᱟᱶ ᱮᱢ ᱢᱮ</string>
|
||||
<string name="share_playlist_with_list">URL ᱛᱟᱹᱞᱠᱟᱹ ᱥᱟᱯᱲᱟᱣ</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="notification_scale_to_square_image_summary">ᱱᱚᱴᱤᱯᱷᱤᱠᱮᱥᱚᱱ ᱨᱮ ᱑᱖:᱙ ᱠᱷᱚᱱ ᱑:᱑ ᱟᱥᱯᱮᱠᱴ ᱚᱱᱩᱯᱟᱹᱛ ᱨᱮ ᱵᱷᱤᱰᱤᱭᱳ ᱛᱷᱚᱢᱵᱱᱮᱞ ᱜᱮᱫᱽ ᱢᱮ</string>
|
||||
|
@ -788,7 +788,6 @@
|
||||
<string name="rewind">Torra in segus</string>
|
||||
<string name="replay">Torra a reprodùere</string>
|
||||
<string name="feed_fetch_channel_tabs_summary">Ischedas de recuperare cando agiornas sa fonte. Custa optzione non tenet efetu si unu canale benit agiornadu impreende sa modalidade lestra.</string>
|
||||
<string name="share_playlist_with_titles_message">Cumpartzi s\'iscalita cun detàllios che a su nùmene de s\'iscalita e sos tìtulos de sos vìdeos o che a una lista simpre de URL de vìdeos</string>
|
||||
<string name="image_quality_medium">Calidade mesana</string>
|
||||
<string name="metadata_uploader_avatars">Avatars de su carrigadore</string>
|
||||
<string name="metadata_banners">Insignas</string>
|
||||
|
@ -823,7 +823,6 @@
|
||||
<item quantity="few">%s odpovede</item>
|
||||
<item quantity="other">%s odpovedí</item>
|
||||
</plurals>
|
||||
<string name="share_playlist_with_titles_message">Zdieľajte playlist s podrobnosťami, ako je jeho názov a názvy videí, alebo ako jednoduchý zoznam URL adries videí</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
|
@ -817,7 +817,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Дели плејлисту</string>
|
||||
<string name="share_playlist_with_titles_message">Делите плејлисту са детаљима, као што су назив плејлисте и наслови видео снимака или као једноставна листа URL адреса видео снимака</string>
|
||||
<string name="video_details_list_item">-%1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="one">%s одговор</item>
|
||||
|
@ -804,7 +804,6 @@
|
||||
<string name="metadata_uploader_avatars">Uppladdarens visningsbilder</string>
|
||||
<string name="metadata_banners">Banderoller</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="share_playlist_with_titles_message">Dela spellistan med detaljer så som spellistans namn och video-titlarna eller som en enkel lista med URL till videorna</string>
|
||||
<string name="image_quality_summary">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</string>
|
||||
<string name="show_more">Visa mer</string>
|
||||
<plurals name="replies">
|
||||
|
@ -470,7 +470,6 @@
|
||||
<string name="forward">முன்னோக்கி</string>
|
||||
<string name="image_quality_title">பட தகுதி</string>
|
||||
<string name="image_quality_high">உயர் தகுதி</string>
|
||||
<string name="share_playlist_with_titles_message">பிளேலிச்ட் பெயர் மற்றும் வீடியோ தலைப்புகள் போன்ற விவரங்களுடன் அல்லது வீடியோ முகவரி களின் எளிய பட்டியலாக பிளேலிச்ட்டைப் பகிரவும்</string>
|
||||
<string name="more_options">மேலும் விருப்பங்கள்</string>
|
||||
<string name="duration">காலம்</string>
|
||||
<string name="rewind">முன்னாடி</string>
|
||||
|
@ -791,7 +791,6 @@
|
||||
<string name="rewind">Geri sar</string>
|
||||
<string name="replay">Yeniden oynat</string>
|
||||
<string name="feed_fetch_channel_tabs_summary">Besleme güncellenirken alınacak sekmeler. Hızlı kip kullanılırken kanal güncelleniyorsa bu seçeneğin etkisi yoktur.</string>
|
||||
<string name="share_playlist_with_titles_message">Oynatma listesini, oynatma listesi adı ve video başlıkları gibi ayrıntılarla ya da video adreslerinin basit listesi olarak paylaş</string>
|
||||
<string name="image_quality_medium">Orta nitelik</string>
|
||||
<string name="metadata_uploader_avatars">Yükleyen avatarları</string>
|
||||
<string name="metadata_banners">Afişler</string>
|
||||
|
@ -821,7 +821,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">Поділитися добіркою</string>
|
||||
<string name="share_playlist_with_titles_message">Поділитися добіркою з подробицями, такими як назва добірки та назви відео, або просто списком URL-адрес відео</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="show_more">Показати більше</string>
|
||||
<string name="notification_actions_summary_android13">Відредагуйте кожну дію сповіщення, натиснувши на неї. Перші три дії (відтворення/пауза, попередній і наступний) встановлюються системою і не можуть бути змінені.</string>
|
||||
|
@ -787,7 +787,6 @@
|
||||
<string name="forward">Tua đi</string>
|
||||
<string name="channel_tab_albums">Album</string>
|
||||
<string name="rewind">Tua lại</string>
|
||||
<string name="share_playlist_with_titles_message">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 video đơn giản</string>
|
||||
<string name="image_quality_medium">Chất lượng trung bình</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="image_quality_summary">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</string>
|
||||
|
@ -791,7 +791,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">分享播放列表</string>
|
||||
<string name="share_playlist_with_titles_message">分享详细的播放列表(带名称和视频标题等信息)或只分享视频网址列表</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="other">%s 条回复</item>
|
||||
|
@ -775,7 +775,6 @@
|
||||
<string name="rewind">跳後</string>
|
||||
<string name="replay">重播</string>
|
||||
<string name="feed_fetch_channel_tabs_summary">更新摘要嘅時候要攞邊啲分頁返嚟。若果頻道用快速模式更新,就橫豎都無相干嘞。</string>
|
||||
<string name="share_playlist_with_titles_message">分享播放清單要詳細包含播放清單個名同埋入面啲片名,定簡單得啲影片嘅 URL</string>
|
||||
<string name="image_quality_medium">一般畫質</string>
|
||||
<string name="metadata_uploader_avatars">上載者嘅頭像</string>
|
||||
<string name="metadata_banners">橫額</string>
|
||||
|
@ -791,7 +791,6 @@
|
||||
<string name="share_playlist_content_details">%1$s
|
||||
\n%2$s</string>
|
||||
<string name="share_playlist">分享播放清單</string>
|
||||
<string name="share_playlist_with_titles_message">分享包含播放清單名稱與影片標題等詳細資訊的播放清單,或是僅作為簡單的影片網址清單</string>
|
||||
<string name="video_details_list_item">- %1$s:%2$s</string>
|
||||
<plurals name="replies">
|
||||
<item quantity="other">%s 個回覆</item>
|
||||
|
@ -846,9 +846,9 @@
|
||||
<string name="image_quality_high">High quality</string>
|
||||
<string name="question_mark">\?</string>
|
||||
<string name="share_playlist">Share Playlist</string>
|
||||
<string name="share_playlist_with_titles_message">Share playlist with details such as playlist name and video titles or as a simple list of video URLs</string>
|
||||
<string name="share_playlist_with_titles">Share with Titles</string>
|
||||
<string name="share_playlist_with_list">Share URL list</string>
|
||||
<string name="share_playlist_as_youtube_temporary_playlist">Share as YouTube temporary playlist</string>
|
||||
<string name="video_details_list_item">- %1$s: %2$s</string>
|
||||
<string name="share_playlist_content_details">%1$s\n%2$s</string>
|
||||
<plurals name="replies">
|
||||
|
@ -0,0 +1,104 @@
|
||||
package org.schabi.newpipe.local.playlist
|
||||
|
||||
import android.content.Context
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
import org.mockito.Mockito.mock
|
||||
import org.schabi.newpipe.database.playlist.PlaylistStreamEntry
|
||||
import org.schabi.newpipe.database.stream.model.StreamEntity
|
||||
import org.schabi.newpipe.extractor.stream.StreamType
|
||||
import org.schabi.newpipe.local.playlist.PlayListShareMode.JUST_URLS
|
||||
import org.schabi.newpipe.local.playlist.PlayListShareMode.YOUTUBE_TEMP_PLAYLIST
|
||||
import java.util.stream.Stream
|
||||
|
||||
class ExportPlaylistTest {
|
||||
|
||||
@Test
|
||||
fun exportAsYouTubeTempPlaylist() {
|
||||
val playlist = asPlaylist(
|
||||
"https://www.youtube.com/watch?v=10000000000",
|
||||
"https://soundcloud.com/cautious-clayofficial/cold-war-2", // non-Youtube URLs should be ignored
|
||||
"https://www.youtube.com/watch?v=20000000000",
|
||||
"https://www.youtube.com/watch?v=30000000000"
|
||||
)
|
||||
|
||||
val url = export(YOUTUBE_TEMP_PLAYLIST, playlist, mock(Context::class.java))
|
||||
|
||||
assertEquals(
|
||||
"https://www.youtube.com/watch_videos?video_ids=" +
|
||||
"10000000000," +
|
||||
"20000000000," +
|
||||
"30000000000",
|
||||
url
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun exportMoreThan50Items() {
|
||||
/*
|
||||
* Playlist has more than 50 items => take the last 50
|
||||
* (YouTube limitation)
|
||||
*/
|
||||
|
||||
val playlist = asPlaylist(
|
||||
(10..70)
|
||||
.map { id -> "https://www.youtube.com/watch?v=aaaaaaaaa$id" } // YouTube video IDs are 11 characters long
|
||||
.stream()
|
||||
)
|
||||
|
||||
val url = export(YOUTUBE_TEMP_PLAYLIST, playlist, mock(Context::class.java))
|
||||
|
||||
val videoIDs = (21..70).map { id -> "aaaaaaaaa$id" }.joinToString(",")
|
||||
|
||||
assertEquals(
|
||||
"https://www.youtube.com/watch_videos?video_ids=$videoIDs",
|
||||
url
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun exportJustUrls() {
|
||||
val playlist = asPlaylist(
|
||||
"https://www.youtube.com/watch?v=10000000000",
|
||||
"https://www.youtube.com/watch?v=20000000000",
|
||||
"https://www.youtube.com/watch?v=30000000000"
|
||||
)
|
||||
|
||||
val exported = export(JUST_URLS, playlist, mock(Context::class.java))
|
||||
|
||||
assertEquals(
|
||||
"""
|
||||
https://www.youtube.com/watch?v=10000000000
|
||||
https://www.youtube.com/watch?v=20000000000
|
||||
https://www.youtube.com/watch?v=30000000000
|
||||
""".trimIndent(),
|
||||
exported
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun asPlaylist(vararg urls: String): List<PlaylistStreamEntry> {
|
||||
return asPlaylist(Stream.of(*urls))
|
||||
}
|
||||
|
||||
fun asPlaylist(urls: Stream<String>): List<PlaylistStreamEntry> {
|
||||
return urls
|
||||
.map { url: String -> newPlaylistStreamEntry(url) }
|
||||
.toList()
|
||||
}
|
||||
|
||||
fun newPlaylistStreamEntry(url: String): PlaylistStreamEntry {
|
||||
return PlaylistStreamEntry(newStreamEntity(url), 0, 0, 0)
|
||||
}
|
||||
|
||||
fun newStreamEntity(url: String): StreamEntity {
|
||||
return StreamEntity(
|
||||
0,
|
||||
1,
|
||||
url,
|
||||
"Title",
|
||||
StreamType.VIDEO_STREAM,
|
||||
100,
|
||||
"Uploader"
|
||||
)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user