diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsPlayerScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsPlayerScreen.kt index db142130f..5774b2c5b 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsPlayerScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsPlayerScreen.kt @@ -34,6 +34,7 @@ import eu.kanade.tachiyomi.ui.player.MX_PLAYER_FREE import eu.kanade.tachiyomi.ui.player.MX_PLAYER_PRO import eu.kanade.tachiyomi.ui.player.NEXT_PLAYER import eu.kanade.tachiyomi.ui.player.VLC_PLAYER +import eu.kanade.tachiyomi.ui.player.WEB_VIDEO_CASTER import eu.kanade.tachiyomi.ui.player.X_PLAYER import eu.kanade.tachiyomi.ui.player.settings.PlayerPreferences import tachiyomi.presentation.core.components.WheelTextPicker @@ -395,4 +396,5 @@ val externalPlayers = listOf( JUST_PLAYER, NEXT_PLAYER, X_PLAYER, + WEB_VIDEO_CASTER, ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/entries/manga/MangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/entries/manga/MangaScreenModel.kt index 720405c67..3c00fe382 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/entries/manga/MangaScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/entries/manga/MangaScreenModel.kt @@ -672,7 +672,7 @@ class MangaInfoScreenModel( DownloadAction.UNVIEWED_ITEMS -> getUnreadChapters() } - if (!chaptersToDownload.isNotEmpty()) { + if (chaptersToDownload.isNotEmpty()) { startDownload(chaptersToDownload, false) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 6df9672e7..d85853f15 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.main import android.animation.ValueAnimator import android.app.Activity +import android.app.Application import android.app.SearchManager import android.app.assist.AssistContent import android.content.Context @@ -105,6 +106,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import logcat.LogPriority +import tachiyomi.core.util.lang.withUIContext import tachiyomi.core.util.system.logcat import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.domain.release.interactor.GetApplicationRelease @@ -507,7 +509,14 @@ class MainActivity : BaseActivity() { suspend fun startPlayerActivity(context: Context, animeId: Long, episodeId: Long, extPlayer: Boolean, video: Video? = null) { if (extPlayer) { - externalPlayerResult?.launch(ExternalIntents.newIntent(context, animeId, episodeId, video)) ?: return + val intent = try { + ExternalIntents.newIntent(context, animeId, episodeId, video) + } catch (e: Exception) { + logcat(LogPriority.ERROR, e) + withUIContext { Injekt.get().toast(e.message) } + return + } + externalPlayerResult?.launch(intent) ?: return } else { context.startActivity(PlayerActivity.newIntent(context, animeId, episodeId)) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt index a8cf8f695..a96edba3e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt @@ -7,6 +7,7 @@ import android.content.Intent import android.content.pm.PackageManager import android.net.Uri import android.os.Build +import android.os.Bundle import androidx.core.content.FileProvider import androidx.core.net.toUri import eu.kanade.core.util.asFlow @@ -23,12 +24,14 @@ import eu.kanade.tachiyomi.data.track.AnimeTrackService import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.ui.player.loader.EpisodeLoader import eu.kanade.tachiyomi.ui.player.settings.PlayerPreferences +import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.util.system.isOnline import eu.kanade.tachiyomi.util.system.toast import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.firstOrNull import logcat.LogPriority import tachiyomi.core.util.lang.launchIO import tachiyomi.core.util.lang.withIOContext @@ -75,7 +78,9 @@ class ExternalIntents { source = sourceManager.get(anime.source) ?: return null episode = getEpisodeByAnimeId.await(anime.id).find { it.id == episodeId } ?: return null - val video = chosenVideo ?: EpisodeLoader.getLinks(episode, anime, source).asFlow().first()[0] + val video = chosenVideo + ?: EpisodeLoader.getLinks(episode, anime, source).asFlow().first().firstOrNull() + ?: throw Exception("Video list is empty") val videoUrl = getVideoUrl(context, video) ?: return null @@ -88,7 +93,7 @@ class ExternalIntents { addVideoHeaders(false, video, this) } } else { - standardIntentForPackage(pkgName, context, videoUrl, video) + getIntentForPackage(pkgName, context, videoUrl, video) } } @@ -153,6 +158,46 @@ class ExternalIntents { withUIContext { context.toast(e?.message ?: "Cannot open episode") } } + /** + * Returns the [Intent] with added data to send to the given external player. + * + * @param pkgName the name of the package to send the [Intent] to. + * @param context the application context. + * @param uri the path data of the video. + * @param video the video being sent to the external player. + */ + private fun getIntentForPackage(pkgName: String, context: Context, uri: Uri, video: Video): Intent { + return when (pkgName) { + WEB_VIDEO_CASTER -> webVideoCasterIntent(pkgName, context, uri, video) + else -> standardIntentForPackage(pkgName, context, uri, video) + } + } + + private fun webVideoCasterIntent(pkgName: String, context: Context, uri: Uri, video: Video): Intent { + return Intent(Intent.ACTION_VIEW).apply { + setDataAndType(uri, "video/*") + if (isPackageInstalled(pkgName, context.packageManager)) setPackage(WEB_VIDEO_CASTER) + addExtrasAndFlags(true, this) + + val headers = Bundle() + video.headers?.forEach { + headers.putString(it.first, it.second) + } + + val localLangName = LocaleHelper.getSimpleLocaleDisplayName() + video.subtitleTracks.firstOrNull { + it.lang.contains(localLangName) + }?.let { + putExtra("subtitle", it.url) + } ?: video.subtitleTracks.firstOrNull()?.let { + putExtra("subtitle", it.url) + } + + putExtra("android.media.intent.extra.HTTP_HEADERS", headers) + putExtra("secure_uri", true) + } + } + /** * Returns the [Intent] with added data to send to the given external player. * @@ -176,26 +221,20 @@ class ExternalIntents { // Add support for Subtitles to external players - /* - val externalSubs = source.getExternalSubtitleStreams() - val enabledSubUrl = when { - source.selectedSubtitleStream != null -> { - externalSubs.find { stream -> stream.index == source.selectedSubtitleStream?.index }?.let { sub -> - apiClient.createUrl(sub.deliveryUrl) - } - } - else -> null + val localLangName = LocaleHelper.getSimpleLocaleDisplayName() + val langIndex = video.subtitleTracks.indexOfFirst { + it.lang.contains(localLangName) } + val requestedLanguage = if (langIndex == -1) 0 else langIndex + val requestedUrl = video.subtitleTracks.getOrNull(requestedLanguage)?.url - // MX Player API / MPV - putExtra("subs", externalSubs.map { stream -> Uri.parse(apiClient.createUrl(stream.deliveryUrl)) }.toTypedArray()) - putExtra("subs.name", externalSubs.map(ExternalSubtitleStream::displayTitle).toTypedArray()) - putExtra("subs.filename", externalSubs.map(ExternalSubtitleStream::language).toTypedArray()) - putExtra("subs.enable", enabledSubUrl?.let { url -> arrayOf(Uri.parse(url)) } ?: emptyArray()) + // Just, Next, MX Player, mpv + putExtra("subs", video.subtitleTracks.map { Uri.parse(it.url) }.toTypedArray()) + putExtra("subs.name", video.subtitleTracks.map { it.lang }.toTypedArray()) + putExtra("subs.enable", requestedUrl?.let { arrayOf(Uri.parse(it)) } ?: emptyArray()) - // VLC - if (enabledSubUrl != null) putExtra("subtitles_location", enabledSubUrl) - */ + // VLC - seems to only work for local sub files + requestedUrl?.let { putExtra("subtitles_location", it) } } } @@ -507,3 +546,4 @@ const val MPV_REMOTE = "com.husudosu.mpvremote" const val JUST_PLAYER = "com.brouken.player" const val NEXT_PLAYER = "dev.anilbeesetti.nextplayer" const val X_PLAYER = "video.player.videoplayer" +const val WEB_VIDEO_CASTER = "com.instantbits.cast.webvideo" diff --git a/i18n/src/main/res/values-ar/strings-aniyomi.xml b/i18n/src/main/res/values-ar/strings-aniyomi.xml index 6519ab53b..4ef1317fc 100644 --- a/i18n/src/main/res/values-ar/strings-aniyomi.xml +++ b/i18n/src/main/res/values-ar/strings-aniyomi.xml @@ -336,4 +336,5 @@ الفصل السابق تخطي افتتاحية البحث عن الفصول باستخدام عناصر التحكم + Khalid \ No newline at end of file diff --git a/i18n/src/main/res/values-de/strings-aniyomi.xml b/i18n/src/main/res/values-de/strings-aniyomi.xml index 05bd8dc63..26b83696d 100644 --- a/i18n/src/main/res/values-de/strings-aniyomi.xml +++ b/i18n/src/main/res/values-de/strings-aniyomi.xml @@ -278,4 +278,8 @@ Erweiterungs-Einstellungen Statistiken anzeigen Bildschirmfoto speichern + Ausblenden + Anime-Aktualisierungen + Nächstes Kapitel + Vorheriges Kapitel \ No newline at end of file diff --git a/i18n/src/main/res/values-es/strings-aniyomi.xml b/i18n/src/main/res/values-es/strings-aniyomi.xml index d9565ff37..d3af6514b 100644 --- a/i18n/src/main/res/values-es/strings-aniyomi.xml +++ b/i18n/src/main/res/values-es/strings-aniyomi.xml @@ -320,4 +320,11 @@ Desactivado GPU CPU + Debanding + Ocultar + Ocultar las categorías de la pantalla de las categorías + Moca + Actualizaciones del anime + Algodón de azúcar + Solo se descargará simultáneamente desde las fuentes autoalojadas o sin contador \ No newline at end of file diff --git a/i18n/src/main/res/values-fil/strings-aniyomi.xml b/i18n/src/main/res/values-fil/strings-aniyomi.xml index c1a637957..9a365a788 100644 --- a/i18n/src/main/res/values-fil/strings-aniyomi.xml +++ b/i18n/src/main/res/values-fil/strings-aniyomi.xml @@ -303,4 +303,20 @@ Itago ang mga entry na nasa library Mag-seek sa chapter I-save ang screenshot + Kapag pinagana, ang paggamit sa susunod ay hihingin ang laktawan na intro na buton kung walang makikitang mga kabanata + Mag-seek ng kabanata gamit ang mga media control + Susunod na kabanata + CPU + Debanding + GPU + Debanding, mpv.conf... atbp + Mocha + Itago + Mga Update sa Anime + Laktawan ang opening + Di pinagana + Itago ang nakatagong kategorya mula sa screen ng mga kategorya + Mga setting sa Advanced player + Nakaraang kabanata + Koton Kendi \ No newline at end of file diff --git a/i18n/src/main/res/values-fr/strings-aniyomi.xml b/i18n/src/main/res/values-fr/strings-aniyomi.xml index f70208253..53d0b634e 100644 --- a/i18n/src/main/res/values-fr/strings-aniyomi.xml +++ b/i18n/src/main/res/values-fr/strings-aniyomi.xml @@ -127,7 +127,7 @@ Ajouter à la bibliothèque \? Ajouter un animé à la bibliothèque \? Épisode %1$s - Téléchargement (%d% %) + Téléchargement (%d%%) Erreur En pause Numéro de l\'épisode diff --git a/i18n/src/main/res/values-hr/strings-aniyomi.xml b/i18n/src/main/res/values-hr/strings-aniyomi.xml index 61ded1579..d17190eb5 100644 --- a/i18n/src/main/res/values-hr/strings-aniyomi.xml +++ b/i18n/src/main/res/values-hr/strings-aniyomi.xml @@ -315,4 +315,16 @@ Prethodno poglavlje Kada je aktivirano, korištenje gumba za sljedeće poglavlje će pokrenuti gumb za preskakanje uvoda ako se ne pronađe nijedno poglavlje Traži poglavlja pomoću kontrola medija + CPU + Deaktivirano + GPU + Napredne postavke playera + Uklanjanje artefakata + Uklanjanje artefakata, mpv.conf … itd. + Sakrij + Sakrij skrivene kategorije s ekrana kategorija + Mocha + Anime aktualiziranja + Istodobno će se preuzimati samo iz izvora koji se sami hostiraju ili bez mjerenja + Cotton Candy \ No newline at end of file diff --git a/i18n/src/main/res/values-it/strings-aniyomi.xml b/i18n/src/main/res/values-it/strings-aniyomi.xml index 2b0076ef5..8fdf03be9 100644 --- a/i18n/src/main/res/values-it/strings-aniyomi.xml +++ b/i18n/src/main/res/values-it/strings-aniyomi.xml @@ -51,7 +51,7 @@ Manga per riga Anime per riga Elementi della libreria - Guardato + Visti Anime Tempo di visione Sposta Aggiornamenti nella scheda Altro @@ -141,10 +141,10 @@ Attiva lo stile Netflix Migra Anime Non interessanti - Cambia sottotitoli: + Sottotitoli Mantieni la posizione di visualizzazione sugli episodi visti Non saltare - Zoom + Centrato Ripristina Attiva statistiche Imposta la modalità di decodifica hardware predefinita @@ -157,7 +157,7 @@ Riproduci esternamente Player esterno Sposta Manga nella scheda Altro - Mostra il pulsante Continua a guardare/leggere + Pulsante Continua a guardare/leggere Manga Episodi scaricati Non visto @@ -214,7 +214,7 @@ Da guardare Da guardare Da riguardare - Questa operazione rimuoverà la data di visione di questo episodio. Sei sicuro di proseguire\? + Questa operazione rimuoverà la data di visione di questo episodio. Vuoi proseguire\? Reimposta tutti gli episodi di questo anime %1$s: %2$s, %3$s Progresso: %1$s @@ -236,10 +236,10 @@ Auto-play è attivo Auto-play è disattivato Adatta allo schermo - Allunga + Allungato Cambia la velocità di riproduzione: - Cambia la qualità video: - Cambia traccia audio: + Qualità video + Traccia audio Velocità di riproduzione Qualità video AniSkip per funzionare richiede che l\'anime sia tracciato con MAL o Anilist @@ -265,17 +265,66 @@ Non visti Ricerca Manga Globale Ricerca Anime Globale - Includi solo fonti anime appuntate + Ricerca globalmente solo nelle fonti anime appuntate Imposta la schermata iniziale su Manga - Includi solo fonti manga appuntate + Cerca globalmente solo nelle fonti manga appuntate Ricerco Questa estensione non è dall\'elenco ufficiale delle estensioni Aniyomi. Abilita l\'uso della modalità PiP Volume e Luminosità Picture in Picture (PiP) - - - + Prossimo episodio + Prossimi %d episodi + + Mostra statistiche + CPU + Nascondi manga già in libreria + Ricerca il capitolo + Se attivato, + Ricerca capitoli usando i controlli del lettore + Debanding + Link al video copiato negli appunti + Salva screenshot + Nascondi anime già in libreria + Escludi dal risparmio dati + Mostra la messa in onda del prossimo episodio + GPU + Azione swipe verso sinistra + Swipe episodio + Debanding, mpv.conf… etc + Non escludere più dal risparmio dati + Mocha + Nascondi + Novità Anime + Risparmio dati + Azione swipe verso destra + Sigla saltata + Disabilitato + Impostazioni dell\'estensione + Capitolo successivo + Nasconi le categorie nascoste dalla schermata delle categorie + Impostazioni avanzate del Player + Capitolo precedente + Scegli la qualità video: + Zucchero filato + Bandwidth Hero (richiede il Bandwidth Hero server Proxy) + Usa il risparmio dati nel downloader + Qualità delle immagini + Comprimi le immagini prima di scaricarle o mostrarle nel lettore + Ignora le animazioni GIF + Ignora le immagini Jpeg + wsrv.nl + Bandwidth Hero Proxy Server + Scrivi qui l\'url del Bandwidth Hero Proxy Server + Salvare le immagini come Jpeg permette di risparmiare spazio rispetto a Webp, ma la qualità è minore. +\nAttualmente viene utilizzata la compressione Webp + resmush.it + Scaricherà in modo concorrenziale solo da fonti self-hosted o unmetered + La dimensione di un file JPEG e considerevole minore di un WEBP(quindi si risparmiano più dato), ma questo vuole dire che si perde più qualità. +\nAttualmente comprime in un JPEG + Valori alti si traducono in una maggiore qualità dell\'immagine, ma questo implica file di dimensione più grande, 80 per cento è una buona media tra dimensione e qualità + Comprimi in JPEG + Converte in bianco e nero \ No newline at end of file diff --git a/i18n/src/main/res/values-ko/strings-aniyomi.xml b/i18n/src/main/res/values-ko/strings-aniyomi.xml index f06e54a3a..3046d4532 100644 --- a/i18n/src/main/res/values-ko/strings-aniyomi.xml +++ b/i18n/src/main/res/values-ko/strings-aniyomi.xml @@ -4,7 +4,7 @@ 카테고리 애니메이션 카테고리 서재 항목 - 회차 및 에피소드 + 회차와 에피소드 에피소드 경고: 설정을 백업하면 동기화 암호와 같은 민감한 정보도 저장됩니다, 이 백업 파일을 공유하지 마십시오! 만화 @@ -59,12 +59,12 @@ 기본 애니메이션 카테고리 카테고리가 업데이트에서 제외된 경우 다른 카테고리에 포함되어 있어도 업데이트 되지 않습니다. 제외된 카테고리의 애니메이션은 포함된 카테고리에 있어도 업데이트되지 않습니다. - 이 확장기능은 신뢰할 수 없는 인증서로 서명되어 활성화되지 않았습니다. + 이 확장 앱은 신뢰할 수 없는 인증서로 서명되어 활성화되지 않았습니다. \n -\n일부 악의적인 확장기능은 Tachiyomi에 저장된 로그인 정보를 읽거나 임의의 코드를 실행할 수도 있습니다. +\n일부 악의적인 확장 앱은 Tachiyomi에 저장된 로그인 정보를 읽거나 임의의 코드를 실행할 수도 있습니다. \n \n이 인증서를 신뢰하면 이러한 위험에 노출될 수 있습니다. - 이 확장기능은 Aniyomi의 공식 확장기능이 아닙니다. + 이 확장 앱은 Aniyomi의 공식 확장 앱이 아닙니다. 가로 반전 자동 세로 자동 가로 @@ -119,7 +119,7 @@ 애니메이션 데이터베이스 삭제 서재에 추가되지 않은 항목의 기록을 삭제합니다 서재에 추가되지 않은 애니메이션의 기록을 삭제합니다 - 확실합니까\? 서재에 없는 항목의 읽은 기록이 삭제됩니다 + 확실합니까\? 서재에 없는 에피소드의 모든 기록이 삭제됩니다 상태 및 평점, 마지막으로 읽은 회차를 동기화 서비스로부터 업데이트합니다 읽은 내역의 기록을 일시 정지합니다 서재에서 @@ -238,8 +238,8 @@ 에피소드 설정 백업 옵션 - 만화 확장기능 - 애니메이션 확장기능 + 만화 확장 앱 + 애니메이션 확장 앱 만화 데이터 이전 애니메이션 데이터 이전 설정 @@ -256,7 +256,7 @@ 전체 애니메이션 검색 전체 검색에서 핀 설정된 만화 소스만 검색 전체 검색에서 핀 설정된 애니메이션 소스만 검색 - 이 확장기능은 Aniyomi의 공식 확장기능이 아닙니다. + 이 확장 앱은 Aniyomi의 공식 확장 앱이 아닙니다. 볼륨 및 밝기 찾기 Picture-in-Picture (PiP) @@ -264,10 +264,49 @@ 이미 서재에 있는 만화 항목 숨기기 이미 서재에 있는 애니메이션 항목 숨기기 - 다음 에피소드 + 다음 %d 에피스드 동영상 화질 선택: - 확장기능 설정 + 확장 앱 설정 스크린샷 저장 통계 표시 + 영상 화질 링크 주소가 클립보드에 복사되었습니다 + 다음 에피소드 방송일 표시 + 왼쪽으로 스와이프 + 오른쪽으로 스와이프 + 오프닝 스킵 + 다음화 + 플레이어 세부 설정 + 이전화 + wsrv.nl + CPU + Bandwidth Hero 프록시 서버 + 회차를 찾기 + Bandwidth Hero 프록시 서버 URL 주소를 입력해 주세요 + 활성화 시, 다음을 챕터가 없는 경우 인트로 건너뛰기 버튼이 호출됩니다 + 볼륨 버튼으로 회차를 찾기 + Debanding 필터 + Jpeg 파일은 Webp보다 파일 사이즈가 작지만(더 많은 데이터가 절약), 이미지의 품질이 더 떨어집니다. +\nWebp로 압축을 진행합니다 + 데이터 절약에서 제외 + GPU + 다운로드 시 데이터 절약 사용 + 이미지 품질 + 에피소드 스와이프 + Debanding 필터, mpv.conf… etc + resmush.it + Bandwidth Hero (Bandwidth Hero 프록시 서버가 필요합니다) + 데이터 절약에서 제외 중지 + 데이터 절약 + Jpeg 파일은 Webp보다 파일 사이즈가 작지만(더 많은 데이터가 절약), 이미지의 품질이 더 떨어집니다. +\nJpeg로 압축을 진행합니다 + 비활성화 + 다운로드/로딩 시 이미지 압축 + 값이 높으면 이미지 품질이 좋게 저장되지만 파일 크기가 커지게 됩니다. 80%는 좋은 파일 크기와 이미지 품질 사이의 중간값입니다 + Jpeg로 압축 + 흑백으로 변환 + Gif 애니메이션 무시 + Jpeg 이미지 무시 + 숨기기 + 카테고리 화면에서 카테고리 숨기기 \ No newline at end of file diff --git a/i18n/src/main/res/values-or/strings-aniyomi.xml b/i18n/src/main/res/values-or/strings-aniyomi.xml new file mode 100644 index 000000000..09e94e8f5 --- /dev/null +++ b/i18n/src/main/res/values-or/strings-aniyomi.xml @@ -0,0 +1,143 @@ + + + ସଂକ୍ଷିପ୍ତବୃତ୍ତି ବାଦ୍ ଦିଅ + %d ସେକେଣ୍ଡରେ ବାଦ୍ ଦେବା + ସର୍ବଦା ବହିଃ-ଚାଳକ ବ୍ୟବହାର କରିବା + ଏବେ ଦେଖୁଛନ୍ତି + ଦେଖୁଛନ୍ତି + ପୁନଃଦେଖୁଛନ୍ତି + Netflix ଶୈଳୀ ସକ୍ଷମ କରିବା + ପ୍ରଗତି ନିୟନ୍ତ୍ରଣ, ଅନ୍ତଃ-ଚାଳକ, ବହିଃ-ଚାଳକ + ୭ ସେକେଣ୍ଡ + ପ୍ରାନ୍ତ ବାଦ୍ ଦିଅ + ବାଦ୍ ଦିଅନି + ବହିଃସ୍ଥ ଚାଳନ କରାଇବା + ଏବେ ପଢ଼ୁଛନ୍ତି + ୬ ସେକେଣ୍ଡ + ୫ ସେକେଣ୍ଡ + ୧୦ ସେକେଣ୍ଡ + ଆଦ୍ୟ ବାଦ୍ ଦିଅ + ଦେଖିବା/ପଢ଼ିବା ଜାରି ରଖିବା ବଟନ୍ + ଵିଡ଼ିଓ ଗୁଣଵତ୍ତା + ମିଶ୍ରିତ ଆଦ୍ୟ ବାଦ୍ ଦିଅ + ଆଦ୍ୟ ବାଦ୍ ଦିଆଗଲା + ଅଡ଼ିଓ + ପରବର୍ତ୍ତୀ ଅଧ୍ୟାୟ + %s ବାଦ୍ ଦିଆଗଲା + +%1$d ସେ + ପରବର୍ତ୍ତୀ ଅଧ୍ୟାୟ + ୯ ସେକେଣ୍ଡ + ବହିଃ-ଚାଳକ + ୮ ସେକେଣ୍ଡ + ଵିଡ଼ିଓ ଗୁଣଵତ୍ତା + ଅଧ୍ୟାୟ + ଦେଖିବା ପାଇଁ ଇଚ୍ଛୁକ + ପରିସଂଖ୍ୟାନ ଦେଖାଅ + ଅଧ୍ୟାୟର ଦ୍ରୁତିକା ସଫା କରିବା + ଅପଢ଼ା ଅଧ୍ୟାୟ ଡାଉନଲୋଡ୍ କରିବା + ଅଧ୍ୟାୟ ସେଟିଂ + ମୋଟ ଅଧ୍ୟାୟ + ଅଧ୍ୟାୟର ଅଦ୍ୟତନସବୁ + ଅଧ୍ୟାୟଗୁଡ଼ିକ ବିଲୋପ କରିବା + ସକ୍ଷମ ହୋଇଥିଲେ, ପରବର୍ତ୍ତୀ ବଟନ୍ ବ୍ୟବହାର କରିଲେ ଉପକ୍ରମ ବାଦ୍ ଦିଅ ବଟନ୍ ପ୍ରୟୋଗ ହେବ ଯଦି କୌଣସି ଅଧ୍ୟାୟ ନ ମିଳେ + ଅ. %1$s - %2$s + ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଅଧ୍ୟାୟଗୁଡ଼ିକ + ଅଦେଖା/ଅପଢ଼ା ଅଧ୍ୟାୟ(ଗୁଡ଼ିକ) ସହିତ + ତ୍ରୁଟି + ରୋଚକ ନୁହଁ + ଏହା ଏହି ଅଧ୍ୟାୟର ଦର୍ଶନ ତାରିଖକୁ ହଟାଇଦେବ। ଆପଣ ନିଶ୍ଚିତ ଅଛନ୍ତି ତ\? + ଦେଖିବାକୁ ଚାହୁଁଛନ୍ତି + ପ୍ରଗତି + କୌଣସି ଅଧ୍ୟାୟ ମିଳିଲା ନାହିଁ + ପୃଷ୍ଠା ୨ + ଅଧ୍ୟାୟ ସଂଖ୍ୟା ଅନୁଯାୟୀ + %1$d%% + + ପରବର୍ତ୍ତୀ ଅଧ୍ୟାୟ + ପରବର୍ତ୍ତୀ %dଟି ଅଧ୍ୟାୟ + + + ପରବର୍ତ୍ତୀ ଅଦେଖା ଅଧ୍ୟାୟ ଯାକ + ପରବର୍ତ୍ତୀ %dଟି ଅଦେଖା ଅଧ୍ୟାୟ + + ଅଧ୍ୟାୟଗୁଡ଼ିକ ଦେଖନ୍ତୁ + ଚାଳକ + ଅଧ୍ୟାୟ %1$s ଏବଂ ଆହୁରି %2$d + ପୂର୍ବବର୍ତ୍ତୀ ଅଧ୍ୟାୟ + ପରବର୍ତ୍ତୀ ଅଧ୍ୟାୟ ମିଳିଲା ନାହିଁ! + ଅଧ୍ୟାୟ ଡାଉନଲୋଡ୍ ବିରତ ହୋଇଛି + ପୃଷ୍ଠା ୩ + ଆପଣ ଚୟନିତ ଅଧ୍ୟାୟଗୁଡ଼ିକ ବିଲୋପ କରିବାକୁ ନିଶ୍ଚିତ ଅଛନ୍ତି ତ\? + ଅଧ୍ୟାୟ %1$s + ପ୍ରଗତି: %1$s/%2$s + ଚଲାଅ + ଆପ୍ ବନ୍ଦ ହେଲେ ଅଧ୍ୟାୟର ଦ୍ରୁତିକା ସଫା କରିବା + ସ୍କ୍ରୀନ୍‌ସଟ୍‌ରେ ଉପଶୀର୍ଷକ ଦେଖାଇବା + ବିରତ ହୋଇଅଛି + ଅଧ୍ୟାୟ ସଂଖ୍ୟା ଅନୁଯାୟୀ + ସଦ୍ୟତମ ଅଧ୍ୟାୟ + ପରିସଂଖ୍ୟାନ ପୃଷ୍ଠା + ଅବୈଧ ଅଧ୍ୟାୟ ଫର୍ମାଟ୍ + ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଅଧ୍ୟାୟଗୁଡ଼ିକୁ ପୁନଃଯାଞ୍ଚ କରିବାଲାଗି ଆପ୍‌କୁ ବାଧ୍ୟ କରିବା + ପୃଷ୍ଠା ୧ + ଉପଶୀର୍ଷକ + ସ୍କ୍ରୀନ୍‌ସଟ୍ ନେବା + ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଅଧ୍ୟାୟଗୁଡ଼ିକୁ ବିଲୋପ କରିବେ ତ\? + + %1$sଟିଏ ଅଧ୍ୟାୟ + %1$sଟି ଅଧ୍ୟାୟ + + ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଅଧ୍ୟାୟଗୁଡ଼ିକ + ପ୍ରଗତି: %1$s + ଅଜଣା ପ୍ରସାର କକ୍ଷ + ନୂଆ ଅଧ୍ୟାୟଗୁଡ଼ିକୁ ଡାଉନଲୋଡ୍ କରିବା + ସାରିଛନ୍ତି + ଅଧ୍ୟାୟ ସଂଖ୍ୟା + + 1 ଆଖ୍ୟା ପାଇଁ + %dଟି ଆଖ୍ୟା ପାଇଁ + + ଅଧ୍ୟାୟ ଡାଉନଲୋଡ୍ ବିରତ ହୋଇଛି + ଅଧ୍ୟାୟ ମିଳୁନାହିଁ + ଅଧ୍ୟାୟ %1$s + + ଅଧ୍ୟାୟ %1$s ଏବଂ ଆହୁରି 1 + ଅଧ୍ୟାୟ %1$s ଏବଂ ଆହୁରି %2$dଟି + + ଅଦେଖା ଅଧ୍ୟାୟ ଡାଉନଲୋଡ୍ କରିବା + ଅଧ୍ୟାୟ + ସେଟିଂ + ଵିକଶିତ ଚାଳକ ସେଟିଂ + ଅଧ୍ୟାୟ %1$s + ପୂର୍ବବର୍ତ୍ତୀ ଅଧ୍ୟାୟ + ଡାଉନଲୋଡ୍ ଚାଲିଛି (%d%%) + ଅଦ୍ୟତନ ହୋଇଥିବା ଡିଫଲ୍ଟ ଅଧ୍ୟାୟ ସେଟିଂ + ନୂଆ ଅଧ୍ୟାୟ ମିଳିଲା + + 1 ନୂଆ ଅଧ୍ୟାୟ + %1$dଟି ନୂଆ ଅଧ୍ୟାୟ + + ପଢ଼ିବାକୁ ଚାହୁଁଛନ୍ତି + ଧ୍ୱନି ଏବଂ ଉଜ୍ଜ୍ୱଳତା ଅଙ୍ଗଭଙ୍ଗୀ ସକ୍ଷମ କରିବା + ଗତ ଦର୍ଶନ + ସ୍କ୍ରୀନ୍‌ସଟ୍ ସଞ୍ଚୟ କରିବା + ଗତ ଯାଞ୍ଚ + ଅନ୍ତଃସ୍ଥ ଚାଳନ କରାଇବା + ଅନ୍ତଃ-ଚାଳକ + ବ୍ୟାକ୍‌ଅପ୍ ଵିକଳ୍ପ + ମଙ୍ଗା + ମଙ୍ଗାକୁ ସ୍ଥାନାନ୍ତର କରିବା + ଅଧ୍ୟାୟ ଅଣାଯିବା ତାରିଖ + ମଙ୍ଗା + ମଙ୍ଗା + ମଙ୍ଗା + ମଙ୍ଗା ଉତ୍ସ + ଅନିମେ + ଲୁଚାଅ + ମଙ୍ଗା ଦେଖାଅ + ଅନିମେ ଉତ୍ସ + ଗତ ମଙ୍ଗା ଅଦ୍ୟତନ + ଅନିମେ ଦେଖାଅ + ଅନିମେ + ଗତ ଅନିମେ ଅଦ୍ୟତନ + \ No newline at end of file diff --git a/i18n/src/main/res/values-pl/strings-aniyomi.xml b/i18n/src/main/res/values-pl/strings-aniyomi.xml index eb7e809cd..a4899512d 100644 --- a/i18n/src/main/res/values-pl/strings-aniyomi.xml +++ b/i18n/src/main/res/values-pl/strings-aniyomi.xml @@ -4,7 +4,7 @@ Odblokuj Aniyomi Ostatnia aktualizacja mangi Pokaż mangę - Lokalne mangi + Manga lokalne Posiada nieprzeczytane rozdziały Pokaż wskaźnik nieprzeczytanych na ikonie Aktualizacje Domyślna kategoria @@ -82,45 +82,245 @@ Liczba nie obejrzanych Nie obejrzane - - - - + Następny odcinek + Następne %d odcinki + Następnych %d odcinków + Następnych %d odcinków - - - - + Dla 1 tytuł + Dla %d tytułów + Dla %d tytułów + Dla %d tytułów - - - - + 1 Nowy odcinek + %1$d Nowy odcinki + %1$d Nowych odcinków + %1$d Nowych odcinków - - - - + %d sekunda + %d sekundy + %d sekund + %d sekund - - - - + Odcinki %1$s i 1 więcej + Odcinki %1$s i %2$d więcej + Odcinki %1$s i %2$d więcej + Odcinki %1$s i %2$d więcej - - - - + Następny nieobejrzany odcinek + Następne %d nieobejrzane odcinki + Następne %d nieobejrzane odcinki + Następne %d nieobejrzane odcinki - - - - + %1$s odcinek + %1$s odcinki + %1$s odcinków + %1$s odcinków + Reset + Pomiń podsumowanie + Pomiń za %d sekund + zastosuj również do wszystkie anime w mojej bibliotece + Pokaż statystyki + Dopasuj do ekranu + wsrv.nl + Długość pomijania wstępu + Pamiętaj i przełącz się na ostatnio użyty poziom głośnośći + CPU + Ukryj wpisy mangi już w bibliotece + Zawsze używaj zewnętrznego odtwarzacza + Tryb dopasowania do ekranu + Ustawienia odcinka + Prędkość odtwarzania + W trakcie Oglądania + Tylko przeszukaj przypięte źródła anime w globalnym wyszukiwaniu + Preferowana aplikacja do pobierania + Serwer Proxy Bandwidth Hero + Nie znaleziono wideo + Oglądanie + Obraz-w-obrazie + Tylko przeszukaj przypięte źródła mangi w globalnym wyszukiwaniu + Przewiń do rozdziału + wpisz adres URL z serwera Bandwidth Hero Proxy + Przycięte do ekranu + Ponowne oglądanie + Włącz styl Netflix + Kontrola postępu, wewnętrzny odtwarzacz, zewnętrzny odtwarzacz + Anime lokalne + Wyświetl komunikaty odcinków podczas przełączania się między odcinkami w trybie obrazu w obrazie + To rozszerzenie nie pochodzi z oficjalnej listy rozszerzeń Aniyomi. + Automatycznie przełączaj się w tryb obrazu w obrazie po wyjściu z odtwarzacza + Po włączeniu, użycie opcji \'następny\' spowoduje wywołanie przycisku \'pomiń intro\', jeśli nie zostaną znalezione żadne rozdziały + 7 sekund + Dodaj anime do biblioteki\? + Wyłączone kategorie anime + Odc. %1$s - %2$s + Pomiń zakończenie + Pobrane odcinki + Limit czasu przycisku + Użyj wewnętrznego programu do pobierania + Opcje odtwarzania + Przeszukuj rozdziały za pomocą kontroli multimediów + Usuwanie artefaktów + Pamiętaj i przełącz się na ostatnio użyty poziom jasności + Zewnętrzny program do pobierania + Nie pomiń + Włącz tryb obrazu w obrazie + Skopiowany link jakośc wideo do schowka + Zapisz zrzut ekranu + Otwórz menu po dodaniu do biblioteki + Rozmiar pliku JPEG jest znacznie mniejszy niż rozmiar pliku WebP (co oznacza że jest oszczędzane więcej danych), ale powoduje to również większą utratę jakości obrazów +\nObecnie kompresowane jako Webp + Nieinteresujące + Orientacja odtwarzacza + Spowoduje to usunięcie daty oglądania tego odcinka. Jesteś pewny\? + Ustaw stronę startową na zakładke mangi + Ukryj wpisy anime już w bibliotece + W jakim momencie oznaczyć odcinek jako obejrzany + Chcę obejrzeć + Rozciągnięte + Usuń odcinek z zakładek + Odtwórz zewnętrznie + Pokaż czas emisji następnego odcinka + Ukryj kontrolki odtwarzacza podczas otwierania odtwarzacza + Postęp + %1$s - %2$s + Włącz precyzyjne przeszukiwanie + Usuń historię dla anime które nie są zapisane w twojej bibliotece + GPU + W trakcie czytania + Nie znaleziono odcinków + Migruj Manga + 6 sekund + Strona 2 + Według numeru odcinka + %1$d%% + Sensor portret + Akcja przesunięcia w lewo + Włącz automatyczne pomijanie + 5 sekund + Pokaż zawartość w wycięciu ekranu + Globalne wyszukiwanie Anime + To rozszerzenie nie pochodzi z oficjalnej listy rozszerzeń Aniyomi. + Zmień długość intro + Włącz gest przewijania poziomego + Czas oglądania + Czas przewinięcia po dwukrotnym kliknięciu do pominięcia + Odtwarzacz + Jakość Obrazu + 10 sekund + Zresetuj wszystkie odcinki dla tego anime + Przesunięcie odcinka + Odcinek %1$s i jeszcze %2$d + Usuwanie artefaktów, mpv.conf. . . I dalej + resmush.it + Pomiń intro + Bandwidth Hero (Wymaga serwera Proxy Bandwidth Hero) + Następny odcinek nie znaleziony! + Pobieranie odcinka zostało wstrzymane + Strona 3 + Działa tylko na wpisy w bibliotece jeśli obecny odcinek oraz następny są już pobrane + Dopasuj orientację na podstawie wymiarów wideo + Czy na pewno chcesz usunąć wybrane odcinki\? + Odcinki %1$s + Globalne wyszukiwanie mangi + Postęp: %1$s/%2$s + Odtwórz + Odtwórz wewnętrznie + Odwrotny tryb krajobrazowy + Rozszerzenia mangi + Pokaż napisy na zrzucie ekranu + Według numeru odcinka + Po włączeniu, przeszukiwanie nie będzie się koncentrować na klatkach kluczowych, co prowadzi do wolniejszego, ale precyzyjnego przeszukiwania + Strona statystyk + Nieprawidłowy format odcinka + Zmuś aplikację do ponownego sprawdzenia pobranych rozdziałów i odcinków + Domyślna długość pomijania wstępu + Zmień prędkość odtwarzania: + Domyślna kategoria anime + Zachowaj postęp oglądania na obejrzanych odcinkach + Strona 1 + Napisy + Zrób zrzut ekranu + Przycisk Kontynuuj oglądanie/czytanie + Usunąć pobrane odcinki\? + Używane przez anime: %1$s, używane przez manga: %2$s + Dodaj odcinek do zakładek + Rozmiar pliku JPEG jest znacznie mniejszy niż rozmiar pliku WebP (co oznacza że jest oszczędzane więcej danych), ale powoduje to również większą utratę jakości obrazów. +\nObecnie kompresowane jako Jpeg + %1$s: %2$s, %3$s + Postęp: %1$s + Nieobejrzany + Automatycznie pobieraj podczas oglądania + Nieznane studio + Pobierz nowe odcinki + Akcja przesunięcia w prawo + Rozszerzenia anime + Jakość + Odtwarzacz wewnętrzny + Wyczyść bazę danych Anime + Pomiń MixedOp + Numer odcinka + OP zostało pominięte + Dźwięk + Odcinek nie znaleziony + Odcinek %1$s + Wyłączone + Preferencja zewnętrznego odtwarzacza + Kompresuj obrazy przed pobraniem lub załadowaniem do czytnika + Auto-play jest wyłączone + Auto-play jest włączone + Lokalne źródło anime + Manga + %s Pominięte + Wyższe wartości oznaczają, że zapisywany jest wyższy procent jakości obrazu, ale też oznacza że rozmiar pliku jest większy. 80 procent to dobra mediana między rozmiarem pliku a jakością obrazu + Włącz/Wyłącz statystyki + %1$d s + Domyślny portret + Ustawienia rozszerzeń + Włącz AniSkip + Zawsze używaj zewnętrznego programu do pobierania dla anime + Wyłącz + Następny rozdział + Ustawienia + Orientacja domyślna + Opcje kopii zapasowej + Anime w wykluczonych kategoriach nie będzie aktualizowane, nawet jeśli znajdują się również w uwzględnionych kategoriach. + Kompresuj jako Jpeg + Zaawansowane ustawienia odtwarzacza + AniSkip wymaga aby anime było śledzone przez MAL lub Anilist aby działało + 9 sekund + Migruj Anime + Głośność i Jasność + Sensor krajobrazowa + Odcinek %1$s + Odtwarzacz zewnętrzny + Konwertuj na czarno-białe + Anime z biblioteki + Nic niedawno nie oglądane + Poprzedni rozdział + Ignoruj animacje GIF + Ignoruj obrazy JPEG + Pobieranie (%d%%) + Jakie informacje zawrzeć w pliku kopii zapasowej + Użyj zewnętrznego programu do pobierania + Pzewijanie + Aktualizowane domyślne ustawienia odcinków + Znaleziono nowe odcinki + 8 sekund + Wybierz jakość wideo: + Chcę przeczytać + Edytuj plik konfiguracyjny MPV w celu dalszej konfiguracji odtwarzacza + Ustaw domyślny tryb dekodowania sprzętowego + Domyślny krajobrazowe + Lokalne źródło mangi + Jakość + Włącz gesty głośności i jasności + Planowane do obejrzenia \ No newline at end of file diff --git a/i18n/src/main/res/values-pt-rBR/strings-aniyomi.xml b/i18n/src/main/res/values-pt-rBR/strings-aniyomi.xml index bea99e730..073b89eb0 100644 --- a/i18n/src/main/res/values-pt-rBR/strings-aniyomi.xml +++ b/i18n/src/main/res/values-pt-rBR/strings-aniyomi.xml @@ -40,7 +40,7 @@ Episódios baixados Mangá local Anime local - Mostrar o botão continuar assistindo/lendo + Botão Continuar assistindo/lendo Por número do episódios Controle de progresso, reprodutor interno, reprodutor externo Com episódio(s) não visto(s)/capítulo(s) não lido(s) diff --git a/i18n/src/main/res/values-uk/strings-aniyomi.xml b/i18n/src/main/res/values-uk/strings-aniyomi.xml index 9d5af33a9..ee475214b 100644 --- a/i18n/src/main/res/values-uk/strings-aniyomi.xml +++ b/i18n/src/main/res/values-uk/strings-aniyomi.xml @@ -322,4 +322,15 @@ Наступний розділ Попередній розділ Пропустити опенінґ + CPU + Налагодження + GPU + Налагодження, mpv.conf… та ін. + Приховати + Вимкнено + Сховати приховані категорії з екрану категорій + Розширені налаштування плеєра + Моча + Оновлення аніме + Бавовняні цукерки \ No newline at end of file diff --git a/source-api/consumer-proguard.pro b/source-api/consumer-proguard.pro index 061f54188..dbad04482 100644 --- a/source-api/consumer-proguard.pro +++ b/source-api/consumer-proguard.pro @@ -1,6 +1,6 @@ -keep class eu.kanade.tachiyomi.source.model.** { public protected *; } -keep class eu.kanade.tachiyomi.source.online.** { public protected *; } --keep class eu.kanade.tachiyomi.source.** extends eu.kanade.tachiyomi.source.Source { public protected *; } +-keep class eu.kanade.tachiyomi.source.** extends eu.kanade.tachiyomi.source.MangaSource { public protected *; } -keep class eu.kanade.tachiyomi.animesource.model.** { public protected *; } -keep class eu.kanade.tachiyomi.animesource.online.** { public protected *; }