diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4a707ff0a..49e78e997 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -52,6 +52,7 @@ jobs:
test-android:
# macos has hardware acceleration. See android-emulator-runner action
runs-on: macos-latest
+ timeout-minutes: 20
strategy:
matrix:
# api-level 19 is min sdk, but throws errors related to desugaring
@@ -73,6 +74,13 @@ jobs:
# workaround to emulator bug: https://github.com/ReactiveCircus/android-emulator-runner/issues/160
emulator-build: 7425822
script: ./gradlew connectedCheck --stacktrace
+
+ - name: Upload test report when tests fail # because the printed out stacktrace (console) is too short, see also #7553
+ uses: actions/upload-artifact@v2
+ if: failure()
+ with:
+ name: android-test-report-api${{ matrix.api-level }}
+ path: app/build/reports/androidTests/connected/**
sonar:
runs-on: ubuntu-latest
diff --git a/README.es.md b/README.es.md
index 72fcc236c..bb579d6cb 100644
--- a/README.es.md
+++ b/README.es.md
@@ -18,7 +18,7 @@
Sitio Web • Blog • Preguntas Frecuentes • Prensa
-*Lea esto en otros idiomas: [English](README.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md).*
+*Lea esto en otros idiomas: [English](README.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md), [正體中文](README.zh_TW.md).*
AVISO: ESTA ES UNA VERSIÓN BETA, POR LO TANTO, PUEDE ENCONTRAR BUGS. SI ENCUENTRA UNO ABRA UN ISSUE A TRAVÉS DE NUESTRO REPOSITORIO DE GITHUB.
diff --git a/README.ja.md b/README.ja.md
index 2deab555c..e40ad4332 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -17,7 +17,7 @@
ウェブサイト • ブログ • FAQ • ニュース
-*他の言語で読む: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md)。*
+*他の言語で読む: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md), [正體中文](README.zh_TW.md)。*
注意: これはベータ版のため、バグが発生する可能性があります。もしバグが発生した場合、GitHub のリポジトリで Issue を開いてください。
diff --git a/README.ko.md b/README.ko.md
index 47ecd12bd..4daf526a3 100644
--- a/README.ko.md
+++ b/README.ko.md
@@ -17,7 +17,7 @@
Website • Blog • FAQ • Press
-*Read this in other languages: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md).*
+*Read this in other languages: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md), [正體中文](README.zh_TW.md).*
경고: 이 버전은 베타 버전이므로, 버그가 발생할 수도 있습니다. 만약 버그가 발생하였다면, 우리의 GITHUB 저장소에서 ISSUE를 열람하여 주십시오.
diff --git a/README.md b/README.md
index 492c3247f..ac961eaac 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@
Website • Blog • FAQ • Press
-*Read this in other languages: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md).*
+*Read this in other languages: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md), [正體中文](README.zh_TW.md).*
WARNING: THIS IS A BETA VERSION, THEREFORE YOU MAY ENCOUNTER BUGS. IF YOU DO, OPEN AN ISSUE VIA OUR GITHUB REPOSITORY.
diff --git a/README.pt_BR.md b/README.pt_BR.md
index b1b70bcd6..36e44b103 100644
--- a/README.pt_BR.md
+++ b/README.pt_BR.md
@@ -18,7 +18,7 @@
Site • Blog • FAQ • Press
-*Read this in other languages: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md).*
+*Read this in other languages: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md), [正體中文](README.zh_TW.md).*
AVISO: ESTA É UMA VERSÃO BETA, PORTANTO, VOCÊ PODE ENCONTRAR BUGS. ENCONTROU ALGUM, ABRA UM ISSUE ATRAVÉS DO NOSSO REPOSITÓRIO GITHUB.
diff --git a/README.ro.md b/README.ro.md
index b40015a11..b52339871 100644
--- a/README.ro.md
+++ b/README.ro.md
@@ -17,7 +17,7 @@
Website • Blog • FAQ • Presă
-*Citiţi în alte limbi: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md).*
+*Citiţi în alte limbi: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md), [正體中文](README.zh_TW.md).*
Atenţionare: ACEASTA ESTE O VERSIUNE BETA, AŞA CĂ S-AR PUTE SĂ ÎNTÂLNIŢI ERORI. DACĂ SE ÎNTÂMPLĂ ACEST LUCRU, DESCHIDEŢI UN ISSUE PRIN REPSITORY-UL NOSTRU GITHUB.
diff --git a/README.so.md b/README.so.md
index 78cd65075..1195b9488 100644
--- a/README.so.md
+++ b/README.so.md
@@ -17,7 +17,7 @@
Website-ka • Maqaalada • Su'aalaha Aalaa La-iswaydiiyo • Warbaahinta
-*Ku akhri luuqad kale: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md).*
+*Ku akhri luuqad kale: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md), [正體中文](README.zh_TW.md).*
DIGNIIN: MIDKAN, NOOCA APP-KA EE HADDA WALI TIJAABO AYUU KU JIRAA, SIDAA DARTEED CILLADO AYAAD LA KULMI KARTAA. HADAAD LA KULANTO, KA FUR ARIN SHARAXAYA QAYBTANADA ARRIMAHA EE GITHUB-KA.
diff --git a/README.tr.md b/README.tr.md
index 1fa39d600..a0d231cf8 100644
--- a/README.tr.md
+++ b/README.tr.md
@@ -17,7 +17,7 @@
Web sitesi • Blog • SSS • Basın
-*Bu sayfayı diğer dillerde okuyun: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md).*
+*Bu sayfayı diğer dillerde okuyun: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md), [正體中文](README.zh_TW.md).*
UYARI: BU SÜRÜM BETA SÜRÜMÜDÜR, BU NEDENLE HATALARLA KARŞILAŞABİLİRSİNİZ. HATA BULURSANIZ BU GITHUB DEPOSUNDA BUNU BİLDİRİN.
diff --git a/README.zh_TW.md b/README.zh_TW.md
new file mode 100644
index 000000000..e4d9d375d
--- /dev/null
+++ b/README.zh_TW.md
@@ -0,0 +1,149 @@
+
+NewPipe
+輕巧的 Android 串流前端
+
+
+
+
+
+
+
+
+
+
+
+
+截圖 • 說明 • 功能 • 安裝與更新 • 貢獻 • 捐款 • 授權憑證
+網站 • 部落格 • FAQ • 媒體
+
+
+*其他語言: [English](README.md), [Español](README.es.md), [한국어](README.ko.md), [Soomaali](README.so.md), [Português Brasil](README.pt_BR.md), [日本語](README.ja.md), [Română](README.ro.md), [Türkçe](README.tr.md), [正體中文](README.zh_TW.md)*
+
+警告:這是測試版本,可能會發生錯誤。如果遇到錯誤,請在我們的 GITHUB REPO 開 ISSUE 回報。
+
+將 NEWPIPE 或其任何分支上傳至 GOOGLE PLAY 商店違反了他們的使用者合約。
+
+
+## 截圖
+
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_01.png)
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_02.png)
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_03.png)
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_04.png)
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_05.png)
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_06.png)
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_07.png)
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_08.png)
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_09.png)
+[ ](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_10.png)
+[ ](fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_11.png)
+[ ](fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_12.png)
+
+
+## 說明
+
+NewPipe 不使用任何 Google 架構的函式庫或 Youtube API。因為只解析網站來取得必要資訊,此軟體可以在沒有安裝 Google 服務的裝置上使用。此外,使用 NewPipe 不需要 YouTube 帳號。NewPipe 是個 copyleft 自由軟體。
+
+
+### 功能
+
+* 搜索影片
+* 無須登入
+* 顯示影片的基本資訊
+* 播放 Youtube 影片
+* 收聽 Youtube 影片
+* 彈出模式(懸浮模式)
+* 選擇串流播放器來播放影片
+* 下載影片
+* 只下載音訊
+* 在 Kodi 開啟影片
+* 顯示上/下一部影片
+* 搜尋特定語言的影片
+* 播放/屏蔽有年齡限的制內容
+* 顯示頻道資訊
+* 搜索頻道
+* 觀看頻道影片
+* 支援 Orbot/Tor (目前未直接實裝)
+* 支援 1080p/2K/4K
+* 觀看歷史
+* 訂閱頻道
+* 搜尋歷史
+* 搜索/播放播放清單
+* 將播放清單加入待播清單
+* 將影片加入待播清單
+* 末端播放清單
+* 字幕
+* 支援直播
+* 顯示評論
+
+### 支援的網站
+
+NewPipe 支援多種服務。我們的[使用文件](https://teamnewpipe.github.io/documentation/)有如何增加新服務與下載器的說明。想新增服務的話,請聯絡我們。目前支援的服務有:
+
+* YouTube
+* SoundCloud \[測試\]
+* media.ccc.de \[測試\]
+* PeerTube instances \[測試\]
+* Bandcamp \[測試\]
+
+
+
+
+
+## 安裝與更新
+你可以用以下的任何方法安裝 NewPipe:
+1. 將我們的 repo 加至 F-Droid 再從那邊安裝。詳細的說明在此:https://newpipe.net/FAQ/tutorials/install-add-fdroid-repo/
+2. 從 [Github 發布](https://github.com/TeamNewPipe/NewPipe/releases) 下載 APK 再安裝。
+3. 自 F-Droid 更新。這是取得更新最慢的方式,因為 F-Droid 要檢測到更新、建置 APK 、簽署後才會將更新推送給使用者。
+4. 自己建置 APK。這是取得更新最快的方法,但因為這也比較複雜,所以我們推薦使用其他方法。
+
+對一般的使用者我們推薦方法一。使用方法一或二安裝的 APK 互相相容,但都不相容於方法三。因為前兩者的簽章使用相同的(我們的)金鑰,與後者(使用 F-Droid 的金鑰)的不同。使用方法四建置除錯 APK 完全避免了金鑰的問題。簽章金鑰能幫助使用者避免安裝惡意的更新。
+
+若你想更換安裝來源(如果 NewPipe 的核心機能壞掉而 F-Droid 又還沒有最新的更新),我們推薦以下的步驟:
+1. 在 設定 > 內容 > 匯出資料庫 備份資料以保留歷史、訂閱與播放清單
+2. 移除 NewPipe
+3. 從新的來源下載 APK 並安裝
+4. 在 設定 > 內容 > 匯入資料庫 匯入在步驟 1 備份的資料
+
+
+## 貢獻
+若你有任何想法、翻譯、設計、整理原始碼或大範圍的原始碼改動,我們歡迎任何幫助。
+
+若你想參與,請閱讀[貢獻須知(英文)](.github/CONTRIBUTING.md)。
+
+
+
+
+
+
+## 捐款
+若你喜歡 NewPipe 我們歡迎捐款。你可以使用 bitcoin ,也能在 Bountysource 或 Liberapay 上捐款。 更多關於捐款資訊,請見我們的[網站](https://newpipe.net/donate)。
+
+
+
+
+
+ 16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
+
+
+
+
+
+
+
+
+
+
+
+
+
+## 隱私權政策
+NewPipe 專案旨在提供私人與匿名的網路媒體使用體驗。
+因此,此軟體不在沒有你的同意下收集任何資料。NewPipe 的隱私權政策說明了送出錯誤報告與在我們的部落格上留言時何種資料會被傳輸或儲存。你可以在[這裡](https://newpipe.net/legal/privacy/)找到此文件。
+
+
+## 授權條款
+[![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](https://www.gnu.org/licenses/gpl-3.0.en.html)
+
+NewPipe 是自由軟體:可以任意使用、研究、分享或更改。在自由軟體基金會發布的[ GPL 通用公眾授權條款](第三或更新的版本)下可以重新散佈與/或修改。
+
diff --git a/app/build.gradle b/app/build.gradle
index 3b02cc757..d085d9f7e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -113,6 +113,7 @@ ext {
leakCanaryVersion = '2.5'
stethoVersion = '1.6.0'
mockitoVersion = '4.0.0'
+ assertJVersion = '3.22.0'
}
configurations {
@@ -293,6 +294,7 @@ dependencies {
androidTestImplementation "androidx.test.ext:junit:1.1.3"
androidTestImplementation "androidx.test:runner:1.4.0"
androidTestImplementation "androidx.room:room-testing:${androidxRoomVersion}"
+ androidTestImplementation "org.assertj:assertj-core:${assertJVersion}"
}
static String getGitWorkingBranch() {
diff --git a/app/src/androidTest/java/org/schabi/newpipe/local/history/HistoryRecordManagerTest.kt b/app/src/androidTest/java/org/schabi/newpipe/local/history/HistoryRecordManagerTest.kt
index 3f3a038d8..c32a43b2a 100644
--- a/app/src/androidTest/java/org/schabi/newpipe/local/history/HistoryRecordManagerTest.kt
+++ b/app/src/androidTest/java/org/schabi/newpipe/local/history/HistoryRecordManagerTest.kt
@@ -1,19 +1,19 @@
package org.schabi.newpipe.local.history
import androidx.test.core.app.ApplicationProvider
+import org.assertj.core.api.Assertions.assertThat
import org.junit.After
import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Rule
import org.junit.Test
-import org.junit.rules.Timeout
import org.schabi.newpipe.database.AppDatabase
import org.schabi.newpipe.database.history.model.SearchHistoryEntry
import org.schabi.newpipe.testUtil.TestDatabase
import org.schabi.newpipe.testUtil.TrampolineSchedulerRule
+import java.time.LocalDateTime
import java.time.OffsetDateTime
-import java.util.concurrent.TimeUnit
+import java.time.ZoneOffset
class HistoryRecordManagerTest {
@@ -23,9 +23,6 @@ class HistoryRecordManagerTest {
@get:Rule
val trampolineScheduler = TrampolineSchedulerRule()
- @get:Rule
- val timeout = Timeout(1, TimeUnit.SECONDS)
-
@Before
fun setup() {
database = TestDatabase.createReplacingNewPipeDatabase()
@@ -45,59 +42,59 @@ class HistoryRecordManagerTest {
// that the number of Lists it returns is exactly 1, we can only check if the first List is
// correct. Why on earth has a Flowable been used instead of a Single for getAll()?!?
val entities = database.searchHistoryDAO().all.blockingFirst()
- assertEquals(1, entities.size)
- assertEquals(1, entities[0].id)
- assertEquals(0, entities[0].serviceId)
- assertEquals("Hello", entities[0].search)
+ assertThat(entities).hasSize(1)
+ assertThat(entities[0].id).isEqualTo(1)
+ assertThat(entities[0].serviceId).isEqualTo(0)
+ assertThat(entities[0].search).isEqualTo("Hello")
}
@Test
fun deleteSearchHistory() {
val entries = listOf(
- SearchHistoryEntry(OffsetDateTime.now(), 0, "A"),
- SearchHistoryEntry(OffsetDateTime.now(), 2, "A"),
- SearchHistoryEntry(OffsetDateTime.now(), 1, "B"),
- SearchHistoryEntry(OffsetDateTime.now(), 0, "B"),
+ SearchHistoryEntry(time.minusSeconds(1), 0, "A"),
+ SearchHistoryEntry(time.minusSeconds(2), 2, "A"),
+ SearchHistoryEntry(time.minusSeconds(3), 1, "B"),
+ SearchHistoryEntry(time.minusSeconds(4), 0, "B"),
)
// make sure all 4 were inserted
database.searchHistoryDAO().insertAll(entries)
- assertEquals(entries.size, database.searchHistoryDAO().all.blockingFirst().size)
+ assertThat(database.searchHistoryDAO().all.blockingFirst()).hasSameSizeAs(entries)
// try to delete only "A" entries, "B" entries should be untouched
manager.deleteSearchHistory("A").test().await().assertValue(2)
val entities = database.searchHistoryDAO().all.blockingFirst()
- assertEquals(2, entities.size)
- assertTrue(entries[2].hasEqualValues(entities[0]))
- assertTrue(entries[3].hasEqualValues(entities[1]))
+ assertThat(entities).hasSize(2)
+ assertThat(entities).usingElementComparator { o1, o2 -> if (o1.hasEqualValues(o2)) 0 else 1 }
+ .containsExactly(*entries.subList(2, 4).toTypedArray())
// assert that nothing happens if we delete a search query that does exist in the db
manager.deleteSearchHistory("A").test().await().assertValue(0)
val entities2 = database.searchHistoryDAO().all.blockingFirst()
- assertEquals(2, entities2.size)
- assertTrue(entries[2].hasEqualValues(entities2[0]))
- assertTrue(entries[3].hasEqualValues(entities2[1]))
+ assertThat(entities2).hasSize(2)
+ assertThat(entities2).usingElementComparator { o1, o2 -> if (o1.hasEqualValues(o2)) 0 else 1 }
+ .containsExactly(*entries.subList(2, 4).toTypedArray())
// delete all remaining entries
manager.deleteSearchHistory("B").test().await().assertValue(2)
- assertEquals(0, database.searchHistoryDAO().all.blockingFirst().size)
+ assertThat(database.searchHistoryDAO().all.blockingFirst()).isEmpty()
}
@Test
fun deleteCompleteSearchHistory() {
val entries = listOf(
- SearchHistoryEntry(OffsetDateTime.now(), 1, "A"),
- SearchHistoryEntry(OffsetDateTime.now(), 2, "B"),
- SearchHistoryEntry(OffsetDateTime.now(), 0, "C"),
+ SearchHistoryEntry(time.minusSeconds(1), 1, "A"),
+ SearchHistoryEntry(time.minusSeconds(2), 2, "B"),
+ SearchHistoryEntry(time.minusSeconds(3), 0, "C"),
)
// make sure all 3 were inserted
database.searchHistoryDAO().insertAll(entries)
- assertEquals(entries.size, database.searchHistoryDAO().all.blockingFirst().size)
+ assertThat(database.searchHistoryDAO().all.blockingFirst()).hasSameSizeAs(entries)
// should remove everything
manager.deleteCompleteSearchHistory().test().await().assertValue(entries.size)
- assertEquals(0, database.searchHistoryDAO().all.blockingFirst().size)
+ assertThat(database.searchHistoryDAO().all.blockingFirst()).isEmpty()
}
@Test
@@ -111,11 +108,12 @@ class HistoryRecordManagerTest {
// make sure correct number of searches is returned and in correct order
val searches = manager.getRelatedSearches("", 6, 4).blockingFirst()
- assertEquals(4, searches.size)
- assertEquals(RELATED_SEARCHES_ENTRIES[6].search, searches[0]) // A (even if in two places)
- assertEquals(RELATED_SEARCHES_ENTRIES[4].search, searches[1]) // B
- assertEquals(RELATED_SEARCHES_ENTRIES[5].search, searches[2]) // AA
- assertEquals(RELATED_SEARCHES_ENTRIES[2].search, searches[3]) // BA
+ assertThat(searches).containsExactly(
+ RELATED_SEARCHES_ENTRIES[6].search, // A (even if in two places)
+ RELATED_SEARCHES_ENTRIES[4].search, // B
+ RELATED_SEARCHES_ENTRIES[5].search, // AA
+ RELATED_SEARCHES_ENTRIES[2].search, // BA
+ )
}
@Test
@@ -129,25 +127,28 @@ class HistoryRecordManagerTest {
// make sure correct number of searches is returned and in correct order
val searches = manager.getRelatedSearches("A", 3, 5).blockingFirst()
- assertEquals(3, searches.size)
- assertEquals(RELATED_SEARCHES_ENTRIES[6].search, searches[0]) // A (even if in two places)
- assertEquals(RELATED_SEARCHES_ENTRIES[5].search, searches[1]) // AA
- assertEquals(RELATED_SEARCHES_ENTRIES[1].search, searches[2]) // BA
+ assertThat(searches).containsExactly(
+ RELATED_SEARCHES_ENTRIES[6].search, // A (even if in two places)
+ RELATED_SEARCHES_ENTRIES[5].search, // AA
+ RELATED_SEARCHES_ENTRIES[1].search, // BA
+ )
// also make sure that the string comparison is case insensitive
val searches2 = manager.getRelatedSearches("a", 3, 5).blockingFirst()
- assertEquals(searches, searches2)
+ assertThat(searches).isEqualTo(searches2)
}
companion object {
- val RELATED_SEARCHES_ENTRIES = listOf(
- SearchHistoryEntry(OffsetDateTime.now().minusSeconds(7), 2, "AC"),
- SearchHistoryEntry(OffsetDateTime.now().minusSeconds(6), 0, "ABC"),
- SearchHistoryEntry(OffsetDateTime.now().minusSeconds(5), 1, "BA"),
- SearchHistoryEntry(OffsetDateTime.now().minusSeconds(4), 3, "A"),
- SearchHistoryEntry(OffsetDateTime.now().minusSeconds(2), 0, "B"),
- SearchHistoryEntry(OffsetDateTime.now().minusSeconds(3), 2, "AA"),
- SearchHistoryEntry(OffsetDateTime.now().minusSeconds(1), 1, "A"),
+ private val time = OffsetDateTime.of(LocalDateTime.of(2000, 1, 1, 1, 1), ZoneOffset.UTC)
+
+ private val RELATED_SEARCHES_ENTRIES = listOf(
+ SearchHistoryEntry(time.minusSeconds(7), 2, "AC"),
+ SearchHistoryEntry(time.minusSeconds(6), 0, "ABC"),
+ SearchHistoryEntry(time.minusSeconds(5), 1, "BA"),
+ SearchHistoryEntry(time.minusSeconds(4), 3, "A"),
+ SearchHistoryEntry(time.minusSeconds(2), 0, "B"),
+ SearchHistoryEntry(time.minusSeconds(3), 2, "AA"),
+ SearchHistoryEntry(time.minusSeconds(1), 1, "A"),
)
}
}
diff --git a/app/src/androidTest/java/org/schabi/newpipe/local/playlist/LocalPlaylistManagerTest.kt b/app/src/androidTest/java/org/schabi/newpipe/local/playlist/LocalPlaylistManagerTest.kt
index 249492d8f..c392d8d3d 100644
--- a/app/src/androidTest/java/org/schabi/newpipe/local/playlist/LocalPlaylistManagerTest.kt
+++ b/app/src/androidTest/java/org/schabi/newpipe/local/playlist/LocalPlaylistManagerTest.kt
@@ -4,13 +4,11 @@ import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
-import org.junit.rules.Timeout
import org.schabi.newpipe.database.AppDatabase
import org.schabi.newpipe.database.stream.model.StreamEntity
import org.schabi.newpipe.extractor.stream.StreamType
import org.schabi.newpipe.testUtil.TestDatabase
import org.schabi.newpipe.testUtil.TrampolineSchedulerRule
-import java.util.concurrent.TimeUnit
class LocalPlaylistManagerTest {
@@ -20,9 +18,6 @@ class LocalPlaylistManagerTest {
@get:Rule
val trampolineScheduler = TrampolineSchedulerRule()
- @get:Rule
- val timeout = Timeout(1, TimeUnit.SECONDS)
-
@Before
fun setup() {
database = TestDatabase.createReplacingNewPipeDatabase()
diff --git a/app/src/main/java/org/schabi/newpipe/database/history/model/SearchHistoryEntry.java b/app/src/main/java/org/schabi/newpipe/database/history/model/SearchHistoryEntry.java
deleted file mode 100644
index fd4588700..000000000
--- a/app/src/main/java/org/schabi/newpipe/database/history/model/SearchHistoryEntry.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.schabi.newpipe.database.history.model;
-
-import androidx.room.ColumnInfo;
-import androidx.room.Entity;
-import androidx.room.Ignore;
-import androidx.room.Index;
-import androidx.room.PrimaryKey;
-
-import java.time.OffsetDateTime;
-
-import static org.schabi.newpipe.database.history.model.SearchHistoryEntry.SEARCH;
-
-@Entity(tableName = SearchHistoryEntry.TABLE_NAME,
- indices = {@Index(value = SEARCH)})
-public class SearchHistoryEntry {
- public static final String ID = "id";
- public static final String TABLE_NAME = "search_history";
- public static final String SERVICE_ID = "service_id";
- public static final String CREATION_DATE = "creation_date";
- public static final String SEARCH = "search";
-
- @ColumnInfo(name = ID)
- @PrimaryKey(autoGenerate = true)
- private long id;
-
- @ColumnInfo(name = CREATION_DATE)
- private OffsetDateTime creationDate;
-
- @ColumnInfo(name = SERVICE_ID)
- private int serviceId;
-
- @ColumnInfo(name = SEARCH)
- private String search;
-
- public SearchHistoryEntry(final OffsetDateTime creationDate, final int serviceId,
- final String search) {
- this.serviceId = serviceId;
- this.creationDate = creationDate;
- this.search = search;
- }
-
- public long getId() {
- return id;
- }
-
- public void setId(final long id) {
- this.id = id;
- }
-
- public OffsetDateTime getCreationDate() {
- return creationDate;
- }
-
- public void setCreationDate(final OffsetDateTime creationDate) {
- this.creationDate = creationDate;
- }
-
- public int getServiceId() {
- return serviceId;
- }
-
- public void setServiceId(final int serviceId) {
- this.serviceId = serviceId;
- }
-
- public String getSearch() {
- return search;
- }
-
- public void setSearch(final String search) {
- this.search = search;
- }
-
- @Ignore
- public boolean hasEqualValues(final SearchHistoryEntry otherEntry) {
- return getServiceId() == otherEntry.getServiceId()
- && getSearch().equals(otherEntry.getSearch());
- }
-}
diff --git a/app/src/main/java/org/schabi/newpipe/database/history/model/SearchHistoryEntry.kt b/app/src/main/java/org/schabi/newpipe/database/history/model/SearchHistoryEntry.kt
new file mode 100644
index 000000000..8cb9a25ca
--- /dev/null
+++ b/app/src/main/java/org/schabi/newpipe/database/history/model/SearchHistoryEntry.kt
@@ -0,0 +1,40 @@
+package org.schabi.newpipe.database.history.model
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.Ignore
+import androidx.room.Index
+import androidx.room.PrimaryKey
+import java.time.OffsetDateTime
+
+@Entity(
+ tableName = SearchHistoryEntry.TABLE_NAME,
+ indices = [Index(value = [SearchHistoryEntry.SEARCH])]
+)
+data class SearchHistoryEntry(
+ @field:ColumnInfo(name = CREATION_DATE) var creationDate: OffsetDateTime?,
+ @field:ColumnInfo(
+ name = SERVICE_ID
+ ) var serviceId: Int,
+ @field:ColumnInfo(name = SEARCH) var search: String?
+) {
+ @ColumnInfo(name = ID)
+ @PrimaryKey(autoGenerate = true)
+ var id: Long = 0
+
+ @Ignore
+ fun hasEqualValues(otherEntry: SearchHistoryEntry): Boolean {
+ return (
+ serviceId == otherEntry.serviceId &&
+ search == otherEntry.search
+ )
+ }
+
+ companion object {
+ const val ID = "id"
+ const val TABLE_NAME = "search_history"
+ const val SERVICE_ID = "service_id"
+ const val CREATION_DATE = "creation_date"
+ const val SEARCH = "search"
+ }
+}
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 5a74dc948..05630ef79 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
@@ -1098,6 +1098,11 @@ public final class VideoDetailFragment
toggleFullscreenIfInFullscreenMode();
+ if (isPlayerAvailable()) {
+ // FIXME Workaround #7427
+ player.setRecovery();
+ }
+
if (!useExternalAudioPlayer) {
openNormalBackgroundPlayer(append);
} else {
@@ -1114,6 +1119,9 @@ public final class VideoDetailFragment
// See UI changes while remote playQueue changes
if (!isPlayerAvailable()) {
playerHolder.startService(false, this);
+ } else {
+ // FIXME Workaround #7427
+ player.setRecovery();
}
toggleFullscreenIfInFullscreenMode();
@@ -2208,12 +2216,20 @@ public final class VideoDetailFragment
mainFragment.setDescendantFocusability(afterDescendants);
toolbar.setDescendantFocusability(afterDescendants);
((ViewGroup) requireView()).setDescendantFocusability(blockDescendants);
- mainFragment.requestFocus();
+ // Only focus the mainFragment if the mainFragment (e.g. search-results)
+ // or the toolbar (e.g. Textfield for search) don't have focus.
+ // This was done to fix problems with the keyboard input, see also #7490
+ if (!mainFragment.hasFocus() && !toolbar.hasFocus()) {
+ mainFragment.requestFocus();
+ }
} else {
mainFragment.setDescendantFocusability(blockDescendants);
toolbar.setDescendantFocusability(blockDescendants);
((ViewGroup) requireView()).setDescendantFocusability(afterDescendants);
- binding.detailThumbnailRootLayout.requestFocus();
+ // Only focus the player if it not already has focus
+ if (!binding.getRoot().hasFocus()) {
+ binding.detailThumbnailRootLayout.requestFocus();
+ }
}
}
diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java
index a61cec11d..85c47ec74 100644
--- a/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java
@@ -268,7 +268,10 @@ public class PlaylistFragment extends BaseListInfoFragment {
ShareUtils.openUrlInBrowser(requireContext(), url);
break;
case R.id.menu_item_share:
- ShareUtils.shareText(requireContext(), name, url, currentInfo.getThumbnailUrl());
+ if (currentInfo != null) {
+ ShareUtils.shareText(requireContext(), name, url,
+ currentInfo.getThumbnailUrl());
+ }
break;
case R.id.menu_item_bookmark:
onBookmarkClicked();
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 5b593bcd7..905290b48 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
@@ -271,7 +271,7 @@ class FeedFragment : BaseStateFragment() {
override fun onDestroyView() {
// Ensure that all animations are canceled
- feedBinding.newItemsLoadedButton?.clearAnimation()
+ tryGetNewItemsLoadedButton()?.clearAnimation()
feedBinding.itemsList.adapter = null
_feedBinding = null
diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java
index c038f5573..81ef25db1 100644
--- a/app/src/main/java/org/schabi/newpipe/player/Player.java
+++ b/app/src/main/java/org/schabi/newpipe/player/Player.java
@@ -635,6 +635,7 @@ public final class Player implements
final boolean isMuted = intent.getBooleanExtra(IS_MUTED, isMuted());
/*
+ * TODO As seen in #7427 this does not work:
* There are 3 situations when playback shouldn't be started from scratch (zero timestamp):
* 1. User pressed on a timestamp link and the same video should be rewound to the timestamp
* 2. User changed a player from, for example. main to popup, or from audio to main, etc
diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java
index e68009d41..80d1b25ae 100644
--- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java
+++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java
@@ -157,9 +157,8 @@ public final class NavigationHelper {
return;
}
- if (PlayerHolder.getInstance().getType() != PlayerType.POPUP) {
- Toast.makeText(context, R.string.popup_playing_toast, Toast.LENGTH_SHORT).show();
- }
+ Toast.makeText(context, R.string.popup_playing_toast, Toast.LENGTH_SHORT).show();
+
final Intent intent = getPlayerIntent(context, MainPlayer.class, queue, resumePlayback);
intent.putExtra(Player.PLAYER_TYPE, MainPlayer.PlayerType.POPUP.ordinal());
ContextCompat.startForegroundService(context, intent);
@@ -168,12 +167,7 @@ public final class NavigationHelper {
public static void playOnBackgroundPlayer(final Context context,
final PlayQueue queue,
final boolean resumePlayback) {
- Toast.makeText(
- context,
- PlayerHolder.getInstance().getType() == PlayerType.AUDIO
- ? R.string.background_player_already_playing_toast
- : R.string.background_player_playing_toast,
- Toast.LENGTH_SHORT)
+ Toast.makeText(context, R.string.background_player_playing_toast, Toast.LENGTH_SHORT)
.show();
final Intent intent = getPlayerIntent(context, MainPlayer.class, queue, resumePlayback);
diff --git a/app/src/main/java/org/schabi/newpipe/util/StreamDialogEntry.java b/app/src/main/java/org/schabi/newpipe/util/StreamDialogEntry.java
index 0ffbe4137..bb1cbbeae 100644
--- a/app/src/main/java/org/schabi/newpipe/util/StreamDialogEntry.java
+++ b/app/src/main/java/org/schabi/newpipe/util/StreamDialogEntry.java
@@ -2,6 +2,7 @@ package org.schabi.newpipe.util;
import android.content.Context;
import android.net.Uri;
+import android.util.Log;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
@@ -21,6 +22,7 @@ import org.schabi.newpipe.util.external_communication.ShareUtils;
import java.util.Collections;
import java.util.List;
+import java.util.function.Consumer;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.schedulers.Schedulers;
@@ -63,20 +65,24 @@ public enum StreamDialogEntry {
* Info: Add this entry within showStreamDialog.
*/
enqueue(R.string.enqueue_stream, (fragment, item) -> {
- NavigationHelper.enqueueOnPlayer(fragment.getContext(), new SinglePlayQueue(item));
+ fetchItemInfoIfSparse(fragment, item, fullItem ->
+ NavigationHelper.enqueueOnPlayer(fragment.getContext(), fullItem));
}),
enqueue_next(R.string.enqueue_next_stream, (fragment, item) -> {
- NavigationHelper.enqueueNextOnPlayer(fragment.getContext(), new SinglePlayQueue(item));
+ fetchItemInfoIfSparse(fragment, item, fullItem ->
+ NavigationHelper.enqueueNextOnPlayer(fragment.getContext(), fullItem));
}),
- start_here_on_background(R.string.start_here_on_background, (fragment, item) ->
- NavigationHelper.playOnBackgroundPlayer(fragment.getContext(),
- new SinglePlayQueue(item), true)),
+ start_here_on_background(R.string.start_here_on_background, (fragment, item) -> {
+ fetchItemInfoIfSparse(fragment, item, fullItem ->
+ NavigationHelper.playOnBackgroundPlayer(fragment.getContext(), fullItem, true));
+ }),
- start_here_on_popup(R.string.start_here_on_popup, (fragment, item) ->
- NavigationHelper.playOnPopupPlayer(fragment.getContext(),
- new SinglePlayQueue(item), true)),
+ start_here_on_popup(R.string.start_here_on_popup, (fragment, item) -> {
+ fetchItemInfoIfSparse(fragment, item, fullItem ->
+ NavigationHelper.playOnPopupPlayer(fragment.getContext(), fullItem, true));
+ }),
set_as_playlist_thumbnail(R.string.set_as_playlist_thumbnail, (fragment, item) -> {
}), // has to be set manually
@@ -218,4 +224,39 @@ public enum StreamDialogEntry {
fragment.requireActivity().getSupportFragmentManager(),
item.getServiceId(), uploaderUrl, item.getUploaderName());
}
+
+ /////////////////////////////////////////////
+ // helper functions //
+ /////////////////////////////////////////////
+
+ private static void fetchItemInfoIfSparse(final Fragment fragment,
+ final StreamInfoItem item,
+ final Consumer callback) {
+ if (!(item.getStreamType() == StreamType.LIVE_STREAM
+ || item.getStreamType() == StreamType.AUDIO_LIVE_STREAM)
+ && item.getDuration() < 0) {
+ // Sparse item: fetched by fast fetch
+ ExtractorHelper.getStreamInfo(
+ item.getServiceId(),
+ item.getUrl(),
+ false
+ )
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(result -> {
+ final HistoryRecordManager recordManager =
+ new HistoryRecordManager(fragment.getContext());
+ recordManager.saveStreamState(result, 0)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doOnError(throwable -> Log.e("StreamDialogEntry",
+ throwable.toString()))
+ .subscribe();
+
+ callback.accept(new SinglePlayQueue(result));
+ }, throwable -> Log.e("StreamDialogEntry", throwable.toString()));
+ } else {
+ callback.accept(new SinglePlayQueue(item));
+ }
+ }
}
diff --git a/app/src/main/res/layout-large-land/fragment_video_detail.xml b/app/src/main/res/layout-large-land/fragment_video_detail.xml
index 98b24f511..1ee11c49b 100644
--- a/app/src/main/res/layout-large-land/fragment_video_detail.xml
+++ b/app/src/main/res/layout-large-land/fragment_video_detail.xml
@@ -651,7 +651,6 @@
android:layout_height="60dp"
android:layout_alignParentStart="true"
android:background="@color/transparent_background_color"
- android:contentDescription="@string/list_thumbnail_view_description"
android:gravity="center_vertical"
android:paddingLeft="@dimen/video_item_search_padding"
android:paddingRight="@dimen/video_item_search_padding"
diff --git a/app/src/main/res/layout/fragment_video_detail.xml b/app/src/main/res/layout/fragment_video_detail.xml
index b7d97cac5..23c9a166a 100644
--- a/app/src/main/res/layout/fragment_video_detail.xml
+++ b/app/src/main/res/layout/fragment_video_detail.xml
@@ -626,7 +626,6 @@
android:layout_height="60dp"
android:layout_alignParentStart="true"
android:background="@color/transparent_background_color"
- android:contentDescription="@string/list_thumbnail_view_description"
android:gravity="center_vertical"
android:paddingLeft="@dimen/video_item_search_padding"
android:paddingRight="@dimen/video_item_search_padding"
diff --git a/app/src/main/res/layout/list_channel_item.xml b/app/src/main/res/layout/list_channel_item.xml
index 6af6add2b..e302af0c5 100644
--- a/app/src/main/res/layout/list_channel_item.xml
+++ b/app/src/main/res/layout/list_channel_item.xml
@@ -63,7 +63,6 @@
android:layout_width="@dimen/video_item_search_thumbnail_image_width"
android:layout_height="@dimen/video_item_search_thumbnail_image_height"
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
- android:contentDescription="@string/list_thumbnail_view_description"
android:src="@drawable/buddy"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/itemTitleView"
diff --git a/app/src/main/res/layout/list_channel_mini_item.xml b/app/src/main/res/layout/list_channel_mini_item.xml
index cc91b858f..650685d50 100644
--- a/app/src/main/res/layout/list_channel_mini_item.xml
+++ b/app/src/main/res/layout/list_channel_mini_item.xml
@@ -15,7 +15,6 @@
android:layout_height="42dp"
android:layout_centerVertical="true"
android:layout_marginRight="12dp"
- android:contentDescription="@string/list_thumbnail_view_description"
android:src="@drawable/buddy_channel_item"
tools:ignore="RtlHardcoded" />
diff --git a/app/src/main/res/layout/list_comments_item.xml b/app/src/main/res/layout/list_comments_item.xml
index c76444212..81f27aaca 100644
--- a/app/src/main/res/layout/list_comments_item.xml
+++ b/app/src/main/res/layout/list_comments_item.xml
@@ -18,7 +18,6 @@
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
- android:contentDescription="@string/list_thumbnail_view_description"
android:focusable="false"
android:src="@drawable/buddy"
tools:ignore="RtlHardcoded" />
diff --git a/app/src/main/res/layout/list_comments_mini_item.xml b/app/src/main/res/layout/list_comments_mini_item.xml
index 02bba4063..604854a39 100644
--- a/app/src/main/res/layout/list_comments_mini_item.xml
+++ b/app/src/main/res/layout/list_comments_mini_item.xml
@@ -16,7 +16,6 @@
android:layout_height="42dp"
android:layout_centerVertical="true"
android:layout_marginRight="12dp"
- android:contentDescription="@string/list_thumbnail_view_description"
android:src="@drawable/buddy_channel_item"
tools:ignore="RtlHardcoded" />
diff --git a/app/src/main/res/layout/list_playlist_grid_item.xml b/app/src/main/res/layout/list_playlist_grid_item.xml
index 0c9390455..270abbde8 100644
--- a/app/src/main/res/layout/list_playlist_grid_item.xml
+++ b/app/src/main/res/layout/list_playlist_grid_item.xml
@@ -17,7 +17,6 @@
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
- android:contentDescription="@string/list_thumbnail_view_description"
android:scaleType="centerCrop"
android:src="@drawable/dummy_thumbnail_playlist"
tools:ignore="RtlHardcoded" />
diff --git a/app/src/main/res/layout/list_playlist_item.xml b/app/src/main/res/layout/list_playlist_item.xml
index 390528de1..84cce8395 100644
--- a/app/src/main/res/layout/list_playlist_item.xml
+++ b/app/src/main/res/layout/list_playlist_item.xml
@@ -18,7 +18,6 @@
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
- android:contentDescription="@string/list_thumbnail_view_description"
android:scaleType="centerCrop"
android:src="@drawable/dummy_thumbnail_playlist"
tools:ignore="RtlHardcoded" />
diff --git a/app/src/main/res/layout/list_playlist_mini_item.xml b/app/src/main/res/layout/list_playlist_mini_item.xml
index 835b18a6e..fe40449c6 100644
--- a/app/src/main/res/layout/list_playlist_mini_item.xml
+++ b/app/src/main/res/layout/list_playlist_mini_item.xml
@@ -18,7 +18,6 @@
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
- android:contentDescription="@string/list_thumbnail_view_description"
android:scaleType="centerCrop"
android:src="@drawable/dummy_thumbnail_playlist"
tools:ignore="RtlHardcoded" />
diff --git a/app/src/main/res/layout/list_stream_grid_item.xml b/app/src/main/res/layout/list_stream_grid_item.xml
index fc6e03648..e770e6614 100644
--- a/app/src/main/res/layout/list_stream_grid_item.xml
+++ b/app/src/main/res/layout/list_stream_grid_item.xml
@@ -14,7 +14,6 @@
android:id="@+id/itemThumbnailView"
android:layout_width="@dimen/video_item_grid_thumbnail_image_width"
android:layout_height="@dimen/video_item_grid_thumbnail_image_height"
- android:contentDescription="@string/list_thumbnail_view_description"
android:scaleType="centerCrop"
android:src="@drawable/dummy_thumbnail"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/layout/list_stream_item.xml b/app/src/main/res/layout/list_stream_item.xml
index 7f2f74c64..5806ed96e 100644
--- a/app/src/main/res/layout/list_stream_item.xml
+++ b/app/src/main/res/layout/list_stream_item.xml
@@ -14,7 +14,6 @@
android:id="@+id/itemThumbnailView"
android:layout_width="@dimen/video_item_search_thumbnail_image_width"
android:layout_height="@dimen/video_item_search_thumbnail_image_height"
- android:contentDescription="@string/list_thumbnail_view_description"
android:scaleType="centerCrop"
android:src="@drawable/dummy_thumbnail"
app:layout_constraintBottom_toTopOf="@+id/itemProgressView"
diff --git a/app/src/main/res/layout/list_stream_mini_item.xml b/app/src/main/res/layout/list_stream_mini_item.xml
index 4c68d9001..5de3eac46 100644
--- a/app/src/main/res/layout/list_stream_mini_item.xml
+++ b/app/src/main/res/layout/list_stream_mini_item.xml
@@ -17,7 +17,6 @@
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
- android:contentDescription="@string/list_thumbnail_view_description"
android:scaleType="centerCrop"
android:src="@drawable/dummy_thumbnail"
tools:ignore="RtlHardcoded" />
diff --git a/app/src/main/res/layout/list_stream_playlist_grid_item.xml b/app/src/main/res/layout/list_stream_playlist_grid_item.xml
index c8b360062..ac57ae378 100644
--- a/app/src/main/res/layout/list_stream_playlist_grid_item.xml
+++ b/app/src/main/res/layout/list_stream_playlist_grid_item.xml
@@ -17,7 +17,6 @@
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
- android:contentDescription="@string/list_thumbnail_view_description"
android:scaleType="centerCrop"
android:src="@drawable/dummy_thumbnail"
tools:ignore="RtlHardcoded" />
diff --git a/app/src/main/res/layout/list_stream_playlist_item.xml b/app/src/main/res/layout/list_stream_playlist_item.xml
index 58a4b917f..9ac1045e2 100644
--- a/app/src/main/res/layout/list_stream_playlist_item.xml
+++ b/app/src/main/res/layout/list_stream_playlist_item.xml
@@ -18,7 +18,6 @@
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
- android:contentDescription="@string/list_thumbnail_view_description"
android:scaleType="centerCrop"
android:src="@drawable/dummy_thumbnail"
tools:ignore="RtlHardcoded" />
diff --git a/app/src/main/res/layout/picker_subscription_item.xml b/app/src/main/res/layout/picker_subscription_item.xml
index be26d064c..5f0344057 100644
--- a/app/src/main/res/layout/picker_subscription_item.xml
+++ b/app/src/main/res/layout/picker_subscription_item.xml
@@ -21,7 +21,6 @@
android:id="@+id/thumbnail_view"
android:layout_width="48dp"
android:layout_height="48dp"
- android:contentDescription="@string/list_thumbnail_view_description"
tools:src="@drawable/buddy_channel_item" />
diff --git a/app/src/main/res/mipmap-xhdpi/newpipe_tv_banner.png b/app/src/main/res/mipmap-xhdpi/newpipe_tv_banner.png
index 49800ec19..b57cb4b99 100644
Binary files a/app/src/main/res/mipmap-xhdpi/newpipe_tv_banner.png and b/app/src/main/res/mipmap-xhdpi/newpipe_tv_banner.png differ
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index 62d6f4e31..ffd2b92b0 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -21,7 +21,6 @@
تثبيت
تطبيق Kore غير موجود. هل تريد تثبيته؟
فاتح
- صور معاينة الفيديو
خطأ في الشبكة
لم يتم العثور على مشغل بث. تثبيت VLC؟
افتح في المتصفح
diff --git a/app/src/main/res/values-b+ast/strings.xml b/app/src/main/res/values-b+ast/strings.xml
index 513dd5170..cbb668684 100644
--- a/app/src/main/res/values-b+ast/strings.xml
+++ b/app/src/main/res/values-b+ast/strings.xml
@@ -458,7 +458,6 @@
Arrastra pa reordenar
Avatar del xubidor
Reproducción d\'un videu, duración:
- Miniatura del videu
Un comentariu (n\'inglés):
Qué pasó:
Informar
diff --git a/app/src/main/res/values-b+uz+Latn/strings.xml b/app/src/main/res/values-b+uz+Latn/strings.xml
index 59530ee86..050f55a4a 100644
--- a/app/src/main/res/values-b+uz+Latn/strings.xml
+++ b/app/src/main/res/values-b+uz+Latn/strings.xml
@@ -288,7 +288,6 @@
Layklar
Yuklovchining avatar eskizi
Videoni ijro etish muddati, davomiyligi:
- Videoni oldindan ko\'rish uchun eskiz
Detallar:
Sizning sharhingiz (ingliz tilida):
Nima: \\n So\'rov: \\nTarkib tili: \\nTarkib mamlakati: \\nIlova tili: \\ nXizmat: \\ nGMT vaqti: \\ nPaket: \\ nVersion: \\ nOS versiyasi:
diff --git a/app/src/main/res/values-b+zh+HANS+CN/strings.xml b/app/src/main/res/values-b+zh+HANS+CN/strings.xml
index 25e92d4af..be31d04a8 100644
--- a/app/src/main/res/values-b+zh+HANS+CN/strings.xml
+++ b/app/src/main/res/values-b+zh+HANS+CN/strings.xml
@@ -155,7 +155,6 @@
详情:\\n请求:\\n内容语言:\\n内容国家:\\n客户端语言:\\n服务:\\nGMT时间:\\n包名:\\n版本:\\n操作系统版本:
您的附加说明(请用英文):
详细信息:
- 视频预览缩略图
播放视频,时长:
视频上传者的头像缩略图
十亿
diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml
index 5dd5daca1..a6f21866d 100644
--- a/app/src/main/res/values-be/strings.xml
+++ b/app/src/main/res/values-be/strings.xml
@@ -153,7 +153,6 @@
Што:\\nЗапыт:\\nМова кантэнту:\\nСэрвіс:\\nЧас па Грынвічы:\\nПакет:\\nВерсія:\\nВерсія АС:
Ваш каментар (English):
Падрабязнасці:
- Мініяцюра відэа-прэв\'ю
Мініяцюра відэа-прэв\'ю
Мініяцюра аватара карыстальніка
Спадабалася
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index 447f0a964..32109a4a9 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -213,7 +213,6 @@
Не са намерени видео стриймове
Не са намерени аудио стриймове
Какво:\\nЗаявка:\\nЕзик на съдържанието:\\nУслуга:\\nВреме по GMT:\\nПакет:\\nВерсия:\\nОС версия:
- Миниатюра на видео
Пренареди чрез плъзгане
Начало
Преименувай
diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml
index d561d52e8..8a014cdf8 100644
--- a/app/src/main/res/values-bn-rBD/strings.xml
+++ b/app/src/main/res/values-bn-rBD/strings.xml
@@ -77,7 +77,6 @@
তোমার মন্তব্য (ইংরেজিতে):
বর্ণনা:
- ভিডিও প্রাকদর্শন থাম্বনেইল
ভিডিও প্রাকদর্শন, সময়ঃ
আপলোডারের ইউজারপিক থাম্বনেইল
পছন্দ হয়েছে
diff --git a/app/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml
index 94fa9ee9e..edf38d3eb 100644
--- a/app/src/main/res/values-bn-rIN/strings.xml
+++ b/app/src/main/res/values-bn-rIN/strings.xml
@@ -31,7 +31,6 @@
পছন্দ হয়েছে
আপলোডারের ইউজারপিক থাম্বনেইল
ভিডিও প্রাকদর্শন, সময়ঃ
- ভিডিও প্রাকদর্শন থাম্বনেইল
বর্ণনা:
আপনার মন্তব্য (ইংরেজিতে):
কি:\\nঅনুরোধ:\\nকন্টেন্ট ভাষা:\\nসার্ভিস:\\nসময়(GMT এ):\\nপ্যাকেজ:\\nসংস্করণ:\\nওএস সংস্করণ:\\nআইপি পরিসর:
diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml
index 649f648a8..c4773637a 100644
--- a/app/src/main/res/values-bn/strings.xml
+++ b/app/src/main/res/values-bn/strings.xml
@@ -116,7 +116,6 @@
পছন্দ
আপলোডারের অবয়বের প্রতিচ্ছবি
ভিডিও চালাও, সময়ঃ
- ভিডিও প্রাকদর্শন প্রতিচ্ছবি
বর্ণনা:
তোমার মন্তব্য (ইংরেজিতে):
কি:\\nঅনুরোধ:\\nকন্টেন্ট ভাষা:\\nসার্ভিস:\\nসময়(GMT এ):\\nপ্যাকেজ:\\nসংস্করণ:\\nওএস সংস্করণ:\\nআইপি পরিসর:
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index ec9a0f608..40e30928a 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -161,7 +161,6 @@
Què ha passat:
Comentari (en anglès):
Detalls:
- Miniatura de previsualització del vídeo
Reprodueix el vídeo, duració:
Miniatura de l\'avatar del propietari
M\'agrada
diff --git a/app/src/main/res/values-ckb/strings.xml b/app/src/main/res/values-ckb/strings.xml
index cf04ff89c..e42f10aa5 100644
--- a/app/src/main/res/values-ckb/strings.xml
+++ b/app/src/main/res/values-ckb/strings.xml
@@ -177,7 +177,6 @@
خستنه نۆبهتی-خۆكاری پهخشی دواتر
لێدهره دەرەکییەکان پشتگیری ئەم جۆرە بەستەرانە ناکەن
کردار ڕەتکرایەوە لەلایەن سیستەمەوە
- زووبینینی وێنۆچکەی ڤیدیۆ
پهنجهره
ڕهش
قهبارهی بنەڕەتی پهنجهره
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 957fe6e91..98b632692 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -42,7 +42,6 @@
Nebylo možné dekódovat URL videa
Nebylo možné analyzovat stránku
Obsah není k dispozici
- Náhled videa
Přehrát video, délka:
Náhled avataru uploadera
To se mi líbí
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index d59c35edb..7e75ca57b 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -171,7 +171,6 @@
Hvad skete der:
Din kommentar (på engelsk):
Detaljer:
- Videominiaturebillede
Videominiaturebillede
Uploaders profilbillede
Synes godt om
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index b69c87f39..7786d9d8b 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -26,7 +26,6 @@
Nicht unterstützte URL
Video und Audio
Bevorzugte Sprache des Inhalts
- Video-Vorschaubild
Video abspielen, Dauer:
Avatarbild des Benutzers
Gefällt mir nicht
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 108c0474f..46ef00f66 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -37,7 +37,6 @@
Εμφάνιση
Αναπαραγωγή στο παρασκήνιο
Σφάλμα δικτύου
- Μικρογραφία προεπισκόπησης βίντεο
Αναπαραγωγή βίντεο, διάρκεια:
Μικρογραφία εικόνας προφίλ του χρήστη
Like
diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml
index ac6a1af30..1ff87940b 100644
--- a/app/src/main/res/values-eo/strings.xml
+++ b/app/src/main/res/values-eo/strings.xml
@@ -38,7 +38,6 @@
Ĉiuj bildetoj ne ŝargeblas
La subskribo de la ligilo de la filmeto ne malĉifreblas
La retejo ne analizeblas
- Bildeto de la antaŭrigardo de la filmeto
Ludi filmeton, daŭro:
Bildeto de la alŝutinto
Elŝutujo por filmetoj
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 3daa7a5d4..78d6713e9 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -42,7 +42,6 @@
No se pudo analizar el sitio web
Mostrar vídeos \'Siguientes\' y \'Similares\'
Idioma predefinido del contenido
- Miniatura de previsualización del vídeo
Reproducir vídeo; duración:
Me gusta
No me gusta
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index 2b36f6453..0468a982b 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -148,7 +148,6 @@
Mis:\\nPäring:\\nSisu keel:\\nSisu maa:\\nRakenduse keel:\\nTeenus:\\nGMT aeg:\\nPakett:\\nVersioon:\\nOS versioon:
Oma kommentaar (inglise keeles):
Üksikasjad:
- Video eelvaate pisipilt
Esita video, kestus:
Üleslaadiaja avatari pisipilt
Meeldib
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 88f27b920..97b407275 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -24,7 +24,6 @@
URLak ez du euskarririk
Edukiaren hizkuntz lehenetsia
Bideoa eta audioa
- Bideoaren aurreikuspen argazkitxoa
Erreproduzitu bideoa, iraupena:
Igotzailearen abatarraren iruditxoa
Ez dute gustoko
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index 518ad7e1c..48a41c588 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -58,7 +58,6 @@
چه روی داد:
توضیح شما (به انگلیسی):
جزییات:
- بندانگشتی پیشنمایش ویدیو
پخش ویدیو، مدت زمان:
بندانگشتی کاربر بارگذاری کننده
پسندها
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index 27d38f43f..7373acdf9 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -95,7 +95,6 @@
Mitä tapahtui:
Sinun viesti (englanniksi):
Yksityiskohdat:
- Videon esikatselukuva
Toista video, kesto:
Lataajan hahmokuvake
Tykkäykset
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 638695ffe..da3a33a36 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -25,7 +25,6 @@
Afficher les vidéos « Suivantes » et « Similaires »
URL non pris en charge
Vidéo et audio
- Miniature d’aperçu vidéo
Lecture vidéo, durée :
Je n’aime pas
J’aime
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index accd13d8e..6d3c1f1b0 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -152,7 +152,6 @@
Que: \\n Solicitar: \\n Idioma de contido: \\n País de contido: \\n Idioma do aplicativo: \\nServicio: \\n Tempo GMT: \\n Paquete: \\n Versión: \\n versión de nOS:
O teu comentario (en inglés):
Detalles:
- Miniatura do vídeo
Reproducir o vídeo, duración:
Miniatura do avatar do autor
Gosto
diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml
index 1bb11399f..b629f4f7a 100644
--- a/app/src/main/res/values-he/strings.xml
+++ b/app/src/main/res/values-he/strings.xml
@@ -105,7 +105,6 @@
מתבצעת החלמה משגיאת נגן
ההערה שלך (באנגלית):
פרטים:
- תמונה ממוזערת לתצוגה המקדימה של הסרטון
נגינת סרטון, משך:
תמונה ייצוגית של המפרסם
אהבו
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index a9c6bca1c..65e8a3fa4 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -119,7 +119,6 @@
क्या:\\nमांग:\\nविषयवस्तु की भाषा:\\nसेवा:\\nजीएमटी समय:\\nपैकेज:\\nसंस्करण:\\nOS संस्करण:
आपकी टिप्पणी:
विवरण:
- विडियो के thumbnail के पूर्व दर्शन
वीडियो चलाये, समय :
अपलोडर के thumbnail वाले फोटो
पसंद
diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml
index 7b5ba37bd..162dc77ad 100644
--- a/app/src/main/res/values-hr/strings.xml
+++ b/app/src/main/res/values-hr/strings.xml
@@ -92,7 +92,6 @@
Što:\\nZahtjev:\\nJezik sadržaja:\\nZemlja sadržaja:\\nJezik programa:\\nUsluga:\\nGMT vrijeme:\\nPaket:\\nVerzija:\\nVerzija OS-a:
Vaš komentar (na engleskom):
Detalji:
- Sličica pregleda videozapisa
Pokreni video, trajanje:
Profilna slika prenositelja
Goreglasovi
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 364b88919..4b7871d79 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -39,7 +39,6 @@
A letöltött hangfájlok itt találhatóak
Tetszik
Nem tetszik
- Előnézeti kép
Videó lejátszása, hossz:
Fetöltő profilképe
Tartalom
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index fe26f32b7..3253bade1 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -55,7 +55,6 @@
Yang terjadi:
Komentar Anda (dalam bahasa Inggris):
Detail:
- Thumbnail pratinjau video
Putar video, durasi:
Suka
Thumbnail avatar pengunggah
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 42d31308f..c65eeff80 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -26,7 +26,6 @@
URL non supportato
Lingua predefinita per i contenuti
Video e audio
- Copertina di anteprima video
Riproduci video, durata:
Immagine dell\'utente
Non mi piace
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 418b363ee..66a877c76 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -26,7 +26,6 @@
対応していないURLです
デフォルトの言語
動画と音声
- 動画 プレビュー サムネイル
ビデオ再生、時間:
投稿者アイコンのサムネイル
低評価
diff --git a/app/src/main/res/values-kmr/strings.xml b/app/src/main/res/values-kmr/strings.xml
index 2ed1163f3..b87b84741 100644
--- a/app/src/main/res/values-kmr/strings.xml
+++ b/app/src/main/res/values-kmr/strings.xml
@@ -65,7 +65,6 @@
Evîn
Nîgariya avatar ya barkêşker
Vîdeo, demdirêj bilîze:
- Pêşniyara vîdyoyê wêneyê piçûk
Hûrî:
Şîroveya we (bi Îngilîzî):
Çi:\\nRequest:\\nContent Language:\\nContent Welat:\\nApp Language:\\nService:\\nGMT Dem:\\nPackage:\\nVersion:\\nOS version:
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 7befbb800..bf1e63051 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -26,7 +26,6 @@
지원하지 않는 URL입니다
기본 컨텐츠 언어
비디오 & 오디오
- 비디오 미리보기 썸네일
비디오 재생, 구간:
업로더 썸네일
싫어요
diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml
index 883347e62..85dc66f60 100644
--- a/app/src/main/res/values-ku/strings.xml
+++ b/app/src/main/res/values-ku/strings.xml
@@ -127,7 +127,6 @@
چی ڕوویدا:
لێدوانەکەت (بە ئینگلیزی):
وردەکارییەکان:
- پێشبینین ی وێنۆچکەی ڤیدیۆ
کارپێکردنی ڤیدیۆ، ماوەی:
وێنۆچکەی کەسی بەرزکەرەوە
بەدڵبوون
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index 34871cd61..e58a888e1 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -79,7 +79,6 @@
Kas:\\nUžklausa:\\nTurinio Kalba:\\nTurinio Šalis:\\nProgramėlės Kalba:\\nPaslauga:\\nGMT Laikas:\\nPaketas:\\nVersija:\\nOS versija:
Jūsų komentaras (anglų kalba):
Išsami informacija:
- Vaizdo įrašo peržiūros miniatiūra
Paleisti vaizdo įrašą, trukmė:
Įkėlėjo naudotojo paveikslėlio miniatiūra
Pamėgimai
diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml
index 9e6bdebe7..306a6da32 100644
--- a/app/src/main/res/values-lv/strings.xml
+++ b/app/src/main/res/values-lv/strings.xml
@@ -153,7 +153,6 @@
Patīk
Autora avatāra attēls
Atskaņot video, ilgums:
- Video priekšskatījuma attēls
Detaļas:
Jūsu komentārs (Angliski):
Kas:\\nRequest:\\nContent Valoda:\\nContent Valsts:\\nApp Valoda:\\nService:\\nGMT Laiks:\\nPackage:\\nVersion:\\nOS versija:
diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml
index d925e2970..392bc39d2 100644
--- a/app/src/main/res/values-mk/strings.xml
+++ b/app/src/main/res/values-mk/strings.xml
@@ -140,7 +140,6 @@
Што:\\nБарање:\\nЈазик на Содрж.:\\nУслуга:\\nGMT Час:\\nПакет:\\nВерзија:\\nВерз. на ОС:
Ваш коментар (на Англиски):
Детали:
- Сликичка за преглед на видеото
Сликичка за преглед на видеото
Икона од аватарот на објавителот
Допаѓања
diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml
index 2fd7fbc99..0672b0233 100644
--- a/app/src/main/res/values-ml/strings.xml
+++ b/app/src/main/res/values-ml/strings.xml
@@ -198,7 +198,6 @@
ലൈക്കുകൾ
അപ്ലോഡറുടെ ലഘുചിത്രം
പ്ലേ വീഡിയോ, ദൈർഘ്യം:
- വീഡിയോ ലഘുചിത്രം
വിശദാംശങ്ങൾ:
നിങ്ങളുടെ അഭിപ്രായം (ഇംഗ്ലീഷിൽ):
എന്ത് സംഭവിച്ചു:
diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml
index 6af6ec25d..87ab37fda 100644
--- a/app/src/main/res/values-ms/strings.xml
+++ b/app/src/main/res/values-ms/strings.xml
@@ -169,7 +169,6 @@
Apa:\\nPermintaan:\\nBahasa Kandungan:\\nNegara Kandungan:\\nBahasa Aplikasi:\\nPerkhidmatan:\\nWaktu GMT:\\nPakej:\\nVersi:\\nVersi OS:
Ulasan anda (dalam bahasa Inggeris):
Butiran:
- Thumbnail pratonton video
Main video, tempoh masa:
Thumbnail avatar pemuatnaik
Suka
diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml
index 58dcca87c..9e0753f14 100644
--- a/app/src/main/res/values-nb-rNO/strings.xml
+++ b/app/src/main/res/values-nb-rNO/strings.xml
@@ -37,7 +37,6 @@
Utseende
Spiller i bakgrunnen
Nettverksfeil
- Video-forhåndsvisning i miniatyrbilde
Spill av video, varighet:
Opplasterens avatar
Nikk
diff --git a/app/src/main/res/values-ne/strings.xml b/app/src/main/res/values-ne/strings.xml
index 71c9e107f..d9abdfefd 100644
--- a/app/src/main/res/values-ne/strings.xml
+++ b/app/src/main/res/values-ne/strings.xml
@@ -174,7 +174,6 @@
के:\\nअनुरोध:\\nसामग्री भाषा: \\nसेवा:\\nGMT समय:\\nप्याकेज:\\nसंस्करण: \\nOS संस्करण:
तपाईंको टिप्पणी (अंग्रेजी मा):
विवरण:
- सामग्री वर्णन (राम्रो पहुँच लागि)
प्ले भिडियो, अवधि:
अपलोडरको अवतार थम्बनेल
मनपर्दो
diff --git a/app/src/main/res/values-nl-rBE/strings.xml b/app/src/main/res/values-nl-rBE/strings.xml
index c80016b2b..599958ae0 100644
--- a/app/src/main/res/values-nl-rBE/strings.xml
+++ b/app/src/main/res/values-nl-rBE/strings.xml
@@ -141,7 +141,6 @@
Wat:\\nVerzoek:\\nTaal van inhoud:\\nLand:\\nTaal van applicatie:\\nDienst:\\nGMT tijd:\\nPakket:\\nVersie:\\nVersie van besturingssysteem:
Uw opmerking (in het Engels):
Details:
- Videovoorbeeldminiatuur
Speel video, tijd:
Avatarminiatuur van uploader
Duimen
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 98e4fb98a..db409f505 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -28,7 +28,6 @@
Externe videospeler gebruiken
Externe audiospeler gebruiken
Video en audio
- Videovoorbeeldminiatuur
Speel video, tijd:
Gebruikersafbeelding van uploader
Vind-ik-niet-leuks
diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml
index 91a86aa59..a74567270 100644
--- a/app/src/main/res/values-pa/strings.xml
+++ b/app/src/main/res/values-pa/strings.xml
@@ -147,7 +147,6 @@
ਕੀ:\\nRequest:\\nContent ਭਾਸ਼ਾ/ਬੋਲੀ:\\nContent Country:\\nApp ਭਾਸ਼ਾ/ਬੋਲੀ:\\nService:\\nGMT ਸਮਾਂ:\\nPackage:\\nVersion:\\nOS version:
ਤੁਹਾਡੀ ਟਿੱਪਣੀ (ਅੰਗਰੇਜ਼ੀ ਵਿਚ):
ਵੇਰਵੇ:
- ਵੀਡੀਓ preview thumbnail
ਵਿਡੀਉ ਚਲਾਓ, ਮਿਆਦ:
ਅਪਲੋਡਰ ਦਾ ਅਵਤਾਰ thumbnail
ਪਸੰਦ
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 7ce6d919b..b6e5de47b 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -59,7 +59,6 @@
Co:\\nŻądanie:\\nJęzyk treści:\\nKraj treści:\\nJęzyk aplikacji:\\nUsługa:\\nCzas GMT:\\nPakiet:\\nWersja:\\nWersja systemu:
Twój komentarz (po angielsku):
Szczegóły:
- Miniatura podglądu wideo
Odtwarzane wideo, czas trwania:
Miniatura awatara przesyłającego
Polubienia
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 8b3044e81..01abc413e 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -70,7 +70,6 @@
Vídeos baixados são salvos aqui
Pasta para vídeos baixados
Instalar o aplicativo Kore\?
- Miniatura de visualização do vídeo
Toque na lupa para começar.
Threads
Por favor, defina uma pasta de download depois nas configurações
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 8c10670dc..89868c573 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -444,7 +444,6 @@
Tempo após a última atualização antes de a subscrição ser considerada desatualizada - %s
Pesquisar
Atualizações
- Miniatura do vídeo
Atualizações
Iniciar transferências
Guardar termos de pesquisa localmente
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 170628393..40e39802c 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -28,7 +28,6 @@
URL não suportado
Idioma padrão para conteúdo
Vídeo e áudio
- Miniatura do vídeo
Reproduzir vídeo, duração:
Miniatura do avatar do canal
Não gosto
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index ce949a97d..cbfa004ae 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -45,7 +45,6 @@
Nu s-a putut analiza site-ul web
Conținut indisponibil
Nu s-a putut configura meniul de descărcare
- Miniatura de previzualizare video
Redare video, durata:
Miniatura avatarului autorului
Au apreciat
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index c77cbc588..7d0da8992 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -27,7 +27,6 @@
Язык контента по умолчанию
Видео и аудио
Внешний вид
- Миниатюра видео-превью
Воспроизвести видео, длительность:
Миниатюра аватара пользователя
Не понравилось
diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml
index 2413b4a0d..0d9dbe2e0 100644
--- a/app/src/main/res/values-sc/strings.xml
+++ b/app/src/main/res/values-sc/strings.xml
@@ -180,7 +180,6 @@
Agradessimentos
Miniadura de s\'avatar de su carrigadore
Riprodui su vìdeu, longària:
- Miniadura de anteprima de su vìdeu
Detàllios:
Su cummentu tuo (in inglesu):
Ite est acontèssidu:
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index f6891bd1c..6bf4452a7 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -42,7 +42,6 @@
Nepodarilo sa dekódovať URL videa
Nemožno analyzovať webovú stránku
Obsah nie je dostupný
- Náhľad videa
Prehrať video, dĺžka:
Náhľad avataru uploadera
Lajky
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index e9afcee70..e56e0caa5 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -27,7 +27,6 @@
Nepodprt URL
Privzeti jezik vsebine
Video in zvok
- Sličica predogleda videa
Predvajaj video, dolžina:
Sličica objavitelja
Pokaži možnost predvajanja videa preko predstavnega središča Kodi
diff --git a/app/src/main/res/values-so/strings.xml b/app/src/main/res/values-so/strings.xml
index a113094da..bd1612011 100644
--- a/app/src/main/res/values-so/strings.xml
+++ b/app/src/main/res/values-so/strings.xml
@@ -259,7 +259,6 @@
Sawirka u saaran soosaareha
Daar muuqaalka, intuu socdo:
Shayga:\\nCodsiga:\\nLuuqada Shayga:\\nWadanka Shayga:\\nLuuqada Appka:\\nAdeega:\\nWakhtiga oo GMT ah:\\nXidhmada:\\nTirsiga Appka:\\nTirsiga Nooca Barnaamijka:
- Galka muuqaal tusaha
Faahfaahin:
Faalladaada (oo Ingiriis ah):
Waxa dhacay:
diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml
index d8bcb6fd1..7ad5848cc 100644
--- a/app/src/main/res/values-sq/strings.xml
+++ b/app/src/main/res/values-sq/strings.xml
@@ -313,7 +313,6 @@
Pëlqimet
Pamja statike e fotos së ngarkuesit
Luaje videon, kohëzgjatja:
- Pamjet statike të parapamjes së videove
Detajet:
Komenti juaj (në Anglisht):
Çfarë:\\nKërkesa:\\nGjuha e përmbajtjes:\\nShteti i pëmbajtjes:\\nGjuha e aplikacionit:\\nShërbimi:\\nKoha në GMT:\\nPaketa:\\nVersioni:\\nVersioni i sistemit operativ:
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index de3e8de9c..2d77567fc 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -26,7 +26,6 @@
Прикажи „следећи“ и „слични“ видео
Подразумевани језик садржаја
Видео и аудио
- Сличица видео прегледа
Пусти видео, трајање:
Аватар пошиљаоца
Несвиђања
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 5cb3bd7f2..fc431e80a 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -107,7 +107,6 @@
Återhämtar sig från spelarfel
Rapportera detta fel via e-post
Vad:\\nBegäran:\\nInnehållsspråk:\\nInnehållsland:\\nApp-språk:\\nTjänst:\\nGMT-tid:\\nPaket:\\nVersion:\\nOS-version:
- Videons miniatyrbild
Spela video, längd:
Uppladdarens avatar-miniatyrbild
Inga resultat
diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml
index d1ae9ee8a..5c1e38214 100644
--- a/app/src/main/res/values-ta/strings.xml
+++ b/app/src/main/res/values-ta/strings.xml
@@ -135,7 +135,6 @@
மின்னஞ்சல் மூலம் பிழையை தெரிவிக்கவும்
என்ன நடந்தது:
உங்கள் கருத்து:
- காணொளி முன்தோற்றம்
வெறுப்புகள்
பின் தொடர்பவர்கள் இல்லை
diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml
index 872e1e8d1..bfdaa9609 100644
--- a/app/src/main/res/values-te/strings.xml
+++ b/app/src/main/res/values-te/strings.xml
@@ -71,7 +71,6 @@
ఏం జరిగింది:
మీ వ్యాఖ్య(ఆంగ్లం లో):
వివరములు:
- వీడియో ప్రివ్యూ సూక్ష్మచిత్రం
వీడియోని ప్లే చేయండి, వ్యవధి:
ఇష్టాలు
మంది ఇష్టపడలేదు
diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml
index 01946c321..bf8e56d75 100644
--- a/app/src/main/res/values-th/strings.xml
+++ b/app/src/main/res/values-th/strings.xml
@@ -163,7 +163,6 @@
เกิดอะไรขึ้น:
ความคิดเห็นของคุณ (เป็นภาษาอังกฤษ):
รายละเอียด:
- ภาพขนาดย่อของตัวอย่างวิดีโอ
ภาพของตัวอย่างวิดีโอขนาดย่อ
รูปขนาดย่อของผู้อัปโหลด
ชอบ
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 13e6ede22..607d00e12 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -90,7 +90,6 @@
Devre dışı
Yorumunuz (İngilizce):
Ayrıntılar:
- Video ön izleme küçük resmi
b
M
B
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 5d90ebf40..e6baece4d 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -63,7 +63,6 @@
Збій застосунку/інтерфейсу
Ваш коментар (англійською):
Деталі:
- Зображення відео перед його переглядом
Відтворити відео, тривалість:
Відео
Аудіо
diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml
index ba43cdd61..02dccfc97 100644
--- a/app/src/main/res/values-ur/strings.xml
+++ b/app/src/main/res/values-ur/strings.xml
@@ -140,7 +140,6 @@
کیا ہوا:\\nدرخواست:\\nمواد کی زبان:\\nملک:\\nایپ کی زبان:\\nسروس:\\nجی ایم ٹٰ:\\nوقت:\\nپیکیج:\\nورژن:\\nآپریٹنگ سسٹم ورزن:
آپ کا تبصرہ (انگریزی میں):
تفصیلات:
- ویڈیو پیش منظر انگشتی
ویڈیو چلائیں، دورانیہ:
اپ لوڈر کا اوتار نظرِ انگشتی
پسندیدگی
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index 79b60b71e..8efea3ca4 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -77,7 +77,6 @@
Cái gì:\\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:
- Hình thu nhỏ xem trước video
Xem video, thời lượng:
Hình thu nhỏ của avatar người tải lên
Lượt thích
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 2742f6ffa..c94fd4af5 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -155,7 +155,6 @@
详情:\\n请求:\\n内容语言:\\n服务:\\nGMT时间:\\n包:\\n版本:\\n操作系统版本:
您的注释(请用英文):
详细信息:
- 视频预览缩略图
播放视频,时长:
视频上传者的头像缩略图
字节
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index fdedf8ece..3f1437d53 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -31,7 +31,6 @@
外觀
背景播放
網絡問題
- 影片預覽縮圖
影片預覽縮圖
上載者的個人頭像縮圖
讚好
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 5186164a6..a6ac7f81c 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -34,7 +34,6 @@
外觀
背景播放中
網路錯誤
- 影片預覽縮圖
播放影片,持續時間:
發佈者的個人頭像縮圖
喜歡
diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml
new file mode 100644
index 000000000..c3cc48726
--- /dev/null
+++ b/app/src/main/res/values/donottranslate.xml
@@ -0,0 +1,29 @@
+
+
+ https://f-droid.org/packages/org.videolan.vlc/
+ RSS
+ org.xbmc.kore
+ https://joinpeertube.org/instances#instances-list
+ newpipe
+ newpipeAppUpdate
+ newpipeHash
+ newpipeErrorReport
+ newpipeNewStreams
+ Guru Meditation.
+ @string/no_videos
+ @string/no_comments
+ 100+
+ ∞
+ MD5
+ SHA-1
+ reCAPTCHA
+ https://github.com/TeamNewPipe/NewPipe
+ https://newpipe.net/donate/
+ https://newpipe.net/
+ https://newpipe.net/legal/privacy/
+ %1$s/%2$s
+ YouTube
+ SoundCloud
+ @string/app_name
+ LeakCanary
+
diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml
index 2a7754395..a73a3b9ca 100644
--- a/app/src/main/res/values/settings_keys.xml
+++ b/app/src/main/res/values/settings_keys.xml
@@ -1,42 +1,42 @@
- last_used_preferences_version
+ last_used_preferences_version
-
+
- @string/youtube
- @string/soundcloud
- service
- @string/youtube
+ service
+ @string/youtube
- saved_tabs_key
+ saved_tabs_key
- download_path
- download_path_audio
+ download_path
+ download_path_audio
- use_external_video_player
- use_external_audio_player
+ use_external_video_player
+ use_external_audio_player
- volume_gesture_control
- brightness_gesture_control
- resume_on_audio_focus_gain
- popup_remember_size_pos_key
- use_inexact_seek_key
- auto_queue_key
- screen_brightness_key
- screen_brightness_timestamp_key
- clear_queue_confirmation_key
+ volume_gesture_control
+ brightness_gesture_control
+ resume_on_audio_focus_gain
+ popup_remember_size_pos_key
+ use_inexact_seek_key
+ auto_queue_key
+ screen_brightness_key
+ screen_brightness_timestamp_key
+ clear_queue_confirmation_key
- popup_saved_width
- popup_saved_x
- popup_saved_y
+ popup_saved_width
+ popup_saved_x
+ popup_saved_y
- seek_duration
- 10000
-
+ seek_duration
+ 10000
+
- 5 seconds
@@ -46,7 +46,7 @@
- 25 seconds
- 30 seconds
-
+
- 5000
- 10000
- 15000
@@ -55,63 +55,63 @@
- 30000
- minimize_on_exit_key
- @string/minimize_on_exit_background_key
- minimize_on_exit_none_key
- minimize_on_exit_background_key
- minimize_on_exit_popup_key
-
+ minimize_on_exit_key
+ @string/minimize_on_exit_background_key
+ minimize_on_exit_none_key
+ minimize_on_exit_background_key
+ minimize_on_exit_popup_key
+
- @string/minimize_on_exit_none_key
- @string/minimize_on_exit_background_key
- @string/minimize_on_exit_popup_key
-
+
- @string/minimize_on_exit_none_description
- @string/minimize_on_exit_background_description
- @string/minimize_on_exit_popup_description
- start_main_player_fullscreen_key
+ start_main_player_fullscreen_key
- autoplay_key
- @string/autoplay_wifi_key
- autoplay_always_key
- autoplay_wifi_key
- autoplay_never_key
-
+ autoplay_key
+ @string/autoplay_wifi_key
+ autoplay_always_key
+ autoplay_wifi_key
+ autoplay_never_key
+
- @string/autoplay_always_key
- @string/autoplay_wifi_key
- @string/autoplay_never_key
-
+
- @string/always
- @string/wifi_only
- @string/never
- seekbar_preview_thumbnail_key
- seekbar_preview_thumbnail_high_quality
- seekbar_preview_thumbnail_low_quality
- seekbar_preview_thumbnail_none
-
+ seekbar_preview_thumbnail_key
+ seekbar_preview_thumbnail_high_quality
+ seekbar_preview_thumbnail_low_quality
+ seekbar_preview_thumbnail_none
+
- @string/seekbar_preview_thumbnail_high_quality
- @string/seekbar_preview_thumbnail_low_quality
- @string/seekbar_preview_thumbnail_none
-
+
- @string/high_quality_larger
- @string/low_quality_smaller
- @string/dont_show
- default_resolution
- 720p60
- show_higher_resolutions
- default_popup_resolution
- 480p
- best_resolution
+ default_resolution
+ 720p60
+ show_higher_resolutions
+ default_popup_resolution
+ 480p
+ best_resolution
-
+
- @string/best_resolution_key
- 1080p60
- 1080p
@@ -122,7 +122,7 @@
- 240p
- 144p
-
+
- @string/best_resolution
- 1080p60
- 1080p
@@ -134,145 +134,145 @@
- 144p
- scale_to_square_image_in_notifications
+ scale_to_square_image_in_notifications
- notification_slot_0_key
- notification_slot_1_key
- notification_slot_2_key
- notification_slot_3_key
- notification_slot_4_key
+ notification_slot_0_key
+ notification_slot_1_key
+ notification_slot_2_key
+ notification_slot_3_key
+ notification_slot_4_key
- notification_slot_compact_0_key
- notification_slot_compact_1_key
- notification_slot_compact_2_key
+ notification_slot_compact_0_key
+ notification_slot_compact_1_key
+ notification_slot_compact_2_key
- notification_colorize_key
+ notification_colorize_key
- video_mp4
- video_webm
- video_3gp
- default_video_format
- @string/video_mp4_key
-
+ video_mp4
+ video_webm
+ video_3gp
+ default_video_format
+ @string/video_mp4_key
+
- MPEG-4
- WebM
- 3GP
-
+
- @string/video_mp4_key
- @string/video_webm_key
- @string/video_3gp_key
- default_audio_format
- @string/audio_m4a_key
- audio_m4a
- audio_webm
-
+ default_audio_format
+ @string/audio_m4a_key
+ audio_m4a
+ audio_webm
+
- M4A
- WebM
-
+
- @string/audio_m4a_key
- @string/audio_webm_key
- last_resize_mode
+ last_resize_mode
- debug_pref_screen_key
- allow_heap_dumping_key
- show_memory_leaks_key
- allow_disposed_exceptions_key
- show_original_time_ago_key
- disable_media_tunneling_key
- show_image_indicators_key
- show_crash_the_player_key
- check_new_streams
- crash_the_app_key
- show_error_snackbar_key
- create_error_notification_key
+ debug_pref_screen_key
+ allow_heap_dumping_key
+ show_memory_leaks_key
+ allow_disposed_exceptions_key
+ show_original_time_ago_key
+ disable_media_tunneling_key
+ show_image_indicators_key
+ show_crash_the_player_key
+ check_new_streams
+ crash_the_app_key
+ show_error_snackbar_key
+ create_error_notification_key
- theme
- night_theme
- light_theme
- dark_theme
- black_theme
- auto_device_theme
- @string/auto_device_theme_key
- @string/dark_theme_key
-
+ theme
+ night_theme
+ light_theme
+ dark_theme
+ black_theme
+ auto_device_theme
+ @string/auto_device_theme_key
+ @string/dark_theme_key
+
- @string/light_theme_key
- @string/dark_theme_key
- @string/black_theme_key
- @string/auto_device_theme_key
-
+
- @string/light_theme_title
- @string/dark_theme_title
- @string/black_theme_title
- @string/auto_device_theme_title
-
+
- @string/dark_theme_key
- @string/black_theme_key
-
+
- @string/dark_theme_title
- @string/black_theme_title
- caption_settings_key
- caption_user_set_key
+ caption_settings_key
+ caption_user_set_key
- show_search_suggestions
- show_local_search_suggestions
- show_remote_search_suggestions
-
+ show_search_suggestions
+ show_local_search_suggestions
+ show_remote_search_suggestions
+
- @string/show_local_search_suggestions_key
- @string/show_remote_search_suggestions_key
-
+
- @string/local_search_suggestions
- @string/remote_search_suggestions
- show_play_with_kodi
- show_comments
- show_next_video
- show_description
- show_meta_info
- stream_info_selected_tab
- show_hold_to_append
- content_language
- peertube_instance_setup
- peertube_selected_instance
- peertube_instance_list
- content_country
- show_age_restricted_content
- youtube_restricted_mode_enabled
- enable_search_history
- enable_watch_history
- main_page_content
- enable_playback_resume
- enable_playback_state_lists
- playback_unhook_key
- playback_speed_key
- playback_pitch_key
- playback_skip_silence_key
+ show_play_with_kodi
+ show_comments
+ show_next_video
+ show_description
+ show_meta_info
+ stream_info_selected_tab
+ show_hold_to_append
+ content_language
+ peertube_instance_setup
+ peertube_selected_instance
+ peertube_instance_list
+ content_country
+ show_age_restricted_content
+ youtube_restricted_mode_enabled
+ enable_search_history
+ enable_watch_history
+ main_page_content
+ enable_playback_resume
+ enable_playback_state_lists
+ playback_unhook_key
+ playback_speed_key
+ playback_pitch_key
+ playback_skip_silence_key
- app_language_key
+ app_language_key
- feed_update_threshold_key
- 300
- feed_show_played_items
+ feed_update_threshold_key
+ 300
+ feed_show_played_items
- show_thumbnail_key
+ show_thumbnail_key
-
+
- @string/feed_update_threshold_option_always_update
- 5 minutes
- 15 minutes
@@ -282,7 +282,7 @@
- 1 day
-
+
- 0
- 300
- 900
@@ -291,53 +291,53 @@
- 43200
- 86400
- feed_use_dedicated_fetch_method
+ feed_use_dedicated_fetch_method
- import_export_data_path
- import_data
- export_data
+ import_export_data_path
+ import_data
+ export_data
- clear_cookie
+ clear_cookie
- download_thumbnail_key
+ download_thumbnail_key
- cache_wipe_key
- clear_play_history
- clear_playback_states
- clear_search_history
+ cache_wipe_key
+ clear_play_history
+ clear_playback_states
+ clear_search_history
- @string/last_download_type_video_key
- last_dl_type_video
- last_dl_type_audio
- last_dl_type_subtitle
+ @string/last_download_type_video_key
+ last_dl_type_video
+ last_dl_type_audio
+ last_dl_type_subtitle
- downloads_storage_ask
- storage_use_saf
+ downloads_storage_ask
+ storage_use_saf
- file_rename_charset
- file_replacement_character
- _
+ file_rename_charset
+ file_replacement_character
+ _
- CHARSET_LETTERS_AND_DIGITS
- CHARSET_MOST_SPECIAL
+ CHARSET_LETTERS_AND_DIGITS
+ CHARSET_MOST_SPECIAL
-
+
- @string/charset_letters_and_digits_value
- @string/charset_most_special_value
-
+
- @string/charset_letters_and_digits
- @string/charset_most_special_characters
- @string/charset_most_special_value
+ @string/charset_most_special_value
- downloads_max_retry
- 3
-
+ downloads_max_retry
+ 3
+
- @string/minimize_on_exit_none_description
- 1
- 2
@@ -349,25 +349,25 @@
- 15
- cross_network_downloads
- downloads_queue_limit
+ cross_network_downloads
+ downloads_queue_limit
- default_download_threads
+ default_download_threads
- preferred_open_action_key
- @string/always_ask_open_action_key
- preferred_open_action_last_selected
+ preferred_open_action_key
+ @string/always_ask_open_action_key
+ preferred_open_action_last_selected
- show_info
- video_player
- background_player
- popup_player
- download
- add_to_playlist
- always_ask_player
+ show_info
+ video_player
+ background_player
+ popup_player
+ download
+ add_to_playlist
+ always_ask_player
-
+
- @string/show_info
- @string/video_player
- @string/background_player
@@ -376,7 +376,7 @@
- @string/add_to_playlist
- @string/always_ask_open_action
-
+
- @string/show_info_key
- @string/video_player_key
- @string/background_player_key
@@ -387,15 +387,15 @@
- update_app_key
+ update_app_key
manual_update_key
- update_pref_screen_key
- update_expiry_key
+ update_pref_screen_key
+ update_expiry_key
- system
+ system
-
+
- @string/default_localization_key
- af
- az
@@ -474,7 +474,7 @@
- ja
- ko
-
+
- @string/systems_language
- Afrikaans
- Azərbaycan
@@ -555,7 +555,7 @@
-
+
- @string/systems_language
- Afghanistan
- Aland Islands
@@ -806,7 +806,7 @@
- Zimbabwe
-
+
- @string/default_localization_key
- AF
- AX
@@ -1058,7 +1058,7 @@
-
+
- @string/default_localization_key
- ace
- ar
@@ -1137,7 +1137,7 @@
- zh-hk
- zh-tw
-
+
- @string/systems_language
- Basa Acèh
- العربية
@@ -1218,9 +1218,9 @@
- limit_mobile_data_usage
- limit_data_usage_none
-
+ limit_mobile_data_usage
+ limit_data_usage_none
+ @string/limit_data_usage_none_key
- @string/limit_data_usage_none_key
- 1080p60
@@ -1233,45 +1233,46 @@
- 144p
- list_view_mode
- @string/list_view_mode_auto_key
+ list_view_mode
+ @string/list_view_mode_auto_key
- auto
- list
- grid
+ auto
+ list
+ grid
-
+
- @string/list_view_mode_auto_key
- @string/list_view_mode_list_key
- @string/list_view_mode_grid_key
-
+
- @string/auto
- @string/list
- @string/grid
- tablet_mode
+ tablet_mode
- auto
- on
- off
-
+ auto
+ on
+ off
+
- @string/tablet_mode_auto_key
- @string/tablet_mode_on_key
- @string/tablet_mode_off_key
-
+
- @string/auto
- @string/on
- @string/off
- recaptcha_cookies_key
- enable_streams_notifications
- streams_notifications_interval
- 14400
+ recaptcha_cookies_key
+
+ enable_streams_notifications
+ streams_notifications_interval
+ 14400
- 15 minutes
@@ -1292,10 +1293,10 @@
- 43200
- 86400
- streams_notifications_network
- any
- wifi
- @string/streams_notifications_network_wifi
+ streams_notifications_network
+ any
+ wifi
+ @string/streams_notifications_network_wifi
- @string/streams_notifications_network_any
- @string/streams_notifications_network_wifi
@@ -1304,5 +1305,5 @@
- @string/any_network
- @string/wifi_only
- streams_notifications_channels
+ streams_notifications_channels
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 03197bb2b..3f2e2adf7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -7,7 +7,6 @@
Install
Cancel
OK
- https://f-droid.org/repository/browse/?fdfilter=vlc&fdid=org.videolan.vlc
Open in browser
Mark as watched
Open in popup mode
@@ -23,7 +22,6 @@
Use external video player
Removes audio at some resolutions
Use external audio player
- RSS
Subscribe
Subscribed
Unsubscribe
@@ -49,7 +47,6 @@
Only some devices can play 2K/4K videos
Play with Kodi
Install missing Kore app?
- org.xbmc.kore
Show \"Play with Kodi\" option
Display an option to play a video via Kodi media center
Crash the player
@@ -132,7 +129,6 @@
PeerTube instances
Select your favorite PeerTube instances
Find the instances you like on %s
- https://joinpeertube.org/instances#instances-list
Add instance
Enter instance URL
Could not validate instance
@@ -148,7 +144,6 @@
Player notification
Configure current playing stream notification
Playing in background
- Already playing in background
Playing in popup mode
Content
Show age restricted content
@@ -182,19 +177,14 @@
Just Once
File
Notifications
- newpipe
NewPipe notification
Notifications for NewPipe\'s player
- newpipeAppUpdate
App update notification
Notifications for new NewPipe versions
- newpipeHash
Video hash notification
Notifications for video hashing progress
- newpipeNewStreams
New streams
Notifications about new streams for subscriptions
- newpipeErrorReport
Error report notification
Notifications to report errors
[Unknown]
@@ -253,7 +243,6 @@
NewPipe encountered an error, tap to report
An error occurred, see the notification
Sorry, that should not have happened.
- Guru Meditation.
Report this error via e-mail
Copy formatted report
Report on GitHub
@@ -266,7 +255,6 @@
Your comment (in English):
Details:
- Video preview thumbnail
Play video, duration:
Uploader\'s avatar thumbnail
Likes
@@ -275,8 +263,6 @@
Related items
Description
No results
- @string/no_videos
- @string/no_comments
Nothing here but crickets
Drag to reorder
Video
@@ -311,8 +297,6 @@
No videos
100+ videos
∞ videos
- 100+
- ∞
- %s video
- %s videos
@@ -344,11 +328,7 @@
No download folder set yet, choose the default download folder now
This permission is needed to\nopen in popup mode
1 item deleted.
-
- MD5
- SHA-1
- reCAPTCHA
reCAPTCHA challenge
Press \"Done\" when solved
reCAPTCHA challenge requested
@@ -371,18 +351,14 @@
Libre lightweight streaming on Android.
Contribute
Whether you have ideas of; translation, design changes, code cleaning, or real heavy code changes—help is always welcome. The more is done the better it gets!
- https://github.com/TeamNewPipe/NewPipe
View on GitHub
Donate
NewPipe is developed by volunteers spending their free time bringing you the best user experience. Give back to help developers make NewPipe even better while they enjoy a cup of coffee.
- https://newpipe.net/donate
Give back
Website
Visit the NewPipe Website for more info and news.
- https://newpipe.net/
NewPipe\'s Privacy Policy
The NewPipe project takes your privacy very seriously. Therefore, the app does not collect any data without your consent.\nNewPipe\'s privacy policy explains in detail what data is sent and stored when you send a crash report.
- https://newpipe.net/legal/privacy/
Read privacy policy
NewPipe\'s License
NewPipe is copyleft libre software: You can use, study share and improve it at will. Specifically you can redistribute 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.
@@ -422,7 +398,6 @@
Recently added
Most liked
Conferences
- %1$s/%2$s
Play queue
Remove
@@ -439,10 +414,7 @@
Open Drawer
Close Drawer
- YouTube
- SoundCloud
- @string/app_name
Preferred \'open\' action
Default action when opening content — %s
Video player
@@ -477,7 +449,6 @@
Captions
Modify player caption text scale and background styles. Requires app restart to take effect
- LeakCanary
Memory leak monitoring may cause the app to become unresponsive when heap dumping
Show memory leaks
Report out-of-lifecycle errors
@@ -523,7 +494,6 @@
No limit
Limit resolution when using mobile data
- @string/limit_data_usage_none_key
- @string/limit_data_usage_none_description
- 1080p60
diff --git a/assets/android-tv-banner.svg b/assets/android-tv-banner.svg
new file mode 100644
index 000000000..bead122f4
--- /dev/null
+++ b/assets/android-tv-banner.svg
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png
new file mode 100644
index 000000000..611b8291c
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ